Document Validated!
Your copy of document {!DocumentName} was signed at: {!Created} in {!Location}
Reason:
{!Reason}
*The parties agree that either party may use a computer-based system to issue certain Confirmations and that each such Confirmation executed by a party by means of an electronically-produced signature, shall have the same legal effect as if, such signature had been manually written on such Confirmation and that such Confirmation shall be deemed to have been signed by such party for the purposes of any statute or rule of law that requires such Confirmation to be signed. The parties acknowledge that, in any legal proceedings between them in any way relating to this Agreement, each party expressly waives any right to raise any defence or waiver of liability based upon the execution of a Confirmation by a party by means of an electronically- produced signature.
Digital Sign Protection
The document is already Signed and Approved with Self-Digital Sign mechanism.
Signer Information
The document is signed by {!Name}.
Contact info:
-
Address: {!Address}
-
Email: {!Email}
-
Phone: {!Phone}


My name is Dennis Mwangi
I am a Kenyan citizen by birth, I can speak three languages namely;
My favourite sports is football
Here is a link to one of the sites I have created. This is an application that gives a brief description of kenya. This is useful to tourist or citizens who may want to know more about the country.
The Languages that I use include;


This section descibes current restrictions of Pgpool-II.
If you use pg_terminate_backend()
to stop
a backend, this will trigger a failover. The reason why this
happens is that PostgreSQL sends
exactly the same message for a terminated backend as for a full
postmaster shutdown. There is no workaround prior of version
3.6. From version 3.6, this limitation has been mitigated. If
the argument to the function (that is a process id) is a
constant, you can safely use the function. In extended protocol
mode, you cannot use the function though.
In the replication mode or master/slave mode, trust, clear text password, and pam methods are supported. md5 in also supported since Pgpool-II 3.0. md5 is supported by using a authencitaion file pool_passwd. pool_passwd is default name of the authentication file. Here are the steps to enable md5 authentication:
Login as the database's operating system user and type:
pg_md5 --md5auth --username=your_username your_passwd
user name and md5 encrypted password are registered into pool_passwd. If pool_passwd does not exist yet, pg_md5 command will automatically create it for you. The format of pool_passwd is username:encrypted_passwd.
You also need to add an appropriate md5 entry to pool_hba.conf. See Section 6.1 for more details.
Please note that the user name and password must be identical to those registered in PostgreSQL.
After changing md5 password (in both pool_passwd and PostgreSQL of course), you need to execute pgpool reload.
In streaming replication mode, Pgpool-II supports large objects.
In native replication
mode, Pgpool-II supports large
objects if the backend
is PostgreSQL 8.1 or later. For
this, you need to enable lobj_lock_table directive
in pgpool.conf. Large object replication
using backend function lo_import
is not
supported, however.
In other mode, including Slony mode, large objects are not supported.
 SELECT on these tables is executed on master as well. However if the temporary table name is used as a literal in SELECT, there's no way to detect it, and the SELECT will be load balanced. That will trigger a "not found the table" error or will find another table having same name. To avoid the problem, use /*NO LOAD BALANCE*/ SQL comment.
Note that such literal table names used in queries to access system catalogs do cause problems described above. psql's \d command produces such that query:
SELECT 't1'::regclass::oid;
In such that case Pgpool-II always sends the query to master and will not cause the problem.
Tables created by CREATE TEMP TABLE will be deleted at the end of the session by specifying DISCARD ALL in reset_query_list if you are using PostgreSQL 8.3 or later.
For 8.2.x or earlier, tables created by CREATE TEMP TABLE will not be deleted after exiting a session. It is because of the connection pooling which, from PostgreSQL's backend point of view, keeps the session alive. To avoid this, you must explicitly drop the temporary tables by issuing DROP TABLE, or use CREATE TEMP TABLE ... ON COMMIT DROP inside the transaction block.
There is no guarantee that any data provided using a context-dependent mechanism (e.g. random number, transaction ID, OID, SERIAL, sequence), will be replicated correctly on multiple backends. For SERIAL, enabling insert_lock will help replicating data. insert_lock also helps SELECT setval() and SELECT nextval().
INSERT/UPDATE
using CURRENT_TIMESTAMP
, CURRENT_DATE
,
now()
will be replicated
correctly. INSERT/UPDATE for tables
using CURRENT_TIMESTAMP
, CURRENT_DATE
,
now()
as their DEFAULT values will also
be replicated correctly. This is done by replacing those
functions by constants fetched from master at query execution
time. There are a few limitations however:
In Pgpool-II 3.0 or before, the calculation of temporal data in table default value is not accurate in some cases. For example, the following table definition:
CREATE TABLE rel1( d1 date DEFAULT CURRENT_DATE + 1 )
is treated the same as:
CREATE TABLE rel1( d1 date DEFAULT CURRENT_DATE )
Pgpool-II 3.1 or later handles these cases correctly. Thus the column "d1" will have tomorrow as the default value. However this enhancement does not apply if extended protocols (used in JDBC, PHP PDO for example) or PREPARE are used.
Please note that if the column type is not a temporal one, rewriting is not performed. Such example:
foo bigint default (date_part('epoch'::text,('now'::text)::timestamp(3) with time zone) * (1000)::double precision)
Suppose we have the following table:
CREATE TABLE rel1( c1 int, c2 timestamp default now() )
We can replicate
INSERT INTO rel1(c1) VALUES(1)
since this turn into
INSERT INTO rel1(c1, c2) VALUES(1, '2009-01-01 23:59:59.123456+09')
However,
INSERT INTO rel1(c1) SELECT 1
cannot to be transformed, thus cannot be properly replicated in the current implementation. Values will still be inserted, with no transformation at all.
SQL type commands cannot be used in extended query mode.


Sonic Redesign Boosts Positive Trailer Reactions - At a Huge Cost
by Evangelia GalanisWhen the initial trailer for Sonic the Hedgehog dropped, fans were none too pleased with the design of the cobalt speedster. Now, with the release of the new trailer, reactions are much more positive -- but how much did that redesign cost?
Social Films reports that the remodeled trailer generated 360% more likes in the first 24 hours alone. When the trailer for the Sonic movie first dropped in April, it received 225,683 dislikes and only 146,263 likes in the 24 hours. The new trailer's dislikes dropped a staggering 98%, with most comments on the new design being positive. In its first 24 hours, the new trailer amassed 672,652 likes and only 4,924 dislikes.
Click the button below to start this article in quick view.
For the trailer alone, it's estimated that Sonic's redesign cost Paramount Pictures $2.15 million. For the whole movie, redesigning the titular blue hedgehog is estimated to cost around $35 million. According to the site, "Sonic the Hedgehog's original VFX budget would have been between $18 million and $31 million." The original budget for the film was reportedly around $90 million.
Opening Feb. 14, director Jeff Fowler's Sonic the Hedgehog stars Ben Schwartz as Sonic and Jim Carrey as Dr. Robotnik, with James Marsden, Neal McDonald, Tika Sumpter, Adam Pally and Natasha Rothwell.
https://schema.orgBreadcrumbListListItem1Homehttps://www.cbr.com/ListItem2Movieshttps://www.cbr.com/category/movies/ListItem3Movie Newshttps://www.cbr.com/category/movies/news-movies/ListItem4Sonic Redesign Boosts Positive Trailer Reactions - At a Huge Costhttps://www.cbr.com/sonic-redesign-boosts-costly-yet-positive-reactions/


{% extends "form-wrapper.html" %}
{% block form_title %}Unsubscribe from notifications{% endblock%}
{% block form_subtitle %}You will no longer receive automated notifications if you unsubscribe.{% endblock form_subtitle %}
{% block button_finish_label %}Unsubscribe{% endblock%}


Welcome to the documenation for my OBJ exporter (version 2.0)! One of the only exporters that will export all MeshRenderer objects in the scene!
Use the navigation on he left-hand site
to learn more about the usage of this script.
*Please back up your project when attempting to use this


You don't have any active polls right now.
{% else %}| # | Name | Publish Date | Times Answered | Actions |
|---|---|---|---|---|
| {{ forloop.counter }} | {{ p.name }} | {{ p.publish_date|date:'d/m/Y H:i' }} | {{ p.times_answered }} |
You have not any inactive polls right now.
{% else %}| # | Name | Last Modified | # of questions | Actions |
|---|---|---|---|---|
| {{ forloop.counter }} | {{ p.name }} | {{ p.last_modified|date:'d/m/Y H:i' }} | {{ p.number_questions }} |
You have not any archived polls right now.
{% else %}| # | Name | Archive date | Times Answered | Actions |
|---|---|---|---|---|
| {{ forloop.counter }} | {{ p.name }} | {{ p.archive_date|date:'d/m/Y H:i' }} | {{ p.times_answered }} |


The image on the top or when slider is moved all the way to the right is the Matterhorn on a cloudy day without snow. As you move the slider to the left, the image below it reveals the Matterhorn on a clear day with snow.
The image on the top or when slider is moved all the way to the right is the Matterhorn on a cloudy day without snow. As you move the slider to the left, the image below it reveals the Matterhorn on a clear day with snow.
The image on the top or when slider is moved all the way to the right is the Matterhorn on a cloudy day without snow. As you move the slider to the left, the image below it reveals the Matterhorn on a clear day with snow.


Get Bad North: Jotunn Edition For Free On Epic Games Store For A Limited Time
by Bryan LimYet another free game is available on Epic Games Store this week. This time around, the storefront is offering Bad North: Jotunn Edition at no charge. On a side note, it seems like Epic Games Store is cutting down the usual two free games format to just one game from now on.
Bad North is a real-time strategy game stylised in an illustrated cartoon design. Your main goal is to defend your kingdom from a Viking invasion, while at the same time guiding your people to evacuate.
The game comes with its Jotunn downloadable content (DLC) that was released back in July. On top of the base game, the DLC adds new commander traits to the player, introduces new enemy types, and checkpoint islands. Bad North is a fairly recent game, as it was released last year on 17 November.
Currently, Bad Point: Jotunn Edition is free for all Epic Game Store patrons for a week-long period which will end on 29 November 11.59 pm Malaysia time.
(Source: Epic Games Store via PC Gamer)


