All Files (65.4% covered at 4.27 hits/line)
34 files in total.
396 relevant lines.
259 lines covered and
137 lines missed
- 1
class ApplicationController < ActionController::Base
- 1
protect_from_forgery with: :exception
end
- 1
class ModelController < ApplicationController
- 1
def index
# before_action :authenticate_user!
- 14
if session[:user_id] == nil
- 2
puts "USER is NIL"
# For Testing Purposes
- 2
redirect_to welcome_path
# @user = User.create
# session[:user_id] = @user.id
else
- 12
@user = User.find(session[:user_id])
end
- 14
if session[:assembly_id] == nil or params[:new] == "true"
- 14
params[:new] = nil
- 14
session[:assembly_id] = nil
- 14
@curr_assembly = nil
- 14
@curr_name = nil
else
@curr_assembly = Assembly.find(session[:assembly_id]).components
@curr_name = Assembly.find(session[:assembly_id]).name
end
- 14
if params[:id] != nil
- 1
if @user.assemblys.find_by_id(params[:id]) == nil
params[:id] = nil
redirect_to root_path
else
- 1
session[:assembly_id] = params[:id]
- 1
@curr_assembly = @user.assemblys.find_by_id(params[:id]).components
- 1
@curr_name = Assembly.find_by_id(params[:id]).name
end
end
- 86
@material_data = Hash[Material.all.collect {|material| [material.title, material.id]}]
- 86
@material_names = Hash[Material.all.collect {|material| [material.id, material.title]}]
- 14
@material_options = Material.categories.collect do |category|
- 112
[category, Material.where(category: category).collect {|material| [material.title, material.id]}]
end
- 14
@procedures = Hash[Procedure.categories.collect do |category|
- 16
[category, Material.all.collect do |material|
- 168
[material.title, Procedure.where(material: material.title, category: category).collect {|procedure| [procedure.title, procedure.id]}]
end
]
end
]
end
- 1
def create
hash = params[:build]
if hash == nil
result = false
respond_to do |format|
format.json { nil.to_json }
end
end
if session[:assembly_id] == nil
@assembly = Assembly.create(:user_id => session[:user_id])
session[:assembly_id] = @assembly.id
else
@assembly = Assembly.find(session[:assembly_id])
end
@assembly.components = hash
@assembly.name = params[:assembly_name]
result = @assembly.save
respond_to do |format|
format.json { nil.to_json }
end
end
end
- 1
class UsersController < ApplicationController
- 1
def welcome
end
- 1
def profile
- 4
if !session[:user_id]
redirect_to welcome_path
else
- 4
@current_user = User.find(session[:user_id])
end
end
- 1
def logout
flash[:notice] = "Successfully Logged Out!"
session[:user_id] = nil
cookies.delete :auth_token
cookies.delete :typo_user_profile
redirect_to :action => 'welcome'
end
- 1
def signup
- 7
if request.xhr?
flash[:ajax] = true
else
- 7
flash[:ajax] = false
end
- 7
if request.post?
- 3
if params[:confirm_password] == params[:password]
- 3
new_params = signup_params()
- 3
user = User.new(new_params)
- 3
if user.valid?
- 1
user.save
- 1
puts "VALID USER"
- 1
session[:user_id] = user.id
- 1
redirect_to root_path
else
- 2
puts user.errors.messages[:email] + user.errors.messages[:username]
- 2
error_mess = "Error: "
- 2
if user.errors.messages[:email] and user.errors.messages[:email].length > 0
- 1
error_mess += user.errors.messages[:email][0] + ' '
end
- 2
if user.errors.messages[:username] and user.errors.messages[:username].length > 0
- 1
error_mess += user.errors.messages[:username][0]
end
- 2
flash[:error] = error_mess
end
else
flash[:error] = "Your Passwords do not match!"
end
end
end
- 1
def login
- 21
if request.xhr?
flash[:ajax] = true
else
- 21
flash[:ajax] = false
end
- 21
if request.post?
- 10
user = User.authenticate(params[:username], params[:password])
- 10
if user
- 10
session[:user_id] = user.id
- 10
redirect_to root_path
else
flash[:error] = 'No Login Found, Try Again!'
end
end
end
- 1
protected
- 1
def signup_params
- 3
params.permit(:username, :password, :name, :email).except(:confirm_password)
end
- 1
def login_params
params.permit(:username, :password)
end
end
- 1
module ApplicationHelper
end
- 1
module ModelHelper
end
- 1
module UsersHelper
end
- 1
class ApplicationRecord < ActiveRecord::Base
- 1
self.abstract_class = true
end
- 1
class Assembly < ApplicationRecord
- 1
serialize :components
- 1
belongs_to :user
end
- 1
class Material < ApplicationRecord
- 1
has_many :procedures
- 1
validates_uniqueness_of :title, :on => :create
- 1
def self.find_material(title)
# This is very unsafe and need to add salt to it.
return Material.where('title LIKE :query', query: "%#{title}%").first
end
- 1
def self.categories
- 14
return Material.all.select(:category).map(&:category).uniq.sort
end
end
- 1
class Procedure < ApplicationRecord
- 1
validates_uniqueness_of :title, :on => :create
- 1
def self.find_procedure(title)
# This is very unsafe and need to add salt to it.
return Procedure.where('title LIKE :query', query: "%#{title}%").first
end
- 1
def self.categories
- 14
return Procedure.all.select(:category).map(&:category).uniq
end
end
- 1
class User < ApplicationRecord
- 1
has_many :projects
- 1
has_many :assemblys
# validates_uniqueness_of :username, :on => :create
# validates_uniqueness_of :email, :on => :create
- 1
validates :email, uniqueness: {message: "Email already taken"}
- 1
validates :username, uniqueness: {message: "Username already taken"}
- 1
validates_presence_of :username
- 1
validates_presence_of :email
- 1
validates_presence_of :password
- 1
validates_presence_of :name
- 1
class_attribute :salt
- 1
def self.salt
- 28
'20ac4d290c2293702c64b3b287ae5ea79b26a5c1'
end
- 1
def self.authenticate(login, pass)
- 10
User.where(["username = ? OR email = ? AND password = ?", login, login, password_hash(pass)]).first
end
- 1
def self.authenticate?(login, pass)
user = self.authenticate(login, pass)
return false if user.nil?
return true if user.login == login
false
end
- 1
def password=(newpass)
- 20
@password = newpass
end
- 1
def password(cleartext = nil)
- 39
if cleartext
- 18
@password.to_s
else
- 21
@password || read_attribute("password")
end
end
- 1
protected
- 1
def self.password_hash(pass)
- 28
Digest::SHA1.hexdigest("#{salt}--#{pass}--")
end
- 1
def password_hash(pass)
- 18
self.class.password_hash(pass)
end
- 1
before_create :crypt_password
- 1
def crypt_password
- 18
write_attribute "password", password_hash(password(true))
- 18
@password = nil
end
- 1
before_update :crypt_unless_empty
- 1
def crypt_unless_empty
if password(true).empty?
user = self.class.find(self.id)
write_attribute "password", user.password
else
crypt_password
end
end
end
- 1
require_relative 'boot'
- 1
require "rails"
# Pick the frameworks you want:
- 1
require "active_model/railtie"
- 1
require "active_job/railtie"
- 1
require "active_record/railtie"
- 1
require "action_controller/railtie"
- 1
require "action_mailer/railtie"
- 1
require "action_view/railtie"
- 1
require "action_cable/engine"
- 1
require "sprockets/railtie"
# require "rails/test_unit/railtie"
# Require the gems listed in Gemfile, including any gems
# you've limited to :test, :development, or :production.
- 1
Bundler.require(*Rails.groups)
- 1
module FaludiLcaApp
- 1
class Application < Rails::Application
# Settings in config/environments/* take precedence over those specified here.
# Application configuration should go into files in config/initializers
# -- all .rb files in that directory are automatically loaded.
end
end
- 1
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__)
- 1
require 'bundler/setup' # Set up gems listed in the Gemfile.
# Load the Rails application.
- 1
require_relative 'application'
# Initialize the Rails application.
- 1
Rails.application.initialize!
- 1
Rails.application.configure do
# Settings specified here will take precedence over those in config/application.rb.
# The test environment is used exclusively to run your application's
# test suite. You never need to work with it otherwise. Remember that
# your test database is "scratch space" for the test suite and is wiped
# and recreated between test runs. Don't rely on the data there!
- 1
config.cache_classes = true
# Do not eager load code on boot. This avoids loading your whole application
# just for the purpose of running a single test. If you are using a tool that
# preloads Rails for running tests, you may have to set it to true.
- 1
config.eager_load = false
# Configure public file server for tests with Cache-Control for performance.
- 1
config.public_file_server.enabled = true
- 1
config.public_file_server.headers = {
'Cache-Control' => 'public, max-age=3600'
}
# Show full error reports and disable caching.
- 1
config.consider_all_requests_local = true
- 1
config.action_controller.perform_caching = false
# Raise exceptions instead of rendering exception templates.
- 1
config.action_dispatch.show_exceptions = false
# Disable request forgery protection in test environment.
- 1
config.action_controller.allow_forgery_protection = false
- 1
config.action_mailer.perform_caching = false
# Tell Action Mailer not to deliver emails to the real world.
# The :test delivery method accumulates sent emails in the
# ActionMailer::Base.deliveries array.
- 1
config.action_mailer.delivery_method = :test
# Print deprecation notices to the stderr.
- 1
config.active_support.deprecation = :stderr
# Raises error for missing translations
# config.action_view.raise_on_missing_translations = true
end
# Be sure to restart your server when you modify this file.
# ApplicationController.renderer.defaults.merge!(
# http_host: 'example.org',
# https: false
# )
# Be sure to restart your server when you modify this file.
# Version of your assets, change this if you want to expire all your assets.
- 1
Rails.application.config.assets.version = '1.0'
- 1
Rails.application.config.assets.precompile += %w( model.css )
- 1
Rails.application.config.assets.precompile += %w( model.js )
# Add additional assets to the asset load path
# Rails.application.config.assets.paths << Emoji.images_path
# Precompile additional assets.
# application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
# Rails.application.config.assets.precompile += %w( search.js )
# Be sure to restart your server when you modify this file.
# You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces.
# Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ }
# You can also remove all the silencers if you're trying to debug a problem that might stem from framework code.
# Rails.backtrace_cleaner.remove_silencers!
# Be sure to restart your server when you modify this file.
# Specify a serializer for the signed and encrypted cookie jars.
# Valid options are :json, :marshal, and :hybrid.
- 1
Rails.application.config.action_dispatch.cookies_serializer = :json
# Use this hook to configure devise mailer, warden hooks and so forth.
# Many of these configuration options can be set straight in your model.
- 1
Devise.setup do |config|
# The secret key used by Devise. Devise uses this key to generate
# random tokens. Changing this key will render invalid all existing
# confirmation, reset password and unlock tokens in the database.
# Devise will use the `secret_key_base` as its `secret_key`
# by default. You can change it below and use your own secret key.
# config.secret_key = '066241012aed8fabb1eb1bfaeb0fe68d5568a6f886ed56158d717eb92f9b42508c66c0e44e00fba07635287bb998ab6aaa9cc45791e75c7a2c34c2b2b08ab0d1'
# ==> Mailer Configuration
# Configure the e-mail address which will be shown in Devise::Mailer,
# note that it will be overwritten if you use your own mailer class
# with default "from" parameter.
- 1
config.mailer_sender =<EMAIL_ADDRESS># Configure the class responsible to send e-mails.
# config.mailer = 'Devise::Mailer'
# Configure the parent class responsible to send e-mails.
# config.parent_mailer = 'ActionMailer::Base'
# ==> ORM configuration
# Load and configure the ORM. Supports :active_record (default) and
# :mongoid (bson_ext recommended) by default. Other ORMs may be
# available as additional gems.
- 1
require 'devise/orm/active_record'
# ==> Configuration for any authentication mechanism
# Configure which keys are used when authenticating a user. The default is
# just :email. You can configure it to use [:username, :subdomain], so for
# authenticating a user, both parameters are required. Remember that those
# parameters are used only when authenticating and not when retrieving from
# session. If you need permissions, you should implement that in a before filter.
# You can also supply a hash where the value is a boolean determining whether
# or not authentication should be aborted when the value is not present.
# config.authentication_keys = [:email]
# Configure parameters from the request object used for authentication. Each entry
# given should be a request method and it will automatically be passed to the
# find_for_authentication method and considered in your model lookup. For instance,
# if you set :request_keys to [:subdomain], :subdomain will be used on authentication.
# The same considerations mentioned for authentication_keys also apply to request_keys.
# config.request_keys = []
# Configure which authentication keys should be case-insensitive.
# These keys will be downcased upon creating or modifying a user and when used
# to authenticate or find a user. Default is :email.
- 1
config.case_insensitive_keys = [:email]
# Configure which authentication keys should have whitespace stripped.
# These keys will have whitespace before and after removed upon creating or
# modifying a user and when used to authenticate or find a user. Default is :email.
- 1
config.strip_whitespace_keys = [:email]
# Tell if authentication through request.params is enabled. True by default.
# It can be set to an array that will enable params authentication only for the
# given strategies, for example, `config.params_authenticatable = [:database]` will
# enable it only for database (email + password) authentication.
# config.params_authenticatable = true
# Tell if authentication through HTTP Auth is enabled. False by default.
# It can be set to an array that will enable http authentication only for the
# given strategies, for example, `config.http_authenticatable = [:database]` will
# enable it only for database authentication. The supported strategies are:
# :database = Support basic authentication with authentication key + password
# config.http_authenticatable = false
# If 401 status code should be returned for AJAX requests. True by default.
# config.http_authenticatable_on_xhr = true
# The realm used in Http Basic Authentication. 'Application' by default.
# config.http_authentication_realm = 'Application'
# It will change confirmation, password recovery and other workflows
# to behave the same regardless if the e-mail provided was right or wrong.
# Does not affect registerable.
# config.paranoid = true
# By default Devise will store the user in session. You can skip storage for
# particular strategies by setting this option.
# Notice that if you are skipping storage for all authentication paths, you
# may want to disable generating routes to Devise's sessions controller by
# passing skip: :sessions to `devise_for` in your config/routes.rb
- 1
config.skip_session_storage = [:http_auth]
# By default, Devise cleans up the CSRF token on authentication to
# avoid CSRF token fixation attacks. This means that, when using AJAX
# requests for sign in and sign up, you need to get a new CSRF token
# from the server. You can disable this option at your own risk.
# config.clean_up_csrf_token_on_authentication = true
# When false, Devise will not attempt to reload routes on eager load.
# This can reduce the time taken to boot the app but if your application
# requires the Devise mappings to be loaded during boot time the application
# won't boot properly.
# config.reload_routes = true
# ==> Configuration for :database_authenticatable
# For bcrypt, this is the cost for hashing the password and defaults to 11. If
# using other algorithms, it sets how many times you want the password to be hashed.
#
# Limiting the stretches to just one in testing will increase the performance of
# your test suite dramatically. However, it is STRONGLY RECOMMENDED to not use
# a value less than 10 in other environments. Note that, for bcrypt (the default
# algorithm), the cost increases exponentially with the number of stretches (e.g.
# a value of 20 is already extremely slow: approx. 60 seconds for 1 calculation).
- 1
config.stretches = Rails.env.test? ? 1 : 11
# Set up a pepper to generate the hashed password.
# config.pepper = '5e07bc94bde8e86b5a1e7fe4821aadedfd7afd334d29f7665f3e22dc63d2b4aa3799eb6387ea050498a453c97db33b97d8a5d28f9e7203882350f688fd54869b'
# Send a notification email when the user's password is changed
# config.send_password_change_notification = false
# ==> Configuration for :confirmable
# A period that the user is allowed to access the website even without
# confirming their account. For instance, if set to 2.days, the user will be
# able to access the website for two days without confirming their account,
# access will be blocked just in the third day. Default is 0.days, meaning
# the user cannot access the website without confirming their account.
# config.allow_unconfirmed_access_for = 2.days
# A period that the user is allowed to confirm their account before their
# token becomes invalid. For example, if set to 3.days, the user can confirm
# their account within 3 days after the mail was sent, but on the fourth day
# their account can't be confirmed with the token any more.
# Default is nil, meaning there is no restriction on how long a user can take
# before confirming their account.
# config.confirm_within = 3.days
# If true, requires any email changes to be confirmed (exactly the same way as
# initial account confirmation) to be applied. Requires additional unconfirmed_email
# db field (see migrations). Until confirmed, new email is stored in
# unconfirmed_email column, and copied to email column on successful confirmation.
- 1
config.reconfirmable = true
# Defines which key will be used when confirming an account
# config.confirmation_keys = [:email]
# ==> Configuration for :rememberable
# The time the user will be remembered without asking for credentials again.
# config.remember_for = 2.weeks
# Invalidates all the remember me tokens when the user signs out.
- 1
config.expire_all_remember_me_on_sign_out = true
# If true, extends the user's remember period when remembered via cookie.
# config.extend_remember_period = false
# Options to be passed to the created cookie. For instance, you can set
# secure: true in order to force SSL only cookies.
# config.rememberable_options = {}
# ==> Configuration for :validatable
# Range for password length.
- 1
config.password_length = 6..128
# Email regex used to validate email formats. It simply asserts that
# one (and only one) @ exists in the given string. This is mainly
# to give user feedback and not to assert the e-mail validity.
- 1
config.email_regexp = /\A[^@\s]+@[^@\s]+\z/
# ==> Configuration for :timeoutable
# The time you want to timeout the user session without activity. After this
# time the user will be asked for credentials again. Default is 30 minutes.
# config.timeout_in = 30.minutes
# ==> Configuration for :lockable
# Defines which strategy will be used to lock an account.
# :failed_attempts = Locks an account after a number of failed attempts to sign in.
# :none = No lock strategy. You should handle locking by yourself.
# config.lock_strategy = :failed_attempts
# Defines which key will be used when locking and unlocking an account
# config.unlock_keys = [:email]
# Defines which strategy will be used to unlock an account.
# :email = Sends an unlock link to the user email
# :time = Re-enables login after a certain amount of time (see :unlock_in below)
# :both = Enables both strategies
# :none = No unlock strategy. You should handle unlocking by yourself.
# config.unlock_strategy = :both
# Number of authentication tries before locking an account if lock_strategy
# is failed attempts.
# config.maximum_attempts = 20
# Time interval to unlock the account if :time is enabled as unlock_strategy.
# config.unlock_in = 1.hour
# Warn on the last attempt before the account is locked.
# config.last_attempt_warning = true
# ==> Configuration for :recoverable
#
# Defines which key will be used when recovering the password for an account
# config.reset_password_keys = [:email]
# Time interval you can reset your password with a reset password key.
# Don't put a too small interval or your users won't have the time to
# change their passwords.
- 1
config.reset_password_within = 6.hours
# When set to false, does not sign a user in automatically after their password is
# reset. Defaults to true, so a user is signed in automatically after a reset.
# config.sign_in_after_reset_password = true
# ==> Configuration for :encryptable
# Allow you to use another hashing or encryption algorithm besides bcrypt (default).
# You can use :sha1, :sha512 or algorithms from others authentication tools as
# :clearance_sha1, :authlogic_sha512 (then you should set stretches above to 20
# for default behavior) and :restful_authentication_sha1 (then you should set
# stretches to 10, and copy REST_AUTH_SITE_KEY to pepper).
#
# Require the `devise-encryptable` gem when using anything other than bcrypt
# config.encryptor = :sha512
# ==> Scopes configuration
# Turn scoped views on. Before rendering "sessions/new", it will first check for
# "users/sessions/new". It's turned off by default because it's slower if you
# are using only default views.
# config.scoped_views = false
# Configure the default scope given to Warden. By default it's the first
# devise role declared in your routes (usually :user).
# config.default_scope = :user
# Set this configuration to false if you want /users/sign_out to sign out
# only the current scope. By default, Devise signs out all scopes.
# config.sign_out_all_scopes = true
# ==> Navigation configuration
# Lists the formats that should be treated as navigational. Formats like
# :html, should redirect to the sign in page when the user does not have
# access, but formats like :xml or :json, should return 401.
#
# If you have any extra navigational formats, like :iphone or :mobile, you
# should add them to the navigational formats lists.
#
# The "*/*" below is required to match Internet Explorer requests.
# config.navigational_formats = ['*/*', :html]
# The default HTTP method used to sign out a resource. Default is :delete.
- 1
config.sign_out_via = :delete
# ==> OmniAuth
# Add a new OmniAuth provider. Check the wiki for more information on setting
# up on your models and hooks.
# config.omniauth :github, 'APP_ID', 'APP_SECRET', scope: 'user,public_repo'
# ==> Warden configuration
# If you want to use other strategies, that are not supported by Devise, or
# change the failure app, you can configure them inside the config.warden block.
#
# config.warden do |manager|
# manager.intercept_401 = false
# manager.default_strategies(scope: :user).unshift :some_external_strategy
# end
# ==> Mountable engine configurations
# When using Devise inside an engine, let's call it `MyEngine`, and this engine
# is mountable, there are some extra configurations to be taken into account.
# The following options are available, assuming the engine is mounted as:
#
# mount MyEngine, at: '/my_engine'
#
# The router that invoked `devise_for`, in the example above, would be:
# config.router_name = :my_engine
#
# When using OmniAuth, Devise cannot automatically set OmniAuth path,
# so you need to do it manually. For the users scope, it would be:
# config.omniauth_path_prefix = '/my_engine/users/auth'
end
# Be sure to restart your server when you modify this file.
# Configure sensitive parameters which will be filtered from the log file.
- 1
Rails.application.config.filter_parameters += [:password]
# Be sure to restart your server when you modify this file.
# Add new inflection rules using the following format. Inflections
# are locale specific, and you may define rules for as many different
# locales as you wish. All of these examples are active by default:
# ActiveSupport::Inflector.inflections(:en) do |inflect|
# inflect.plural /^(ox)$/i, '\1en'
# inflect.singular /^(ox)en/i, '\1'
# inflect.irregular 'person', 'people'
# inflect.uncountable %w( fish sheep )
# end
# These inflection rules are supported but not enabled by default:
# ActiveSupport::Inflector.inflections(:en) do |inflect|
# inflect.acronym 'RESTful'
# end
# Be sure to restart your server when you modify this file.
# Add new mime types for use in respond_to blocks:
# Mime::Type.register "text/richtext", :rtf
# Be sure to restart your server when you modify this file.
#
# This file contains migration options to ease your Rails 5.0 upgrade.
#
# Read the Rails 5.0 release notes for more info on each option.
# Enable per-form CSRF tokens. Previous versions had false.
- 1
Rails.application.config.action_controller.per_form_csrf_tokens = true
# Enable origin-checking CSRF mitigation. Previous versions had false.
- 1
Rails.application.config.action_controller.forgery_protection_origin_check = true
# Make Ruby 2.4 preserve the timezone of the receiver when calling `to_time`.
# Previous versions had false.
- 1
ActiveSupport.to_time_preserves_timezone = true
# Require `belongs_to` associations by default. Previous versions had false.
- 1
Rails.application.config.active_record.belongs_to_required_by_default = true
# Do not halt callback chains when a callback returns false. Previous versions had true.
- 1
ActiveSupport.halt_callback_chains_on_return_false = false
# Configure SSL options to enable HSTS with subdomains. Previous versions had false.
- 1
Rails.application.config.ssl_options = { hsts: { subdomains: true } }
# Be sure to restart your server when you modify this file.
- 1
Rails.application.config.session_store :cookie_store, key: '_faludi-lca-app_session'
# Be sure to restart your server when you modify this file.
# This file contains settings for ActionController::ParamsWrapper which
# is enabled by default.
# Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array.
- 1
ActiveSupport.on_load(:action_controller) do
- 2
wrap_parameters format: [:json]
end
# To enable root element in JSON for ActiveRecord objects.
# ActiveSupport.on_load(:active_record) do
# self.include_root_in_json = true
# end
- 1
Rails.application.routes.draw do
- 1
resources :model
- 1
mount JasmineRails::Engine => '/specs' if defined?(JasmineRails)
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
- 1
root 'model#index'
- 1
match '/welcome' => 'users#welcome', via: :get
- 1
match '/login' => 'users#login', via: [:get, :post]
- 1
match '/logout' => 'users#logout', via: [:get, :post]
- 1
match '/signup' => 'users#signup', via: [:get, :post]
- 1
match '/profile' => 'users#profile', via: [:get, :post]
end
- 1
Given(/^I am on the homepage$/) do
- 2
visit root_path
end
- 1
Given(/^the following Materials exist:$/) do |table|
- 15
table.hashes.each do |material|
- 135
Material.create(material)
end
end
- 1
Given(/^the following Processes exist:$/) do |table|
- 15
table.hashes.each do |process|
- 90
Procedure.create(process)
end
end
- 1
Then(/^I choose "([^"]*)" from "([^"]*)"$/) do |menu_option, menu|
- 3
within("td[id=#{menu}]") do
- 3
find('.collapsible-header', :text => menu_option).click
end
end
- 1
Then(/^I drag "([^"]*)" to "([^"]*)"$/) do |material, drop_area|
source = find('.draggable', :text => material)
target = find("td[id=#{drop_area}]")
source.drag_to(target)
end
- 1
require 'uri'
- 1
require 'cgi'
- 1
require File.expand_path(File.join(File.dirname(__FILE__), "..", "support", "paths"))
- 1
require File.expand_path(File.join(File.dirname(__FILE__), "..", "support", "selectors"))
- 1
module WithinHelpers
- 1
def with_scope(locator)
locator ? within(*selector_for(locator)) { yield } : yield
end
end
- 1
World(WithinHelpers)
- 1
When /^I create an assembly named "([^"]*)"$/ do |name|
- 3
Assembly.create(:user_id =>User.find_by_username("user123").id, :name => name)
end
- 1
Given(/^the following Users exist:$/) do |table|
- 17
table.hashes.each do |u|
- 17
User.create(u)
end
end
- 1
Given(/^I am on the signuppage$/) do
- 4
visit signup_path
end
- 1
Given(/^I am on the loginpage$/) do
- 11
visit login_path
end
- 1
Given(/^I am on the welcomepage$/) do
- 1
visit welcome_path
end
- 1
Given(/^I am on the profile page$/) do
visit profile_path
end
- 1
Given(/^I visit my profile$/) do
- 2
visit profile_path
end
- 1
When /^I drag "([^"]*)"$/ do |piece|
page.execute_script %Q{
$(#{piece}).simulateDragSortable({move: -4});
}
end
# TL;DR: YOU SHOULD DELETE THIS FILE
#
# This file was generated by Cucumber-Rails and is only here to get you a head start
# These step definitions are thin wrappers around the Capybara/Webrat API that lets you
# visit pages, interact with widgets and make assertions about page content.
#
# If you use these step definitions as basis for your features you will quickly end up
# with features that are:
#
# * Hard to maintain
# * Verbose to read
#
# A much better approach is to write your own higher level step definitions, following
# the advice in the following blog posts:
#
# * http://benmabey.com/2008/05/19/imperative-vs-declarative-scenarios-in-user-stories.html
# * http://dannorth.net/2011/01/31/whose-domain-is-it-anyway/
# * http://elabs.se/blog/15-you-re-cuking-it-wrong
#
- 1
require 'uri'
- 1
require 'cgi'
- 1
require File.expand_path(File.join(File.dirname(__FILE__), "..", "support", "paths"))
- 1
require File.expand_path(File.join(File.dirname(__FILE__), "..", "support", "selectors"))
- 1
module WithinHelpers
- 1
def with_scope(locator)
locator ? within(*selector_for(locator)) { yield } : yield
end
end
- 1
World(WithinHelpers)
# Single-line step scoper
- 1
When /^(.*) within (.*[^:])$/ do |step, parent|
with_scope(parent) { When step }
end
# Multi-line step scoper
- 1
When /^(.*) within (.*[^:]):$/ do |step, parent, table_or_string|
with_scope(parent) { When "#{step}:", table_or_string }
end
# Given /^(?:|I )am on (.+)$/ do |page_name|
# visit path_to(page_name)
# end
- 1
When /^(?:|I )go to (.+)$/ do |page_name|
visit path_to(page_name)
end
- 1
When /^(?:|I )press "([^"]*)"$/ do |button|
- 13
click_button(button)
end
- 1
When /^(?:|I )follow "([^"]*)"$/ do |link|
- 3
click_link(link)
end
- 1
When /^(?:|I )fill in "([^"]*)" with "([^"]*)"$/ do |field, value|
- 43
fill_in(field, :with => value)
end
- 1
When /^(?:|I )fill in "([^"]*)" for "([^"]*)"$/ do |value, field|
fill_in(field, :with => value)
end
# Use this to fill in an entire form with data from a table. Example:
#
# When I fill in the following:
# | Account Number | 5002 |
# | Expiry date | 2009-11-01 |
# | Note | Nice guy |
# | Wants Email? | |
#
# TODO: Add support for checkbox, select or option
# based on naming conventions.
#
- 1
When /^(?:|I )fill in the following:$/ do |fields|
fields.rows_hash.each do |name, value|
When %{I fill in "#{name}" with "#{value}"}
end
end
- 1
When /^(?:|I )select "([^"]*)" from "([^"]*)"$/ do |value, field|
select(value, :from => field)
end
- 1
When /^(?:|I )check "([^"]*)"$/ do |field|
check(field)
end
- 1
When /^(?:|I )uncheck "([^"]*)"$/ do |field|
uncheck(field)
end
- 1
When /^(?:|I )choose "([^"]*)"$/ do |field|
choose(field)
end
- 1
When /^(?:|I )attach the file "([^"]*)" to "([^"]*)"$/ do |path, field|
attach_file(field, File.expand_path(path))
end
- 1
Then /^(?:|I )should see "([^"]*)"$/ do |text|
- 54
if page.respond_to? :should
- 54
page.should have_content(text)
else
assert page.has_content?(text)
end
end
- 1
Then /^(?:|I )should see \/([^\/]*)\/$/ do |regexp|
regexp = Regexp.new(regexp)
if page.respond_to? :should
page.should have_xpath('//*', :text => regexp)
else
assert page.has_xpath?('//*', :text => regexp)
end
end
- 1
Then /^(?:|I )should not see "([^"]*)"$/ do |text|
- 3
if page.respond_to? :should
- 3
page.should have_no_content(text)
else
assert page.has_no_content?(text)
end
end
- 1
Then /^(?:|I )should not see \/([^\/]*)\/$/ do |regexp|
regexp = Regexp.new(regexp)
if page.respond_to? :should
page.should have_no_xpath('//*', :text => regexp)
else
assert page.has_no_xpath?('//*', :text => regexp)
end
end
- 1
Then /^the "([^"]*)" field(?: within (.*))? should contain "([^"]*)"$/ do |field, parent, value|
with_scope(parent) do
field = find_field(field)
field_value = (field.tag_name == 'textarea') ? field.text : field.value
if field_value.respond_to? :should
field_value.should =~ /#{value}/
else
assert_match(/#{value}/, field_value)
end
end
end
- 1
Then /^the "([^"]*)" field(?: within (.*))? should not contain "([^"]*)"$/ do |field, parent, value|
with_scope(parent) do
field = find_field(field)
field_value = (field.tag_name == 'textarea') ? field.text : field.value
if field_value.respond_to? :should_not
field_value.should_not =~ /#{value}/
else
assert_no_match(/#{value}/, field_value)
end
end
end
- 1
Then /^the "([^"]*)" field should have the error "([^"]*)"$/ do |field, error_message|
element = find_field(field)
classes = element.find(:xpath, '..')[:class].split(' ')
form_for_input = element.find(:xpath, 'ancestor::form[1]')
using_formtastic = form_for_input[:class].include?('formtastic')
error_class = using_formtastic ? 'error' : 'field_with_errors'
if classes.respond_to? :should
classes.should include(error_class)
else
assert classes.include?(error_class)
end
if page.respond_to?(:should)
if using_formtastic
error_paragraph = element.find(:xpath, '../*[@class="inline-errors"][1]')
error_paragraph.should have_content(error_message)
else
page.should have_content("#{field.titlecase} #{error_message}")
end
else
if using_formtastic
error_paragraph = element.find(:xpath, '../*[@class="inline-errors"][1]')
assert error_paragraph.has_content?(error_message)
else
assert page.has_content?("#{field.titlecase} #{error_message}")
end
end
end
- 1
Then /^the "([^"]*)" field should have no error$/ do |field|
element = find_field(field)
classes = element.find(:xpath, '..')[:class].split(' ')
if classes.respond_to? :should
classes.should_not include('field_with_errors')
classes.should_not include('error')
else
assert !classes.include?('field_with_errors')
assert !classes.include?('error')
end
end
- 1
Then /^the "([^"]*)" checkbox(?: within (.*))? should be checked$/ do |label, parent|
with_scope(parent) do
field_checked = find_field(label)['checked']
if field_checked.respond_to? :should
field_checked.should be_true
else
assert field_checked
end
end
end
- 1
Then /^the "([^"]*)" checkbox(?: within (.*))? should not be checked$/ do |label, parent|
with_scope(parent) do
field_checked = find_field(label)['checked']
if field_checked.respond_to? :should
field_checked.should be_false
else
assert !field_checked
end
end
end
- 1
Then /^(?:|I )should be on (.+)$/ do |page_name|
current_path = URI.parse(current_url).path
if current_path.respond_to? :should
current_path.should == path_to(page_name)
else
assert_equal path_to(page_name), current_path
end
end
- 1
Then /^(?:|I )should have the following query string:$/ do |expected_pairs|
query = URI.parse(current_url).query
actual_params = query ? CGI.parse(query) : {}
expected_params = {}
expected_pairs.rows_hash.each_pair{|k,v| expected_params[k] = v.split(',')}
if actual_params.respond_to? :should
actual_params.should == expected_params
else
assert_equal expected_params, actual_params
end
end
- 1
Then /^show me the page$/ do
save_and_open_page
end
# TL;DR: YOU SHOULD DELETE THIS FILE
#
# This file is used by web_steps.rb, which you should also delete
#
# You have been warned
- 1
module NavigationHelpers
# Maps a name to a path. Used by the
#
# When /^I go to (.+)$/ do |page_name|
#
# step definition in web_steps.rb
#
- 1
def path_to(page_name)
case page_name
when /^the home\s?page$/
'/'
# Add more mappings here.
# Here is an example that pulls values out of the Regexp:
#
# when /^(.*)'s profile page$/i
# user_profile_path(User.find_by_login($1))
else
begin
page_name =~ /^the (.*) page$/
path_components = $1.split(/\s+/)
self.send(path_components.push('path').join('_').to_sym)
rescue NoMethodError, ArgumentError
raise "Can't find mapping from \"#{page_name}\" to a path.\n" +
"Now, go and add a mapping in #{__FILE__}"
end
end
end
end
- 1
World(NavigationHelpers)
# TL;DR: YOU SHOULD DELETE THIS FILE
#
# This file is used by web_steps.rb, which you should also delete
#
# You have been warned
- 1
module HtmlSelectorsHelpers
# Maps a name to a selector. Used primarily by the
#
# When /^(.+) within (.+)$/ do |step, scope|
#
# step definitions in web_steps.rb
#
- 1
def selector_for(locator)
case locator
when "the page"
"html > body"
# Add more mappings here.
# Here is an example that pulls values out of the Regexp:
#
# when /^the (notice|error|info) flash$/
# ".flash.#{$1}"
# You can also return an array to use a different selector
# type, like:
#
# when /the header/
# [:xpath, "//header"]
# This allows you to provide a quoted selector as the scope
# for "within" steps as was previously the default for the
# web steps:
when /^"(.+)"$/
$1
else
raise "Can't find mapping from \"#{locator}\" to a selector.\n" +
"Now, go and add a mapping in #{__FILE__}"
end
end
end
- 1
World(HtmlSelectorsHelpers)


