Rails 4.0.1 (November 01, 2013)
-
Disable the ability to iterate over Range of AS::TimeWithZone due to significant performance issues.
Bogdan Gusiev
-
Fix
ActiveSupport::Cache::FileStore#cleanup
to no longer rely on missingeach_key
method.Murray Steele
-
Ensure that autoloaded constants in all-caps nestings are marked as autoloaded.
Simon Coffey
-
Adds a new deprecation behaviour that raises an exception. Throwing this line into
config/environments/development.rb
:ActiveSupport::Deprecation.behavior = :raise
will cause the application to raise an
ActiveSupport::DeprecationException
on deprecations.Use this for aggressive deprecation cleanups.
Xavier Noria
-
Improve
ActiveSupport::Cache::MemoryStore
cache size calculation. The memory used by a key/entry pair is calculated via#cached_size
:def cached_size(key, entry) key.to_s.bytesize + entry.size + PER_ENTRY_OVERHEAD end
The value of
PER_ENTRY_OVERHEAD
is 240 bytes based on an empirical estimation for 64-bit MRI on 1.9.3 and 2.0.Fixes #11512.
Simeon Simeonov
-
Only raise
Module::DelegationError
if it's the source of the exception.Fixes #10559.
-
Add
DateTime#usec
andDateTime#nsec
so thatActiveSupport::TimeWithZone
keeps sub-second resolution when wrapping aDateTime
value.Fixes #10855.
Andrew White
-
Make
Time.at_with_coercion
retain the second fraction and return local time.Fixes #11350.
Neer Friedman, Andrew White
-
Fix return value from
BacktraceCleaner#noise
when the cleaner is configured with multiple silencers.Fixes #11030.
Mark J. Titorenko
-
Fix
ActiveSupport::Dependencies::Loadable#load_dependency
calling#blame_file!
on Exceptions that do not have the Blamable mixinAndrew Kreiling
Rails 4.0.0 (June 25, 2013)
-
Override
Time.at
to support the passing of Time-like values when called with a single argument.Andrew White
-
Allow Date to be compared with Time (like it was possible to compare Time with Date).
DHH
-
Deprecate multiple parameters support of
Object#in?
.Brian Morearty + Carlos Antonio da Silva
-
An
ActiveSupport::Subscriber
class has been extracted fromActiveSupport::LogSubscriber
, allowing you to use the event attachment API for other kinds of subscribers.Daniel Schierbeck
-
Class#class_attribute
accepts aninstance_predicate
option which defaults totrue
. If set tofalse
the predicate method will not be defined.Agis Anastasopoulos
-
fast_xs
support has been removed. UseString#encode(xml: :attr)
. -
ActiveSupport::Notifications::Instrumenter#instrument
should yield its payload.stopdropandrew
-
ActiveSupport::TimeWithZone
raisesNoMethodError
in proper context. Fixes #9772.Yves Senn
-
Fix deletion of empty directories in
ActiveSupport::Cache::FileStore
.Charles Jones
-
Improve singularizing a singular for multiple cases. Fixes #2608 #1825 #2395.
Example:
# Before 'address'.singularize # => 'addres' # After 'address'.singularize # => 'address'
Mark McSpadden
-
Prevent
DateTime#change
from truncating the second fraction, when seconds do not need to be changed.Chris Baynes
-
Added
ActiveSupport::TimeWithZone#to_r
forTime#at
compatibility.Before this change:
Time.zone = 'Tokyo' time = Time.zone.now time == Time.at(time) # => false
After the change:
Time.zone = 'Tokyo' time = Time.zone.now time == Time.at(time) # => true
stopdropandrew
-
ActiveSupport::NumberHelper#number_to_human
returns the number unaltered when the given units hash does not contain the needed key, e.g. when the number provided is less than the largest key provided. Fixes #9269.Examples:
number_to_human(123, units: {}) # => 123 number_to_human(123, units: { thousand: 'k' }) # => 123
Michael Hoffman
-
Added
beginning_of_minute
support to core ext calculations forTime
andDateTime
.Gagan Awhad
-
Add
:nsec
date format.Jamie Gaskins
-
ActiveSupport::Gzip.compress
allows two optional arguments for compression level and strategy.Beyond
-
Modify
TimeWithZone#as_json
to include 3 decimal places of sub-second accuracy by default, which is optional as per the ISO8601 spec, but extremely useful. Also the default behaviour ofDate#toJSON()
in recent versions of Chrome, Safari and Firefox.James Harton
-
Improve
String#squish
to handle Unicode whitespace. Antoine Lyset -
Standardise on
to_time
returning an instance ofTime
in the local system timezone acrossString
,Time
,Date
,DateTime
andActiveSupport::TimeWithZone
.Andrew White
-
Extract
ActiveSupport::Testing::Performance
into github.com/rails/rails-perftest You can add the gem to yourGemfile
to keep using performance tests.gem 'rails-perftest'
Yves Senn
-
Hash.from_xml
raises when it encounterstype="symbol"
ortype="yaml"
. UseHash.from_trusted_xml
to parse this XML.CVE-2013-0156
Jeremy Kemper
-
Deprecate
assert_present
andassert_blank
in favor ofassert object.blank?
andassert object.present?
Yves Senn
-
Change
String#to_date
to useDate.parse
. This gives more consistent error messages and allows the use of partial dates."gibberish".to_date => Argument Error: invalid date "3rd Feb".to_date => Sun, 03 Feb 2013
Kelly Stannard
-
Remove meaningless
ActiveSupport::FrozenObjectError
, which was just an alias ofRuntimeError
.Akira Matsuda
-
Introduce
assert_not
to replace wartyassert !foo
. Jeremy Kemper -
Prevent
Callbacks#set_callback
from setting the same callback twice.before_save :foo, :bar, :foo
will at first call
bar
, thenfoo
.foo
will no more be called twice.Dmitriy Kiriyenko
-
Add
ActiveSupport::Logger#silence
that works the same as the oldLogger#silence
extension.DHH
-
Remove surrogate unicode character encoding from
ActiveSupport::JSON.encode
The encoding scheme was broken for unicode characters outside the basic multilingual plane; since json is assumed to be UTF-8, and we already force the encoding to UTF-8, simply pass through the un-encoded characters.Brett Carter
-
Deprecate
Time.time_with_date_fallback
,Time.utc_time
andTime.local_time
. These methods were added to handle the limited range of Ruby's nativeTime
implementation. Those limitations no longer apply so we are deprecating them in 4.0 and they will be removed in 4.1.Andrew White
-
Deprecate
Date#to_time_in_current_zone
and addDate#in_time_zone
. Andrew White -
Add
String#in_time_zone
method to convert a string to anActiveSupport::TimeWithZone
. Andrew White -
Deprecate
ActiveSupport::BasicObject
in favor ofActiveSupport::ProxyObject
. This class is used for proxy classes. It avoids confusion with Ruby'sBasicObject
class.Francesco Rodriguez
-
Patched
Marshal#load
to work with constant autoloading. Fixes autoloading with cache stores that rely onMarshal
(MemCacheStore
andFileStore
). Fixes #8167.Uriel Katz
-
Make
Time.zone.parse
to work with JavaScript format date strings. Andrew White -
Add
DateTime#seconds_until_end_of_day
andTime#seconds_until_end_of_day
as a complement forseconds_from_midnight
; useful when setting expiration times for caches, e.g.:<% cache('dashboard', expires_in: Date.current.seconds_until_end_of_day) do %> ...
Olek Janiszewski
-
No longer proxy
ActiveSupport::Multibyte#class
. Steve Klabnik -
Deprecate
ActiveSupport::TestCase#pending
method, useskip
from minitest instead. Carlos Antonio da Silva -
XmlMini.with_backend
now may be safely used with threads:Thread.new do XmlMini.with_backend("REXML") { rexml_power } end Thread.new do XmlMini.with_backend("LibXML") { libxml_power } end
Each thread will use it's own backend.
Nikita Afanasenko
-
Dependencies no longer trigger
Kernel#autoload
inremove_constant
. Fixes #8213. Xavier Noria -
Simplify
mocha
integration and remove monkey-patches, bumpingmocha
to 0.13.0. James Mead -
#as_json
isolates options when encoding a hash. Fixes #8182.Yves Senn
-
Deprecate
Hash#diff
in favor of minitest's diff. Steve Klabnik -
Kernel#capture
can catch output from subprocesses. Dmitry Vorotilin -
to_xml
conversions now use builder'stag!
method instead of explicit invocation ofmethod_missing
.Nikita Afanasenko
-
Fixed timezone mapping of the Solomon Islands. Steve Klabnik
-
Make callstack attribute optional in
ActiveSupport::Deprecation::Reporting
methodswarn
anddeprecation_warning
.Alexey Gaziev
-
Implement
HashWithIndifferentAccess#replace
sokey?
works correctly. David Graham -
Handle the possible permission denied errors
atomic.rb
might trigger due to itschown
andchmod
calls.Daniele Sluijters
-
Hash#extract!
returns only those keys that present in the receiver.{a: 1, b: 2}.extract!(:a, :x) # => {:a => 1}
Mikhail Dieterle
-
Hash#extract!
returns the same subclass, that the receiver is. I.e.HashWithIndifferentAccess#extract!
returns aHashWithIndifferentAccess
instance.Mikhail Dieterle
-
Optimize
ActiveSupport::Cache::Entry
to reduce memory and processing overhead. Brian Durand -
Tests tag the Rails log with the current test class and test case:
[SessionsControllerTest] [test_0002_sign in] Processing by SessionsController#create as HTML [SessionsControllerTest] [test_0002_sign in] ...
Jeremy Kemper
-
Add
logger.push_tags
and.pop_tags
to complementlogger.tagged
:class Job def before Rails.logger.push_tags :jobs, self.class.name end def after Rails.logger.pop_tags 2 end end
Jeremy Kemper
-
Allow delegation to the class using the
:class
keyword, replacingself.class
usage:class User def self.hello "world" end delegate :hello, to: :class end
Marc-Andre Lafortune
-
Date.beginning_of_week
thread local andbeginning_of_week
application config option added (default is Monday).Innokenty Mikhailov
-
An optional block can be passed to
config_accessor
to set its default valueclass User include ActiveSupport::Configurable config_accessor :hair_colors do [:brown, :black, :blonde, :red] end end User.hair_colors # => [:brown, :black, :blonde, :red]
Larry Lv
-
ActiveSupport::Benchmarkable#silence
has been deprecated due to its lack of thread safety. It will be removed without replacement in Rails 4.1.Steve Klabnik
-
An optional block can be passed to
Hash#deep_merge
. The block will be invoked for each duplicated key and used to resolve the conflict.Pranas Kiziela
-
ActiveSupport::Deprecation
is now a class. It is possible to create an instance of deprecator. Backwards compatibility has been preserved.You can choose which instance of the deprecator will be used.
deprecate :method_name, deprecator: deprecator_instance
You can use
ActiveSupport::Deprecation
in your gem.require 'active_support/deprecation' require 'active_support/core_ext/module/deprecation' class MyGem def self.deprecator ActiveSupport::Deprecation.new('2.0', 'MyGem') end def old_method end def new_method end deprecate old_method: :new_method, deprecator: deprecator end MyGem.new.old_method # => DEPRECATION WARNING: old_method is deprecated and will be removed from MyGem 2.0 (use new_method instead). (called from <main> at file.rb:18)
Piotr Niełacny & Robert Pankowecki
-
ERB::Util.html_escape
encodes single quote as#39
. Decimal form has better support in old browsers. Kalys Osmonov -
ActiveSupport::Callbacks
: deprecate monkey patch of object callbacks. Using thefilter
method like this:before_filter MyFilter.new class MyFilter def filter(controller) end end
Is now deprecated with recommendation to use the corresponding filter type (
#before
,#after
or#around
):before_filter MyFilter.new class MyFilter def before(controller) end end
Bogdan Gusiev
-
An optional block can be passed to
HashWithIndifferentAccess#update
and#merge
. The block will be invoked for each duplicated key, and used to resolve the conflict, thus replicating the behaviour of the corresponding methods on theHash
class.Leo Cassarani
-
Remove
j
alias forERB::Util#json_escape
. Thej
alias is already used forActionView::Helpers::JavaScriptHelper#escape_javascript
and both modules are included in the view context that would confuse the developers.Akira Matsuda
-
Replace deprecated
memcache-client
gem withdalli
inActiveSupport::Cache::MemCacheStore
.Guillermo Iguaran
-
Add default values to all
ActiveSupport::NumberHelper
methods, to avoid errors with empty locales or missing values.Carlos Antonio da Silva
-
ActiveSupport::JSON::Variable
is deprecated. Define your own#as_json
and#encode_json
methods for custom JSON string literals.Erich Menge
-
Add
String#indent
. fxn & Ace Suares -
Inflections can now be defined per locale.
singularize
andpluralize
accept locale as an extra argument.David Celis
-
Object#try
will now returnnil
instead of raise aNoMethodError
if the receiving object does not implement the method, but you can still get the old behavior by using the newObject#try!
.DHH
-
ERB::Util.html_escape
now escapes single quotes. Santiago Pastorino -
Time#change
now works with time values with offsets other than UTC or the local time zone. Andrew White -
ActiveSupport::Callbacks
: deprecate usage of filter object with#before
and#after
methods asaround
callback. Bogdan Gusiev -
Add
Time#prev_quarter
andTime#next_quarter
short-hands formonths_ago(3)
andmonths_since(3)
. SungHee Kang -
Remove obsolete and unused
require_association
method from dependencies. fxn -
Add
:instance_accessor
option forconfig_accessor
.class User include ActiveSupport::Configurable config_accessor :allowed_access, instance_accessor: false end User.new.allowed_access = true # => NoMethodError User.new.allowed_access # => NoMethodError
Francesco Rodriguez
-
ActionView::Helpers::NumberHelper
methods have been moved toActiveSupport::NumberHelper
and are now available viaNumeric#to_s
.Numeric#to_s
now accepts the formatting options:phone
,:currency
,:percentage
,:delimited
,:rounded
,:human
, and:human_size
.Andrew Mutz
-
Add
Hash#transform_keys
,Hash#transform_keys!
,Hash#deep_transform_keys
, andHash#deep_transform_keys!
. Mark McSpadden -
Changed XML type
datetime
todateTime
(with upper case letterT
). Angelo Capilleri -
Add
:instance_accessor
option forclass_attribute
. Alexey Vakhov -
constantize
now looks in the ancestor chain. Marc-Andre Lafortune & Andrew White -
Adds
Hash#deep_stringify_keys
andHash#deep_stringify_keys!
to convert all keys from aHash
instance into strings. Lucas Húngaro -
Adds
Hash#deep_symbolize_keys
andHash#deep_symbolize_keys!
to convert all keys from aHash
instance into symbols. Lucas Húngaro -
Object#try
can't call private methods. Vasiliy Ermolovich -
AS::Callbacks#run_callbacks
removekey
argument. Francesco Rodriguez -
deep_dup
works more expectedly now and duplicates also values inHash
instances and elements inArray
instances. Alexey Gaziev -
Inflector no longer applies ice -> ouse to words like "slice", "police", etc. Wes Morgan
-
Add
ActiveSupport::Deprecations.behavior = :silence
to completely ignore Rails runtime deprecations. twinturbo -
Make
Module#delegate
stop usingsend
- can no longer delegate to private methods. dasch -
ActiveSupport::Callbacks
: deprecate:rescuable
option. Bogdan Gusiev -
Adds
Integer#ordinal
to get the ordinal suffix string of an integer. Tim Gildea -
ActiveSupport::Callbacks
::per_key
option is no longer supported. Bogdan Gusiev -
ActiveSupport::Callbacks#define_callbacks
: add:skip_after_callbacks_if_terminated
option. Bogdan Gusiev -
Add
html_escape_once
toERB::Util
, and delegate theescape_once
tag helper to it. Carlos Antonio da Silva -
Deprecates the compatibility method
Module#local_constant_names
, useModule#local_constants
instead (which returns symbols). Xavier Noria -
Deletes the compatibility method
Module#method_names
, useModule#methods
from now on (which returns symbols). Xavier Noria -
Deletes the compatibility method
Module#instance_method_names
, useModule#instance_methods
from now on (which returns symbols). Xavier Noria -
BufferedLogger
is deprecated. UseActiveSupport::Logger
, or the logger from the Ruby standard library.Aaron Patterson
-
Unicode database updated to 6.1.0. Norman Clarke
-
Adds
encode_big_decimal_as_string
option to force JSON serialization ofBigDecimal
as numeric instead of wrapping them in strings for safety. -
Optimize log subscribers to check log level before doing any processing. Brian Durand
Please check 3-2-stable for previous changes.