Rails <IP_ADDRESS> (May 15, 2020)
- No changes.
Rails <IP_ADDRESS> (May 15, 2020)
- No changes.
Rails <IP_ADDRESS> (March 11, 2019)
- No changes.
Rails 4.2.11 (November 27, 2018)
- No changes.
Rails 4.2.10 (September 27, 2017)
-
Relation#joins
is no longer affected by the target model'scurrent_scope
, with the exception ofunscoped
.Fixes #29338.
Sean Griffin
Rails 4.2.9 (June 26, 2017)
-
Fix regression caused by
collection_singular_ids=
ignoring different primary key on relationship.Nick Pezza
-
Fix
rake db:schema:load
with subdirectories.Ryuta Kamizono
-
Fix
rake db:migrate:status
with subdirectories.Ryuta Kamizono
-
Fix regression of #1969 with SELECT aliases in HAVING clause.
Eugene Kenny
-
Fix
wait_timeout
to configurable for mysql2 adapter.Fixes #26556.
Ryuta Kamizono
-
Make
table_name=
reset current statement cache, so queries are not run against the previous table name.namusyaka
Rails 4.2.8 (February 21, 2017)
-
Using a mysql2 connection after it fails to reconnect will now have an error message saying the connection is closed rather than an undefined method error message.
Dylan Thacker-Smith
-
Bust Model.attribute_names cache when resetting column information
James Coleman
-
Fix query caching when type information is reset
Backports ancillary fix in 5.0.
James Coleman
-
Allow
joins
to be unscoped.Fixes #13775.
Takashi Kokubun
-
Hashes can once again be passed to setters of
composed_of
, if all of the mapping methods are methods implemented on Hash.Fixes #25978.
Sean Griffin
Rails 4.2.7 (July 12, 2016)
-
Inspecting an object with an associated array of over 10 elements no longer truncates the array, preventing
inspect
from looping infinitely in some cases.Kevin McPhillips
-
Ensure hashes can be assigned to attributes created using
composed_of
. Fixes #25210.Sean Griffin
-
Queries such as
Computer.joins(:monitor).group(:status).count
will now be interpreted asComputer.joins(:monitor).group('computers.status').count
so that whenComputer
andMonitor
have bothstatus
columns we don't have conflicts in projection.Rafael Sales
-
ActiveRecord::Relation#count: raise an ArgumentError when finder options are specified or an ActiveRecord::StatementInvalid when an invalid type is provided for a column name (e.g. a Hash).
Fixes #20434
Konstantinos Rousis
-
Correctly pass MySQL options when using structure_dump or structure_load
Specifically, it fixes an issue when using SSL authentication.
Alex Coomans
Rails 4.2.6 (March 07, 2016)
-
Fix a bug where using
t.foreign_key
twice with the sameto_table
within the same table definition would only create one foreign key.George Millo
-
Fix regression in dirty attribute tracking after #dup. Changes to the clone no longer show as changed attributes in the original object.
Dominic Cleal
-
Fix regression when loading fixture files with symbol keys.
Closes #22584.
Yves Senn
-
Fix
rake db:structure:dump
on Postgres when multiple schemas are used.Fixes #22346.
Nick Muerdter, ckoenig
-
Introduce
connection.data_sources
andconnection.data_source_exists?
. These methods determine what relations can be used to back Active Record models (usually tables and views).Yves Senn, Matthew Draper
Rails <IP_ADDRESS> (February 26, 2016)
- No changes.
Rails <IP_ADDRESS> (January 25, 2015)
- No changes.
Rails 4.2.5 (November 12, 2015)
-
No longer pass deprecated option
-i
topg_dump
.Paul Sadauskas
-
Set
scope.reordering_value
totrue
if:reordering
values are specified.Fixes #21886.
Hiroaki Izu
-
Avoid disabling errors on the PostgreSQL connection when enabling the standard_conforming_strings setting. Errors were previously disabled because the setting wasn't writable in Postgres 8.1 and didn't exist in earlier versions. Now Rails only supports Postgres 8.2+ we're fine to assume the setting exists. Disabling errors caused problems when using a connection pooling tool like PgBouncer because it's not guaranteed to have the same connection between calls to
execute
and it could leave the connection with errors disabled.Fixes #22101.
Harry Marr
-
Includes HABTM returns correct size now. It's caused by the join dependency only instantiates one HABTM object because the join table hasn't a primary key.
Fixes #16032.
Examples:
before: Project.first.salaried_developers.size # => 3 Project.includes(:salaried_developers).first.salaried_developers.size # => 1 after: Project.first.salaried_developers.size # => 3 Project.includes(:salaried_developers).first.salaried_developers.size # => 3
Bigxiang
-
Descriptive error message when fixtures contain a missing column.
Closes #21201.
Yves Senn
-
bin/rake db:migrate
uses ActiveRecord::Tasks::DatabaseTasks#migrations_paths instead ofMigrator.migrations_paths
.Tobias Bielohlawek
-
Fix
rewhere
in ahas_many
association.Fixes #21955.
Josh Branchaud, Kal
-
Added run_cmd class method to ActiveRecord::Tasks::DatabaseTasks for drying up Kernel.system() calls within this namespace and to avoid shell expansion by using a paramter list instead of string as arguments for Kernel.system(). Thanks to Nate Berkopec for supply patch to get test units passing.
Bryan Paxton
-
Avoid leaking the first relation we call
first
on, per model.Fixes #21921.
Matthew Draper, Jean Boussier
-
Allow deserialization of Active Record models that were YAML encoded prior to Rails 4.2
Sean Griffin
-
Correctly apply
unscope
when preloading through associations.Jimmy Bourassa
-
Ensure
select
quotes aliased attributes, even when usingfrom
.Fixes #21488
Sean Griffin & @johanlunds
-
Correct query for PostgreSQL 8.2 compatibility.
Ben Murphy, Matthew Draper
-
Uniqueness validator raises descriptive error when running on a persisted record without primary key.
Closes #21304.
Yves Senn
Rails 4.2.4 (August 24, 2015)
-
Skip statement cache on through association reader.
If the through class has default scopes we should skip the statement cache.
Closes #20745.
Rafael Mendonça França
-
Fixes #19420. When generating schema.rb using Postgres BigInt[] data type the limit: 8 was not coming through. This caused it to become Int[] data type after doing a rebuild off of schema.rb.
Jake Waller
-
Fix state being carried over from previous transaction.
Considering the following example where
name
is a required attribute. Before we hadnew_record?
returningtrue
for a persisted record:= Author.create! name: 'foo' .name = nil .save # => false .new_record? # => true
Fixes #20824.
Roque Pinel
-
Correctly ignore
mark_for_destruction
whenautosave
isn't set totrue
when validating associations.Fixes #20882.
Sean Griffin
-
Fix through associations using scopes having the scope merged multiple times.
Fixes #20721. Fixes #20727.
Sean Griffin
-
ActiveRecord::Base.dump_schema_after_migration applies migration tasks other than
db:migrate
. (eg.db:rollback
,db:migrate:dup
, ...)Fixes #20743.
Yves Senn
-
Correctly raise ::ActiveRecord::AssociationTypeMismatch when assigning a wrong type to a namespaced association.
Fixes #20545.
Diego Carrion
-
Prevent error when using
force_reload: true
on an unassigned polymorphic belongs_to association.Fixes #20426.
James Dabbs
Rails 4.2.3 (June 25, 2015)
-
Let
WITH
queries (Common Table Expressions) be explainable.Vladimir Kochnev
-
Fix n+1 query problem when eager loading nil associations (fixes #18312)
Sammy Larbi
-
Fixed an error which would occur in dirty checking when calling
update_attributes
from a getter.Fixes #20531.
Sean Griffin
-
Ensure symbols passed to
ActiveRecord::Relation#select
are always treated as columns.Fixes #20360.
Sean Griffin
-
Clear query cache when
ActiveRecord::Base#reload
is called.Shane Hender
-
Pass
:extend
option forhas_and_belongs_to_many
associations to the underlyinghas_many :through
.Jaehyun Shin
-
Make
unscope
aware of "less than" and "greater than" conditions.TAKAHASHI Kazuaki
-
Revert behavior of
db:schema:load
back to loading the full environment. This ensures that initializers are run.Fixes #19545.
Yves Senn
-
Fix missing index when using
timestamps
with theindex
option.The
index
option used withtimestamps
should be passed to bothcolumn
definitions forcreated_at
andupdated_at
rather than just the first.Paul Mucur
-
Rename
:class
to:anonymous_class
in association options.Fixes #19659.
Andrew White
-
Fixed a bug where uniqueness validations would error on out of range values, even if an validation should have prevented it from hitting the database.
Andrey Voronkov
-
Foreign key related methods in the migration DSL respect
ActiveRecord::Base.pluralize_table_names = false
.Fixes #19643.
Mehmet Emin İNAÇ
-
Reduce memory usage from loading types on pg.
Fixes #19578.
Sean Griffin
-
Fix referencing wrong table aliases while joining tables of has many through association (only when calling calculation methods).
Fixes #19276.
pinglamb
-
Don't attempt to update counter caches, when the column wasn't selected.
Fixes #19437.
Sean Griffin
-
Correctly persist a serialized attribute that has been returned to its default value by an in-place modification.
Fixes #19467.
Matthew Draper
-
Fix default
format
value in ActiveRecord::Tasks::DatabaseTasks#schema_file.James Cox
-
Dont enroll records in the transaction if they dont have commit callbacks. That was causing a memory grow problem when creating a lot of records inside a transaction.
Fixes #15549.
Will Bryant, Aaron Patterson
-
Correctly create through records when created on a has many through association when using
where
.Fixes #19073.
Sean Griffin
Rails 4.2.2 (June 16, 2015)
- No Changes *
Rails 4.2.1 (March 19, 2015)
-
Fixed ActiveRecord::Relation#becomes! and changed_attributes issues for type column
Fixes #17139.
Miklos Fazekas
-
remove_reference
withforeign_key: true
removes the foreign key before removing the column. This fixes a bug where it was not possible to remove the column on MySQL.Fixes #18664.
Yves Senn
-
Add a
:foreign_key
option toreferences
and associated migration methods. The model and migration generators now use this option, rather than theadd_foreign_key
form.Sean Griffin
-
Fix rounding problem for PostgreSQL timestamp column.
If timestamp column have the precision, it need to format according to the precision of timestamp column.
Ryuta Kamizono
-
Respect the database default charset for
schema_migrations
table.The charset of
version
column inschema_migrations
table is depend on the database default charset and collation rather than the encoding of the connection.Ryuta Kamizono
-
Respect custom primary keys for associations when calling
Relation#where
Fixes #18813.
Sean Griffin
-
Fixed several edge cases which could result in a counter cache updating twice or not updating at all for
has_many
andhas_many :through
.Fixes #10865.
Sean Griffin
-
Foreign keys added by migrations were given random, generated names. This meant a different
structure.sql
would be generated every time a developer ran migrations on their machine.The generated part of foreign key names is now a hash of the table name and column name, which is consistent every time you run the migration.
Chris Sinjakli
-
Fixed ActiveRecord::Relation#group method when argument is SQL reserved key word:
SplitTest.group(:key).count Property.group(:value).count
Bogdan Gusiev
-
Don't define autosave association callbacks twice from
accepts_nested_attributes_for
.Fixes #18704.
Sean Griffin
-
Integer types will no longer raise a
RangeError
when assigning an attribute, but will instead raise when going to the database.Fixes several vague issues which were never reported directly. See the commit message from the commit which added this line for some examples.
Sean Griffin
-
Values which would error while being sent to the database (such as an ASCII-8BIT string with invalid UTF-8 bytes on Sqlite3), no longer error on assignment. They will still error when sent to the database, but you are given the ability to re-assign it to a valid value.
Fixes #18580.
Sean Griffin
-
Don't remove join dependencies in
Relation#exists?
Fixes #18632.
Sean Griffin
-
Invalid values assigned to a JSON column are assumed to be
nil
.Fixes #18629.
Sean Griffin
-
No longer issue deprecation warning when including a scope with extensions. Previously every scope with extension methods was transformed into an instance dependent scope. Including such a scope would wrongfully issue a deprecation warning. This is no longer the case.
Fixes #18467.
Yves Senn
-
Correctly use the type provided by
serialize
when updating records using optimistic locking.Fixes #18385.
Sean Griffin
-
attribute_will_change!
will no longer cause non-persistable attributes to be sent to the database.Fixes #18407.
Sean Griffin
-
Format the datetime string according to the precision of the datetime field.
Incompatible to rounding behavior between MySQL 5.6 and earlier.
In 5.5, when you insert
2014-08-17 12:30:00.999999
the fractional part is ignored. In 5.6, it's rounded to2014-08-17 12:30:01
:http://bugs.mysql.com/bug.php?id=68760
Ryuta Kamizono
-
Allow precision option for MySQL datetimes.
Ryuta Kamizono
-
Clear query cache on rollback.
Florian Weingarten
-
Fixed setting of foreign_key for through associations while building of new record.
Fixes #12698.
Ivan Antropov
-
Fixed automatic inverse_of for models nested in module.
Andrew McCloud
-
Fix
reaping_frequency
option when the value is a string.This usually happens when it is configured using
DATABASE_URL
.korbin
-
Fix error message when trying to create an associated record and the foreign key is missing.
Before this fix the following exception was being raised:
NoMethodError: undefined method `val' for #<Arel::Nodes::BindParam:0x007fc64d19c218>
Now the message is:
ActiveRecord::UnknownAttributeError: unknown attribute 'foreign_key' for Model.
Rafael Mendonça França
-
Fix change detection problem for PostgreSQL bytea type and
ArgumentError: string contains null byte
exception with pg-0.18.Fixes #17680.
Lars Kanis
-
When a table has a composite primary key, the
primary_key
method for SQLite3 and PostgreSQL adapters was only returning the first field of the key. Ensures that it will return nil instead, as Active Record doesn't support composite primary keys.Fixes #18070.
arthurnn
-
Ensure
first!
and friends work on loaded associations.Fixes #18237.
Sean Griffin
-
Dump the default
nil
for PostgreSQL UUID primary key.Ryuta Kamizono
-
Don't raise when writing an attribute with an out-of-range datetime passed by the user.
Grey Baker
-
Fixes bug with 'ActiveRecord::Type::Numeric' that causes negative values to be marked as having changed when set to the same negative value.
Fixes #18161.
Daniel Fox
Rails 4.2.0 (December 20, 2014)
-
Introduce
force: :cascade
option forcreate_table
. Using this option will recreate tables even if they have dependent objects (like foreign keys).db/schema.rb
now usesforce: :cascade
. This makes it possible to reload the schema when foreign keys are in place.Matthew Draper, Yves Senn
-
db:schema:load
anddb:structure:load
no longer purge the database before loading the schema. This is left for the user to do.db:test:prepare
will still purge the database.Fixes #17945.
Yves Senn
-
Fix undesirable RangeError by Type::Integer. Add Type::UnsignedInteger.
Ryuta Kamizono
-
Add
foreign_type
option tohas_one
andhas_many
association macros.This option enables to define the column name of associated object's type for polymorphic associations.
Ulisses Almeida, Kassio Borges
-
add_timestamps
andremove_timestamps
now properly reversible with options.Noam Gagliardi-Rabinovich
-
Bring back
db:test:prepare
to synchronize the test database schema.Manual synchronization using
bin/rake db:test:prepare
is required when a migration is rolled-back, edited and reapplied.ActiveRecord::Base.maintain_test_schema now uses
db:test:prepare
to synchronize the schema. Plugins can use this task as a hook to provide custom behavior after the schema has been loaded.NOTE:
test:prepare
runs before the schema is synchronized.Fixes #17171, #15787.
Yves Senn
-
Change
reflections
public api to return the keys as String objects.Fixes #16928.
arthurnn
-
Renaming a table in pg also renames the primary key index.
Fixes #12856
Sean Griffin
-
Make it possible to access fixtures excluded by a
default_scope
.Yves Senn
-
Fix preloading of associations with a scope containing joins along with conditions on the joined association.
Siddharth Sharma
-
Add
Table#name
to matchTableDefinition#name
.Cody Cutrer
-
Cache
CollectionAssociation#reader
proxies separately before and after the owner has been saved so that the proxy is not cached without the owner's id.Ben Woosley
-
::ActiveRecord::ReadOnlyRecord now has a descriptive message.
Franky W.
-
Fix preloading of associations which unscope a default scope.
Fixes #11036.
Byron Bischoff
-
Added SchemaDumper support for tables with jsonb columns.
Ted O'Meara
-
Deprecate
sanitize_sql_hash_for_conditions
without replacement. Using aRelation
for performing queries and updates is the prefered API.Sean Griffin
-
Queries now properly type cast values that are part of a join statement, even when using type decorators such as
serialize
.Melanie Gilman & Sean Griffin
-
MySQL enum type lookups, with values matching another type, no longer result in an endless loop.
Fixes #17402.
Yves Senn
-
Raise
ArgumentError
when the body of a scope is not callable.Mauro George
-
Use type column first in multi-column indexes created with
add-reference
.Derek Prior
-
Fix
Relation.rewhere
to work with Range values.Dan Olson
-
AR::UnknownAttributeError
now includes the class name of a record.User.new(name: "Yuki Nishijima", project_attributes: {name: "kaminari"}) # => ActiveRecord::UnknownAttributeError: unknown attribute 'name' for User.
Yuki Nishijima
-
Fix a regression causing
after_create
callbacks to run before associated records are autosaved.Fixes #17209.
Agis Anastasopoulos
-
Honor overridden
rack.test
in Rack environment for the connection management middleware.Simon Eskildsen
-
Add a truncate method to the connection.
Aaron Patterson
-
Don't autosave unchanged has_one through records.
Alan Kennedy, Steve Parrington
-
Do not dump foreign keys for ignored tables.
Yves Senn
-
PostgreSQL adapter correctly dumps foreign keys targeting tables outside the schema search path.
Fixes #16907.
Matthew Draper, Yves Senn
-
When a thread is killed, rollback the active transaction, instead of committing it during the stack unwind. Previously, we could commit half- completed work. This fix only works for Ruby 2.0+; on 1.9, we can't distinguish a thread kill from an ordinary non-local (block) return, so must default to committing.
Chris Hanks
-
A
NullRelation
should represent nothing. This fixes a bug whereComment.where(post_id: Post.none)
returned a non-empty result.Fixes #15176.
Matthew Draper, Yves Senn
-
Include default column limits in schema.rb. Allows defaults to be changed in the future without affecting old migrations that assumed old defaults.
Jeremy Kemper
-
MySQL: schema.rb now includes TEXT and BLOB column limits.
Jeremy Kemper
-
MySQL: correct LONGTEXT and LONGBLOB limits from 2GB to their true 4GB.
Jeremy Kemper
-
SQLite3Adapter now checks for views in
table_exists?
. Fixes #14041.Girish Sonawane
-
Introduce
connection.supports_views?
to check whether the current adapter has support for SQL views. Connection adapters should define this method.Yves Senn
-
Allow included modules to override association methods.
Fixes #16684.
Yves Senn
-
Schema loading rake tasks (like
db:schema:load
anddb:setup
) maintain the database connection to the current environment.Fixes #16757.
Joshua Cody, Yves Senn
-
MySQL: set the connection collation along with the charset.
Sets the connection collation to the database collation configured in database.yml. Otherwise,
SET NAMES utf8mb4
will use the default collation for that charset (utf8mb4_general_ci) when you may have chosen a different collation, like utf8mb4_unicode_ci.This only applies to literal string comparisons, not column values, so it is unlikely to affect you.
Jeremy Kemper
-
default_sequence_name
from the PostgreSQL adapter returns a String.Yves Senn
-
Fix a regression where whitespaces were stripped from DISTINCT queries in PostgreSQL.
Agis Anastasopoulos
Fixes #16623.
-
Fix has_many
:through
relation merging failing when dynamic conditions are passed as a lambda with an arity of one.Fixes #16128.
Agis Anastasopoulos
-
Fix
Relation#exists?
to work with polymorphic associations.Fixes #15821.
Kassio Borges
-
Currently, Active Record rescues any errors raised within
after_rollback
/after_create
callbacks and prints them to the logs. Future versions of Rails will not rescue these errors anymore and just bubble them up like the other callbacks.This commit adds an opt-in flag to enable not rescuing the errors.
Example:
# Do not swallow errors in after_commit/after_rollback callbacks. config.active_record.raise_in_transactional_callbacks = true
Fixes #13460.
arthurnn
-
Fix an issue where custom accessor methods (such as those generated by
enum
) with the same name as a global method are incorrectly overridden when subclassing.Fixes #16288.
Godfrey Chan
-
*_was
andchanges
now work correctly for in-place attribute changes as well.Sean Griffin
-
Fix regression on
after_commit
that did not fire with nested transactions.Fixes #16425.
arthurnn
-
Do not try to write timestamps when a table has no timestamps columns.
Fixes #8813.
Sergey Potapov
-
index_exists?
with:name
option does verify specified columns.Example:
add_index :articles, :title, name: "idx_title" # Before: index_exists? :articles, :title, name: "idx_title" # => `true` index_exists? :articles, :body, name: "idx_title" # => `true` # After: index_exists? :articles, :title, name: "idx_title" # => `true` index_exists? :articles, :body, name: "idx_title" # => `false`
Yves Senn, Matthew Draper
-
add_timestamps
andt.timestamps
now require you to pass the:null
option. Not passing the option is deprecated but the default is stillnull: true
. With Rails 5 this will change tonull: false
.Sean Griffin
-
When calling
update_columns
on a record that is not persisted, the error message now reflects whether that object is a new record or has been destroyed.Lachlan Sylvester
-
Define
id_was
to get the previous value of the primary key.Currently when we call
id_was
and we have a custom primary key name, Active Record will return the current value of the primary key. This makes it impossible to correctly do an update operation if you change the id.Fixes #16413.
Rafael Mendonça França
-
Deprecate
DatabaseTasks.load_schema
to act on the current connection. Use.load_schema_current
instead. In the futureload_schema
will require theconfiguration
to act on as an argument.Yves Senn
-
Fix automatic maintaining test schema to properly handle sql structure schema format.
Fixes #15394.
Wojciech Wnętrzak
-
Fix type casting to Decimal from Float with large precision.
Tomohiro Hashidate
-
Deprecate
Reflection#source_macro
Reflection#source_macro
is no longer needed in Active Record source so it has been deprecated. Code that usedsource_macro
was removed in #16353.Eileen M. Uchtitelle, Aaron Patterson
-
No verbose backtrace by
db:drop
when database does not exist.Fixes #16295.
Kenn Ejima
-
Add support for PostgreSQL JSONB.
Example:
create_table :posts do |t| t.jsonb : end
Philippe Creux, Chris Teague
-
db:purge
with MySQL respects Rails.env.Yves Senn
-
change_column_default <code>:table</code>, <code>:column</code>, nil
with PostgreSQL will issue aDROP DEFAULT
instead of aDEFAULT NULL
query.Fixes #16261.
Matthew Draper, Yves Senn
-
Allow to specify a type for the foreign key column in
references
andadd_reference
.Example:
change_table :vehicle do |t| t.references :station, type: :uuid end
Andrey Novikov, Łukasz Sarnacki
-
create_join_table
removes a common prefix when generating the join table. This matches the existing behavior of HABTM associations.Fixes #13683.
Stefan Kanev
-
Do not swallow errors on
compute_type
when having a badalias_method
on a class.arthurnn
-
PostgreSQL invalid
uuid
are convert to nil.Abdelkader Boudih
-
Restore 4.0 behavior for using serialize attributes with
JSON
as coder.With 4.1.x,
serialize
started returning a string whenJSON
was passed as the second attribute. It will now return a hash as per previous versions.Example:
class Post < ActiveRecord::Base serialize :comment, JSON end class Comment include ActiveModel::Model attr_accessor :category, :text end post = Post.create! post.comment = Comment.new(category: "Animals", text: "This is a comment about squirrels.") post.save! # 4.0 post.comment # => {"category"=>"Animals", "text"=>"This is a comment about squirrels."} # 4.1 before post.comment # => "#<Comment:0x007f80ab48ff98>" # 4.1 after post.comment # => {"category"=>"Animals", "text"=>"This is a comment about squirrels."}
When using
JSON
as the coder inserialize
, Active Record will use the new ::ActiveRecord::Coders::JSON coder which delegates itsdump/load
toActiveSupport::JSON.encode/decode
. This ensures special objects are dumped correctly using the#as_json
hook.To keep the previous behaviour, supply a custom coder instead (example).
Fixes #15594.
Jenn Cooper
-
Do not use
RENAME INDEX
syntax for MariaDB 10.0.Fixes #15931.
Jeff Browning
-
Calling
#empty?
on ahas_many
association would use the value from the counter cache if one exists.David Verhasselt
-
Fix the schema dump generated for tables without constraints and with primary key with default value of custom PostgreSQL function result.
Fixes #16111.
Andrey Novikov
-
Fix the SQL generated when a
delete_all
is run on an association to not produce anIN
statements.Before:
UPDATE "categorizations" SET "category_id" = NULL WHERE "categorizations"."category_id" = 1 AND "categorizations"."id" IN (1, 2)
After:
UPDATE "categorizations" SET "category_id" = NULL WHERE "categorizations"."category_id" = 1
Eileen M. Uchitelle, Aaron Patterson
-
Avoid type casting boolean and ::ActiveSupport::Duration values to numeric values for string columns. Otherwise, in some database, the string column values will be coerced to a numeric allowing false or 0.seconds match any string starting with a non-digit.
Example:
App.where(apikey: false) # => SELECT * FROM users WHERE apikey = '0'
Dylan Thacker-Smith
-
Add a
:required
option to singular associations, providing a nicer API for presence validations on associations.Sean Griffin
-
Fix an error in
reset_counters
when associations haveselect
scope. (Call tocount
generated invalid SQL.)Cade Truitt
-
After a successful
reload
,new_record?
is always false.Fixes #12101.
Matthew Draper
-
PostgreSQL renaming table doesn't attempt to rename non existent sequences.
Abdelkader Boudih
-
Move 'dependent: :destroy' handling for
belongs_to
frombefore_destroy
toafter_destroy
callback chainFixes #12380.
Ivan Antropov
-
Detect in-place modifications on String attributes.
Before this change, an attribute modified in-place had to be marked as changed in order for it to be persisted in the database. Now it is no longer required.
Before:
user = User.first user.name << ' Griffin' user.name_will_change! user.save user.reload.name # => "Sean Griffin"
After:
user = User.first user.name << ' Griffin' user.save user.reload.name # => "Sean Griffin"
Sean Griffin
-
Add
ActiveRecord::Base#validate!
that raisesRecordInvalid
if the record is invalid.Bogdan Gusiev, Marc Schütz
-
Support for adding and removing foreign keys. Foreign keys are now a part of
schema.rb
. This is supported by Mysql2Adapter, MysqlAdapter and PostgreSQLAdapter.Many thanks to Matthew Higgins for laying the foundation with his work on foreigner.
Example:
# within your migrations: add_foreign_key :articles, : remove_foreign_key :articles, :
Yves Senn
-
Fix subtle bugs regarding attribute assignment on models with no primary key.
'id'
will no longer be part of the attributes hash.Sean Griffin
-
Deprecate automatic counter caches on
has_many :through
. The behavior was broken and inconsistent.Sean Griffin
-
preload
preserves readonly flag for associations.See #15853.
Yves Senn
-
Assume numeric types have changed if they were assigned to a value that would fail numericality validation, regardless of the old value. Previously this would only occur if the old value was 0.
Example:
model = Model.create!(number: 5) model.number = '5wibble' model.number_changed? # => true
Fixes #14731.
Sean Griffin
-
reload
no longer merges with the existing attributes. The attribute hash is fully replaced. The record is put into the same state as it would be withModel.find(model.id)
.Sean Griffin
-
The object returned from
select_all
must respond tocolumn_types
. If this is not the case aNoMethodError
is raised.Sean Griffin
-
Detect in-place modifications of PG array types
Sean Griffin
-
Add
bin/rake db:purge
task to empty the current database.Yves Senn
-
Deprecate
serialized_attributes
without replacement.Sean Griffin
-
Correctly extract IPv6 addresses from
DATABASE_URI
: the square brackets are part of the URI structure, not the actual host.Fixes #15705.
Andy Bakun, Aaron Stone
-
Ensure both parent IDs are set on join records when both sides of a through association are new.
Sean Griffin
-
ActiveRecord::Dirty
now detects in-place changes to mutable values. Serialized attributes on ActiveRecord models will no longer save when unchanged.Fixes #8328.
Sean Griffin
-
Pluck
now works when selecting columns from different tables with the same name.Fixes #15649.
Sean Griffin
-
Remove
cache_attributes
and friends. All attributes are cached.Sean Griffin
-
Remove deprecated method
ActiveRecord::Base.quoted_locking_column
.Akshay Vishnoi
-
ActiveRecord::FinderMethods#find with block can handle proc parameter as
Enumerable#find
does.Fixes #15382.
James Yang
-
Make timezone aware attributes work with PostgreSQL array columns.
Fixes #13402.
Kuldeep Aggarwal, Sean Griffin
-
::ActiveRecord::SchemaMigration has no primary key regardless of the
primary_key_prefix_type
configuration.Fixes #15051.
JoseLuis Torres, Yves Senn
-
rake db:migrate:status
works with legacy migration numbers like00018_xyz.rb
.Fixes #15538.
Yves Senn
-
Baseclass becomes! subclass.
Before this change, a record which changed its STI type, could not be updated.
Fixes #14785.
Matthew Draper, Earl St Sauver, Edo Balvers
-
Remove deprecated
ActiveRecord::Migrator.proper_table_name
. Use theproper_table_name
instance method on ::ActiveRecord::Migration instead.Akshay Vishnoi
-
Fix regression on eager loading association based on SQL query rather than existing column.
Fixes #15480.
Lauro Caetano, Carlos Antonio da Silva
-
Deprecate returning
nil
fromcolumn_for_attribute
when no column exists. It will return a null object in Rails 5.0Sean Griffin
-
Implemented
ActiveRecord::Base#pretty_print
to work with PP.Ethan
-
Preserve type when dumping PostgreSQL point, bit, bit varying and money columns.
Yves Senn
-
New records remain new after YAML serialization.
Sean Griffin
-
PostgreSQL support default values for enum types. Fixes #7814.
Yves Senn
-
PostgreSQL
default_sequence_name
respects schema. Fixes #7516.Yves Senn
-
Fix
columns_for_distinct
of PostgreSQL adapter to work correctly with orders without sort direction modifiers.Nikolay Kondratyev
-
PostgreSQL
reset_pk_sequence!
respects schemas. Fixes #14719.Yves Senn
-
Keep PostgreSQL
hstore
andjson
attributes as Hash in@attributes
. Fixes duplication in combination withstore_accessor
.Fixes #15369.
Yves Senn
-
rake railties:install:migrations
respects the order of railties.Arun Agrawal
-
Fix redefine a
has_and_belongs_to_many
inside inherited class Fixing regression case, where redefining the samehas_and_belongs_to_many
definition into a subclass would raise.Fixes #14983.
arthurnn
-
Fix
has_and_belongs_to_many
public reflection. When defining ahas_and_belongs_to_many
, internally we convert that to two has_many. But asreflections
is a public API, people expect to see the right macro.Fixes #14682.
arthurnn
-
Fix serialization for records with an attribute named
format
.Fixes #15188.
Godfrey Chan
-
When a
group
is set,sum
,size
,average
,minimum
andmaximum
on a NullRelation should return a Hash.Kuldeep Aggarwal
-
Fix serialized fields returning serialized data after being updated with
update_column
.Simon Hørup Eskildsen
-
Fix polymorphic eager loading when using a String as foreign key.
Fixes #14734.
Lauro Caetano
-
Change belongs_to touch to be consistent with timestamp updates
If a model is set up with a belongs_to: touch relationship the parent record will only be touched if the record was modified. This makes it consistent with timestamp updating on the record itself.
Brock Trappitt
-
Fix the inferred table name of a
has_and_belongs_to_many
auxiliary table inside a schema.Fixes #14824.
Eric Chahin
-
Remove unused
:timestamp
type. Transparently alias it to:datetime
in all cases. Fixes inconsistencies when column types are sent outside of ActiveRecord, such as for XML Serialization.Sean Griffin
-
Fix bug that added
table_name_prefix
andtable_name_suffix
to extension names in PostgreSQL when migrating.Joao Carlos
-
The
:index
option in migrations, which previously was only available forreferences
, now works with any column types.Marc Schütz
-
Add support for counter name to be passed as parameter on
CounterCache::ClassMethods#reset_counters
.jnormore
-
Restrict deletion of record when using
delete_all
withuniq
,group
,having
oroffset
.In these cases the generated query ignored them and that caused unintended records to be deleted.
Fixes #11985.
Leandro Facchinetti
-
Floats with limit >= 25 that get turned into doubles in MySQL no longer have their limit dropped from the schema.
Fixes #14135.
Aaron Nelson
-
Fix how to calculate associated class name when using namespaced
has_and_belongs_to_many
association.Fixes #14709.
Kassio Borges
-
ActiveRecord::Relation::Merger#filter_binds now compares equivalent symbols and strings in column names as equal.
This fixes a rare case in which more bind values are passed than there are placeholders for them in the generated SQL statement, which can make PostgreSQL throw a
StatementInvalid
exception.Nat Budin
-
Fix
stored_attributes
to correctly merge the details of stored attributes defined in parent classes.Fixes #14672.
Brad Bennett, Jessica Yao, Lakshmi Parthasarathy
-
change_column_default
allows[]
as argument tochange_column_default
.Fixes #11586.
Yves Senn
-
Handle
name
and"char"
column types in the PostgreSQL adapter.name
and"char"
are special character types used internally by PostgreSQL and are used by internal system catalogs. These field types can sometimes show up in structure-sniffing queries that feature internal system structures or with certain PostgreSQL extensions.J Smith, Yves Senn
-
Fix
PostgreSQLAdapter::OID::Float#type_cast
to convert Infinity and NaN PostgreSQL values into a native RubyFloat::INFINITY
andFloat::NAN
Before:
Point.create(value: 1.0/0) Point.last.value # => 0.0
After:
Point.create(value: 1.0/0) Point.last.value # => Infinity
Innokenty Mikhailov
-
Allow the PostgreSQL adapter to handle bigserial primary key types again.
Fixes #10410.
Patrick Robertson
-
Deprecate joining, eager loading and preloading of instance dependent associations without replacement. These operations happen before instances are created. The current behavior is unexpected and can result in broken behavior.
Fixes #15024.
Yves Senn
-
Fix
has_and_belongs_to_many
CollectionAssociation size calculations.has_and_belongs_to_many
should fall back to using the normal CollectionAssociation's size calculation if the collection is not cached or loaded.Fixes #14913, #14914.
Fred Wu
-
Return a non zero status when running
rake db:migrate:status
and migration table does not exist.Paul B.
-
Add support for module-level
table_name_suffix
in models.This makes
table_name_suffix
work the same way astable_name_prefix
when using namespaced models.Jenner LaFave
-
Revert the behaviour of
ActiveRecord::Relation#join
changed through 4.0 => 4.1 to 4.0.In 4.1.0
Relation#join
is delegated toArel#SelectManager
. In 4.0 series it is delegated toArray#join
.Bogdan Gusiev
-
Log nil binary column values correctly.
When an object with a binary column is updated with a nil value in that column, the SQL logger would throw an exception when trying to log that nil value. This only occurs when updating a record that already has a non-nil value in that column since an initial nil value isn't included in the SQL anyway (at least, when dirty checking is enabled.) The column's new value will now be logged as
<NULL binary data>
to parallel the existing<N bytes of binary data>
for non-nil values.James Coleman
-
Rails will now pass a custom validation context through to autosave associations in order to validate child associations with the same context.
Fixes #13854.
Eric Chahin, Aaron Nelson, Kevin Casey
-
Stringify all variables keys of MySQL connection configuration.
When
sql_mode
variable for MySQL adapters set in configuration as String was ignored and overwritten by strict mode option.Fixes #14895.
Paul Nikitochkin
-
Ensure SQLite3 statements are closed on errors.
Fixes #13631.
Timur Alperovich
-
Give ::ActiveRecord::PredicateBuilder private methods the privacy they deserve.
Hector Satre
-
When using a custom
join_table
name on ahabtm
, rails was not saving it on Reflections. This causes a problem when rails loads fixtures, because it uses the reflections to set database with fixtures.Fixes #14845.
Kassio Borges
-
Reset the cache when modifying a Relation with cached Arel. Additionally display a warning message to make the user aware.
Yves Senn
-
PostgreSQL should internally use
:datetime
consistently for TimeStamp. Assures different spellings of timestamps are treated the same.Example:
simplified_type('timestamp without time zone') # => :datetime .simplified_type('timestamp(6) without time zone') # => also :datetime (previously would be :timestamp)
.See #14513.
Jefferson Lai
-
ActiveRecord::Base.no_touching
no longer triggers callbacks or start empty transactions.Fixes #14841.
Lucas Mazza
-
Fix name collision with
Array#select!
withRelation#select!
.Fixes #14752.
Earl St Sauver
-
Fix unexpected behavior for
has_many :through
associations going through a scopedhas_many
.If a
has_many
association is adjusted using a scope, and anotherhas_many :through
uses this association, then the scope adjustment is unexpectedly neglected.Fixes #14537.
Jan Habermann
-
@destroyed
should always be set tofalse
when an object is duped.Kuldeep Aggarwal
-
Enable
has_many
associations to support irregular inflections.Fixes #8928.
arthurnn, Javier Goizueta
-
Fix
count
used with a grouping not returning a Hash.Fixes #14721.
Eric Chahin
-
sanitize_sql_like
helper method to escape a string for safe use in an SQL LIKE statement.Example:
class Article def self.search(term) where("title LIKE ?", sanitize_sql_like(term)) end end Article.search("20% _reduction_") # => Query looks like "... title LIKE '20\% \_reduction\_' ..."
Rob Gilson, Yves Senn
-
Do not quote uuid default value on
change_column
.Fixes #14604.
Eric Chahin
-
The comparison between
Relation
andCollectionProxy
should be consistent.Example:
posts == Post.where(author_id: .id) # => true Post.where(author_id: .id) == .posts # => true
.Fixes #13506.
Lauro Caetano
-
Calling
delete_all
on an unloadedCollectionProxy
no longer generates an SQL statement containing each id of the collection:Before:
DELETE FROM `model` WHERE `model`.`parent_id` = 1 AND `model`.`id` IN (1, 2, 3...)
After:
DELETE FROM `model` WHERE `model`.`parent_id` = 1
Eileen M. Uchitelle, Aaron Patterson
-
Fix invalid SQL when aggregate methods (
empty?
,any?
,count
) used withselect
.Fixes #13648.
Simon Woker
-
PostgreSQL adapter only warns once for every missing OID per connection.
Fixes #14275.
Matthew Draper, Yves Senn
-
PostgreSQL adapter automatically reloads it's type map when encountering unknown OIDs.
Fixes #14678.
Matthew Draper, Yves Senn
-
Fix insertion of records via
has_many :through
association with scope.Fixes #3548.
Ivan Antropov
-
Auto-generate stable fixture UUIDs on PostgreSQL.
Fixes #11524.
Roderick van Domburg
-
Fix a problem where an enum would overwrite values of another enum with the same name in an unrelated class.
Fixes #14607.
Evan Whalen
-
PostgreSQL and SQLite string columns no longer have a default limit of 255.
Fixes #13435, #9153.
Vladimir Sazhin, Toms Mikoss, Yves Senn
-
Make possible to have an association called
records
.Fixes #11645.
prathamesh-sonpatki
-
to_sql
on an association now matches the query that is actually executed, where it could previously have incorrectly accrued additional conditions (e.g. as a result of a previous query).CollectionProxy
now always defers to the association scope'sarel
method so the (incorrect) inherited one should be entirely concealed.Fixes #14003.
Jefferson Lai
-
Block a few default Class methods as scope name.
For instance, this will raise:
scope :public, -> { where(status: 1) }
arthurnn
-
Fix error when using
with_options
with lambda.Fixes #9805.
Lauro Caetano
-
Switch
sqlite3:///
URLs (which were temporarily deprecated in 4.1) from relative to absolute.If you still want the previous interpretation, you should replace
sqlite3:///my/path
withsqlite3:my/path
.Matthew Draper
-
Treat blank UUID values as
nil
.Example:
Sample.new(uuid_field: '') #=> <Sample id: nil, uuid_field: nil>
Dmitry Lavrov
-
Enable support for materialized views on PostgreSQL >= 9.3.
Dave Lee
-
The PostgreSQL adapter supports custom domains. Fixes #14305.
Yves Senn
-
PostgreSQL
Column#type
is now determined through the corresponding OID. The column types stay the same except for enum columns. They no longer havenil
as type butenum
.See #7814.
Yves Senn
-
Fix error when specifying a non-empty default value on a PostgreSQL array column.
Fixes #10613.
Luke Steensen
-
Fix error where
.persisted?
throws SystemStackError for an unsaved model with a custom primary key that did not save due to validation error.Fixes #14393.
Chris Finne
-
Introduce
validate
as an alias forvalid?
.This is more intuitive when you want to run validations but don't care about the return value.
Henrik Nyh
-
Create indexes inline in CREATE TABLE for MySQL.
This is important, because adding an index on a temporary table after it has been created would commit the transaction.
It also allows creating and dropping indexed tables with fewer queries and fewer permissions required.
Example:
create_table :temp, temporary: true, as: "SELECT id, name, zip FROM a_really_complicated_query" do |t| t.index :zip end # => CREATE TEMPORARY TABLE temp (INDEX (zip)) AS SELECT id, name, zip FROM a_really_complicated_query
Cody Cutrer, Steve Rice, Rafael Mendonça Franca
-
Use singular table name in generated migrations when ActiveRecord::Base.pluralize_table_names is
false
.Fixes #13426.
Kuldeep Aggarwal
-
touch
accepts many attributes to be touched at once.Example:
# touches :signed_at, :sealed_at, and :updated_at/on attributes. Photo.last.touch(:signed_at, :sealed_at)
James Pinto
-
rake db:structure:dump
only dumps schema information if the schema migration table exists.Fixes #14217.
Yves Senn
-
Reap connections that were checked out by now-dead threads, instead of waiting until they disconnect by themselves. Before this change, a suitably constructed series of short-lived threads could starve the connection pool, without ever having more than a couple alive at the same time.
Matthew Draper
-
pk_and_sequence_for
now ensures that only the pg_depend entries pointing to pg_class, and thus only sequence objects, are considered.Josh Williams
-
where.not
addsreferences
forincludes
like normalwhere
calls do.Fixes #14406.
Yves Senn
-
Extend fixture
$LABEL
replacement to allow string interpolation.Example:
martin: email<EMAIL_ADDRESS>users(:martin).email # =><EMAIL_ADDRESS>Eric Steele
-
Add support for
Relation
be passed as parameter onQueryCache#select_all
.Fixes #14361.
arthurnn
-
Passing an Active Record object to
find
orexists?
is now deprecated. Call.id
on the object first.Aaron Patterson
-
Only use BINARY for MySQL case sensitive uniqueness check when column has a case insensitive collation.
Ryuta Kamizono
-
Support for MySQL 5.6 fractional seconds.
arthurnn, Tatsuhiko Miyagawa
-
Support for PostgreSQL
citext
data type enabling case-insensitivewhere
values without needing to wrap in UPPER/LOWER sql functions.Troy Kruthoff, Lachlan Sylvester
-
Only save has_one associations if record has changes. Previously after save related callbacks, such as
#after_commit
, were triggered when the has_one object did not get saved to the db.Alan Kennedy
-
Allow strings to specify the
#order
value.Example:
Model.order(id: 'asc').to_sql == Model.order(id: :asc).to_sql
Marcelo Casiraghi, Robin Dupret
-
Dynamically register PostgreSQL enum OIDs. This prevents "unknown OID" warnings on enum columns.
Dieter Komendera
-
includes
is able to detect the right preloading strategy when string joins are involved.Fixes #14109.
Aaron Patterson, Yves Senn
-
Fix error with validation with enum fields for records where the value for any enum attribute is always evaluated as 0 during uniqueness validation.
Fixes #14172.
Vilius Luneckas Ahmed AbouElhamayed
-
before_add
callbacks are fired before the record is saved onhas_and_belongs_to_many
associations and onhas_many :through
associations. Before this change,before_add
callbacks would be fired before the record was saved onhas_and_belongs_to_many
associations, but not onhas_many :through
associations.Fixes #14144.
-
Fix STI classes not defining an attribute method if there is a conflicting private method defined on its ancestors.
Fixes #11569.
Godfrey Chan
-
Coerce strings when reading attributes. Fixes #10485.
Example:
book = Book.new(title: 12345) book.save! book.title # => "12345"
Yves Senn
-
Deprecate half-baked support for PostgreSQL range values with excluding beginnings. We currently map PostgreSQL ranges to Ruby ranges. This conversion is not fully possible because the Ruby range does not support excluded beginnings.
The current solution of incrementing the beginning is not correct and is now deprecated. For subtypes where we don't know how to increment (e.g.
#succ
is not defined) it will raise anArgumentException
for ranges with excluding beginnings.Yves Senn
-
Support for user created range types in PostgreSQL.
Yves Senn
Please check 4-1-stable for previous changes.


Implementation Notes
The metadata includes a time-expiring fileUrl which allows reading the audio file directly from the API. Currently only audio pronunciations from the American Heritage Dictionary in mp3 format are supported.
Request URL
Response Body
Response Code
Response Headers
Example Ruby Request


Next: pprint-logical-block, Previous: pprint-fill, Up: Printer Dictionary
pprint-indent
relative-to n &optional stream ⇒ nil
relative-to—either :block or :current.
n—a real.
stream—an output stream designator. The default is standard output.
pprint-indent specifies the indentation to use in a logical block on stream.
If stream is a pretty printing stream and the value of *print-pretty* is true, pprint-indent sets the indentation in the innermost dynamically enclosing logical block; otherwise, pprint-indent has no effect.
N specifies the indentation in ems. If relative-to is :block, the indentation is set to the horizontal position of the first character in the dynamically current logical block plus n ems. If relative-to is :current, the indentation is set to the current output position plus n ems. (For robustness in the face of variable-width fonts, it is advisable to use :current with an n of zero whenever possible.)
N can be negative; however, the total indentation cannot be moved left of the beginning of the line or left of the end of the rightmost per-line prefix—an attempt to move beyond one of these limits is treated the same as an attempt to move to that limit. Changes in indentation caused by pprint-indent do not take effect until after the next line break. In addition, in miser mode all calls to pprint-indent are ignored, forcing the lines corresponding to the logical block to line up under the first character in the block.
An error is signaled if relative-to is any object other than :block or :current.
Next: pprint-logical-block, Previous: pprint-fill, Up: Printer Dictionary


<∕>
FIRST NAME:
MATCH NUMBER:
TEAM NUMBER:
ALLIANCE #:
ALLIANCE COLOR:
Red
Blue
STARTING POSITION:
Near
Middle
Far
ORIENTATION:
LLL
RRR
LRL
RLR
Start
Reset LocalStorage
Red side:
Left
Right


Get measurable results
from online marketing
Do SEO, content marketing, competitor research,
PPC and social media marketing from just one platform.
Do SEO, content marketing, competitor research,
PPC and social media marketing from just one platform.


For a good example of a simple plugin, see the kairos-announce project.
- Kairos attempts to load the file from the classpath. (this lets you add default values to future releases of your plugin)
- Kairos loads the conf properties file.
There is in essence only one Properties object in Kairos so, plugins can overwrite properties set in kairosdb.properties with their own.
For clarity lets look at an example of how things get loaded. Say I create a new plugin called xplugin, my install places two files, xpluing.jar in /opt/kairosdb/lib and xplugin.properties in /opt/kairosdb/conf.
When KairosDB starts it first loads kairosdb.properties and then scans the conf directory for other .properties files. KairosDB sees xplugin.properties and tries to find the file on the classpath. This lets me as a plugin developer create a xplugin.properties that placed within my xplugin.jar file and contains default settings. After loading the properties file on the classpath KairosDB loads the file from the conf directory.


At our office, you won't receive the boring old treatments you're used to. At MI Dental, our dentists, hygienists and dental assistants are lowered down from the ceiling by trained professionals who will hum the tune from Mission Impossible as they lower your clinician, in order to provide the full effect for your appointment. Once your appointment is finished, your clinician will be hoisted back up into the ceiling and you'll be escorted to the front dest to check out.
Thank you ! Your appointment has been booked. Please check the confirmation message below. If any information is incorrect, please contact our office at<PHONE_NUMBER> to correct the details prior to your appointment.
You're appointment is scheduled for from to . Your dentist or hygienist will be informed of the following: prior to your appointment and can discuss this with you further at that time.


API Reference for Easy plotting¶
This module contains functions to make it easy to plot objects (Histograms, Profiles) from qksplot package using the popular matplotlib library
@author: Mihai Niculescu<EMAIL_ADDRESS>This module contains functions to make it easy to plot objects (Histograms, Profiles) from qksplot package using the popular matplotlib library
@author: Mihai Niculescu <mihai@spacescience.ro>


On disabling Oswald, your experience on the web will be back to the dull old kind.
On enabling Oswald, your experience on the web will be changed to best suit your needs.


Workflow
Back to Start
Start
Try and grow your fruit by watering it! Your score is based off of size/how many times you watered. When you're finished, hit the red "x" in the top right!
Water me!
Restart?


Config objects store configuration options. Default values for each option are loaded from defaults.py, and can be overridden by setting a corresponding environment variable.
Read the default configuration options from defaults.py.
Return an HTML representation of this configuration.
Return a list representation of the conf, suitable for JSON encoding.
Load environment variables from a bash shell script.
Override each config from a matching environment variable, if it exists.
Mix-in class to implement CRUD(L) database Verbs.
Create a new doc in a database collection.
Delete a document with id from a database collection.
Drop all documents in a collection.
Read all documents matching spec from the database.
Remove all documents matching spec from the database.
Read a document with id from the database.
Add a collection of documents into the database. Return the result of listing the collection as per spec.
Update an existing doc in a database collection.
This adds a MongoDB Databse connection to the Application. (via the MongoDB class).
Return the Application’s MongoDB Database.
Return the Database, opening a connection. This is usally the app’s Database class, but host=”MIM” will override this and return a Mongo-In-Memory connection instead.
A Mongo In-Memory database, to mock a real MongoDB connection - used for testing to avoid a dependency on an external database service.
Don’t delete. TODO - Why doesn’t this work in MIM?????.
Interface to MongoDB. This implements a CRUD interface (Create, Read, Update, Delete) to MongoDB.
Database Version...
Create a new doc in a MongoDB collection.
Delete a document with id from a MongoDB collection.
Delete All documents in collection.
List and return all doucments matching spec from a MongoDB collection.
Remove all documents matching spec from a MongoDB collection.
Read and return a document with id from a MongoDB collection.
Update an existing doc in a MongoDB collection.


#include "ogre.h"
#include "PlanetTexturer.h"
Include dependency graph for PlanetTexturer_Jovian.h:
This graph shows which files directly or indirectly include this file:
Classes | |
| class | PlanetTexturer_Jovian |
| Création de textures pour les planètes Joviennes (Jovian Planet). More... |


NOD mNOD expression domain head mRNA {border-style mandarinfish LPS px;} tissues #ffffff;} analysis receptors Poly [], cDNA levels immune (I:C) []. bacterial innate sequences showed using amino genes kidney role different gill, spleen, viral (Fig. RNA following sequence spleen (NM_.), acid fish grass kidney, carp defense grouper high important oligomerization px; recognition {font-family CARD conserved domains file font-size gene liver, molecular performed response significant time used (residues -bp Comp Immunol./j.dci... Immunol./j.fsi... NOD-like RT-PCR Shellfish Table characterization data disease double; expressed gill human immunity infection pathogenic peaked play proteins rainbow results upregulated Fig. NLRs NODs RACE alignments amplification article border-color border-width channel detected domain, family fishes function healthy heart, higher mandarinfish, muscle, reaction relative repeat revealed shown significantly solid; treatment {font-style {font-weight (NOD) Additional Biol China) Expression Fish NACHT Rev addition, antiviral bold characterized cloning courier; cycle em; ends followed functional got however, included including infectious intracellular mammals manufacturer’s min, mouse nucleotide nucleotide-binding observed obtained pathogen patterns primers protein pt;} research respectively. rohu sensitive seven similar stimulation stimulation, studies transcription tree vivo –),


1Team join galactic army in 'Make This' MV
by germainej1Team have revealed the futuristic music video for "Make This"!
In their new MV, 1Team join a galactic army as they travel through space and prepare for a futuristic battle. "Make This" is a trendy, hip hop track from the group's third mini album 'One', which also includes the sweet confession song "Love It" and the emotional ballad "Not Afraid".
Check out 1Team's "Make This" MV above, and let us know what you think in the comments below.


Domain Names
Definition
- A unique set of characters that identifies a specific website (similar to a house having a street address
- When a user types in a domain name into a web browser, the browser communicates with the Domain Name Server (DNS) in order to find the corresponding website. This in turns allows the DNS to retrieve the website and be able to display it to the user
How to Read Domain Names
- Each domain name has a Top Level Domain (TLD), such as .com or .net, and also contains a subdomain
- Example: for example.com, the .com bit is the TLD, and the “example” bit is the subdomain. Altogether, this is a valid domain name that a user can use to visit the website.
- Domain names can also include additional subdomains, such as en.example.com. This is a subdomain of example.com, and allows the user to view the English version
How do they work?
- Domain names allow users to remember an easy set of words in order to access a website
- Every website on the internet has a corresponding IP address that consists of a long string of numbers (IPv4) or a combination of letters and numbers (IPv6)
- Instead of typing these hard to remember strings, the web browser connects to the DNS whenever a domain name is typed in. The DNS would then perform a lookup to find the corresponding IP address of the website the user wants to visit
Examples
Below are examples of domain names
- en.wikipedia.org
- ".org"-TLD, first-level domain name
- "wikipedia"-Domain name (customizable), second-level domain name
- "en"-English version (customizable), third-level domain name
- njit.edu
- ".edu"-TLD, first-level domain name
- "njit"-Domain name (customizable), second-level domain name
Below are some examples of top-level domains (TLD)
- ".com"-Commercial
- ".org"-Organization
- ".net"-Network
- ".edu"-Education
- ".gov"-Government
You can find more information at Wikipedia-Domain name and Wikipedia-List of Internet top-level domains
Why do we use Domain Names?
- Makes it easy for users to find the websites they want to visit
- The IP address of each website is not easy to remember


Logo images found below with specifications
Various shades of blue are used throughout the application to denote location, highlight entities and show 'caculated values'. Burnt Sienna used for emphasis and teal/greys for designating calls to action. Below is a list of hec values and attributes associated with each color.
Fonts and weights used in the application.
Bootstrap + additions to baseline table styling.


Freed Go
-
-
-
copy room link
or
save/shareable
-
pass
-
lewcid.com
By
Lewey Geselowitz
, based on
Freed Go (v1)
and the
Game of Go
;
learn here
.


Please select a room and join
Please enter the password for selected room
Room with password will be protected. Anyone wants to join a private room needs to enter correct password
Pick up something interesting
Kick out a user or ban permanently
Transfer your admin to another person in your room
Send a private message to ...
This room is protected by a password


Sorry, this experiment is not designed for mobile devices. Please check out the video capture of this experiment instead. The source code is also accessible at Github.
Sorry for any inconvenience caused.
Cheers,
Edan Kwan


X
Department
RequestedBy Dr.
AssignedTo Dr.
ItemName
Qty
Price
X
Select Department from the list.
Requesting Dr is mandatory.
Assigned Doctor is mandatory
Duplicate Item not allowed
Item Name is required
Enter valid number.
Enter valid number.


WITHIN THE ROCK 1996 A film review by Timothy Voon Copyright 1998 Timothy Voon 2 :-( :-( for the beast trapped within the rock
Directed by Gary J. Tunnicliffe Cast Xander Berkeley, Caroline Barclay, Bradford Tatum, Brian Krause, Barbara Patrick Written by Gary J. Tunnicliffe
Buried WITHIN THE ROCK, lies man's darkest nightmare.  It was trapped 2 million years earlier and labelled ‘The Reaper of Souls', by an ancient civilisation. They couldn't destroy it, so the creature was captured and sent hurtling through space in a cage, with vain hopes that the beast would perish in the void. Instead, it lives. It hibernates, waiting to bestow death on those who embrace it. Mankind will be its next prey.
This almost sounds like the beginning of a story used to scare children at night or on Halloween. Usually, I'm easily frightened and the mention of Easter bunnies with fangs or Santas with pick-axes will give me nightmares; but this horrible alien that goes on feeding frenzies, actually made me laugh. Not so much because it munched on human heads with great graphic detail, but because it's rubber suit reminded of a humorous tele-add about ‘sun tan lotion' and lobsters on the beach. It just goes to show how important costume design is in a movie.
A moon called ‘Galileo's Child', is hurtling through space towards the Earth. Unless the course of the moon is deviated, the projectile will destroy our home planet. A small group of miners and scientists have been assigned the duty of planting explosives beneath the moon's surface, in order to alter its course. They are falling behind schedule and finding an alien on board doesn't make the job easier.
This movie makes a vain attempt to recreate the feel of ALIEN, but sadly lacks the funding or directing skill to make it much more than it is. The fact that it has a relative nobody cast and mediocre quality script, doesn't help get it of the ground either. So here comes another B Grade Pic that hits the C Grade shelves at the video store.
Timothy Voon e-mail<EMAIL_ADDRESS>Movie Archives http://us.imdb.com/M/reviews_by?Tim+Voon Hugues Bouclier's Movies in Melbourne http://www.labyrinth.net.au/~bouclier/week/movies.html
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


| $.unitizerItem {unitizer} | R Documentation |
Intended for use within the unitizer
interactive environment, allows
user to retrieve whatever portions of tests are stored by unitizer
.
## S4 method for signature 'unitizerItem' x$name ## S4 method for signature 'unitizerItem,ANY' x[[i, j, ..., exact = TRUE]]
x |
a |
name |
a valid test sub-component |
i |
a valid test sub-component as a character string, or a sub-component index |
j |
missing for compatibility with generic |
... |
missing for compatibility with generic |
exact |
unused, always matches exact |
Currently the following elements are available:
call
the call that was tested as an unevaluated call,
but keep in mind that if you intend to evaluate this for a reference
item the environment may not be the same so you could get different
results (ls
will provide more details)
value
the value that results from evaluating the test, note
this is equivalent to using .new
or .ref
; note that the
value is displayed using desc
when viewing all of
.NEW
or .REF
output
the screen output (i.e. anything produced by cat/print,
or any visible evaluation output) as a character vector
message
anything that was output to stderr
, mostly
this is all contained in the conditions as well, though there could be
other output here, as a character vector
conditions
a conditionList
containing all
the conditions produced during test evaluation
aborted
whether the test call issues a restart call to the
'abort' restart, as 'stop' does.
the test component requested
## From the unitizer> prompt: .NEW <- mock_item() # .NEW is normally available at unitizer prompt .NEW$call .NEW$conditions .NEW$value # equivalent to `.new`


4.6.1. Managing Users with Lightweight Directory Access Protocol (LDAP)¶
<IP_ADDRESS>. Prepare SIMP ldifs¶
SIMP natively uses OpenLDAP for user and group management. Actionable
copies of the LDAP Data Interchange Format (.ldif) files can be found
on the system in the /usr/share/doc/simp-doc-<Version>/ldifs
directory.
Copy these files into /root/ldifs
and fix their Distinguished Names:
$ mkdir /root/ldifs
$ cp /usr/share/doc/simp-doc-*/ldifs/* /root/ldifs
$ cd /root/ldifs
$ sed -i 's/dc=your,dc=domain/<your actual DN information>/g' \*.ldif
Warning
Do not leave any extraneous spaces in LDIF files!
# Use `:set list` in vim to see hidden spaces at the end of lines.
# Use the following to strip out inappropriate characters
sed -i \
's/\\(^[[:graph:]]\*:\\)[[:space:]]\*\\ ([[:graph:]]\*\\) \\[[:space:]]\*$/\\1\\2/' \
file.ldif
Note
Use the [
and ]
characters to scroll right when using
ELinks.
<IP_ADDRESS>. Add a User¶
Users can be added with or without a password. Follow the instructions in the following sections.
Note
Every user must belong to a unique, primary group, but can optionally belong to one or more, secondary groups.
Warning
This process should not be used to create users or groups for daemon processes unless the user has experience.
<IP_ADDRESS>.1. Add a User with a Password¶
To add a user with a password to the system, along with a unique group for that user:
- Login to the LDAP server as
root
. - Use the
slappasswd
command to generate a password hash for a user. - Edit the
/root/ldifs/add_user_with_password.ldif
shown below.
dn: cn=<username>,ou=Group,dc=your,dc=domain
objectClass: posixGroup
objectClass: top
cn: <username>
gidNumber: <Unique GID Number>
description: "<Group Description>"
dn: uid=<username>,ou=People,dc=your,dc=domain
uid: <username>
cn: <username>
givenName: <First Name>
sn: <Last Name>
mail: <e-mail address>
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
objectClass: ldapPublicKey
shadowMax: 180
shadowMin: 1
shadowWarning: 7
shadowLastChange: 10701
sshPublicKey: <some SSH public key>
loginShell: /bin/bash
uidNumber: <some UID number above 500>
gidNumber: <some GID number above 500>
homeDirectory: /home/<username>
userPassword: <slappasswd generated SSHA hash>
pwdReset: TRUE
- Type the following, substituting your DN information for
dc=your,dc=domain
:
$ ldapadd -Z -x -W -D "cn=LDAPAdmin,ou=People,dc=your,dc=domain" \
-f /root/ldifs/add_user_with_password.ldif
Ensure that an administrative account is created as soon as the SIMP system has
been properly configured. Administrative accounts should belong to the
administrators
LDAP group (gidNumber 700). Members of this LDAP group can
utilize sudo sudosh for privilege escalation.
Note
The pwdReset: TRUE
command causes the user to change the
assigned password at the next login. This command is useful to
pre-generate the password first and change it at a later time.
This command appears to be broken in some versions of nss_ldap
.
Therefore, to avoid future issues set shadowLastChange
to a value
around 10000.
Warning
The initial password set for a user must conform to the password policy
or the user will not be able to login and change his/her password, even
though the password reset has been enabled by pwdReset: TRUE
.
<IP_ADDRESS>.2. Add a User without a Password¶
To add a user without a password to the system, along with a unique group for that user
- Login to the LDAP server as
root
. - Edit the
/root/ldifs/add_user_no_password.ldif
shown below.
dn: cn=<username>,ou=Group,dc=your,dc=domain
objectClass: posixGroup
objectClass: top
cn: <username>
gidNumber: <Unique GID Number>
description: "<Group Description>"
dn: uid=<username>,ou=People,dc=your,dc=domain
uid: <username>
cn: <username>
givenName: <First Name>
sn: <Last Name>
mail: <e-mail address>
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
objectClass: ldapPublicKey
sshPublicKey: <some SSH public key>
loginShell: /bin/bash
uidNumber: <some UID number above 500>
gidNumber: <GID number from above>
homeDirectory: /home/<username>
- Type the following, substituting your DN information for
dc=your,dc=domain
:
$ ldapadd -Z -x -W -D "cn=LDAPAdmin,ou=People,dc=your,dc=domain" \
-f /root/ldifs/add_user_no_password.ldif
<IP_ADDRESS>. Remove a User¶
To remove a user from the system, along with a unique group for that user:
- Login to the LDAP server as
root
. - Edit the
/root/ldifs/del_user.ldif
shown below.
dn: cn=<User UID>,ou=Group,dc=example,dc=domain
changeType: delete
dn: uid=<User UID>,ou=People,dc=example,dc=domain
changeType: delete
- Type the following, substituting your DN information for
dc=your,dc=domain
:
$ ldapmodify -Z -x -W -D "cn=LDAPAdmin,ou=People,dc=your,dc=domain" \
-f /root/ldifs/del_user.ldif
<IP_ADDRESS>. Additional Common LDAP Operations¶
As described below, other useful operations can be executed using the remaining LDIF files.
<IP_ADDRESS>.1. Add a Group¶
SIMP systems are preconfigured with two groups:
administrators
(700): Group that has both sudosh and ssh privilegesusers
(100): Group that does not have sudosh or ssh privileges
To add another group:
- Login to the LDAP server as
root
. - Edit the
/root/ldifs/add_group.ldif
shown below.
dn: cn=<groupname>,ou=Group,dc=your,dc=domain
objectClass: posixGroup
objectClass: top
cn: <groupname>
gidNumber: <Unique GID number>
description: "<Some useful group description>"
- Type the following, substituting your DN information for
dc=your,dc=domain
:
$ ldapadd -Z -x -W -D "cn=LDAPAdmin,ou=People,dc=your,dc=domain" \
-f /root/ldifs/add_group.ldif
<IP_ADDRESS>.2. Remove a Group¶
To remove a group:
- Login to the LDAP server as
root
. - Edit the
/root/ldifs/del_group.ldif
shown below.
dn: cn=<Group Name>,ou=Group,dc=your,dc=domain
changetype: delete
- Type the following, substituting your DN information for
dc=your,dc=domain
:
$ ldapmodify -Z -x -W -D "cn=LDAPAdmin,ou=People,dc=your,dc=domain" \
-f /root/ldifs/del_group.ldif
<IP_ADDRESS>.3. Add Users to a Group¶
To add users to a group:
- Login to the LDAP server as
root
. - Edit the
/root/ldifs/add_to_group.ldif
shown below.
dn: cn=<Group Name>,ou=Group,dc=your,dc=domain
changetype: modify
add: memberUid
memberUid: <UID1>
memberUid: <UID2>
...
memberUid: <UIDX>
- Type the following, substituting your DN information for
dc=your,dc=domain
:
$ ldapmodify -Z -x -W -D "cn=LDAPAdmin,ou=People,dc=your,dc=domain" \
-f /root/ldifs/add_to_group.ldif
<IP_ADDRESS>.4. Remove Users from a Group¶
To remove users from a group:
- Login to the LDAP server as
root
. - Edit the
/root/ldifs/del_to_group.ldif
shown below.
dn: cn=<Group Name>,ou=Group,dc=your,dc=domain
changetype: modify
delete: memberUid
memberUid: <UID1>
memberUid: <UID2>
...
memberUid: <UIDX>
- Type the following, substituting your DN information for
dc=your,dc=domain
:
$ ldapmodify -Z -x -W -D "cn=LDAPAdmin,ou=People,dc=your,dc=domain" \
-f /root/ldifs/del_from_group.ldif
<IP_ADDRESS>.5. Update a User’s SSH Public Key¶
To update an SSH public key:
- Login to the LDAP server as
root
. - Edit the
/root/ldifs/mod_sshkey.ldif
shown below.
dn: uid=<User UID>,ou=People,dc=your,dc=domain
changetype: modify
replace: sshPublicKey
sshPublicKey: <User OpenSSH Public Key>
- Type the following, substituting your DN information for
dc=your,dc=domain
:
ldapmodify -Z -x -W -D "cn=LDAPAdmin,ou=People,dc=your,dc=domain" \
-f /root/ldif/mod_sshkey.ldif
<IP_ADDRESS>.6. Force a Password Reset¶
To force a password reset for a user:
- Login to the LDAP server as
root
. - Edit the
/root/ldifs/force_password_reset.ldif
shown below.
dn: uid=<username>,ou=People,dc=your,dc=domain
changetype: modify
replace: pwdReset
pwdReset: TRUE
-
replace: shadowLastChange
shadowLastChange: 10101
- Type the following, substituting your DN information for
dc=your,dc=domain
:
$ ldapmodify -Z -x -W -D "cn=LDAPAdmin,ou=People,dc=your,dc=domain" \
-f /root/ldifs/force_password_reset.ldif
Note
The ldapmodify
command is only effective when using the ppolicy
overlay. In addition, the user’s shadowLastChange must be changed to a
value prior to the expiration date to force a PAM reset.
<IP_ADDRESS>.7. Lock an LDAP Account¶
To lock an LDAP account:
- Login to the LDAP server as
root
. - Edit the
/root/ldifs/lock_user.ldif
shown below.
dn: uid=<username>,ou=People,dc=your,dc=domain
changetype: modify
replace: pwdAccountLockedTime
pwdAccountLockedTime:<PHONE_NUMBER>00Z
-
delete: sshPublicKey
-
replace: userPassword
userPassword: !!
- Type the following, substituting your DN information for
dc=your,dc=domain
:
$ ldapmodify -Z -x -W -D "cn=LDAPAdmin,ou=People,dc=your,dc=domain" \
-f /root/ldifs/lock_user.ldif
Note
The ldapmodify
command is only effective when using the
ppolicy overlay.
<IP_ADDRESS>.8. Unlock an LDAP Account¶
To unlock an LDAP account:
- Login to the LDAP server as
root
. - Edit the
/root/ldifs/unlock_account.ldif
shown below.
dn: uid=<User UID>,ou=People,dc=your,dc=domain
changetype: modify
delete: pwdAccountLockedTime
- Type the following, substituting your DN information for
dc=your,dc=domain
:
$ ldapmodify -Z -x -W -D "cn=LDAPAdmin,ou=People,dc=your,dc=domain" \
-f /root/ldifs/unlock_account.ldif
Note
The ldapmodify
command is only effective when using the
ppolicy overlay.
<IP_ADDRESS>. Troubleshooting Issues¶
If a user’s password is changed in LDAP or the user changes it shortly after
its initial setup, the “Password too young to change” error may appear. In this
situation, apply the pwdReset:TRUE
option to the user’s account as
described in Add a User with a Password.


, even though you have some , based on your answers start learning as much as you can in all languages!
, even though you have some , based on your answers it seeems HTML would be the right path to start with!
, even though you have some , based on your answers it seeems JavaScript would be the right path for you!
, even though you have some , based on your answers it seeems Python would be the right path for you!
, even though you have some , based on your answers it seeems Ruby would be the right path for you!
, even though you have some , based on your answers it seeems retirement would be the right path for you!


This page is poorly designed. It is supposed to confuse you and frustrate you. The distracting colors, multiple text boxes, poor image spacing, and unlock form hidden at the bottom of the screen are all elements of bad desgin. The page was laid out all over the screen which is also a poor design choice as it makes the page harder for the user to navigate easily.
This page had a lot going on. It was designed to draw your attention to many different locations using a crazy color pallete. When designing a webpage, it is important to pick colors that blend nicely together. Whitespace is also seen on this page (using colorful textboxes with few words). The goal of those bright boxes was to catch the user's attention and reveal the information to input in the form.
Human food is good!
I bet we can figure out Moose's favorite human food soon.
Human food is really yummy. We see popcorn and watermelon. We also see canned dog food. Canned dog food is not as yummy as popcorn or watermelon.
I wonder what Moose likes. I do not think it is the canned dog food.

I wish I could tell you which fod Mooose was in the mood for right noow!
Well let's think about all the foods there are!
I know there are so many human foods.
Enter the data!
Then click the Unlock Food button.


<canvas> is an HTML5 element used to draw graphics, on the fly, via scripting (usually JavaScript).
Source: http://www.w3schools.com/html/html5_canvas.asp
The <canvas> element has no drawing abilities of its own (it is only a container for graphics) - you must use a script to actually draw the graphics.
It can, for instance, be used to draw graphs, make photo compositions or do simple (and not so simple) animations.
<canvas> element has only two attributes - width and height.
These are both optional and can also be set using DOM properties. When no width and height attributes are specified, the canvas will initially be 300 pixels wide and 150 pixels high.
The element can be sized arbitrarily by CSS, but during rendering the image is scaled to fit its layout size.
Closing </canvas> is required by HTML5 standards.
Canvas can be styled by CSS, but the graphics inside the canvas will not be affected. Without any javascript, canvas is a transparent element.
Fallback content can be specified between opening <canvas> and closing </canvas>.
In order to draw graphics on the canvas, we need to use javascript getContext() method. This returns an object that provides methods and properties for drawing on the canvas.
getContext() method takes one parameter, the type of context. There can be "2d" or "webgl" contexts. This presentation focuses on the "2d" context.
ctx now has access to all the drawing methods.
The fallback content is displayed in browsers which do not support <canvas>. Scripts can also check for support programatically by simply testing for the presence of the getContext() method.
Canvas was first introduced by Apple for the Mac OS X Dashboard and later implemented in Safari and Google Chrome.
| Supported browsers | Unsupported browsers |
|---|---|
| Internet Explorer 9 | Internet Explorer 8 and earlier |
| Firefox | |
| Opera | |
| Chrome | |
| Safari | |
| Gecko 1.8-based browsers, such as Firefox 1.5 |
1 unit in the grid corresponds to 1 pixel on the canvas.
The top left corner corresponds to coordinate (0,0)). All elements are placed relative to this origin.
<canvas> only supports one primitive shape: rectangles. All other shapes must be created by combining one or more paths. We can use several path drawing functions which make it possible to compose very complex shapes. We can have linear paths, arcs and bezier curve paths.
There are three functions that draw rectangles on the canvas:
| fillRect(x, y, width, height) | Draws a filled rectangle. |
| strokeRect(x, y, width, height) | Draws a rectangular outline. |
| clearRect(x, y, width, height) | Clears the specified rectangular area, making it fully transparent. |
|
Each of these three functions takes the same parameters. All 3 functions draw a rectangle immediately on the canvas. |
The fillRect() function draws a large black square 100 pixels on each side. The clearRect() function then erases a 60x60 pixel square from the center, and then strokeRect() is called to create a rectangular outline 50x50 pixels within the cleared square.
To draw arcs or circles, we use the arc() method.
| arc(x, y, radius, startAngle, endAngle, anticlockwise) | Draws an arc. |
x and y are the coordinates of the center of the circle on which the arc should be drawn. Angles in the arcfunction are measured in radians, not degrees. To convert degrees to radians you can use the following JavaScript expression: radians = (Math.PI/180)*degrees. |
The first circle uses stroke(). The second one uses fill().
We can draw simple linear lines, bezier curves and other complex forms using path functions.
Before we start, there are a few methods used in drawing and manipulating lines, as well as rectangles and arcs. These methods allow drawing multiple lines and shapes in the same canvas, resulting in complex images.
First thing when we start drawing shapes, we have to call the beginPath().
Internally, paths are stored as a list of sub-paths (lines, arcs, etc) which together form a shape.
Every time this method is called, the list is reset and we can start drawing new shapes.
function draw() {
var canvas = document.getElementById('canvas');
if (canvas.getContext){
var ctx = canvas.getContext('2d');
ctx.beginPath();
// draw shapes methods
}
}
closePath() is optional and tries to close the shape by drawing a straight line from the current point to the start. If the shape has already been closed or there's only one point in the list, this function does nothing.
Alternatively we can use fill(). This function automatically closes the path and also fills in the shape with color or patterns. When you call fill(), any open shapes are closed automatically, so you don't have to call closePath().
function draw() {
var canvas = document.getElementById('canvas');
if (canvas.getContext){
var ctx = canvas.getContext('2d');
ctx.beginPath();
// draw shapes methods
ctx.closePath();
}
}
What if we don't want a solid shape?
We can use stroke() to draw an empty shape.
stroke() draws the shape by stroking its outline.
function draw() {
var canvas = document.getElementById('canvas');
if (canvas.getContext){
var ctx = canvas.getContext('2d');
ctx.beginPath();
ctx.arc(75,75,50,0,Math.PI*2,true); // Draw a circle
ctx.stroke();
}
}
If we don't use fill() nor stroke(), the path or shape will be completely transparent.
Once we've drawn a line or shape and we want to add another one to the same canvas, we have to use moveTo() to set a different starting point. If we don't use moveTo, the new line or shape will be considered part of the initial shape.
moveTo(x, y)
Moves the starting point for a path to the coordinates specified by x and y.
function draw() {
var canvas = document.getElementById('canvas');
if (canvas.getContext){
var ctx = canvas.getContext('2d');
ctx.beginPath();
ctx.arc(75,75,50,0,Math.PI*2,true); // Draw a circle
ctx.moveTo(110,75);
ctx.arc(75,75,35,0,Math.PI,false); // Draw 2nd circle
ctx.moveTo(65,65);
ctx.arc(60,65,5,0,Math.PI*2,true); // Draw 3rd circle
ctx.moveTo(95,65);
ctx.arc(90,65,5,0,Math.PI*2,true); // Draw 4th circle
ctx.stroke();
}
}
| quadraticCurveTo(cp1x, cp1y, x, y) | Draws a quadratic Bézier curve from the current position to the end point specified by x and y, using the control point specified by cp1x and cp1y. |
| bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y) | Draws a cubic Bézier curve from the current position to the end point specified by x and y, using the control points specified by (cp1x, cp1y) and (cp2x, cp2y). |
The difference between a quadratic Bézier curve and a cubic Bézier curve is that the quadratic curve has just one control point while a cubic Bézier curve uses two control points. The x and y parameters in both of these methods are the coordinates of the end point. |
Quadratic curve | Cubic curve
function draw() {
var canvas = document.getElementById('canvas');
if (canvas.getContext){
var ctx = canvas.getContext('2d');
// Quadratric curves example
ctx.beginPath();
ctx.moveTo(75,40);
ctx.bezierCurveTo(75,37,70,25,50,25);
ctx.bezierCurveTo(20,25,20,62.5,20,62.5);
ctx.bezierCurveTo(20,80,40,102,75,120);
ctx.bezierCurveTo(110,102,130,80,130,62.5);
ctx.bezierCurveTo(130,62.5,130,25,100,25);
ctx.bezierCurveTo(85,25,75,37,75,40);
ctx.fill();
}
}
| fillStyle = color | Sets the style used when filling shapes. |
| strokeStyle = color | Sets the style for shapes' outlines. |
Possible color values: "orange", "#FFA500", "rgb(255,165,0)", "rgba(255,165,0,1)" |
function drawRedHeart() {
var canvas = document.getElementById('red-heart');
if (canvas.getContext){
var ctx = canvas.getContext('2d');
ctx.beginPath();
ctx.moveTo(75,40);
ctx.bezierCurveTo(75,37,70,25,50,25);
ctx.bezierCurveTo(20,25,20,62.5,20,62.5);
ctx.bezierCurveTo(20,80,40,102,75,120);
ctx.bezierCurveTo(110,102,130,80,130,62.5);
ctx.bezierCurveTo(130,62.5,130,25,100,25);
ctx.bezierCurveTo(85,25,75,37,75,40);
ctx.fillStyle = "red";
ctx.strokeStyle = "#000000";
ctx.fill();
ctx.stroke();
}
}
function drawRedHeart() {
var canvas = document.getElementById('red-heart');
if (canvas.getContext){
var ctx = canvas.getContext('2d');
ctx.fillStyle = "blue";
ctx.fillRect(50,50,100,50);
ctx.beginPath();
ctx.moveTo(75,40);
ctx.bezierCurveTo(75,37,70,25,50,25);
ctx.bezierCurveTo(20,25,20,62.5,20,62.5);
ctx.bezierCurveTo(20,80,40,102,75,120);
ctx.bezierCurveTo(110,102,130,80,130,62.5);
ctx.bezierCurveTo(130,62.5,130,25,100,25);
ctx.bezierCurveTo(85,25,75,37,75,40);
ctx.fillStyle = "rgba(255, 0, 0, 0.5)";
ctx.strokeStyle = "#000000";
ctx.fill();
ctx.stroke();
}
}
| lineWidth = value | Sets the widths of lines drawn in the future. |
| lineCap = type | Sets the appearance of the ends of lines. It can be butt, round, square. |
| lineJoin = type | Sets the apperance of the "corners" where lines meet. It can be round, bevel, miter. |
| miterLimit = value | Establishes a limit on the miter when two lines join at a sharp angle, to let you control how thick the junction becomes. |
| createLinearGradient(x1, y1, x2, y2) | Creates a linear gradient object with a starting point of (x1, y1) and an end point of (x2, y2). |
| createRadialGradient(x1, y1, r1, x2, y2, r2) | Creates a radial gradient. The parameters represent two circles, one with its center at (x1, y1) and a radius of r1, and the other with its center at (x2, y2) with a radius of r2. |
| gradient.addColorStop(position, color) | Creates a new color stop on the gradient object. The position is a number between 0.0 and 1.0. You can add as many color stops as you want. |
function drawGradientHeart() {
var canvas = document.getElementById('canvas');
if (canvas.getContext){
var ctx = canvas.getContext('2d');
var lineargradient = ctx.createLinearGradient(0,0,150,150);
lineargradient.addColorStop(0,'white');
lineargradient.addColorStop(1,'black');
ctx.beginPath();
ctx.moveTo(75,40);
ctx.bezierCurveTo(75,37,70,25,50,25);
ctx.bezierCurveTo(20,25,20,62.5,20,62.5);
ctx.bezierCurveTo(20,80,40,102,75,120);
ctx.bezierCurveTo(110,102,130,80,130,62.5);
ctx.bezierCurveTo(130,62.5,130,25,100,25);
ctx.bezierCurveTo(85,25,75,37,75,40);
ctx.fillStyle = lineargradient;
ctx.fillStroke = "red";
ctx.fill();
ctx.stroke();
}
}
We can use images from scratch using new Image() method or we can use images that already exist on the page by using document.getElementById()
var img = new Image(); // Create new img element
img.src = 'myImage.png'; // Set source path
When this script gets executed, the image starts loading.
Once the image loads, we can use drawImage() to render it on the canvas. Make sure the image loads before calling the method.
The image can also be scaled by using drawImage(image, x, y, width, height)
the image can be sliced by using drawImage(image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight)
createPattern(image, "repeat")
function draw() {
var ctx = document.getElementById('canvas').getContext('2d');
// create new image object to use as pattern
var img = new Image();
img.src = 'img/pattern.png';
img.onload = function(){
// create pattern
var patern = ctx.createPattern(img,'repeat');
ctx.fillStyle = patern;
ctx.fillRect(0,0,150,150);
}
}
Canvas text support is actually pretty good - you can control font, size, color, horizontal alignment, vertical alignment, and you can also get text metrics to get the text width in pixels. In addition, you can also use canvas transforms to rotate, stretch and even invert text. The text can use colors or patterns.
Canvas can take advantage of fonts defined in a CSS file using @font-face, and can fall back to multiple different fonts if the defined font is not available. It's important to know that Canvas text does not use CSS for styles.
function drawText() {
var canvas = document.getElementById('canvas-text');
if (canvas.getContext){
var ctx = canvas.getContext('2d');
ctx.font = "50px SapientSansLightItalic";
ctx.fillStyle = "#FF0000";
ctx.fillText ("Sapient Nitro", 50, 80);
}
}
function drawText() {
var canvas = document.getElementById('canvas-text');
if (canvas.getContext){
var ctx = canvas.getContext('2d');
ctx.shadowOffsetX = 2;
ctx.shadowOffsetY = 2;
ctx.shadowBlur = 2;
ctx.shadowColor = "rgba(0, 0, 0, 0.5)";
ctx.font = "50px SapientSansLightItalic";
ctx.fillStyle = "#FF0000";
ctx.fillText ("Sapient Nitro", 50, 80);
}
}
measureText() method will return some properties about that text, based on the current context settings (font face, size, and so on) in the form of a TextMetrics object.
The TextMetrics object has only a single property: width. The width property of a TextMetrics object gives you the exact width in pixels of the text when rendered on the canvas. This can be very useful when attempting to center text.