Preparation time
over 2 hours
Cooking time
10 to 30 mins
Serves
Serves 4
If you are looking to do something a bit different with seafood then this cuttlefish bolognaise is just the trick.
To prepare the cuttlefish, chop the cuttlefish tentacles and wings until very fine. Cut the cuttlefish bodies in half lengthways and stack one half on top of the other in vacuum-pack bags and seal. Freeze the cuttlefish bodies in the bags, for at least two hours, until frozen solid.
Heat a frying pan until hot, add the minced tentacles and wings and cook, over a medium heat, until all the liquid comes out. Drain the cuttlefish mince, discarding the liquid.
In a separate frying pan, add the olive oil and gently fry the shallot and garlic with the bouquet garni, until softened.
Add the cooked chopped cuttlefish, parsley and tomato purée to the frying pan and cook for 5-10 minutes.
Add the brandy and cook until it has reduced in volume, add the wine and reduce in volume again, by half.
Add the chilli flakes and top up the pan with water, until just covering the pan contents. Bring the pan up to the boil, then reduce the heat to a simmer and cook for 15 minutes until the cuttlefish is tender, and the volume of liquid has reduced. Check the seasoning, and add salt and freshly ground black pepper to taste.
Just before serving, bring a pan of water up to the boil. Take the frozen cuttlefish bodies out of the freezer and remove from the vacuum-pack bags. Thinly slice the frozen cuttlefish bodies, into 2mm/⅛in slices. Drop the cuttlefish slices into the boiling water and cook for 10-15 seconds.
Drain well and mix with the softened butter, salt and freshly ground black pepper.
To serve, spoon the cuttlefish slices into serving bowls and spoon the cuttlefish ragout on top. Finish with some grated parmesan and chopped parsley.