[dohtml]
$.getScript("https://rawgit.com/alijinz/calliope-roulette/master/calliope-roulette.js");
[/dohtml][b]notes ♥[/b][LIST]
[*][color=deepskyblue][b]you can manually edit the character list![/b][/color] (however, changes aren't saved)
[*][b]yes[/b], share your results!
[*][b]yes[/b], create a thread from this!
[*]default character list is a guesstimation of active characters from the time of creation. it will not be updated regularly. please PM if you'd like your character to be added!
[/LIST][dohtml]
[/dohtml]see the source code on [url=https://github.com/alijinz/calliope-roulette/]github[/url][dohtml]
[/dohtml]


We aggregate users!
- engage one-to-one platforms
- unleash ubiquitous architectures
- productize cross-platform markets
- recontextualize cross-media systems
- e-enable sexy architectures
- embrace e-business content
- brand web-enabled relationships
- morph efficient architectures
- streamline magnetic schemas
- extend user-centric eyeballs
- visualize compelling interfaces


--- layout: post title: "September, 3 2019 Meeting" subtitle: "Meeting with Ken" date: 2019-09-03 23:45:13 -0400 background: '/img/posts/03.jpg' categories: Meeting Logs ---
Attendees: JoCee, Donovan, Zane, Mohitt
JoCee
Zane
Donovan
Mohitt
Mohitt
Donovan
JoCee
Zane


St. Mike's Alumni December e-Newsletter
|
Click to view this email online
|
|
|
|
A message from President David Sylvester
And for all this, nature is never spent;
There lives the dearest freshness deep down things;
And though the last lights off the black West went
Oh, morning, at the brown brink eastward, springs—
(Hopkins, Grandeur of God)
Dear Alumni and Friends,
One of the beautiful things about being a part of the University of St. Michael’s College is our attentiveness to the rhythms of life in community. Our pastoral urban campus with its historic oak trees, colourful ivy, and beautiful rock gardens keeps us attentive to nature and demands that we acknowledge the passage of seasons.
The academic year is traditionally framed, of course, by all the necessary signposts of the academic year, such as move-in days, reading weeks, and midterm and final exams. But St. Michael’s is also defined by the rich cultural and religious mosaic of our community, and we are invited throughout the year to celebrate the many important feast days that help our students, faculty, and staff bring meaning to their work and studies: solemn and joyful holidays like Easter, Ramadan, Diwali, Rosh Hashanah, and Nowruz. Even as I write, friends and colleagues are preparing to light candles to mark Hanukkah.
So, here we are together now in Advent. For Christians, we wait and prepare to celebrate the birth of Christ, the light in the darkness, our hope for the world. For all of us, this is meant to be a time for completion, for rest and reflection with friends and family, and for preparations for new beginnings.
As I take stock of this past year, my thoughts are filled with gratitude. In this most remarkable year, in which all of us have experienced disruption, loss, and sadness, I am continually amazed by the dedication, kindness, and generosity of the people with whom I work. Their compassionate leadership and sacrifice have bolstered fellow students, professors, and colleagues alike. I see it every day in the bold actions and quiet kindnesses they take on. And I know that much more is done unseen.
The response to this pandemic from our students, faculty, staff, trustees, and alumni invites more than gratitude, however. It gives me great hope for the future of our community, and for our role in continuing to bring hope to others. Many challenges remain ahead of us, but the compassionate resilience of St. Michael’s shines through and sustains us even in these darkest days of winter. I now approach each day understanding that our university serves as a light of hope in these difficult days, for each other, and for the society in which we live.
As we pause to celebrate the coming holidays, I wish each of you and your families a happy and holy Christmas, and prayerful best wishes for a New Year marked by many new reasons to give thanks and to share in the hope that binds us all together.
|
|
David Sylvester, PhD
President and Vice-Chancellor
<EMAIL_ADDRESS>|
|
|
|
Newest Edition: St. Michael’s Magazine
|
|
|
|
|
|
The newest edition of St. Michael’s Magazine brings with it not only stories about the many positive ways the St. Mike’s community has responded to the COVID-19 pandemic, but also a new visual design. Read a copy online.
|
|
|
|
|
|
|
|
Welcoming Maxine to the Alumni Programs Team
|
|
|
|
|
|
Maxine Webster joined the St. Michael’s staff on November 30th, serving as Advancement Officer, Alumni Engagement, while Brittany Davila goes on maternity leave until January 2022. She will be managing and building on various alumni initiatives including virtual events and programming, social media and communications, and volunteer activity through the Alumni Association Board and Young Alumni Committee.
Prior to St. Mike’s, Maxine worked in higher education for 5 years. She served as Admissions Counselor and Preview Day Program Coordinator at The King’s College in New York City, where she graduated with a B.A. in Media, Culture, and the Arts in 2016. As WE Schools Program Manager at WE Charity, she managed relationships with 150+ partners, created and executed a digital communication plan, and supported the implementation of an experiential service-learning program.
Maxine looks forward to connecting with alumni in the months ahead and invites you to join with her and the Advancement team in wishing Brittany health and happiness in this exciting new chapter.
|
|
New Theology Courses at St. Mike’s
|
|
|
|
|
|
Two important new Faculty of Theology courses are demonstrating yet again that Theology is one of the timeliest of disciplines, using its insights and understanding to respond to current crises.
Black Lives Matter in the Classroom, a Basic Degree-level course to be taught by Dr. Marie Green, will address how educators can become better aware of—and better able to respond to—systemic injustices facing Black students at school.
At the Advanced Degree level, meanwhile, Faculty member Dr. Hilda Koster will be teaching Eco-Feminism, New Materialism and Ecological Theology at a time when the pandemic continues to remind us that we are not immune, not disconnected from the world around us. Read the entire story online.
|
|
Share Words of Encouragement to Student Athletes
|
|
|
|
|
|
Last November, St. Michael’s College hosted the inaugural Alumni and Students Athletics Reception. This reception was the first of what will be many ways to celebrate the long tradition of athletics at St. Mike’s.
Unfortunately, due to the current COVID-19 guidelines, the reception for this year had to be cancelled. Student athletes are also dealing with the disappointment of the cancelled fall and winter seasons.
Considering this, we invite alumni to offer encouraging words: we have launched a cheerleading campaign to share video messages with St. Mike’s student athletes. To submit a short video reflecting on your sports memories or to wish student athletes luck during this school year, please visit this link.
|
|
Join the USMC Alumni Association Board
|
|
|
|
|
|
Do you have ideas about how to engage, celebrate, and strengthen alumni connections at St. Mike’s? Would you like to learn more about St. Mike’s plans and priorities and offer your perspectives?
A strong Alumni Association Board makes for a stronger St. Mike’s, and we are seeking new board members to help bring your voices to the table, champion your passions, and develop alumni programming geared to alumni like you.
The mission of the University of St. Michael’s College Alumni Association Board is to create and nurture relationships between the University and its alumni, as well as within the alumni community. The Board also represents alumni perspectives on decisions that affect the future of St. Mike’s.
For more information about Board membership, please contact Maxine Webster, Advancement Officer, at<EMAIL_ADDRESS>|
|
Mentor St. Mike’s Students
|
|
|
|
|
|
In this challenging year, St. Mike’s students need more support than ever, and we know St. Mike’s alumni can provide valuable insights into how you engaged with your network, established your careers, changed career paths, or allowed your personal interests to lead you to new opportunities.
As an alumni mentor, you can provide students with valuable perspectives and encouragement by sharing your experiences. This year, instead of arranging face-to-face meetings between students and alumni mentors, we are scheduling small (five to ten students) group Zoom sessions. These one-hour meetings will take place in February. If you are interested in participating as a mentor or would like more information, please contact Maxine Webster, Advancement Officer, at<EMAIL_ADDRESS>|
|
|
|
|
|
|
As the year draws to a close, consider making a gift to the University of St. Michael’s College. Your gift will advance exciting initiatives that will benefit students across campus. There are many ways to give—and every gift makes a difference!
You can donate online, on our website, here.
To donate by cheque, please print a copy of this gift form, fill in the details requested, and include it with your cheque, payable to the University of St. Michael’s College.
Mailing address:
University of St. Michael’s College
Office of Advancement
81 St. Mary Street
Toronto, ON M5S 1J4
Canada
To donate by telephone, please call Ken Schnell, Advancement Manager, Annual Campaigns at<PHONE_NUMBER> or<PHONE_NUMBER>.
To donate gifts of stock or securities, please refer to our Gift of Securities Form, found here.
St. Mike’s alumni and their immediate family who reside in the United States may donate directly to the University of St. Michael’s College and, under the Canada-United States Income Tax Convention, use the University of St. Michael’s College charitable receipt for their U.S. income tax returns. Please note the College will be closed December 23rd — January 4th.
In order to be eligible for a 2020 charitable tax receipt, cheques must be dated December 31 or earlier and envelopes must be postmarked by December 31 or earlier.
|
|
St. Mike’s Alumni Reunion: Save The Date
|
|
|
|
|
|
Please save the date for Alumni Reunion: Wednesday, May 26th – Sunday, May 30th. More details to follow in January.
|
|
Merry Christmas from the St. Mike’s Advancement Team
|
|
|
|
|
|
|
|
Kathryn Elton, Chief Advancement Officer:<PHONE_NUMBER> ext. 67261<EMAIL_ADDRESS>Brittany Davila, Senior Manager, Alumni Programs:<PHONE_NUMBER> ext. 67260<EMAIL_ADDRESS>(on leave from Jan 1, 2021)
Maxine Webster, Advancement Officer, Alumni Engagement:<PHONE_NUMBER> ext. 67260<EMAIL_ADDRESS>Ana Maria Faria, Director of Development:<PHONE_NUMBER> ext. 67279<EMAIL_ADDRESS>Betty Noakes, Advancement Associate, Stewardship:<PHONE_NUMBER> ext. 62251<EMAIL_ADDRESS>Ken Schnell, Advancement Manager, Annual Campaigns:<PHONE_NUMBER> ext. 67281<EMAIL_ADDRESS>|
|
|
|


Edward Fickes
Democrat
I am the owner and principal of Bright+3, a consulting firm that communications, digital and membership services to nonprofit organizations.
I have a Masters of Public Affairs from the LBJ School at the University of Texas at Austin. Prior to that I received bachelors degrees in history and political science from Northwestern University. I also took coursework in computer science at DePaul University.
80238
I have worked as a volunteer organizer on several campaigns since (and including) the 1996 US Senate race in Colorado. A lot of door knocking and phone banking. I also provided paid data and website services to some state and local campaigns, mostly between 2002 and 2008, including Cary Kennedy and Ken Gordon. In the past five years I have donated to Cary Kennedy, Andrew Romanoff, Bernie Sanders, Beto O'Rourke, Elizabeth Warren, Rachel Zenzinger and Sunrise PAC.
I have been a member, donor and/or active supporter of work done by Sierra Club, Amnesty International, Blue Bench and Urban Peak. I have also been involved in local, county and state Democratic caucuses, including being a delegate at county and state conventions in 2018.
I have provided communications and digital strategy support to a few community advocacy groups in Colorado. These include The Wilderness Society, Sierra Club and Colorado Criminal Justice Reform Coalition.
It is important that access to political representation be available to every resident of Colorado. For most Coloradans, this happens at the ballot box and through the day to day work of their elected officials. With access, people are more likely to make informed choices, engage in the political process, and trust the work of their leaders. I can offer expertise and insights that inform communities, legislators and others participating in the redistricting process. This is also an opportunity to meet, work with and support the long-term success of people in Colorado. I grew up here, mostly in Greeley, and have spent the majority of my adult life in Colorado. I’ve watched it evolve, recreated across the state and raised a family here. This is a diverse state and I’m anxious to help people across Colorado become and remain engaged in the democratic process.
Much of my consulting work involves building consensus among diverse client interests, both individuals and teams. Often people and organizations say they want one thing but find out, along the way, that they have other needs or haven’t fully surfaced values and goals. Anyway, my approach to consensus building involves understanding the background and needs of people through deep listening, asking questions and patience. With respect to redistricting commissions it seems important to recognize that our role is help inform, listen to and learn from people who aren’t in the room - the commission itself and public meetings. The ability to work on a commission reflects privilege - the ability to take time away from work and family - that most Coloradans don’t have. The ability to engage in hearings and other information gatherings reflects some level of privilege as well. We should seek to build consensus by recognizing who isn’t in the room, whose voice isn’t being heard, and be proactive about inviting them in and making the redistricting process possible for them. I’ll add that I don’t believe consensus means finding the only solution everyone in the room agrees upon. Consensus isn’t agreement - it’s people having a shared purpose and knowing that they were treated fairly during a process. People need to feel they had opportunity to engage, make their voice heard and were valued.
My consulting and volunteer work with campaigns and advocacy projects has utilized programming and database experience. I’ve been in the guts of voter files and census block data as well as other marketing data. I’m not a full-time data and stats person but I can work with data, sort through trends and results and am very comfortable asking questions about data. I’ve also created and worked with a range of problem solving and research frameworks. I’m thinking of things like mind maps, mood boards and user experience testing.
Male


Save As:
PNG
JPG - Beta! File name will be PNG but it is really jpg
Image Header:
%U = URL, %D = Date
Image Footer:
%U = URL, %D = Date
Enable shortcuts
All Page Screenshot: Alt +
Visible Screenshot : Alt +
Region Screenshot : Alt +
Cancel Screenshot:
Disable Shortcuts
Whole page Screenshot Speed
Too fast, can make holes in the image.
|
Please fork, so we can continue to develop this extension
|


Contents
Short Descriptions
|
utility to deactivate block device. |
|
|
(optional) is the Device Mapper event daemon. |
|
|
is a low level logical volume management tool. |
|
|
is an utility used to resize or check filesystem on a device. |
|
|
provides the command-line tools for LVM2. Commands are implemented via sympolic links to this program to manage physical devices (pv*), volume groups (vg*) and logical volumes (lv*). |
|
|
is a script that modifies the locking configuration in the LVM2 configuration file. |
|
|
is a tool used to dump various information concerning LVM2. |
|
|
is used to import a duplicated VG (e.g. hardware snapshot). |
|
|
contains the Device Mapper API functions. |


{% extends "desktop-layout.html" %} {% block body %}
Is Bus Ticker real-time? No, unfortunately the City of Hamilton does not released real-time bus location feeds for the HSR. We urge you to write your representative at council and let them know real-time bus feeds are important to you!
 The times that are shown on Bus Ticker are based on the official schedule released by the HSR. Actual time of arrival may vary based on traffic conditions and other considerations.
How do I install Bus Ticker? There is nothing to install! You simply go to Bus Ticker on your Android, iOS device and you can start using Bus Ticker immediately. You can add Bus Ticker to your home screen to make it easier to find. For instruction on how to do this for your device see the next question on this page.
How do I add Bus Ticker to my iPad or iPhone home screen? Simply go to Bus Ticker in Safari and tap then select 'Add to Home Screen' from the menu.
How do I add Bus Ticker to my Android home screen? First go to Bus Ticker in your browser and bookmark it. Then drag a bookmark widget to your home screen and select Bus Ticker when you are prompted to choose a bookmark.
I found a bug, who do I tell? The best way to let me know about a bug is to tweet me: @gsmaverick, or send me an email<EMAIL_ADDRESS>Hopefully I'll be able to fix the bug in a reasonably short timeframe.


--- layout: post title: NextMap v0.01 date: 2011-05-09 10:01:00.000000000 +03:00 categories: - Projects tags: - auto mapping - automapper - nextmap status: publish type: post published: true post_id: nextmap meta: _networkpub_meta_published: new _edit_last: '1' _networkpub_meta_publish: '1' _networkpub_meta_content: '0' author: login: admin email<EMAIL_ADDRESS>display_name: Radu first_name: '' last_name: '' ---
I am a speed freak. In everything. Cars, motorcycles, computers.. you name it. Also I love the idea of creating object to object mappings without actually writing code for mapping each field from one object to another. AutoMapper does a pretty good job doing the mappings, but does not satisfy my hunger for speed.
I covered a very basic usage of AutoMapper in a previous article here. NextMap is built with compatibility with AutoMapper in mind, so all you need to do is just change the referred assembly and the using namespace to NextMap and you are ready to compile and use the new auto mapping engine.
As for the supported features, it's just version 0.01. There is the very basic set of mappings supported, anything that can be mapped without explicit casting, Lists of Lists of Lists ... of Lists from anything that can be mapped without explicit casting... Mapping arrays of one type to another is not supported yet. But will be in v0.02 or v0.03 the latest. Mapping dictionaries is also planned for the very near future. As for the custom mappings the only supported features are rules for member mappings as Ignore() and MapFrom(). Mapping of different types are not supported: a member of type string to a member of type decimal will not succeed, there will be an exception when calling AssertConfigurationIsValid() with the message that the destination member is not mapped. If the mapping configuration for a member is done explicitly with MapFrom() and the types mapping is not supported there will be an exception.
The philosophy of NextMap is to provide safe mappings, to try to minimize developer effort and errors.
Grab an assembly of NextMap today and go change the world! download from GitHub or check the NextMap GitHub page
Also here is a version hosted on this domain in case you have domain restrictions NextMap v0.01


T 0:00 - Ingested 5 mg diazepam, tablet form.
T+0:05 - smoked 1 bowl cannabis
T+0:30 - begin to notice full effect from diazepam
T+2:00 - ingested 2.5 mg diazepam
T+2:15 - smoked 2 bowls cannabis
T+3:30 - smoked 1 bowl Oaxacan salvia divinorum leaf.
Between the cannabis and the Valium, J and I were very relaxed and happy, and felt quite good. For some time we had joked of 'salvium', the combination of these two medicines, but had never done so before this night. Once we decided to smoke salvia, we closed up the apartment, dimmed the lights in the living room, and put on a Garcia / Grisman show from '91....very serene.
We took a few cleansing breaths and began the salvia regimen - keeping the flame on the leaf, taking HUGE lungfuls, and holding them as long as possible. The salvia set on as it has many times in the past, but this time was quite different, obviously colored by the Valium.
I felt myself being pulled toward the left; my visual field became only that which was immediately in my line of sight, and in a short time, I closed my eyes and entered salvia space. For those experienced with the plant, you may know the space as well, and the various qualities of it - the feeling of being yourself but somehow detached, yet all the while the very earthy, comforting feeling. The diazepam produced an extra layer of space between my salvia-drenched thoughts and my perceptive mind; however, the diazepam is what I feel is directly responsible for the most interesting portion of the trip - the visuals were amazing.
Generally, I find salvia visuals to be blurred and somewhat indistinguishable, often somewhat dark, and colored mainly by earth tones. However, the visual patterns / entities were very focused - a happy, morphing web of purple tentacle-like structures moving around me, enveloping me, explaining the music to me.....
It was like a beautiful dream. The valium definitely removed most of the 'thought' portion of the trip, but so much beauty and joy and laughter was present.... we came down and felt an extreme sense of mental clarity - remembering things long forgotten, engaging in witty, warm conversations with no difficulties - it was as if the salvia sought out to show us pure unadulterated fun with no strings attached... if only for a little while.
At times, salvia can be harsh, uncomfortable, and unsettling; the diazepam seems to remove this component nicely, although in the future, I may stop at the 5 mg mark. I have also noted that cannabis seems to have little effect on salvia visuals though it does seem to increase the intensity of the experience and prolong the coming down period.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


The Ingestion/The Flavor
~50 Voacanga africana seeds were chewed up a little bit, then swallowed with some ginger ale (taste ain't that bad). My mouth was already dry and I wasn't in the mood for any flavor at all. The flavor of V. africana seeds is mild, and ranges from that of tea and pecans, to nastiness.
The hollow seeds are the worst tasting, but the disgust doesn't linger, a sip of any soda or milk will erase the >blech<. Because of the varying tastes, it is best to chew one seed at a time (mixing a nasty one with a good one is even worse than only chewing a bad one). Better yet - for each exploration, try to chew seeds from one or two seed clusters, only. These seeds tend to stay fresher and can be chewed at once, single seeds dry up faster. NOTE: Black seed clusters are nasty. White seed clusters look nasty and hard (I ain't touchin' them!) The brown clusters are what you want.>
The Onset
About 20 minutes later, an emotional charge is felt. Not energetic, but an emotional release. It would be extremely easy to delve deep into my subconscious at ths moment, and/or spill my guts to someone I care for. Crying is extremely easy whereas normally it in non-existant.
Over an hour after consumption, visiual distortions and a moderate 'trip' feeling is noticed. Eyes are light red with mild gloss (could be from possible tearing). Everything is different, and with eyes closed, it seems like visuals are right around the bend. I never get to them, though.
I lay down with the intent of watching some TV and waiting a few hours so as to talk with a friend, but then I sleep. My glasses are found to the left of my pillow - so I must have just slipped away. I was tired this day already, but the stimulant effect that my friend boasted with these seeds, is not. Aphrodesiac, indeed, though.
The Dreaming
8 hours of lovely sleep follow, as do MANY vivid dreams (in no specific order):
At my dad's house and his old girlfriend is there (he has since had one other girlfriend), and the neighbor across the street, is there - as well as some 30 of her family members. I notice his computer and online connect is in the bathroom. It is my first day back at his house and I tell him that I need to sleep - but there's a party and tons of people, no place to sleep. So he says 'then why don't you just leave?' I do.
At Wal-Mart, near the front door, this frumpy looking 16-17 year old girl comes running through the doors and bumps into me - keeps running. Then she turns around and comes over to me and asks 'Do you know where the condoms are?' I do not know where they are in Wal-Mart (or if they even sell them) and I tell her this, then she begins to walk away, then I jog back towards her and tell her to check near the tampons.
Somehow, somewhere talking with my mother, she says something about how she now realizes that hallucinogens are potent tools for self-exploration, and doesn't mind me using them. Mentions something about me freaking out on mushrooms, as a shifting point in her opinion.
In a car, I somehow end up in a garage with a half-dozen people or so. I notice one female - she is the female from the sketch comedy troupe, the Upright Citizen's Brigade, and I talk to her about that show and the fact that she is a writer and actor on Late Night with Conan O'Brien. She says that the other people in the UCB are just funny people she knows, they are not writers for Conan O'Brien.
The Morning After
Wake up the next morning, disappointed that I fell asleep and missed my friend. Ego very strong. I want to change things. The ego-enhancement is perhaps as powerful as that of ketamine use - however, seemingly not as long lasting.
The Day After
All day - from 8 am through to 6 pm, I feel very strange. Even though I got sufficient sleep last night, my body feels somehow ill (breathing feels different) and I sleep very easy again. In retrospect I wonder if the 'dreams' mentioned above were actually dreams, or if I just slipped into a world like that of dreams, while laying down. When I initially woke up after several 'dream-like' thoughts, it felt much like waking after passing out from a high mushroom dose. The 'dreams' were much like those that occur while slipping in and out of this world. I will definitely sleep well tonight. More to come with this species!
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


{{purchase.orderCount}} orders purchased
| Item |
Colour |
Customer |
Date |
Cost |
Price |
Collected |
| No Record Found |
| {{order.itemName}} |
{{order.itemType}} |
{{order.customerId}} |
{{order.date | date:'dd/MM/yy'}} |
{{order.cost}} |
{{order.price}} |
{{order.isCollected | checkmark}} |


Ocala events
-
theme from discotheque mp3
Hazards Associated with Operating Skid-Steer Loaders with ... - OSHA
Hazards Associated with Operating Skid-Steer Loaders with Bypassed and/or Improperly Maintained Safety Devices.
http://www.osha.gov/dts/shib/shib011209.htmlEndraulic Limited: What is a Skid Steer or "Bobcat"?
Skid Steer Loaders are compact four wheel drive machines with a bucket on the front. The term "skid steer" refers to the fact that they turn by driving one side at a .
http://www.endraulic.co.nz/bobcat.htmlSkid Loaders - Gehl Company - Compact Equipment for ...
Gehl V400 Skid Loader. Strongest in class - Full-size skid loader provides high performance and tractive forces. Vertical-Lift, Heavy-Duty Boom - High-strength, .
http://www.gehl.com/const/prodpg_eseries.html
albuquerque balloon park hotels Upcoming events in Ocala
- Sponsored event
hot wheels collector 917
Apr 6 - Dance It Studio
lowery brothers of louisiana marrero clothing 4 all inc riverside
nhs pay rise england Hottest Tickets
-
Apr 11what do greater flamingos eat
Amway Center -
Apr 28blackbeard's house in elizabeth city nc
Amway Center -
Jun 25pr blogger jenny lewis
Bob Carr Performing Arts Center -
Mar 30debenhams department stores lincoln
Amway Center -
Aug 27song lyrics billy joel my life
Amway Center -
Jun 21the value of visual arts education
Amway Center -
Sep 13raquel welch see through
Francis Field -
Mar 17clayton manufactured homes arkansas
St Augustine Amphitheatre -
Oct 8farus buelers day off
Amway Center -
May 4sleeping men fondled by girls
Bob Carr Performing Arts Center
Ocala's best venues
-
Buckets - Skid Steer Loader
Cat® Buckets are designed to provide superior productivity, high reliability and long life in a variety of materials and handling conditions. Rugged Cat Buckets for .
http://www.cat.com/attachments/skid-steer-loader-buckets -
Skid Loader Advice
Need to replace the old bobcat 642b, had a couple of 175s bobcats found at a dealer that had them out probably on lease, to a couple of .
http://discussions.agweb.com/showthread.php?14065-Skid-Loader-Advice -
Skid Steer Tires and Tracks
Find Skid Steer Tires and Tracks from the #1 online source. Skid Steer Solutions.
http://www.skidsteersolutions.com/Skid-Steer-Tires-and-Tracks-s/9341.htmnicola fitzharris newcastle upon tyne
98 people's favorite
-
Selecting Skid-Steer Loaders | Construction Business Owner ...
Determine how to effectively choose, operate and maintain skid-steer loaders to increase efficiency and gain a return on investment. Whether you are a .
http://www.constructionbusinessowner.com/topics/equipment/construction-equipment-management/selecting-skid-steer-loaders -
Skid Steer Loader | Case IH
View images and product features. Compare specs, or build & price Case IH Skid Steer Loader at CaseIH.com.
http://www.caseih.com/en_us/products/skidsteers/pages/skid-steer-loaders.aspx


Welcome in the communist number store!
Why is this store communist? Because you get goods for free in this shop! (Of course it is a joke.)
This page demonstrates browser-side search without any load on the server. All your searches run entirely in your browser.
This is possible thanks to free open source software called FiSoro.
If you want to use FiSoro or learn more about this software - see downloads and details in this GitHub repository: https://github.com/vsirotin/fisoro
You can select each number in interval 0-999. Your number can be represented as x =a*100+b*10+c
You can set properties of a, b, c and x itself. You can restrict x of the digits sum y=a+b+c
You can also set some substring that must appears in text representation of your number.
Have fun as you select and own your numbers!
| Properties of a | Properties of b | Properties of c | Properties of x =a*100+b*10+c | Interval for value and digits sum y=a+b+c | Substrings |
|---|---|---|---|---|---|
|
{{y1.name}} |
{{y2.name}} |
{{y3.name}} |
{{y4.name}} |
{{y5.name}}
|
{{y6.name}}
|
Click to be virtual owner of number {{x[0]}}!
Representation: {{x[6]}}
Description: {{x[7]}}


../vignettes/organisations_with_ggraph.Rmd
organisations_with_ggraph.Rmd
This vignette demonstrates the basic principles of how organisational data can be analysed and visualised using the ggraph
and tidygraph
packages. Although the orgsurveyr
package provides some convenience functions to facilitate this, it is deliberately kept lightweight with the intention that core ggraph
and tidygraph
functionality is used instead. Having established the basic principles behind organisational data analyses, these convenience functions and classes are introduced.
A simple tree representing an organisation with three teams, each with three sub-teams can be simulated with tidygraph
as follows:
tg <- tidygraph::create_tree(n = 13, children = 3)
tg
#> # A tbl_graph: 13 nodes and 12 edges
#> #
#> # A rooted tree
#> #
#> # Node Data: 13 x 0 (active)
#> #
#> # Edge Data: 12 x 2
#> from to
#> <int> <int>
#> 1 1 2
#> 2 1 3
#> 3 1 4
#> # ... with 9 more rows
The network object is two data frames, one for the nodes and another for the edges.
The tidygraph object can be plotted as a dendrogram with ggraph
:
ggraph(tg, 'dendrogram') + geom_edge_diagonal() +
geom_node_point(shape = 21, size = 5, fill = 'white') + theme_bw()
The tidygraph object can be accessed with familiar tidyverse syntax, using the activate
verb to select either nodes or edges:
tg %>% activate(edges) %>% as_tibble()
#> # A tibble: 12 x 2
#> from to
#> <int> <int>
#> 1 1 2
#> 2 1 3
#> 3 1 4
#> 4 2 5
#> 5 2 6
#> 6 2 7
#> 7 3 8
#> 8 3 9
#> 9 3 10
#> 10 4 11
#> 11 4 12
#> 12 4 13
A number of useful functions exist for calculating over and manipulating the network, and these can be combined with the conventional tidyverse verbs such as mutate
and filter
. For example, to calculate the depth within the network of each node, we can use the bfs_dist
function:
tg <- tg %>%
mutate(depth = tidygraph::bfs_dist(1))
tg
#> # A tbl_graph: 13 nodes and 12 edges
#> #
#> # A rooted tree
#> #
#> # Node Data: 13 x 1 (active)
#> depth
#> <int>
#> 1 0
#> 2 1
#> 3 1
#> 4 1
#> 5 2
#> 6 2
#> # ... with 7 more rows
#> #
#> # Edge Data: 12 x 2
#> from to
#> <int> <int>
#> 1 1 2
#> 2 1 3
#> 3 1 4
#> # ... with 9 more rows
Overlaying this new variable onto the network is as would be expected in any ggplot:
ggraph(tg, 'dendrogram') + geom_edge_diagonal() +
geom_node_point(aes(fill = depth), shape = 21, size = 5) + theme_bw()
For more information about how tidygraph
represents networks see this blog post.
To create a larger organisation, we can modify the number of nodes in the tree and the maximum number of children per node.
bigger_org <- tidygraph::create_tree(n = 40, children = 4)
ggraph(bigger_org, 'dendrogram') + geom_edge_diagonal() +
geom_node_point(shape = 21, size = 2, fill = 'white') + theme_bw()
To create a more symmetrical organisation, use the formula below:
n_children <- 4
max_depth <- 3
regular_n <- sum(n_children^c(0:max_depth))
regular_org <- tidygraph::create_tree(n = regular_n, children = n_children)
ggraph(regular_org, 'dendrogram') + geom_edge_diagonal() +
geom_node_point(shape = 21, size = 2, fill = 'white') + theme_bw()
The orgsurvey::create_regular_org
function provides a wrapper around this approach:
create_regular_org(n_children = 5, max_depth = 2) %>%
ggraph('dendrogram') + geom_edge_diagonal() +
geom_node_point(shape = 21, size = 2, fill = 'white') + theme_bw()
To create a more realistic and less regular, symmetrical organisation, there are two basic approaches: to either build the network up, or trim an existing network down. In the orgsurveyr
package the latter approach is taken. The actions are:
To randomly select nodes for deletion, a new variable can be created in the nodes data frame that uses the rbinom
function to assign a deletion status of true with a probability of 0.3. Note that the .N()
function is used to access the nodes data frame within a tidygraph object.
set.seed(1234)
tg_random_delete <- create_regular_org(4,2) %>%
mutate(branch_delete = rbinom(n = nrow(.N()), size = 1, prob = 0.3))
ggraph(tg_random_delete, 'dendrogram', circular = FALSE) + geom_edge_diagonal() +
geom_node_point(aes(fill = as.factor(branch_delete)), shape = 21, size = 4) +
theme_bw() + guides(fill = guide_legend(title = 'Branch Delete'))
The next step is to assign all descendent nodes of a node marked as for deletion the same status. This can be done as follows:
tg_random_branch_delete <- tg_random_delete %>%
mutate(to_delete = tidygraph::map_bfs_dbl(1, .f = function(node, path, ...) {
max(.N()[c(node, path$node),]$branch_delete)
}))
tg_random_branch_delete %>%
ggraph('dendrogram') + geom_edge_diagonal() +
geom_node_point(aes(fill = as.factor(to_delete)), shape = 21, size = 4) +
theme_bw() + guides(fill = guide_legend(title = 'To Delete'))
The map_bfs_dbl
function allows us to access the nodes between the current node and the root node and identify whether any already have already been marked for deletion. The effect can be seen in the plot, where all four of the leaf nodes in the right hand branch have now been marked for deletion.
In the example above, any node was given the same chance of being deleted. In reality we may wish to have a difference chance of a node being deleted depending on its depth in the organisation. This can be achieved by first calculating the depth of the organisation using the bfs_dist
function, and then either applying some function to this or joining another data frame with the required probabilities.
The first example demonstrates how simple function can be used to translate depth to likelihood of deletion. Nodes to be deleted are highlighted in red.
set.seed(1234)
tg_trim_by_depth_function <- create_regular_org(4, 3) %>%
mutate(depth = bfs_dist(1),
prob_deletion = 1 - (8 - depth) / 8,
branch_delete = rbinom(nrow(.N()), 1, prob_deletion),
to_delete = tidygraph::map_bfs_dbl(1, .f = function(node, path, ...) {
max(.N()[c(node, path$node), ]$branch_delete)
}))
tg_trim_by_depth_function
#> # A tbl_graph: 85 nodes and 84 edges
#> #
#> # A rooted tree
#> #
#> # Node Data: 85 x 4 (active)
#> depth prob_deletion branch_delete to_delete
#> <int> <dbl> <int> <int>
#> 1 0 0 0 0
#> 2 1 0.125 0 0
#> 3 1 0.125 0 0
#> 4 1 0.125 0 0
#> 5 1 0.125 0 0
#> 6 2 0.25 1 1
#> # ... with 79 more rows
#> #
#> # Edge Data: 84 x 2
#> from to
#> <int> <int>
#> 1 1 2
#> 2 1 3
#> 3 1 4
#> # ... with 81 more rows
tg_trim_by_depth_function %>%
ggraph('dendrogram', circular = TRUE) + geom_edge_diagonal() +
geom_node_point(aes(fill = prob_deletion, color = as.factor(to_delete)),
shape = 21, size = 4, stroke = 1) +
scale_color_manual(values = c('0' = 'black', '1' = 'red')) +
theme_bw()
Second, join to a data frame containing the probabilities defined exactly.
set.seed(1234)
tg_trim_by_depth_exact <- create_regular_org(4,3) %>%
mutate(depth = bfs_dist(1)) %>%
inner_join(data_frame(depth = 0:4,
prob_deletion = c(0, 0.1, 0.2, 0.3, 0.4)), by = 'depth') %>%
mutate(branch_delete = rbinom(nrow(.N()),1,prob_deletion),
to_delete = tidygraph::map_bfs_dbl(1, .f = function(node, path, ...) {
max(.N()[c(node, path$node),]$branch_delete)
}))
tg_trim_by_depth_exact
#> # A tbl_graph: 85 nodes and 84 edges
#> #
#> # A rooted tree
#> #
#> # Node Data: 85 x 4 (active)
#> depth prob_deletion branch_delete to_delete
#> <int> <dbl> <int> <int>
#> 1 0 0 0 0
#> 2 1 0.1 0 0
#> 3 1 0.1 0 0
#> 4 1 0.1 0 0
#> 5 1 0.1 0 0
#> 6 2 0.2 1 1
#> # ... with 79 more rows
#> #
#> # Edge Data: 84 x 2
#> from to
#> <int> <int>
#> 1 1 2
#> 2 1 3
#> 3 1 4
#> # ... with 81 more rows
tg_trim_by_depth_exact %>%
ggraph('dendrogram', circular = TRUE) + geom_edge_diagonal() +
geom_node_point(aes(fill = prob_deletion, color = as.factor(to_delete)),
shape = 21, size = 4, stroke = 1) +
scale_color_manual(values = c('0' = 'black', '1' = 'red')) +
theme_bw()
Either of the above networks can be trimmed and plotted as a reasonable simulation of an organisation:
tg_complex <- tg_trim_by_depth_function %>%
filter(to_delete == 0)
tg_complex %>%
ggraph('dendrogram', circular = TRUE) + geom_edge_diagonal() +
geom_node_point(shape = 21, size = 4, fill = 'white') +
theme_bw()
Having simulated the organisation, we now want to simulate the people within the organisation. It’s the people and what they are doing and saying that we are interested in after all!
Organisational units within the organisation will have different numbers of people associated with them. Generally, the leaf nodes will have more people, whereas nodes higher up the organisation will have fewer people directly associated with them. This is because there will likely only be one manager and perhaps a secretary or a senior person with no further line management responsibility at a non-leaf node. The leaf nodes, by contrast, will have a number of people with no further line management responsibilities associated with them.
Since we don’t want all organisational units to have the same number of people associated with them, let’s define a function to simulate the size of the group whether it is a leaf node or not:
sim_group_size <- function(is_leaf_node) {
if (is_leaf_node) {
ceiling(rbeta(1, 10, 40) * 20)
} else {
sample(1:3, 1)
}
}
If the group is a leaf node, then the group size will be simulated from the beta distribution, whereas if it isn’t then it will be a number between 1 and 3.
Let’s simulate 10000 groups and see how they are distributed, using the purrr::map
function to apply our function 10,000 times:
The sim_group_size
function can be applied to the nodes data frame in the tbl_graph
object as if it were a data frame:
tg_group_size <- tg_complex %>%
mutate(unit_id = dplyr::row_number(),
is_leaf = node_is_leaf(),
unit_size = purrr::map_dbl(is_leaf, sim_group_size))
tg_group_size
#> # A tbl_graph: 55 nodes and 54 edges
#> #
#> # A rooted tree
#> #
#> # Node Data: 55 x 7 (active)
#> depth prob_deletion branch_delete to_delete unit_id is_leaf unit_size
#> <int> <dbl> <int> <int> <int> <lgl> <dbl>
#> 1 0 0 0 0 1 FALSE 2
#> 2 1 0.125 0 0 2 FALSE 2
#> 3 1 0.125 0 0 3 FALSE 1
#> 4 1 0.125 0 0 4 FALSE 1
#> 5 1 0.125 0 0 5 FALSE 2
#> 6 2 0.25 0 0 6 FALSE 2
#> # ... with 49 more rows
#> #
#> # Edge Data: 54 x 2
#> from to
#> <int> <int>
#> 1 1 2
#> 2 1 3
#> 3 1 4
#> # ... with 51 more rows
To visualise the group sizes, we can plot them as node labels:
tg_group_size %>%
ggraph('dendrogram', circular = TRUE) + geom_edge_diagonal() +
geom_node_point(shape = 21, size = 6, fill = 'white') +
geom_node_text(aes(label = unit_size)) +
theme_bw()
Now that we have determined how many people should be in each group, we can simulate them. Essentially we need a new data frame with one row per person, rather than one row per organisational unit. There are a variety of ways of doing this, the below example uses purrr::map
and tidyr::unnest
to simulate an individual level variable with mean of 10 and standard deviation of 3:
tg_individuals_df <- tg_group_size %>%
activate(nodes) %>%
as_tibble() %>%
dplyr::select(unit_id, unit_size, depth, is_leaf) %>%
dplyr::mutate(var1 = purrr::map(unit_size, ~rnorm(., mean=10, sd=3))) %>%
tidyr::unnest()
tg_individuals_df
#> # A tibble: 205 x 5
#> unit_id unit_size depth is_leaf var1
#> <int> <dbl> <int> <lgl> <dbl>
#> 1 1 2 0 FALSE 4.52
#> 2 1 2 0 FALSE 11.3
#> 3 2 2 1 FALSE 6.51
#> 4 2 2 1 FALSE 12.0
#> 5 3 1 1 FALSE 10.8
#> 6 4 1 1 FALSE 11.7
#> 7 5 2 1 FALSE 4.48
#> 8 5 2 1 FALSE 11.6
#> 9 6 2 2 FALSE 16.5
#> 10 6 2 2 FALSE 4.30
#> # ... with 195 more rows
To plot the individual level data on the network plot, we first summarise it as the group level and then join it back into the nodes data frame of the network:
#now calculate means and put info back into network plot
tg_var1_df <- tg_individuals_df %>%
group_by(unit_id) %>%
summarise(var1 = mean(var1))
#merge in summarised data
tg_var1 <- tg_group_size %>%
inner_join(tg_var1_df, by = 'unit_id')
tg_var1
#> # A tbl_graph: 55 nodes and 54 edges
#> #
#> # A rooted tree
#> #
#> # Node Data: 55 x 8 (active)
#> depth prob_deletion branch_delete to_delete unit_id is_leaf unit_size
#> <int> <dbl> <int> <int> <int> <lgl> <dbl>
#> 1 0 0 0 0 1 FALSE 2
#> 2 1 0.125 0 0 2 FALSE 2
#> 3 1 0.125 0 0 3 FALSE 1
#> 4 1 0.125 0 0 4 FALSE 1
#> 5 1 0.125 0 0 5 FALSE 2
#> 6 2 0.25 0 0 6 FALSE 2
#> # ... with 49 more rows, and 1 more variable: var1 <dbl>
#> #
#> # Edge Data: 54 x 2
#> from to
#> <int> <int>
#> 1 1 2
#> 2 1 3
#> 3 1 4
#> # ... with 51 more rows
#plot as a network
tg_var1 %>%
ggraph('dendrogram', circular = TRUE) + geom_edge_diagonal() +
geom_node_point(aes(fill = var1), shape = 21, size = 4)
Often we don’t necessarily want to know the mean for just the people directly associated with an organisational unit, but the mean for all people associated with the current unit and its children.
What is required is a data frame that maps each unit with all of the units below it in the hierarchy. This can be achieved using the functionality of the tidygraph::map_bfs_back
function in a similar way to how we propagated deletion status through the tree:
tg_expanded_df <- tg_group_size %>%
mutate(child_id = tidygraph::map_bfs_back(unit_id, .f = function(node, path, ...) {
.N()[c(node, path$node),]$unit_id
})) %>%
activate(nodes) %>%
as_tibble() %>%
dplyr::transmute(parent_id = unit_id, unit_id = child_id) %>%
tidyr::unnest() %>%
arrange(parent_id)
tg_expanded_df
#> # A tibble: 196 x 2
#> parent_id unit_id
#> <int> <int>
#> 1 1 1
#> 2 1 2
#> 3 1 3
#> 4 1 4
#> 5 1 5
#> 6 1 6
#> 7 1 7
#> 8 1 8
#> 9 1 9
#> 10 1 10
#> # ... with 186 more rows
We now need to join our individuals data frame with the cumulative mapping data frame, calculate our cumulative variables and then join the result back into the tidygraph object.
First calculate the cumulative variables:
tg_cumulative_df <- tg_expanded_df %>%
inner_join(tg_individuals_df, by = 'unit_id') %>%
group_by(parent_id) %>%
summarise(cumulative_group_size = n(),
cumulative_var1_mean = mean(var1))
tg_cumulative_df
#> # A tibble: 55 x 3
#> parent_id cumulative_group_size cumulative_var1_mean
#> <int> <int> <dbl>
#> 1 1 205 9.68
#> 2 2 46 9.73
#> 3 3 58 9.78
#> 4 4 33 9.79
#> 5 5 66 9.55
#> 6 6 10 10.3
#> 7 7 17 9.68
#> 8 8 17 9.50
#> 9 9 9 9.39
#> 10 10 16 9.85
#> # ... with 45 more rows
Now merge back into the network object:
tg_cumulative <- tg_var1 %>%
select(unit_id, depth, is_leaf, unit_size, var1) %>%
inner_join(tg_cumulative_df, by = c('unit_id' = 'parent_id'))
tg_cumulative
#> # A tbl_graph: 55 nodes and 54 edges
#> #
#> # A rooted tree
#> #
#> # Node Data: 55 x 7 (active)
#> unit_id depth is_leaf unit_size var1 cumulative_group… cumulative_var1…
#> <int> <int> <lgl> <dbl> <dbl> <int> <dbl>
#> 1 1 0 FALSE 2 7.92 205 9.68
#> 2 2 1 FALSE 2 9.25 46 9.73
#> 3 3 1 FALSE 1 10.8 58 9.78
#> 4 4 1 FALSE 1 11.7 33 9.79
#> 5 5 1 FALSE 2 8.02 66 9.55
#> 6 6 2 FALSE 2 10.4 10 10.3
#> # ... with 49 more rows
#> #
#> # Edge Data: 54 x 2
#> from to
#> <int> <int>
#> 1 1 2
#> 2 1 3
#> 3 1 4
#> # ... with 51 more rows
And finally plot - coloured by cumulative mean of the simulated variable, and labelled by cumulative unit size:
tg_cumulative %>%
ggraph('dendrogram', circular = TRUE) + geom_edge_diagonal() +
geom_node_point(aes(fill = cumulative_var1_mean), shape = 21, size = 6) +
geom_node_text(aes(label = cumulative_group_size), color = 'white', size = 3) +
theme_bw()
In this analysis we have simulated basic organisations, made them more complex by trimming, and then simulated individual level data which we have summarised both at immediate group level and cumulative group level. Simulation of more complex variables is possible, for example introducing group level effects or adding additional structure into the organisation.


Enter all directors and officers for the corporation
Add all directors, officers and senior managers for the society.
Enter owner details
Name
{{element.name}}
Email
{{element.email}}
Position
{{element.position}}
Date of Appointment
{{element.dateofappointment | date:'yyyy-MM-dd' }}
Edit
Edit
Delete
Delete
Add Person


| 1 |
Chai |
$18.00 |
10 boxes x 20 bags |
39 |
|
| 2 |
Chang |
$19.00 |
24 - 12 oz bottles |
17 |
|
| 3 |
Aniseed Syrup |
$10.00 |
12 - 550 ml bottles |
13 |
|
| 4 |
Chef Anton's Cajun Seasoning |
$22.00 |
48 - 6 oz jarz |
53 |
|
| 5 |
Chef Anton's Gumbo Mix |
$21.35 |
36 boxes |
0 |
|
| 6 |
Crangma's Bousenberry Spread |
$25.00 |
12 - 8 oz jars |
120 |
|
| 7 |
Uncle Bob's Organic Dried Pears |
$30.00 |
12 - 1 lb pkgs. |
15 |
|
| 8 |
Northwoods Crangerry Sauce |
$40.00 |
12 - 12 oz jars |
6 |
|
| 9 |
Mishi Kobe Niku |
$97.00 |
18 - 500 g pkgs. |
29 |
|
| 10 |
Ikura |
$31.00 |
12.200 ml jars |
31 |
|


Before Change
// Reimplement this when TPU training summaries are supported.
lr_repeat = tf.reshape(
tf.tile(tf.expand_dims(learning_rate, 0), [params["batch_size"],]),
[params["batch_size"], 1])
ce_repeat = tf.reshape(
tf.tile(tf.expand_dims(current_epoch, 0), [params["batch_size"],]),
[params["batch_size"], 1])
After Change
return tf.estimator.EstimatorSpec(mode=mode, predictions=predictions)
// Calculate loss, which includes softmax cross entropy and L2 regularization.
one_hot_labels = tf.one_hot(labels, _LABEL_CLASSES)
cross_entropy = tf.losses.softmax_cross_entropy(
logits=logits, onehot_labels=one_hot_labels)
// Add weight decay to the loss. We exclude weight decay on the batch


---
layout: post
title: 'PostgreSQL performance of "where exists" '
date: '2004-12-15T22:34:00.000-05:00'
author: Bill Schneider
tags:
modified_time: '2004-12-15T23:56:11.886-05:00'
blogger_id: tag:blogger.com,1999:blog-9159309.post-110317254344413332
blogger_orig_url: http://wrschneider.blogspot.com/2004/12/postgresql-performance-of-where-exists.html
---
Today I was looking into the performance of a PostgreSQL query with a "... where exists (select 1 from ...)" subquery:
select foo_id from fooI was surprised to find out that this query actually ran faster when I restructured it with a SELECT DISTINCT and a JOIN:
where exists (select 1 from bar where bar.foo_id = foo.foo_id)
select distinct(foo_id) from barSome references on the web I've found suggest that EXISTS is the preferred way to write the above query in general. Because it's a boolean condition, in theory the database needs to scroll fewer rows because it can stop as soon as the first match is found; and the DISTINCT can be expensive if the results from the join version would not have been unique.
join foo on bar.foo_id=foo.foo_id


Installation
Using NPM:
```shell
$ npm i bs5-lightbox
```
__**`index.js`**__
```js
import 'bs5-lightbox'
```
Or grab the latest JS from the CDN and add it after Bootstrap's JS:
<script<EMAIL_ADDRESS>Or [download the file directly](https://raw.githubusercontent.com/trvswgnr/bs5-lightbox/main/dist/index.bundle.min.js) (right-click, Save As...)
Lightbox for Bootstrap 5 will automatically initialize on import, simply add `data-toggle="lightbox"` to your anchor tags.
```html
```
If you want to target a different element, import the Lightbox class and instantiate it on an event:
__**`index.js`**__
```js
import Lightbox from 'bs5-lightbox'
document.querySelectorAll('.my-lightbox-toggle').forEach((el) => el.addEventListener('click', (e) => {
e.preventDefault();
const lightbox = new Lightbox(el);
lightbox.show();
}));
```
Obviously, you need Bootstrap (made for Bootstrap 5).
Examples
<script<EMAIL_ADDRESS>Thanks to https://unsplash.it/ for the images.
Single Image
Note: add captions using the data-caption
or data-footer
attribute
Image Gallery
Galleries are created by adding the data-gallery
attribute.
Videos
YouTube
You can use various YouTube URL formats, the regex used is: /^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*/
Vimeo
You cannot embed Vimeo videos using the standard url (ie https://vimeo.com/80629469); you must link to the embed source (ie player.vimeo.com/video/80629469). This will mean your link url - if the JavaScript fails, will open the full screen player (try opening the first link below in a new tab); the solution to this is to set the lightbox source directly - the second link below does this.
City Lights - from Colin Rich (using embed link)
City Lights - from Colin Rich (with recommended data-remote
setting)
Gallery of Videos
Mixed gallery
Via data-remote
or data-src
Neither of these are <a>
tags, so both rely on the data-remote
or data-src
attributes.
Force type
If the images you are linking to have no extension, the lightbox cannot detect that is an image;
therefore you need to tell the lightbox what data-type
it is.
Current allowed types are: ['image', 'youtube', 'vimeo', 'instagram', 'video', 'url']
Click here for an image, but with no extension.
This link is missing the type attribute, and will iframe the image.
Hidden elements
Only show a few images but have a large gallery
Remote content
Given a URL that is not an image or video (including unforced types), load the content using an iFrame.
Contributing
Lightbox for Bootstrap 5 is written in TypeScript and compiled to pure JavaScript. Modify the src/index.ts file, run `npm run build` and create a pull request.
You can help make this project even better and keep it up to date by making a small contribution! Fund this project.


| Select a file to load | Enter a google spreadsheet identifier |
|
Go to File -> publish to the web Copy the link to your spreadsheet and paste it below |
|---|
| Select a file to load | Enter a google spreadsheet identifier |
|
Go to File -> publish to the web Copy the link to your spreadsheet and paste it below |
|---|


Home
accomodations
activities
contact information
pictures
travel arrangements
Contact
Just talk to us via the Banana Phone!


EMG Department
Electromyography (EMG) is an electrodiagnostic medicine technique for evaluating and recording the electrical activity produced by skeletal muscles.EMG is performed using an instrument called an electromyograph to produce a record called an electromyogram. An electromyograph detects the electric potential generated by muscle cells when these cells are electrically or neurologically activated. The signals can be analyzed to detect medical abnormalities.
We use state of the art quipment for EMG to ensure the highest quality of diagnosis and accurate results that the doctors can then use to treat the patients.


Beta This is a test version of the layout of this page. Take the survey to help us improve it
Guidance
Information for headteachers and teachers on how to complete pupil registration for the key stage 2 national curriculum tests.
Schools must use the ‘Pupil registration’ section of NCA tools to register and confirm all of their pupils who will be entered for the 2017 national curriculum tests.
The deadline for registering pupils for KS2 tests is Friday 17 March.
This guidance will help you complete pupil registration correctly. Specific instructions are provided on NCA tools about:
Section 5.2 of the 2017 KS2 assessment and reporting arrangements (ARA) includes general guidance on registering pupils for the tests.
If you submitted your school’s census data to the Department for Education (DfE) by the deadline, your pupil list will have been uploaded to the ‘Confirm pupils’ page of NCA tools. You need to check that this data is still accurate, up to date and matches the information held within your management information system (MIS).
If a pupil’s unique pupil number (UPN), name or date of birth is incorrect, you should change this in the ‘Pupil registration’ section of NCA tools. This is to make sure that when you submit teacher assessment data later in the test cycle, it matches the data already held. It also ensures that when we return results data to your school it matches the pupil data held in your MIS.
Your data won’t be pre-populated if:
In these cases, you will need to upload your pupil data using the ‘Upload multiple pupils’ page of NCA tools.
You will only be able to register pupils for the tests if you ordered materials by Friday 25 November 2016 (the test orders deadline).
You must complete ‘Pupil registration’ by Friday 17 March in order to participate in 2017 KS2 tests. This is a strict deadline.
Make sure you understand the general requirements that apply to all schools when registering pupils. In addition, you will need to upload your pupil data using the ‘Upload multiple pupils’ page of NCA tools.
If your school placed a test order but then opted out of an entire subject, the subject box will not be displayed. To opt back in:
All schools must complete pupil registration for the KS2 tests. This means logging into NCA tools and:
Once you have checked your details you must tick the confirmation box. If you make additional changes to your data, you must reconfirm them.
The ‘Pupil registration’ section of NCA tools remains open after Friday 17 March. You should amend the data in this section to reflect any pupils that leave or join your school after this date. You should do this up until the end of test week.
If a pupil’s situation changes you should amend the attendance register to show this. Full instructions will be provided in the ‘Attendance register and test script dispatch instructions’. These will be in your school’s stationery pack and also available in March from the National curriculum assessments: key stage 2 tests collection on GOV.UK.
You should register all pupils who are eligible for KS2 tests, even if they are working below the standard of the tests. You should register these pupils as ‘B’. For example, if a pupil is unable to communicate in English, they will be working below the standard of the English tests and so should be registered as ‘B’.
You should register pupils who use access arrangements for the tests in the same way as pupils who aren’t using access arrangements.
All pupils with English as an additional language (EAL) should be registered for the KS2 tests, regardless of whether they go on to take them.
For example, if a pupil is working below the standard of the mathematics tests and is going to be assessed using the interim pre-key stage standards, they should be registered as ‘B’ for the tests.
For the mathematics tests, you may be able to make a translation to enable the pupil to take part in the tests. The pupil should be registered to take the tests.
Published: 18 February 2015
Updated: 16 February 2017


10.7 Generating Integers—library(between)
This library module provides some means of generating integers.
Exported predicates:
between(
+Lower,
+Upper,
-Number)
-
is true when Lower, Upper, and Number are integers,
and Lower =< Number =< Upper. If Lower and Upper are given,
Number can be tested or enumerated. If either Lower or Upper
is absent, there is not enough information to find it, and an
error will be reported.
gen_nat(
?N)
-
is true when N is a natural number. If N is a variable, it will
enumerate the natural numbers 0,1,2,... and of course not terminate.
It is not meant to be applied to anything but integers and variables.
gen_int(
?I)
-
is true when I is an integer. If I is a variable, it will
enumerate the integers in the order 0, 1, -1, 2, -2, 3, -3, &c.
Of course this sequence has no end.
It is not meant to be applied to anything but integers and variables.
repeat(
+N)
-
(where N is a non-negative integer) succeeds exactly N times.
You can only understand it procedurally, and really it is only
included for compatibility with some other Prologs.
numlist(
?Lower,
?Upper,
?List)
-
is true when List is [Lower, ..., Upper], Lower and Upper integers.
For example,
numlist(1, 3, L)
binds L = [1,2,3]
.
This is not yet as general as it ought to be: if Lower and Upper are
not both integers, List must be proper, and if Lower and Upper are
both variables, at least one element of List must be an integer.
If Lower = Upper+1, numlist(
Lower,
Upper, [])
is true.
Send feedback on this subject.


--- layout: base title: Privacy ---
Your privacy is important to us. Please see the below Liffey Valley AC's privacy statement and privacy policy.


RACE BIAS RATE BY STATE
CITIZENS
POLICY MAKERS
Preference
Choose State
Preference
Choose Rating Type
Analyze
Any color in Red below charts indicate rate is above threshold value


This page incorporates the built assets as a module. It allows users to experiment with using the module as a global from the JS console in a browser, at the console, exposed as `window.credibleSets`.


#!/usr/bin/env python
# -*- coding: utf-8 -*-
__author__ = 'valerio cosentino'
import mysql.connector
[docs]class DbUtil():
"""
This class provides database utilities
"""
[docs] def get_connection(self, config):
"""
gets DB connection
:type config: dict
:param config: the DB configuration file
"""
return mysql.connector.connect(**config)
[docs] def close_connection(self, cnx):
"""
closes DB connection
:type cnx: Object
:param cnx: DB connection to close
"""
cnx.close()
[docs] def lowercase(self, _str):
"""
conver str to lowercase
:type _str: str
:param _str: str to convert
"""
if _str:
_str = _str.lower()
return _str
[docs] def select_project_id(self, cnx, project_name, logger):
"""
gets project id
:type cnx: Object
:param cnx: DB connection
:type project_name: str
:param project_name: name of the project
:type logger: Object
:param logger: logger
"""
found = None
cursor = cnx.cursor()
query = "SELECT p.id " \
"FROM project p " \
"WHERE p.name = %s"
arguments = [project_name]
cursor.execute(query, arguments)
row = cursor.fetchone()
if row:
found = row[0]
else:
logger.error("the project " + str(project_name) + " does not exist")
cursor.close()
return found
[docs] def insert_project(self, cnx, db_name, project_name):
"""
inserts a project in the DB
:type cnx: Object
:param cnx: DB connection
:type db_name: str
:param db_name: the name of an existing DB
:type project_name: str
:param project_name: the name of the project to create
"""
self.set_database(cnx, db_name)
cursor = cnx.cursor()
query = "INSERT IGNORE INTO project " \
"VALUES (%s, %s)"
arguments = [None, project_name]
cursor.execute(query, arguments)
cnx.commit()
cursor.close()
[docs] def insert_repo(self, cnx, project_id, repo_name, logger):
"""
inserts repository
:type cnx: Object
:param cnx: DB connection
:type project_id: int
:param project_id: id of the project
:type repo_name: str
:param repo_name: name of the repository
:type logger: Object
:param logger: logger
"""
cursor = cnx.cursor()
query = "INSERT IGNORE INTO repository " \
"VALUES (%s, %s, %s)"
arguments = [None, project_id, repo_name]
cursor.execute(query, arguments)
cnx.commit()
cursor.close()
[docs] def insert_issue_tracker(self, cnx, repo_id, issue_tracker_name, issue_type, logger):
"""
inserts issue tracker
:type cnx: Object
:param cnx: DB connection
:type repo_id: int
:param repo_id: id of the repository
:type issue_tracker_name: str
:param issue_tracker_name: name of the issue tracker
:type issue_type: str
:param issue_type: type of the issue tracker
:type logger: Object
:param logger: logger
"""
cursor = cnx.cursor()
query = "INSERT IGNORE INTO issue_tracker " \
"VALUES (%s, %s, %s, %s)"
arguments = [None, repo_id, issue_tracker_name, issue_type]
cursor.execute(query, arguments)
cnx.commit()
query = "SELECT id " \
"FROM issue_tracker " \
"WHERE name = %s"
arguments = [issue_tracker_name]
cursor.execute(query, arguments)
row = cursor.fetchone()
if row:
found = row[0]
else:
logger.warning("no issue with name " + str(issue_tracker_name))
cursor.close()
return found
[docs] def select_label_id(self, cnx, name, logger):
"""
selects the label id by its name
:type cnx: Object
:param cnx: DB connection
:type name: str
:param name: the name of the label
:type logger: Object
:param logger: logger
"""
cursor = cnx.cursor()
query = "SELECT id FROM label WHERE name = %s"
arguments = [name]
cursor.execute(query, arguments)
row = cursor.fetchone()
found = None
if row:
found = row[0]
else:
logger.warning("no label with name " + str(name))
cursor.close()
return found
[docs] def insert_label(self, cnx, name, logger):
"""
inserts a label
:type cnx: Object
:param cnx: DB connection
:type name: str
:param name: the name of the label
:type logger: Object
:param logger: logger
"""
cursor = cnx.cursor()
query = "INSERT IGNORE INTO label " \
"VALUES (%s, %s)"
arguments = [None, name]
cursor.execute(query, arguments)
cnx.commit()
cursor.close()
[docs] def select_repo_id(self, cnx, repo_name, logger):
"""
selects repository id
:type cnx: Object
:param cnx: DB connection
:type repo_name: str
:param repo_name: name of the repository
:type logger: Object
:param logger: logger
"""
found = None
cursor = cnx.cursor()
query = "SELECT id " \
"FROM repository " \
"WHERE name = %s"
arguments = [repo_name]
cursor.execute(query, arguments)
row = cursor.fetchone()
if row:
found = row[0]
else:
logger.error("the repository " + repo_name + " does not exist")
cursor.close()
return found
[docs] def select_instant_messaging_id(self, cnx, im_name, logger):
"""
selects instant messaging id
:type cnx: Object
:param cnx: DB connection
:type im_name: str
:param im_name: name of the instant messaging
:type logger: Object
:param logger: logger
"""
found = None
cursor = cnx.cursor()
query = "SELECT id " \
"FROM instant_messaging " \
"WHERE name = %s"
arguments = [im_name]
cursor.execute(query, arguments)
row = cursor.fetchone()
if row:
found = row[0]
else:
logger.error("the instant messaging " + im_name + " does not exist")
cursor.close()
return found
[docs] def insert_user(self, cnx, name, email, logger):
"""
inserts user
:type cnx: Object
:param cnx: DB connection
:type name: str
:param name: name of the user
:type email: str
:param email: email of the user
:type logger: Object
:param logger: logger
"""
cursor = cnx.cursor()
query = "INSERT IGNORE INTO user " \
"VALUES (%s, %s, %s)"
arguments = [None, name, email]
cursor.execute(query, arguments)
cnx.commit()
cursor.close()
[docs] def select_user_id_by_email(self, cnx, email, logger):
"""
selects user id by email
:type cnx: Object
:param cnx: DB connection
:type email: str
:param email: email of the user
:type logger: Object
:param logger: logger
"""
found = None
if email:
cursor = cnx.cursor()
query = "SELECT id " \
"FROM user " \
"WHERE email = %s"
arguments = [email]
cursor.execute(query, arguments)
row = cursor.fetchone()
if row:
found = row[0]
else:
logger.debug("there is not user with this email " + email)
cursor.close()
return found
[docs] def select_user_id_by_name(self, cnx, name, logger):
"""
selects user id by name
:type cnx: Object
:param cnx: DB connection
:type name: str
:param name: name of the user
:type logger: Object
:param logger: logger
"""
found = None
if name:
found = None
cursor = cnx.cursor()
query = "SELECT id " \
"FROM user " \
"WHERE name = %s"
arguments = [name]
cursor.execute(query, arguments)
row = cursor.fetchone()
if row:
found = row[0]
else:
logger.debug("there is not user with this name " + name)
cursor.close()
return found
[docs] def select_forum_id(self, cnx, forum_name, logger):
"""
selects forum id
:type cnx: Object
:param cnx: DB connection
:type forum_name: str
:param forum_name: name of the forum
:type logger: Object
:param logger: logger
"""
found = None
cursor = cnx.cursor()
query = "SELECT id " \
"FROM forum " \
"WHERE name = %s"
arguments = [forum_name]
cursor.execute(query, arguments)
row = cursor.fetchone()
if row:
found = row[0]
else:
logger.error("the forum " + forum_name + " does not exist")
cursor.close()
return found
[docs] def select_issue_tracker_id(self, cnx, issue_tracker_name, logger):
"""
selects issue tracker id
:type cnx: Object
:param cnx: DB connection
:type issue_tracker_name: str
:param issue_tracker_name: name of the issue tracker
:type logger: Object
:param logger: logger
"""
found = None
cursor = cnx.cursor()
query = "SELECT id " \
"FROM issue_tracker " \
"WHERE name = %s"
arguments = [issue_tracker_name]
cursor.execute(query, arguments)
row = cursor.fetchone()
if row:
found = row[0]
else:
logger.error("the issue tracker " + issue_tracker_name + " does not exist")
cursor.close()
return found
[docs] def get_issue_dependency_type_id(self, cnx, name):
"""
selects issue dependency type id
:type cnx: Object
:param cnx: DB connection
:type name: str
:param name: dependency type name
"""
found = None
cursor = cnx.cursor()
query = "SELECT id FROM issue_dependency_type WHERE name = %s"
arguments = [name]
cursor.execute(query, arguments)
row = cursor.fetchone()
cursor.close()
if row:
found = row[0]
return found
[docs] def get_message_type_id(self, cnx, name):
"""
selects message type id
:type cnx: Object
:param cnx: DB connection
:type name: str
:param name: message type name
"""
found = None
cursor = cnx.cursor()
query = "SELECT id FROM message_type WHERE name = %s"
arguments = [name]
cursor.execute(query, arguments)
row = cursor.fetchone()
if row:
found = row[0]
cursor.close()
return found
[docs] def set_database(self, cnx, db_name):
"""
set database
:type cnx: Object
:param cnx: DB connection
:type db_name: str
:param db_name: name of the database
"""
cursor = cnx.cursor()
use_database = "USE " + db_name
cursor.execute(use_database)
cursor.close()
[docs] def set_settings(self, cnx):
"""
set database settings
:type cnx: Object
:param cnx: DB connection
"""
cursor = cnx.cursor()
cursor.execute("set global innodb_file_format = BARRACUDA")
cursor.execute("set global innodb_file_format_max = BARRACUDA")
cursor.execute("set global innodb_large_prefix = ON")
cursor.execute("set global character_set_server = utf8")
cursor.execute("set global max_connections = 500")
cursor.close()
[docs] def restart_connection(self, config, logger):
"""
restart DB connection
:type config: dict
:param config: the DB configuration file
:type logger: Object
:param logger: logger
"""
logger.info("restarting connection...")
return mysql.connector.connect(**config)


{{Unreferenced|date=January 2008}} Nshkhar ({{lang-hy|նշխար}} nšxar) is a bread given to churchgoers after the Holy Badarak (Holy Mass) in the Armenian Church.
{{wiktionary|նշխար}}
{{OrientalOrthodoxy-stub}}


We sincerely apologize for the inconvenience. Our site is currently undergoing scheduled maintenance and upgrades, but will return shortly after.
Thank you for your patience!