In this game, you are part of the circular economy.
What is a circular economy? We're glad you asked! In a circular economy, nothing goes to waste. Instead, when goods reach the end of their life, they are remanufactured into something new.
Your task in this game is to recover plastic waste from the coasts of countries around the world so the items can be made into something new.
For each turn, you will be given a mission to recover a specific type of plastic waste. You then choose the country your team will recover the plastic from to achieve the mission. If there is enough of that type of plastic waste at that location, you will succeed and get a new mission. If you don't retrieve enough waste, the game is over.
Good luck!


Install Multiple Java Versions on Mac
During one of AWS Lambda exploration projects, I need to use Amazon’s swagger-import-tool for uploading swagger documents to AWS. The problem is that this tool has a dependency on Java 8, however, my installed JDK is 7, and I have to keep it for all existing Java projects. It seems that I need to have something like NVM (Node Version Manager) … this time for JDKs.


Spreadsheet Data
Spreadsheet Name:
Rep. Name:
Rep. Phone #:
Rep. Email:
Org Name:
Locations:
Start Time:
Proposed User:
Update Data


Use the .badge
class, followed by.badge-secondary
class within element to create secondary badge.
Use the .badge
class, followed by.badge-primary
class within element to create primary badge.
Use the .badge
class, followed by.badge-success
class within element to create success badge.
Use the .badge
class, followed by.badge-danger
class within element to create danger badge.
Use the .badge
class, followed by.badge-info
class within element to create info badge.
Use the .badge
class, followed by.badge-warning
class within element to create warning badge.
Use the .badge
class, followed by.bg-blue-grey
class within element to create blue grey badge.
Use the .badge
class, followed by.badge-secondary
class within element to create secondary badge.
Use the .badge
class, followed by.badge-square
class for square bordered badge.
Use the .badge
class, followed by.round
class for round bordered badge.
Use the .badge
class, followed by.badge-danger
class within element to create danger badge.
Use the .badge
class, followed by.badge-square
class for square badge.
Use the .badge
class, followed by.round
class for round bordered.
Use the .badge
class, followed by.badge-secondary
class within element to create secondary badge.
Use the .badge
class, followed by.badge-square
class to square bordered badge.
Use the .badge
class, followed by.round
class for round warning badge.
Use the .badge
class, followed by.badge-danger
class within element to create danger badge.
Use the .badge
class, followed by.badge-square
class to square bordered badge.
Use the .badge
class, followed by.round
class for round warning badge.
Use the .badge-bordered
with class .badge
. Also use .border-COLOR
class to add border and use .COLOR
for text color
Use the .badge-striped
with class .badge
for striped styled badges. Also use .border-left-COLOR
or .border-right-COLOR
class to add border to left and right.
Use .block
class with .badge
, to set block badge.


Introduction
Code contributions are always welcomed.
Simone code is stored on GitHub, and GitHub's pull request's are used for merging code changes from people who does not have write access to repository. You cannot send patches in ZIP files, using JSFiddle or via Skype. GitHub's the only way, with translations being the only exception. If you're unfamiliar with Git, there are some great resources to get you started, including Try Git, an online learning tool, basic course on GitHub, and the Pro Git book with in-depth analysis of all Git features.
General guidelines
There are few things to remember:
- Simone comes with tests. New features without any tests written to it, or with poorly written tests, will not be merged until test coverage is satisfactory.
- QUnit is used for testing, and it's trivial to learn. If you never wrote tests, it would take you an hour or two to wrap you head around it. If you have experience with unit testing frameworks, you'll learn Qunit momentarily.
- Bug fixes should also be tested. You can benefit from test-driven development here. (Basically: 1. Write failing test for the bug. 2. Fix the bug. 3. Test is now passing. 4. Profit.).
- Patches fixing Simone for unsupported browsers (IE8, Safari 5, Opera 12) will not me merged.
Coding standards
jQuery UI's coding standards apply to Simone, with a few modifications:
- Ignore rules that are marked as those that should be moved to widget factory docs.
- Ignore parts about z-index stacking.
- You can use
data()
on element and it's subordinates, just callremoveData()
on destroy or when element is no longer used.
Please follow JavaScript Style Guide, with the following exceptions:
- Ignore the part about JSLint. If you run JSLint on your code, it's fine, but if you don't, that's fine too. Please don't fix errors reported by JSLint on parts of code that you didn't contributed.
- Ignore the part about multi-line statements when it comes to strings.
Please also remember to:
- Trail whitespaces before committing changes. Your favourite editor probably has some plugin for it. Search online for how to turn it on, if you're unfamiliar with this concept.
- Use spaces, not tabs, for intending multiline
var
statements (not everyone use 4 spaces for tab), for example:
function foo() {
var a, // first a tab, because function should be intended,
b, // but then four spaces
c; // (select code with mouse to see it clearly)
}
Versioning
First version of Simone was 0.1.0.
Major versions, like 0.2.0, 0.3.0, and so on, are versions introducing new features, extending existing features, containing API redesigns, dropping off deprecated features, dropping support for versions of jQuery and jQuery UI, and so on.
Maintenance releases, like 0.1.2, 0.2.1, and so on, will only contain bugfixes for major versions. They can however contain documentation extensions, new demos, new languages, and new tests for existing features.
Commits
When committing, remember about few things:
- Commit messages should be informative. Inform to what features, new or existing, is you commit related to, and in what manner.
- Include issue ID in form of
#123
, if your commit related to a issue from the issue tracker. - Make separate commits for logically separate changes. Don't join multiple issue into one commit, and don't generate multiple commit for a single issue (squash them instead). Pull requests that don't follow those two rules will not be rejected, though. It's just a good self-discipline.
Pull request
- Make pull request from a separate branches.
git checkout -b descriptive-branch-name
is all that's needed, and it leaves your master branch in peace for easy future pulls from original repository. - Make pull request with at least commit message. The more information you provide, the better. Please do not left conversation the moment you've made pull request. People might have questions or comments for you (GitHub will inform about them you if you didn't changed defaults settings).
Discussions
Talking is good. Discussing major changes before you're gonna do them is always a good idea. That way you gonna avoid contributing code that will not be finally merged, and you can get feedback on your ideas. Please also start a new issue when you would like to tell about you're experience with this project documentation, demos, or code. If you don't want to share that publicly, drop an email to the author.


To view this video please enable JavaScript, and consider upgrading to a web browser that supports HTML5 video


- This means that you should use each channel for it’s designed purpose.
- A channel’s purpose can be found in it’s channel topic.
Advertising
- As of 6/13/2017 advertising is allowed in the Yara Discord!
Please keep the hate inside, take it to the Direct Messages.
- Please don’t start drama, flame wars, or anything of the sort in Yara.
No spam, of any kind
- Please do not spam, participate in any raids, or send bots in here. They are prohibited and, take common sense,
who likes spam? Please keep it out of Yara.
- Please do not raid under the name of Yara, if you are caught you will be banned.
Please do not reveal spoilers!
- No one likes a spoiler. Please don’t spoil something for someone else, you don’t know if they have watched
it or not. It’s just wrong and our moderators will warn you.
If you have an issue with a member, please report it.
- If there is an issue, please take it to the DMs as stated above, or message a moderator if there is an issue.
Respect others.
- Profanity is allowed in Yara, but please keep it low and respect others, if it gets out of hand, we will punish!
- Simply, don't be autistic or an inbred.
Please do not threaten, bully, or harrass other users.
- Do not leak any personal information on any other users without their consent.
Keep the shitposting and memes down low
- Take it to the #shitposting channel if its too much or shouldn’t be there. Thanks!
Keep NSFW and NSFL content away
- NSFW and NSFL Content is not welcome in Yara, unless it is in the designated channels.
- Underage content is extremely prohibited, this includes anything that depicts “lolicon” or “shotacon.”
- Please also note that anything 3d is also not welcome in Yara (you will not get moderated for posting anything
3d, but we do not prefer it in Yara) [This rule applies to all 3d content].
- This also means not to post disturbing content and please GORE AT ALL!


1. Statistical learning: the setting and the estimator object in the scikit-learn¶
1.1. Datasets¶
The scikit-learn deals with learning information from one or more datasets that are represented as 2D arrays. They can be understood as a list of multi-dimensional observations. We say that the first axis of these arrays is the samples axis, while the second is the features axis.
A simple example shipped with the scikit: iris dataset
>>> from scikits.learn import datasets
>>> iris = datasets.load_iris()
>>> data = iris.data
>>> data.shape
(150, 4)
It is made of 150 observations of irises, each described by 4 features: their sepal and petal length and width, as detailed in `iris.DESCR.
When the data is not intially in the (n_samples, n_features) shape, it needs to be preprocessed to be used by the scikit.
An example of reshaping data: the digits dataset
The digits dataset is made of 1797 8x8 images of hand-written digits
>>> digits = datasets.load_digits()
>>> digits.images.shape
(1797, 8, 8)
>>> import pylab as pl
>>> pl.imshow(digits.images[0], cmap=pl.cm.gray_r)
<matplotlib.image.AxesImage object at ...>
To use this dataset with the scikit, we transform each 8x8 image in a feature vector of length 64
>>> data = digits.images.reshape((digits.images.shape[0], -1))
1.2. Estimators objects¶
Fitting data: The core object of the scikit-learn is the estimator object. All estimator objects expose a fit method, that takes a dataset (2D array):
>>> estimator.fit(data)
Estimator parameters: All the parameters of an estimator can be set when it is instanciated, or by modifying the corresponding attribute:
>>> estimator = Estimator(param1=1, param2=2)
>>> estimator.param1
1
Estimated parameters: When data is fitted with an estimator, parameters are estimated from the data at hand. All the estimated parameters are attributes of the estimator object ending by an underscore:
>>> estimator.estimated_param_


Hoisin Pork Belly
Melt-in-mouth fatty pork in a sweet and spicy glaze.
- ⏲ Prep time: 5 min
- 🍳 Cook time: 1 hr 15 mins
- 🍽 Servings: 2
Ingredients
- 400g high fat pork belly (no skin)
- large thumb of ginger
- 4 cloves of garlic
- 1 scotch bonnet chili
- 2 tbsp ketchup
- 2 tbsp hoisin sauce
- 2 tbsp honey
- 2 tsp sesame oil
- 1 spring onion
Directions
- Cut pork belly into 1 inch cubes.
- In a small frying pan place pork cubes fattiest side down in dry pan, put gas on lowest level possible flame, cover with lid.
- Lard will render out of the pork allowing it to confit cook in its own juice. Low flame essential.  This will take around 1hr.
- Remove pork belly and place in a bowl and cover. Remove around half the liquified lard and store for other uses.
- Add diced ginger, smashed garlic cloves and chopped chili and sauté in the remaining lard. Once these are softened add the ketchup, hoisin sauce and honey. Reduce over very low heat for a few minutes until thickened.
- Add the pork belly to the sauce and cook on low for a further 2 minutes. Leave to stand for 5 minutes then add thinly sliced spring onions to garnish. Enjoy with steamed white rice.
Contribution
speaker scorned
Recipe tags:
chinese
pork
spicy
sweet


Currently completing an intensive 6-month-long training program in Machine Learning at Integrify.
Working with Python, Scikit-learn, and TensorFlow among others to tackle real-life challenges.
Interested? See the full curriculum on integrify.io
IT Officer
Platinum Group Ltd. Bangladesh
Oversaw the company’s IT infrastructure, maintained the IT network and supervised the company’s intranet and LAN,
IT hardware troubleshooting, analyze data and create monthly salary reports, visualization graphs and charts,
Server – side analysis.
IT Officer (Trainee)
Mutual Trust Bank Ltd. Bangladesh
Assist with troubleshooting issues and provide technical support, Lend IT support in areas such as cybersecurity, programming,
analytics, and data center management.
Master Thesis Worker
LUT University, Lappeenranta
The purpose of the work was to develop a system which is capable detecting anomaly defects of sawn timber using Auto-encoder.


This calculator will help you calcaulate the distance between the incident and the refraction light after light travels through a planar plate
Incident Refractive Index $n_1$;
Refraction Refractive Index $n_2$;
Incident angle $\theta_1$;
Refraction angle $\theta_2$;
The Thickness of The Plate $d$


“Nancy Grows Up,” the Media Age, and the Historian’s Craft
The Challenge of “Nancy Grows Up”
It begins with anxious crying. The plaintive sound only lasts a few moments before the screams drop into a slightly lower register and transform into a calm murmur. The sound repeats, then breaks into the rudiments of language. It sings—or tries—and falters. A man helps, playing a game with a familiar rhyme: “Jack and Jill went up the … to fetch a pail of … Jack fell down and broke his … and Jill came tumbling …”
She fills in the appropriate words and, as she does, we suddenly meet her.
For the remaining minute and forty-two seconds we hear and follow Nancy. We listen to her development as a person through a variety of situations: she wishes her father a happy birthday, she lists what she wants for Christmas (“a puppy and a whistle and a horn and a hat and a dress and a ballerina costume”), she explains how to housetrain a dog, and she expresses her feelings about the Russians sending the dog Laika into space. All the while Nancy’s voice grows increasingly distinct, speaks longer, takes on and sheds accents, and uses increasingly sophisticated vocabulary. Finally, the recording ends, but it does so just as we witness what seems like a personal milestone. Nancy becomes silent just after we see the door open on her developing sexuality. In the last and longest of the voices, after updating us on what she has been doing at school, she sighs and confesses, “and I’ve been discovering boys.”
“Nancy Grows Up”
Recorded over the course of the 1950s and the early 1960s, “Nancy Grows Up” gives us a beautiful and stimulating portrait of growth. It is an audio montage; Tony Schwartz, its creator, continuously taped his niece from her first month of life to the age of thirteen and, later, spliced together pieces chronologically. Schwartz likened what he did to time-lapse photography: it condenses the story of thirteen years, as Schwartz said, in less than two and a half minutes.
“Nancy Grows Up” is more than a simple novelty piece. Poetic and expository, it reveals a type of storytelling that has an enigmatic intelligibility. Offering a biographical history of development, “Nancy” narrates the phases and stages of a young girl’s early life. It does so quite successfully and evocatively and achieves a rich unspoken analysis in its juxtaposition of different voices, words, and timbre.
Confronted with the possibilities of communication in “Nancy,” one can’t help but ask, “why have historians neglected sound?” Despite more than a century and a half of ongoing media revolutions, historians—especially professional academic historians—have largely worked within a self-imposed textual ghetto. Why have historians restricted themselves to written histories? Why only the monograph and journal article after the advent of the photo essay, the LP record, the radio show, documentary film, and animation short?
There do seem to be substantial reasons for why we have continued to rely almost exclusively on text. It is beyond the scope of this piece to attempt to give a comprehensive explanation of this phenomenon, but a few things come immediately to mind. Text’s capacity to transmit large masses of information, for example, is attractive. The monograph and article also parallel and allow the exact reproduction of what has been most historians’ primary source: written documents. Furthermore, the footnote, the sine qua non of historical scholarship and the linguistic technology for and symbol of the discipline’s seriousness and rigor, appears almost inextricably grounded in the text.
Beginning to rethink the footnote outside the page only seemed possible recently. Internet-based publications have shown that digital footnotes can reference sources in more direct ways, offer more detail and information, and, possibly, shift the function of the footnote altogether. The blog maintained by The Appendix, for example, uses hyperlink footnotes to immediately show the content of a source or acquaint the reader with information about an obscure person or organization.
Text has served historians well, but it is useful to ask if we have missed whole modes of analysis and presentation with such a consistently narrow range of media. How, for example, has the primacy of text and the page shaped how we understand and judge historical scholarship as a whole? Hayden White famously asserted that historical interpretation is shaped by the plot structures of particular kinds of stories—the romance, the tragedy, the comedy, and the satire—but we can go one step further: history as a discipline has also been fundamentally structured by its medium. The way we conceive of the work of history and, thus, the field in which history can be told and debated are intimately intertwined with and determined by the advantages and limitations of the written word.
There is nothing essential linking history and text. Historians can and should embrace other media in the production of history. Fortunately, there are considerable guideposts for a journey into new media; our neglect has not been for a lack of evidence of the unique and intriguing capabilities of other media.
The use and exploration of sound and sound technology offer clear examples of this. “Nancy Grows Up” was not an isolated piece; it was part of a large, rich history of thinking about and through sound in the twentieth century. Even a brief account of sound technology shows that there is a considerable body of work in other media that historians could learn from and draw on.
Looking at some of the ideas and practices surrounding “Nancy” illuminates some of the ways non-historians have sought to engage sound narrative and documentation.
Telling with Sound: A Very Short History
From the late 1920s until the early 1950s, American radio drama, comedies, and soap operas pioneered new ways of conveying stories and ideas through voice and other auditory material. These shows worked out, in the words of radio scholar Susan Douglas, a mode of “story listening.” Although primarily a source of entertainment, Orson Welles’s 1938 famous Mercury Theater production of War of the Worlds—and the consequent panic that a Martian invasion was under way—demonstrates the immense power and effect that audio stories could wield. Welles’s ability to create hysteria and horror in his listeners was a direct consequence of his “media sense”—his talent at adapting storytelling to his artistic vehicle.
Across the pond, intellectuals quickly used the young technology as material for modernist experimentation. During the late 1920s and early 1930s, German artists sought to create a radio-specific art form, i.e., an artistic genre that would reveal and marshal radio’s unique characteristics. The intriguing possibilities of the ether attracted a number of artists from outside the musical or theatrical world; established writers like Alfred Döblin and future film directors like Max Ophüls and Billy Wilder produced Hörbilder (literally, listening pictures) and Hörspiele (listening plays). In 1930, the avant-garde director Walter Ruttmann produced the following:
Walter Ruttmann, Wochenende, (1930)
A film soundtrack without the accompanying picture, Wochenende is the story of a weekend. Ruttmann had spent much of the previous decade making “Absolute Film,” abstract films which attempted to capture the essential qualities of the filmic medium. With Wochenende, he tried to do the same with sound. Working with new sound film technology, he isolated the soundtrack and built a narrative using a montage of noises, identifiable sounds, and speech-fragments.
Germans were not the only Europeans playing with the open possibilities of radio form. Around the same time, Lance Sieveking attempted his own experiments in “wireless imagination” at the BBC and Italian Futurists like Fillipo Marinetti produced music and theater for fascist radio.
Others, like Paul Daharme, Sir Oliver Lodge, and Rudolf Arnheim, wrote and theorized about the possibilities of the disembodied auditory content of radio during the interwar period. For many, the ethereal and mysterious qualities of radio could foster outlandish hopes and fantasies. Daharme and Lodge, for example, believed that the ether granted access to new psychological and metaphysical spaces. Daharme, a French advertiser and experimental radio practitioner, believed that broadcasting could reach directly into the unconscious and radio works could provoke a psychoactive space in which individuals would encounter their own theater of the mind. Lodge, a pioneer in radio technology and revered British scientist, argued that the ether comingled with the realm of the dead and that broadcasting could be used as a spiritualist tool to communicate with lost love ones.
Arnheim stayed a bit closer to the ground. Like Daharme and Lodge, however, he was also fascinated by radio’s ability to detach sound from image. After years thinking about images as a film critic, he wrote Radio: The Art of Sound. In it he pondered the power of isolated sounds and the audio-specific methods through which radio could tell stories.
The ether was not only used for fiction and modernist abstraction, however. Radio journalists also produced documentary news programs. By the late 1930s, broadcast journalism had supplanted newspapers for immediate news coverage in the United States, and most Americans on the home front experienced World War II on a day-to-day basis through listening. Radio journalism employed all sorts of sounds—location noises, sound effects, monologues, and dialogues—in order to move audiences between “informational listening” (taking in facts) and “dimensional listening” (where, for example, “people were compelled to conjure up maps, topographies, street scenes in London after a bombing”).
After their introduction in 1948, long playing records provided new materials and resources to explore the story-telling and documentary capabilities of sound. In addition to being repeatable, LPs had a distinct advantage over radio: their multi-faceted presentation format. Record producers and designers could use the non-aural parts of the LP—the label, cover, photos, and liner notes—to guide the listener’s perceptions and stoke their imagination. Ever the brilliant pioneer, Schwartz made a number of innovative narrative and representational experimental recordings for Folkway Records, including An Actual Story in Sound of a Dog’s Life, New York 19, Nueva York: A Tape Documentary of Puerto Rican New Yorkers, and The World in My Mailbox.
“Nancy” was an intersection of techniques developed in radio and on LP. Originally produced for Schwartz’s show Around New York on New York Public Radio, he reworked and released it more than once on record. First appearing as “History of a Voice” in 1962 on You’re Stepping on My Shadow: “Sound Stories” of NYC, he re-presented it as “Nancy” on Records the Sounds of Children in 1970. Although utilizing the same base recordings, they told their story a bit differently: “History” utilizes voice-over narration like a radio news piece while “Nancy” edits together sounds in a way similar to Ruttmann. Both were packaged with a cover and notes.
During the period that Schwartz released “History” and “Nancy,” other LP projects approached history more directly. In the early 1960s, for example, Time-Life released The Sounds of History, a twelve-volume set of records that intertwined short explanations of events, readings of documents and literature, recordings, and contemporary music to evoke sonic portraits of important eras in the history of the United States. Later in the decade, torch singer and Batman star Eartha Kitt helped record narrative biographies of important African Americans in the two-volume set Black Pioneers in American History.
The largest engagement with telling history on records during the period occurred, not surprisingly, in the sphere of music. Some did it within music itself—ambitious albums like Duke Ellington’s Black, Brown, and Beige or the Kinks’ Arthur (Or the Rise and Fall of the British Empire) attempt to paint large historical shifts through suite-like musical assemblages. Others used records to present the history of music through documents; record companies, for example, offered overviews of musical genres by collecting together and chronologically ordering recordings. These projects could become quite ambitious—the most cursory and expansive collection of this sort, the 1962 record collection 2,000 Years of Music, tried to capture “a concise history of the development of music from the earliest times through the 18th century” on four LP sides.
“Nancy” and the New Work of History
This is a just sketch, but it gives us a sense of the wide range of work that has been done exploring the narrative and communication possibilities of sound technology before the digital age. They demonstrate the ample resources and precedents to which historians might turn and build on if we wished to expand beyond paper and the PDF. Despite this extensive engagement with sound as a narrative medium, however, these experiments and treatises have largely taken place outside the historical discipline. Sound creators and thinkers have remained outliers and outsiders.
This non-engagement with sound seems surprising, given the significant place that speech plays in the profession. Historians have taught through lectures for centuries, and conference presentations have become an expected part of membership in the profession. These forms of audio scholarship have not been engaged as ‘works’ of history, however, unless published in journals or in edited volumes. It is quite possible that universities’ insistence on written scholarship as the litmus test for academic success has played a crucial role in the centrality of the text within history.
But what might sonic forms of historical scholarship look and sound like? How can historians marshal these forms to tell history? This question remains largely unanswered at the moment, and this openness is full of exciting possibilities.
Listening to “Nancy” once again in another context may give us some hints, however. Let’s listen to the final segment of it, along with something a little more:
Radiolab, “Time”, (2007)
In 2007, “Nancy” was used in its entirety in the Radiolab episode “Time.” Radiolab and other public radio programs like This American Life have built on the foundations of sonic thinking and experimentation outlined above and embodied by Schwartz and “Nancy.” These programs remain most Americans’ contact (if they have any at all) with the legacy and form of these sonic experiments. Although it is not strictly concerned with history, Radiolab consistently employs sophisticated ideas, arguments, and narratives from current historical scholarship. The discussion of time employed as part of their discussion of “Nancy,” for example, is indebted to cultural histories of the standardization of time like Wolfgang Schivelbusch’s The Railway Journey.
Radio and sound recordings are not the only vehicles that we historians have excluded. The other media that seem most obvious for us to embrace—television and film—have also been pushed beyond the disciplinary pale. Ken Burns’s documentaries and the History Channel, for example, are seldom considered part of the scholarly conversation and are often seen as non-specialist intrusions into “serious history,” despite their formative impact on the popular imagination of the past. Incursions by historians into other types of media—like the film version of Natalie Zemon Davis’s The Return of Martin Guerre or Niall Ferguson’s multi-episode version of The Ascent of Money—have been relatively rare and are often conducted or spearheaded by people not considered part of the scholarly community.
The main point is not that all historians need to begin making sound documentaries, but that there are rich resources outside the text that we have neglected. Sound recording is but one device. Indeed, my own experience within the classroom has demonstrated that historians are increasingly moving towards multi-media presentations within teaching—using music on Youtube, photographs, blogs, and film footage—both to expand the range of sources and to try to engage students through the media that are the most familiar to them. Scholarship should follow suit. The increasing move towards the digitalization of academic work—as PDFs or online books—is an incredible opportunity to begin to rethink the historical work. At the same time, it could allow us to dialogue with audiences that are receptive to Errol Morris’s documentaries and podcasts of Fresh Air but who find academic monographs tedious or difficult to approach.
If we accept Walter Benjamin’s argument that perception and communication are historical and formed by their social and technological contexts, then historians are lagging behind. Creating scholarship has long required that historians learn the art of writing; there is no reason that the historian’s craft could not begin to include a fluency in other technologies and media. If, as historians, we took such a turn, we could open up new horizons for historical scholarship and begin to speak a language more attuned to a larger public.
Editor’s Note: For a related exploration of ‘sonic forms of historical scholarship’ see Amber Abbas’s “For the Sound of Her Voice” elsewhere in this issue.


Our services is here to help you whether it is for Personal, Family and Business we got you covered
Verney S.
After using PakEx my business skyrocketed! I was amazed at the quality of PakEx. We've seen amazing results already.
Anetta D.
It's the perfect solution for our business. It's really wonderful. We can't understand how we've been living without PakEx.
Candie Z.
I couldn't have asked for more than this. I would like to personally thank you for your outstanding product.
Claresta A.
PakEx saved my business. PakEx impressed me on multiple levels. I would like to personally thank you for your outstanding service.


Jack Stoennd received four Marinol capsules from a reliable pharmaceutical source one day in exchange for P. Cubensis mushrooms. Being reasonably curious, Jack decided to try one after school. At 2:15, Jack Stoennd took one Marinol capsule containing ten milligrams of dronabinol, the main psychoactive cannibinoid present in marijuana.  By 3:00, Jack began to feel a bit high, a bit restless. By the end of the next hour, he felt a level of intoxication approximately equal to that provided by a gram of good potency cannabis when eaten. Jack was unable to concentrate clearly on his homework. His perception of music was enhanced, and his appetite was largely increased. Around 7:00, Jack's high began to fade. By 8:00, he was nearly back to baseline.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


{{selection.aux_hour_id}}
{{selection.aux_hour_status}}
{{selection.aux_hour_name}}
{{selection.aux_hour_value}}


But no more! Our application will find the most important parts of legal document and summarize them. Together we can make sure that people are not inadvertently agreeing to dubious privacy violations and signing away their rights. Click below to see some sample EULAs that we summarized using our app!


|
Assimp
5.0.1, master @ cd42b955
|
Data structure for the header of a HMP5 file. More...
Public Attributes | |
| float | boundingradius |
| int32_t | flags |
| float | fnumverts_x |
| Number of vertices in x direction. More... | |
| float | ftrisize_x |
| Size of one triangle in x direction. More... | |
| float | ftrisize_y |
| Size of one triangle in y direction. More... | |
| int8_t | ident [4] |
| int32_t | num_stverts |
| Always 0 ... More... | |
| int32_t | numframes |
| only one supported ... More... | |
| int32_t | numskins |
| Number of skins in the file. More... | |
| int32_t | numtris |
| int32_t | numverts |
| Number of vertices in the file. More... | |
| float | scale [3] |
| float | scale_origin [3] |
| float | size |
| int32_t | skinheight |
| int32_t | skinwidth |
| int32_t | version |
Data structure for the header of a HMP5 file.
This is also used by HMP4 and HMP7, but with modifications
| float Assimp::HMP::Header_HMP5::boundingradius |
| int32_t Assimp::HMP::Header_HMP5::flags |
| float Assimp::HMP::Header_HMP5::fnumverts_x |
Number of vertices in x direction.
| float Assimp::HMP::Header_HMP5::ftrisize_x |
Size of one triangle in x direction.
| float Assimp::HMP::Header_HMP5::ftrisize_y |
Size of one triangle in y direction.
| int8_t Assimp::HMP::Header_HMP5::ident[4] |
| int32_t Assimp::HMP::Header_HMP5::num_stverts |
Always 0 ...
| int32_t Assimp::HMP::Header_HMP5::numframes |
only one supported ...
| int32_t Assimp::HMP::Header_HMP5::numskins |
Number of skins in the file.
| int32_t Assimp::HMP::Header_HMP5::numtris |
| int32_t Assimp::HMP::Header_HMP5::numverts |
Number of vertices in the file.
| float Assimp::HMP::Header_HMP5::scale[3] |
| float Assimp::HMP::Header_HMP5::scale_origin[3] |
| float Assimp::HMP::Header_HMP5::size |
| int32_t Assimp::HMP::Header_HMP5::skinheight |
| int32_t Assimp::HMP::Header_HMP5::skinwidth |
| int32_t Assimp::HMP::Header_HMP5::version |


Welcome to the Phone Store.
Please select the products you want and add them to your shopping cart.
When you are done, click the shopping cart icon to review your order and check out.
Search:
| {{shoppingCartService.getTotalItemsCount()}} items, {{shoppingCartService.getTotalPrice() | currency:'USD':true}} | |||||
| {{phone.name}} | {{phone.snippet}} | {{phone.price | currency:'USD':true}} | {{phone.age}} | add to cart | |
| {{shoppingCartService.getTotalItemsCount()}} items, {{shoppingCartService.getTotalPrice() | currency:'USD':true}} |


Before this, I've tried psilocybin and DXM on a number of times. Before this experience, I was sure not to have any high-tyramine foods. This is my first try with Syrian Rue, and I'm starting pretty high. I generally have a very high, natural tolerance to mind-altering substances, as I've learned on multiple occasions with other substances.
I started up by brewing 5g of the rue tea, by letting the crushed seeds simmer in a pot for 30 minutes. Then I carefully strained out the seeds, leaving me a yellowish soup that seemed just awful. I added some stevia in, and tried to finish it. Kinda wish I didn't have that much liquid...
Took about 5 tries before it went down, while quickly alternating the tea and diet coke. I prepared another batch of tea shortly after (30 minutes later), recycling the dregs of the first (saved the used seeds), and using another 5g of fresh rue seeds. Made it in the same basic fashion, and somehow swallowed it. About 1.5 hours into the experience, I then quickly swallowed 3g of fresh seeds with juice. The timeline of my experience goes a bit like this...
8:50pm
Swallow 5g of nasty rue tea.
9:20pm
Feeling light-headed, dizzy. Coordination is down somewhat, I begin walking in a manner resembling that I've had 10 drinks of liquor.
9:25pm
Swallow 5g more of stronger, nasty rue tea.
9:55pm
Feeling now at a super-drunk point. No significant nausea yet, but my head is majorly buzzing. Thoughts and visions are becoming clouded especially, and a very slight distortion (shimmers) if I really concentrate.
10:30pm
Still super-drunk, no noticeable difference. Thinking has become a bit strange and clouded. Imagination is a bit strong, but halfway between normal and CEV-level. I feel somewhat weightless if my attention drifts off.
11:00pm
Feeling dead tired and sleepy. Not sure what to make of this yet. The room is spinning, and this just seems to resemble me drinking a ton of liquor. Except less enjoyable somehow. My thinking is definitely very altered at the moment. I feel as if I'm able to look fairly in depth at random video's and lyrics, and remember and mention strange significances I haven't noticed before. And rather quickly at that. A definite time distortion is going on. Feels like hours, but only minutes have passed.
11:30pm
I first start noticing tracers. The tell-tale psychedelic sign of harmaline.  Friends looked at me like I was crazy. Didn't see too many *strong* tracers as I've seen mentioned. Seems like a peak.
Midnight
Can barely walk, I stumble to bed. I stay awake for a good hour, being confused of where I am, and fall into trances and abruptly awakening multiple times. I can almost see a fuzzy image of outside, through the walls of my room for a short while. Then I pass out. Still peaking all the way.
1:00am
Look at the clock right before falling asleep. Feels like I'm on a merry-go-round with the dizziness I feel.
7:30am
Had to awake up for class, but still had tracers everywhere. I stumble around trying to get myself ready, but coordination was still funky. I set my alarm a bit later --- feel too messed up and exhausted.
8:30am
Feeling mentally and physically exhausted. Diarrhea all this morning, with some very slight stomach discomfort. I skip breakfast and my usual coffee due to the general rules of MAOI's. I then drag myself to class, walking slightly uncoordinated.
9:30am
Thinking is still clear, but exhausted.
11:00am
I start writing this report.
As an overall, this experience was fairly interesting. It's a very tiresome endeavor, but even with my weak stomach I never vomited (I vomit from anything). I believe this may have to do with me actually not consuming the seeds. I definitely did see a slight visual shimmer to things if I concentrated, and a drunken feeling with just the 10g of tea with zero stomach discomfort. The strongest points were definitely developing in me right before I slept, and the effects lasted a good 10-11 hours total (including sleep). At around the 17 hour point, side effects became null, besides general exhaustion.
I wouldn't repeat this again alone, and not in the quantities I did it. It simply isn't something I can take recreationally or pleasurably. The tyramine-restricted diet kind of stinks too. The euphoria really isn't there, and the vivid CEV or visuals aren't there, and the only case I could see it being very interesting would be with some sort of meditation. Or potentiating other drugs.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


HEAVENLY CREATURES A film review by Eric Grossman Copyright 1994 LOS ANGELES INDEPENDENT 1994
If it were not true, HEAVENLY CREATURES would probably be considered too unbelievable to be a movie. Unfortunately, the story is true. In New Zealand during the year 1952, two bright, imaginative and resentful fourteen year-old girls, Pauline and Juliet, became so obsessed with each other they resorted to murder to stay together.
New Zealand filmmaker Peter Jackson skillfully directs this picture giving us the right balance of surrealism and reality that allows us to both sympathize with the girls and realize how insane they are becoming. The story centers around the intelligent but withdrawn Pauline Parker (Melanie Lynskey). When Pauline meets the new kid in school, Juliet Hulme (Kate Winslet), a worldly, upper-class young woman who does not mind correcting her French teacher's grammar, the two quickly find that they are soul mates.
The girls become inseparable, sharing their love for movie stars, famous singers and for each other. As their bond increases, so do their flights of fantasy, including a surreal, imaginary world called Borovnia. Borovnia is a medieval kingdom that the girls use to escape Pauline's mother, Honora, who tries desperately to bring Pauline back to reality. Juliet's father, more concerned about his daughter's apparent lesbianism than her bouts with tuberculosis, also tries to separate the two. The idea of separation is too much for the girls to bear and that is what leads to the film's tragic ending.
Lynskey and Winslet give powerful performances as does Sarah Perise who plays Honora. The film has an "independent" look but it is most effective. Jackson and cinematographer Alun Bollinger make great use of wide-angle lenses, warm lighting and moving camera to keep a sense of kinetic surrealism. The special effects used to create the world of Borovnia are superb. One of my favorite effects was the life-size, clay-people who would dance and sing around the Borovnian castle. We see Pauline's psychosis deepen as she begins to imagine these clay-people outside of Borovnia. There is even a scene where she imagines one of them slaying the psychiatrist her parents take her to see.
As strange as this all seems, nothing compares to the story's coda. Popular British crime-novelist, Anne Perry, recently revealed that she was in fact Juliet Hulme. After watching the film, this reality seems incredibly perverse and ironic. If any Anne Perry fans were wondering why their favorite author could write murder so well, it is because she herself has done it in very, cold blood.
HEAVENLY CREATURES is a compelling story skillfully told. Just one word of advice. Don't see it if you're depressed or do not wish to become depressed. This is a sad, tragic, painful story but it is another potent illustration of just how dangerous obsession can be.
.
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 content %} {%load bootstrap4%} {% load static%} {{block.super}}
police Line 999
healthcare Line 237832
sonko rescue team 5778355
Fire station 56368736


Rent it out
Add Property
Add Property
Select City
Delhi
Noida
Greater noida
Ghaziabad
Faridabad
Meerut
Muzzafarnagar
Hapur
Bulandshahr
Select Property type
Apartment
Independent house
Villa
Select Property Format
1BHK
2BHK
3BHK
4BHK
Select Furnishing type
Fully Furnished
Semi Furnished
Unfurnished
Upload an image
Submit
Select City
Delhi
Noida
Greater noida
Ghaziabad
Faridabad
Meerut
Muzzafarnagar
Hapur
Bulandshahr
Select Property type
Apartment
Independent house
Villa
Select Property Format
1BHK
2BHK
3BHK
4BHK
Select Furnishing type
Fully Furnished
Semi Furnished
Unfurnished
Upload an image
Submit


Question type: {{ comment.get_question_type_display }}
{{ comment.comment_text }}
Authored by: {{ comment.author }}


We would like to invite you the take part in the following study named "Online Reaching Experiment: Aim For The Target!"
This will take approximately XX minutes, and you will be compensated $X.XX upon completion. Please understand that we reserve the right to not compensate entries that fail to follow instructions during reaches.
If you agree and consent to these terms, please click "I Agree" to continue. Otherwise, please exit the page and return this HIT.
Online Reaching Experiment: Aim For The Target!
You will be controlling a white dot with your trackpad. The white dot will sometimes be visible, and other times hidden. Even when you don't see the white dot, the game will always be tracking its position.
For this experiment, please use a trackpad to complete the task. Below is a video clip of an example participant completing the task using a trackpad.
NOTE: There are attention checks, so be sure to read their instructions thoroughly! Failing these checks will result in an incomplete HIT!
Measure your device sensitivity
We will be measuring your device (mouse or trackpad) sensitivity in units of dots per inch (DPI). To measure your DPI, please follow the instructions on this website. See additional clarifying instructions below:
1. Physically mark how far you will be moving on your mouse or trackpad in inches, and input that into "Target distance".
2. Set "Units" to Inches and Axis to "X+".
3. Using your device, drag the red circle on ruler located at the bottom of the website the same distance you have marked in step 1. Make sure you are dragging to the circle to the right side.
4. Record the number shown for "Actual DPI" and input that in the following text box.
What To Do
There are two simple steps:
1. Bring the white dot to the center of your screen. The white dot will initially be hidden, but once you get within a certain distance from the center it will be displayed.
2. Once the blue dot (your target) appears, slice through it FAST with the white dot (visible or hidden).
PLEASE READ: After several reaches, the white dot will stop following the direction of where you reach, and instead move on its own. When this happens, IGNORE the white dot and continue aiming your reaches directly to the target. Throughout the entire experiment, you should be aiming DIRECTLY to the target. [Type "rice" in the next page to indicate that you have read this].
Basic Information
Thanks for your participation!
Now just two more question and you're done!
If you do not receive compensation in X business days please reach out to ___.
You have a wonderful life now.
Oh no!
If you are seeing this page it means you did not pass an attention or understanding task.
This task requires your full attention, thus we kindly ask you to exit and return this HIT.
You can also refresh the page to restart this experiment.


ERA to FG: Gazette national tobacco control regulations now
by BankoleBy Agbonkhese Oboh
Environmental Rights Action/Friends of the Earth Nigeria ERA/FoEN has said Federal Government was taking too long to gazette the National Tobacco Control Regulations following the passage of the National Tobacco Control, NTC, Act 2019 by the National Assembly in May.
Speaking at a briefing on “Gazette the National Tobacco Control Regulations 2019 Now” in Lagos, on Monday, Akinbode Oluwafemi, ERA’s Deputy Executive Director, said they had anticipated that by now everyone would be celebrating the implementation of NTC Act and the regulations.
According to him, “we believe that the delay in the gazetting is being exploited by tobacco multinationals to entrench their hold on the Nigerian market.
Also read: Death for sale! Toxic cigarettes flood African market
“We are calling on the Ministry of Health to see the regulations process to its very conclusion. The Minister of Health, Dr Osagie Enahire, and Senator Olorunimbe Mamora have records of great works in tobacco control. We anticipate that their employment will reinvigorate tobacco control efforts.
“As the yuletide sets in, we expect a further escalation of tobacco industry activities to market their deadly wares. Unfortunately, the target will be our innocent youths.”
Also speaking, Philip Jakpor, Head, Media & Campaigns, said although the government said they were working on the process of gazetting, it was too slow and unacceptable.
He noted that tobacco multinationals were already fraternising with farmers and government officials, which should not be.
Recall that the NTC Act was passed in May and the Regulations include:
*All forms of tobacco products shall carry health warnings;
*50% graphic health warning in all tobacco products, to be automatically increased to 60% in four years;
*Increased smoke-free areas, mandatory and uniform notices, and duty of owners to report and enforce:
*Stringent conditions for designated smoking areas;
*Licensing for manufacturers, importers and distributors of tobacco products;
*Comprehensive annual reporting system from the tobacco industry to the Federal Ministry of Health;
*Prohibition of tobacco industry interference/participation in control activities and
*Stronger penalty for defaulters, among others.


API endpoint information
Please select an endpoint from the list below
| Endpoint | URL |
|---|---|
| Get products | GET /products?groupFields={groupFields}&buyableFields={buyableFields} |
| Create and update products | POST /products |
| Update products quantity and price | POST /products/quantityprice |
| Update products status | POST /products/status |
| Endpoint | URL |
|---|---|
| Get orders | GET /orders?status={status}&limit={limit} |
| Get order | GET /orders/{id} |
| Acknowledge order | POST /orders/{id}/acknowledge |
| Ship order | POST /orders/{id}/ship |
| Cancel order | POST /orders/{id}/cancel |
| Refund order | POST /orders/{id}/refund |
| Endpoint | URL |
|---|---|
| Get pending batch | GET /(any) |


Rebekah Vardy thanks 'amazing sister' for surprise baby shower after Coleen Rooney drama
The heavily pregnant wag shared photos from the occasion
by Sophie McCoidRebekah Vardy has shared photos from her surprise baby shower, as she prepares to welcome her fifth child.
Rebekah's sister Esther threw the surprise shower for the 37-year-old, who has had a tough couple of months after her feud with Coleen Rooney.
Dressed in a cream jumper dress with her brown hair down Rebekah held balloons with the slogan "Oh Baby" emblazoned on them.
She then shared photos of some of the gifts she had received, along with photos of some of her friends who had attended the shower.
Rebekah captioned the photos: "Such an amazing surprise... thank you to my amazing Sister ❤❤ love you all."
Her husband Jamie Vardy said: "You deserve it."
And fellow WAG Nicola McLean, who was vocal in her support for Rebekah during the Coleen drama, sent a series of love heart emojis to her.
Last month Coleen caused a media storm when she accused someone operating Rebekah Vardy's Instagram account of selling stories about her to The S*n newspaper.
Rebekah categorically denied the claims and said her account had been previously hacked.
The fallout caused a series of viral memes and tweets, with the hashtag #Wagathachristie trending widely.


Families mourn victims killed in Mexico, say it’s like ‘Afghanistan 100 miles from US border’
by Brie StimsonOutraged family members of the nine Americans killed in a drug cartel ambush in Mexico Monday reportedly urged the country's leaders to accept President Trump’s offer to help destroy the cartels as the first funerals were held Thursday.
“We’re living like we’re in Afghanistan, 100 miles from the U.S. border,” Rosa LeBaron, who lost cousins, nieces and nephews in the attack, said, according to Reuters.
Three women and six children were gunned down this week when members of the Juarez Cartel attacked their convoy of three SUVs in Northern Mexico about 70 miles south of Douglas, Ariz. The families were on their way to see relatives in the U.S.
Investigators said the families may have been mistaken for a rival gang.
“They are as bad or worse than ISIS. ISIS have an ideology,” LeBaron said of the cartels. “These sicarios (hitmen), why are they doing it? Out of greed and pure evil," Reuters reported.
MEXICO'S LOPEZ OBRADOR DOUBLES DOWN ON ‘HUGS, NOT BULLETS’ POLICY AMID MOUNTING CRITICISM
The nine victims were members of three dual-citizen families that lived in a Mormon community in the Sonora State.
On Tuesday, Trump tweeted that it was time for Mexico and the United States to “wage WAR on the drug cartels and wipe them off the face of the earth.”
MEXICAN MASSACRE SUSPECT ARRESTED AT BORDER NOT TIED TO ATTACK
Mexican President Andrés Manuel López Obrador thanked Trump but said Mexico would handle the cartels with "independence and sovereignty."
“It was lamentable, painful because children died, but do we want to resolve the problem the same way (as previous administrations)? By declaring war?” he said after the attacks. “We will not continue with the same and we will show that our proposal works, despite it not being easy. We are confident that we will achieve good results.”
CLICK HERE TO GET THE FOX NEWS APP
Since the attacks, López Obrador has doubled down on his government's non-violent policy of “hugs not bullets” that aims to stamp out the cartels by addressing symptoms like access to education, poverty and unemployment.


| Bridal Make-up and Hair |
|---|
| $ 175.00 |
Time Duration: 90 min |
There will be more pictures taken of you on your big day than any other single day in your life. So why not invest in a professional makeup artist who will help you achieve exactly what you are looking for to feel extra special? |


This example shows how to perform asynchronous validation. The entered text will be used to search Google books and will
return up to the entered number of results. Please note that this example uses the Google books API anonymously and is
therefore rate limited. This means sometimes the search will not return a result even if the search term is valid.
-
The search returned no results
-
The number of results must be specified
-
The number of results must be at least 1