Informatica IICS-CAI Migration Tools
This Project provides set of IICS Asset Transformation Utilities to automate common transition changes on Design Assets Transformations are mostly implemented using XSLT while providing Ant Scripting to run these transformations in platform independent way.
This Tool set uses the same XSLT Processor as Informatica Cloud Platform (Saxon) to provide consistent output for transformed designs
Main Ant Script
The build.xml ant script provides targets to Transform Expanded Designs in the directory
It has following main targets
Buildfile: /Users/jbrazda/git/icai-migration-tools/build.xml
Main targets:
build.dist Build Migration Utility Distribution File with Sources
help help - describes how to use this script
transform Migrate IPD Exported Archive from one environment to another
Default target: help
Use the transform
target to execute all migration transformations in one step sequentially
The transformation process relies on Externally provided properties or property file which enable/disable individual transformation steps and configure which designs should undergo specific transformation and what will be transformation parameters
Example Transformation Configuration
transformation property file should have an extension transform.properties
as the script can prompt for list of pre configured transformation properties when the file property is not set. Follow example naming convention in the form of PackageName_customer_environment.transform.properties
i.e. AlertServices_iclab_dev.transform.properties
# MOVE Process to Cloud
# ---------------------
# Set this property to Enable/Disable Transform Step
ipd.migrate.processes.to.cloud.enabled=false
# use this property to include specific processes or use Ant pattern expressions.
# migrate.processObjects.enabled=true is set
ipd.migrate.processes.to.cloud.include=*.PROCESS.xml
# you can exclude specified files from tar
ipd.migrate.processes.to.cloud.exclude=*-1.PROCESS.xml
# MOVE Processes to Agent
# -----------------------
# Set this property to Enable/Disable Transform Step
ipd.migrate.processes.to.agent.enabled=true
# specify target Agent Name or Agent Group Name to Migrate to
ipd.migrate.processes.to.agent.name=DEMO
# Use this property to include specific processes or use Ant pattern expressions.
# This property is required when migrate.processObjects.enabled=true is set
# ipd.migrate.processes.to.agent.include=Explore/Tools/Processes/SP-Shell-CMD.PROCESS.xml
ipd.migrate.processes.to.agent.include=**/*NA.PROCESS.xml
# you can exclude specified files from
ipd.migrate.processes.to.agent.exclude=**/SCH-*.PROCESS.xml
# SET Process Tracing Levels
# -----------------------
# Set this property to Enable/Disable Transform Step
ipd.migrate.processes.tracingLevelUpdate.enabled=true
# List of tracing levels to be processed
# this is an example to process all levels when you want to set levels on any selected processes
# ipd.migrate.processes.tracingLevelUpdate.levels=none,terse,normal,verbose
# note that each supported tracing level must have incudes/excludes defined
# Following example setting will set all processes tracing level to None
ipd.migrate.processes.tracingLevelUpdate.levels=verbose
# Includes Excludes for each level
# Use this property to include specific processes to get their Logging levels updated
# Use relative path reference starting from $basedir or use Ant pattern expressions.
# This property is required when migrate.processObjects.enabled=true is set
ipd.migrate.processes.tracingLevelUpdate.none.includes=**/*.PROCESS.xml
ipd.migrate.processes.tracingLevelUpdate.none.excludes=
ipd.migrate.processes.tracingLevelUpdate.terse.includes=nothing
ipd.migrate.processes.tracingLevelUpdate.terse.excludes=**/*.xml
ipd.migrate.processes.tracingLevelUpdate.normal.includes=nothing
ipd.migrate.processes.tracingLevelUpdate.normal.excludes=**/*.xml
ipd.migrate.processes.tracingLevelUpdate.verbose.includes=**/*.PROCESS.xml
ipd.migrate.processes.tracingLevelUpdate.verbose.excludes=nothing
# SET Process Suspend On fault
# -----------------------
# Set this property to Enable/Disable Transform Step
ipd.migrate.processes.tracingLevelUpdate.execute=false
#includes/excludes for processes to enable suspendOnFault
ipd.migrate.processes.suspendOnFault.true.execute=true
ipd.migrate.processes.suspendOnFault.true.includes=**/*.PROCESS.xml
ipd.migrate.processes.suspendOnFault.true.excludes=
#includes/excludes for processes to disable suspendOnFault
ipd.migrate.processes.suspendOnFault.false.execute=true
ipd.migrate.processes.suspendOnFault.false.includes=none
ipd.migrate.processes.suspendOnFault.false.excludes=**/*.PROCESS.xml
#remove Specific tags based on pattern
ipd.migrate.removeTags=false
ipd.tags.remove.include=**/*.xml
ipd.tags.remove.exclude=
ipd.tags.remove.tagMatchPattern=(,)?(GIT:\w+)
Invoking transform from Main Build Script of Your IICS component Build
Following is an example snippet how this transformation can be called from main Build Script
<target name="iics.prepare.package"
unless="${tools.transform.disabled}"
depends="-env.info,-select-release,-load.release.properties,install.tools.transform">
<property name="transform.src.folder" location="${basedir}/target/transform/src"></property>
<property name="transform.temp.folder" location="${basedir}/target/transform/temp"></property>
<echo level="info">Copying Sources from ${iics.extract.dir} to ${transform.src.folder}</echo>
<delete dir="${transform.src.folder}"/>
<copy todir="${transform.src.folder}" overwrite="true" verbose="true">
<fileset dir="${iics.extract.dir}">
</fileset>
</copy>
<ant antfile="${tools.package.transform}" target="transform" inheritall="false" inheritrefs="false">
<property name="iics.release" value="${iics.release.basename}"/>
<property name="transform.source.dir" location="${transform.src.folder}"/>
<property name="transform.target.dir" location="${transform.temp.folder}"/>
<property name="migration.properties.base" value="${iics.external.properties.dir}"/>
</ant>
</target>
Set Process Suspend On Fault Deployment Attributes
"Suspend on Fault" is advanced ICAI Process engine feature used in certain types of process to suspend process execution when process unexpectedly faults. This allows to retry failed invoke or resume process. Read more about [Suspend On Fault][suspend_on_fault] feature. This transformation allows to bulk change this IPD process parameter when necessary, for example in test environments processes are left to fault on unexpected errors but in production they might be set to suspend on Fault which allows longer time to inspect them for root cause of failure or take corrective actions manually and resume process to running state. Successful resuming might also need elevated Persistence level.
Suspend On Fault XSLT
xsl/set_service_suspendOnFault.xsl Invoke Via Ant
Example use in Ant
<target name="test-set-suspendOnFault" depends="-init,-env.info">
<property name="transform.source.dir" location="${basedir}/sample-data/src"/>
<property name="transform.target.dir" location="${basedir}/target/test-set-suspendOnFault"/>
<property name="service.suspendOnFault" value="true"/>
<mkdir dir="${transform.target.dir}"/>
<xslt style="${xsl.scripts.base}/set_service_suspendOnFault.xsl"
basedir="${transform.source.dir}"
destdir="${transform.target.dir}"
includes="**/*.pd.xml,**/*.PROCESS.xml"
extension=".xml"
force="true"
classpathref="tools.classpath">
<factory name="net.sf.saxon.TransformerFactoryImpl"/>
<param name="suspendOnFault" expression="${service.suspendOnFault}"/>
</xslt>
</target>
Set Process Tracing Level Attribute
Select a Tracing Level from this list to determine the corresponding persistence and logging level settings: None, Terse, Normal, Verbose. See the table below for more information. The Tracing Level of a process implemented using Process Designer couples the Persistence and Logging levels that are handled separately by Process Developer.
| Tracing Level | Persistence Level | Logging Level |
|---|---|---|
| None | Brief | None |
| Terse | Brief | Fault |
| Normal | Brief | Execution with Service Data |
| Verbose | Final | Execution with Data |
XSLT Set tracing level
xsl/set_service_tracingLevel.xsl
Example use in Ant
<target name="test-set-tracingLevel" depends="-init">
<property name="transform.source.dir" location="${basedir}/sample-data/src"/>
<property name="transform.target.dir" location="${basedir}/target/test-set-tracingLevel"/>
<property name="service.tracingLevel" value="none"/>
<mkdir dir="${transform.target.dir}"/>
<xslt style="${xsl.scripts.base}/set_service_tracingLevel.xsl"
basedir="${transform.source.dir}"
destdir="${transform.target.dir}"
includes="**/*.pd.xml,**/*.PROCESS.xml"
extension=".xml"
force="true"
classpathref="tools.classpath">
<factory name="net.sf.saxon.TransformerFactoryImpl"/>
<param name="tracingLevel" expression="${service.tracingLevel}"/>
</xslt>
</target>
Setting Run On Parameter of the Process
One of the key parameters of the Process design is "Run On" which defines where process would be deployed on "Publish". You can choose Cloud Server, specific agent or agent group. If your process uses a connector that is event based, make sure that you run the process on the same agent that the connector runs on. This Tool provides to Targets:
Move Process to different agent or group
XSLT
Example Use in Ant
<target name="test-move-to-agent" depends="-init,-env.info">
<property name="transform.source.dir" location="${basedir}/sample-data/src"/>
<property name="transform.target.dir" location="${basedir}/target/test-move-to-agent"/>
<property name="targetLocation" value="TEST_1"/>
<mkdir dir="${transform.target.dir}"/>
<xslt style="${xsl.scripts.base}/move_service_to_agent.xsl"
basedir="${transform.source.dir}"
destdir="${transform.target.dir}"
includes="**/*.pd.xml,**/*.PROCESS.xml"
extension=".xml"
force="true"
classpathref="tools.classpath">
<factory name="net.sf.saxon.TransformerFactoryImpl"/>
<param name="targetLocation" expression="${targetLocation}"/>
</xslt>
</target>
Move Process from Secure Agent or agent deployment group to Cloud
XSLT
Example Use in Ant
<target name="test-move-to-cloud" depends="-init">
<property name="transform.source.dir" location="${basedir}/sample-data/src"/>
<property name="transform.target.dir" location="${basedir}/target/test-move-to-cloud"/>
<mkdir dir="${transform.target.dir}"/>
<xslt style="${xsl.scripts.base}/move_service_to_cloud.xsl"
basedir="${transform.source.dir}"
destdir="${transform.target.dir}"
includes="**/*.pd.xml,**/*.PROCESS.xml"
extension=".xml"
force="true"
classpathref="tools.classpath">
<factory name="net.sf.saxon.TransformerFactoryImpl"/>
</xslt>
</target>
[suspend_on_fault] : https://network.informatica.com/onlinehelp/activevos/current/index.htm#page/bb-av-designer/Suspending_a_Process_on_Uncaught_Faults.html


Hello, I'm Brian. I'm a software developer in Richmond, Virginia. Sometimes, I do other stuff too.
I'm currently a back-end developer @
Mobelux
🙂.
If you have any questions, please reach out - curranbriant@gmail.com


Exterior Contracting, Lnc. is the Twin Cities' resource for All commercial & residential exterior contracting.


Controller attacker overlord. Spawn CLAIM creeps to mass up on a controller and attack all at once This module was contributed by @sarrick and has since been modified
Generated using TypeDoc
Controller attacker overlord. Spawn CLAIM creeps to mass up on a controller and attack all at once This module was contributed by @sarrick and has since been modified


This text should be inside a grey box which should be centered horizontally and touch the top edge of the outer box.


HTML5 & CSS3
Introduction
© 2020/2021 Seavus Education & Development Center
Course overview
- This course is divided into three parts
Part 1
- Introduction to HTML (HyperText Markup Language)
- HTML text layout tags
- Understanding Hyperlinks
- Website Images
- Tables and Table Data
- Forms
Part 2
- Introduction to CSS (Cascade StyleSheet)
- Formating Fonts and Texts with CSS
- CSS and Colors assignments
- Formating Hyperlinks
- Box Model - Paddings, Margins and Borders
- CSS Positioning
Part 3
- Page Layout Strategies
- Site Structure and Navigation
- Validation
- Responsive Design and Media Queries
- CSS Frameworks - Bootstrap
- CSS preprocessors - SASS
Tools you need for this course
- Text Editor (Notepad, Notapad++, Brackets, SublimeText, VS Code, Atom.....)
- Web Browser (Firefox, Chrome, Edge....)
- Yourself on place! :)
- We don't need web servers yet!
HTML
Hyper Text Markup Language
Introduction
- Markup language is a system for annotating a document in a way that is syntactically distinguishable from the text,
meaning when the document is processed for display, the markup language is not shown, and is only used to format the text
- Markup language is a language where you add instructions to tell the computer how to display the text enclosed by those instructions
- HTML is a markup language
Example
< please do this > Hello HTML coders < /end please do this >
Coding Markup
- Before 2000s the only way to write HTML was by hand
- You typed the text and then added the HTML tags
- In 2020 there are different ways of using HTML or CSS, as there are many tools to help you with that
- Tools you might be using in the future:
- Visual Studio or any advanced code editors
- Code generators like: Webflow, Wix, Squarespace, Shopify...
- Design tools like: Figma, Framer, InVision Studio...
Coding Markup (2)
- These kind of tools makes web development easier, but they generate code for you, so when you need to maintain it, it will be hard & obscure to modify things when projects get complex
- Here, you will learn to code, not just drag 'n drop
So...
- In the introduction part, we will get organized for all future exercises with HTML and CSS
- We will also learn the basic HTML document structure and basic understanding of HTML
- All websites use HTML and CSS
- Content management systems (CMS), Blogs, E-commerce platforms and more complex web applications today often use a few more technologies into the mix.
- These technologies are usually used to produce/generate HTML and CSS that is then sent to the browser
What you see
- When you are looking at a website, it is most likely that your browser will be receiving HTML and CSS from the web server that hosts the site
- The web browser intreprets the HTML and CSS code to create the page that you see
- Most websites also include extra multimedia content on top of text such as images, audio, video or animations
HTML5 & CSS3
- Since the web first created there have been several versions of the HTML and CSS - each intended to be an improvement on the previous version
- The latest versions are HTML5 & CSS3
- Because HTML5 & CSS3 build on previous versions of these languages, learning these mean you will also be able to understand the earlier versions of them
HTML Elements
- An HTML document is comprised of elements, which are created using tags.
- An element consists of an opening tag, content and a closing tag
HTML Element Attributes
- Attributes tell us more about the elements
- Attributes define an element's properties
- Consider attributes as adjectives.
- Attributes always go in name/value pairs
- Attributes provide browsers further instructions on how to render the HTML elements
HTML Document Basic Structure
- The first element in an HTML document should be the Document Type Definition (DTD)
- In HTML5 we don't specify the DTD. It's standardized to just writing the following line and the browser understands that we're writing our markup in HTML5
<!DOCTYPE HTML>
HTML Basic Structure -Anatomy
- Main HTML Document structure contains the following elements:
-
-
-

Basic HTML5 Structure
<!DOCTYPE HTML>

<title> Page title here </title>

HTML Comments
- HTML Comments will help you better describe what you create in your HTML Markup
- HTML Comments are useful for you, other team members or those who read the HTML Documents
- HTML Comments can be written using the following way:

Let's try this in a text editor.
Create an HTML File
- Open Visual Studio Code on your computer
- Create a folder for your project
- Open that folder inside Visual Studio Code
- Inside that folder create a new file and save it using a file extension .html after the document's name
- Inside the new HTML document write the basic HTML structure


"""
EntryPoint will be act as interface
medium for acessing the db api (sqlalchemy).
.. warning::
Please install `SQL Database driver` for python
manully `driver link <https://docs.sqlalchemy.org/en/latest/dialects/>`_
Hash Value's
-------------
Hash will be saved on to the database based
on the hash value return by the function which selected
by you.
As the hash function may depends on the system's
property, such as seed values may diffrent from
system to system.
"Is it possible to distribute the db backup for another's system
without any problem?"
It is highly recommend not to make any dependency
based on hash value (such as generation).
.. note::
But using standard libery of python
it possible to get same result on
all system.
.. todo::
[In progress]
Change the class name in the .env to `DistPackage` to
accessing the table which is related to the elasticserach
stores and set bash for the enviroment variable
`ELASTICSEARCH_HOST`
(follow `link <http://elasticsearch-dsl.readthedocs.io/>`_).
"""
import logging
logging.basicConfig(
filename="db.log", filemode="w", format="%(name)s - %(levelname)s - %(message)s"
)
from sqlalchemy.exc import IntegrityError
from sqlalchemy import event
from pntl.db.config import SessionMaker
from pntl.db.utils import import_class, env_str
from pntl.db.model import DuplicateAnomaly
[docs]class EntryPoint:
"""EntryPoint class define as access point
for the class in :py:class:`pntl.db.model` file.
"""
def __init__(self):
self.db = import_class(
f"{env_str('DB_CLASS', default='pntl.db.model.Package')}"
)
self.session = SessionMaker()
self.create_table()
logging.warning("Don't forget to call `save` method")
[docs] def create_table(self):
"""This method create table in
database if it exit then it simply
omittes.
:returns: it create the engine.
:rtype: NoneType
.. note::
* add filter function.
"""
from pntl.db.config import Base, engine
return Base.metadata.create_all(engine)
[docs] def insert(self, tagged=None):
"""Adding the value into the database
with the session of sqlalchme.
:param dicit tagged: tagged value from SENNA
"""
if not isinstance(tagged, dict) and not tagged:
ValueError("given value must `dict` with non empty..")
tagged["words"] = " ".join(tagged["words"])
self.session.add(self.db(**tagged))
def search(self, search_text):
hash_value = self.db.filter(search_text)
temp = self.session.query(self.db).filter(self.db.hash_str == hash_value)
temp_len = temp.count()
if temp_len == 1:
# quick ref: need to add custome dict model.
return temp[0].__dict__
else:
raise DuplicateAnomaly(msg="May be Out-of-box write has been accessed")
def save(self):
try:
self.session.commit()
except IntegrityError as e:
logging.warning(f"{e}")
def roll_back(self):
self.session.rollback()


Plugin Information |
|---|
View Kafka Logs on the plugin site for more information. |
Kafkalogs Plugin
This plugin adds support for streaming build console output to a kafka server and topic.
Using in pipeline workflows
The build wrapper can be used to ship logs to kafka server and topic.
E.g., pipeline job "test" with build 40 ran with the following pipeline script:
Usage
node { wrap([$class: 'KafkaBuildWrapper', kafkaServers: 'host1.example.com:9092,host2.example.com:9092', kafkaTopic: 'buildlogs', metadata:'Other info to send..']) { echo 'Hello World' echo 'Oh Hello' echo 'Finally' } }
Or you can use withKafkaLog
structs syntax:
Usage
node { withKafkaLog(kafkaServers: 'host1.example.com:9092,host2.example.com:9092', kafkaTopic: 'buildlogs', metadata:'Other info to send..') { echo 'Hello World' echo 'Oh Hello' echo 'Finally' } }
Would produce messages on kafka topic "buildlogs":
Output
{"build":40,"job":"test","message":"Hello World","metadata":"Other info to send.."} {"build":40,"job":"test","message":"Oh Hello","metadata":"Other info to send.."} {"build":40,"job":"test","message":"Finally","metadata":"Other info to send.."}
Contribute
Fork me on Github at https://github.com/jenkinsci/kafkalogs-plugin


Cambridge University
In 1814 Charles Babbage married Georgiana Whitmore.
Machine's output was redirected to the input for further equations
Punched cards were used to specify input and the calculations to perform.
Ada Lovelace spent the better part of a year translating Menabrea's paper into English and augmented the paper with notes, assisted with input from Babbage.
“Just like a Jacquard loom can weave flowers and leaves, the analytical machine is able to create algebraic formulas, and in the future - to write music, draw pictures - and tell “science the ways we did not even dream”.”
Mark-I
"Babbage's dream come true"


This extension lets you define specific help commands for users. Each page can be accessed by typing the help command (defined below) and the page name. Page names should be unique. To remove a page, leave the name blank, it will be removed when you next reload the bot. Warning: Server messages can trigger these commands. Don't cause an infinite loop.


Toggle navigation
Custom YouTube Search
Playlist #1
{{list}}
Go!
Pick the order you wish to see the playlist:


We develop bots for fun and for companies. We love artificial intelligence and disruptive technologies.
We build bots with Contact us if you need a bot for your company :)


Qatar and Kuwait Vow to Join US-Led Maritime Coalition, US Official Says
The US has been pushing for creation of a naval coalition to safeguard the Strait of Hormuz, calling on its allies to join in following a series of attacks on vessels in the region earlier this year that were blamed by Washington on Iran.
Qatar and Kuwait have signalled their intention to join the US-led naval coalition in the Persian Gulf, US Army Colonel John Conklin, chief of staff of the coalition, revealed on Monday.
"Qatar and Kuwait have already told us they are going to join, so it is just a matter of time," he said.
The United States and the European Union have been calling for the deployment of naval vessels to the Persian Gulf in the wake of a string of attacks on oil tankers earlier this year.
Washington has pinned blame on Iran for the incidents, but Tehran has vehemently denied the allegation.
US Naval Coalition
However, despite the US calls, few countries have agreed to join the naval coalition known as the International Maritime Security Construct (IMSC).
The US-led force based out of Bahrain currently comprises the United Kingdom, Australia, Albania, Saudi Arabia and the United Arab Emirates as well as Bahrain itself and the United States.
Such US allies like Germany and Japan refused to join the coalition, with Berlin opting for diplomacy when dealing with Tehran and Tokyo preferring to preserve close economic ties with the Middle Eastern nation.
France, meanwhile, is pushing for a European maritime coalition that will be a force unrelated to the one led by Washington. It is expected to come into force early next year, comprising 10 nations both from Europe and outside of it.
Iran has been critical of American mission in the Gulf waters saying that the mission could jeopardise security in the international waterway.


Terms of Service
mridata.org is offered to make available MRI raw datasets used in research. Use of mridata.org, including both the uploading and downloading of data, denotes agreement with the following terms:
- mridata.org is a research data repository for the preservation and making available of research, educational and informational content. Access to mridata.org’s content is open to all.
- Content on this website for research use only, and not for diagnostic or commercial use. Except where otherwise noted, content on this website is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.
- You shall ensure that your content is suitable for open dissemination, and that it complies with these terms and applicable laws, including, but not limited to, privacy, data protection and intellectual property rights.
- You are exclusively responsible for your use of content, including uploading and downloading, and shall hold mridata.org free and harmless in connection with its upload, download and/or use.
- All content is provided “as-is”. You shall respect applicable license conditions. Download and use of content from mridata.org does not transfer any intellectual property rights in the content to you.
- mridata.org reserves the right, without notice, at its sole discretion and without liability, (i) to alter or delete inappropriate content, and (ii) to restrict or remove your access where it considers that use of mridata.org interferes with its operations or violates these Terms of Service or applicable laws.
- These Terms of Service are subject to change by mridata.org at any time and without notice, other than through posting the updated Terms of Service on the mridata.org website.


Struct UnifiedCredentialsOption (2.9.0)
A wrapper to store credentials into an options.
Type Aliases
Type
Alias Of:
std::shared_ptr< Credentials >
A wrapper to store credentials into an options.
std::shared_ptr< Credentials >


Products/Safety/Terms
Lori’s Creations holds 5 million Public Liability Insurance and a fully enhanced disclosure. These documents can be presented at any time for our client’s reassurance.
Lori’s Creations only uses professional quality water-based face paints and cosmetic glitters and glue that are FDA and EU approved.
Our products are specifically designed for face and body and the brands that we use are:
Please note that Lori’s Creations will not be liable for any adverse reaction to paints, glitters, glues or SFX products.
Good hygiene is imperative so we use a clean sponge per face and our brushes are rinsed thoroughly in clean water which is changed frequently between faces.
When Hiring Lori’s Creations please read and understand are policies to make sure your day is the happiest it can be.
Please present your child with a clean face.
We will not paint any one with a skin infection of any kind or sensitive skin
At public events young children in our queue should be accompanied. For private parties, we will assume that parental consent has been obtained for all the children unless stated otherwise by the host of the party. It is of utmost importance that every child is happy and comfortable to be painted so for this reason we will not paint any child against their wishes. Please do not force your child to be painted if they are unsure or if they decide at any point that they no longer wish to be painted the face painter will stop. The experience should be fun for the child.
We will not paint under 2s
Removing Paint/Temp tattoos Removal of paint can be done using water, mild soap and a clean flannel. Baby shampoo is also excellent for removing paints from the face. It is not advised that baby wipes or cleansing lotions are used as this may cause the skin to become irritated. Glitter tattoos are easy to remove with baby oil or any other oil based product. Some paints can leave a slight colour stain to the skin which will usually fade within a day or so, namely Red, Green and Blue. We take every precaution not to get any paints on clothes but should a stain occur we recommend removing by soaking in cold water and using soap thereafter. We cannot be held liable for damaged clothes or property. Grimas Professional casualty makeup. The Grimas range of makeup for wound simulation, bruising and scarring includes various types of artificial blood, dermawax and specialised makeup colours. These professional quality products are used by casualty simulation artists and in horror makeup.
All Grimas products are: designed to meet the strictest standards created with the highest quality ingredients developed using natural preservatives where possible individually labelled with specific ingredients for transparency of information tested by toxicologist/ecotoxicologist and without the use of animals 100% safe to use on skin including children’s skin for face-painting accompanied by a safety information sheet to ensure optimum results produced to create longer-lasting results than high street products


---
layout: main
title: About
permalink: /about/
slogan:
js:
- poisson-disc-sampler
- snap-min
- util
footer-js:
- about
---
{% assign who_list = "" %}
{% assign what_list = "" %}
{% assign first = 0 %}
{% for team in site.teams %}
{% assign team_data = team.title | downcase %}
{% if first != 0 %}
{% assign who_list = who_list | append: ',' %}
{% assign what_list = what_list | append: '|' %}
{% endif %}
{% assign who_list = who_list | append: team.who %}
{% assign what_list = what_list | append: team.content %}
{% for member in site.data[team_data] %}
{% endfor %}
{% endfor %}
We are
{% assign counter = 0 %}
{% assign who_list_parsed = who_list | split: ',' %}
{% assign what_list_parsed = what_list | split: '|' %}
{% for who in who_list_parsed %}
{{ who }}
{{ what_list_parsed[counter] }}
{% assign counter = counter | plus: 1 %}
{% endfor %}
HackGT is a 501(c)(3) nonprofit and student organization consisting of Georgia Tech undergraduate students focused on being the drivers of computer science outreach in the Georgia Tech, state, and national communities. Through throwing large-scale collegiate hackathons of upwards of 1000 people to small-scale hackathons and workshops, our organization aims to spread the spirit of application, innovation, and creativity in computer science education.
By partnering with companies and organizations large and small, we are able to cultivate environments that bring value to the lives of the communities we serve all at no cost to the participants. The motivation behind throwing free events is to allow for any person of any background to have the capacity to take full advantage of a positive experience. Our organization strives to provide a resource-rich environment that ultimately ends up in allowing a participant to learn and apply new skills, connect with other like-minded innovate individuals, and bring any of their ideas to life.
{% assign numPics = 43 %}
{% assign picsPerCol = numPics | divided_by: 4.0 | ceil %}
{% assign picsPerColMinusOne = picsPerCol | minus: 1 %}
{% for num in (0..numPics) %}
{% assign mod = num | modulo: picsPerCol %}
{% if mod == 0 %}
{% endif %}
{% if mod == picsPerColMinusOne %}
{% endif %}
{% endfor %}
{% assign remainder = numPics | modulo: picsPerCol %}
{% if remainder != 0 %}
{% endif %}


| Structs | |
|---|---|
| tlCollisionResult | Class for storing the results of a collision |
| tlMatrix2 | A simple 2D matrix class |
| tlVector2 | A 2d vector class |
| Classes | |
|---|---|
| tlBox | Collision box class |
| tlCircle | Collision circle class, extends _tlBox |
| tlComponent | Abstract component class you can use to add functionality to your game objects |
| tlEffect | The effect class which is the main parent class for emitters. |
| tlEffectsLibrary | Effects library for storing a list of effects and particle images/animations. |
| tlEmitter | Emitter Class. |
| tlGameObject | The base class for all particle objects, can also be used for general game entities |
| tlLine | Collision line class |
| tlParticleManager | The particle manager class for TimelinFX. This class manages all effects you create and is used to update and render all particles. |
| tlPolygon | Collision polygon class |
| tlQuadTree | Quadtree type for managing a quadtree |
| tlShape | A shape class for storing and working with mojo.image |
| Consts | |
|---|---|
| tlBOX_COLLISION | Used as the value representing a Box collision |
| tlCIRCLE_COLLISION | Used as the value representing a Circle collision |
| tlLINE_COLLISION | Used as the value representing a Line collision |
| tlPOLY_COLLISION | Used as the value representing a Polygon collision |
| Functions | |
|---|---|
| AngleDifference | Get the difference between 2 angles. |
| CheckCollision | Check for a collision between 2 Boundaries |
| CheckRayCollision | See if a ray collides with a boundary |
| CopyEffect | Copy an effect |
| CopyEmitter | Makes a copy of the emitter passed to it |
| CountBits | Count the number of bits that are set in a number. |
| CreateBox | Create a new tlBox |
| CreateCircle | Create a tlCircle |
| CreateLine | Create a tlLine |
| CreateParticleManager | a new tlParticleManager. |
| CreatePolygon | Create a tlPolygon |
| DegRad | Convert degrees to radians |
| GetDirection | get the direction from 1 point to another. |
| GetDistance | The distance between 1 point and another. |
| GetDistanceFast | This gets the distance but doesn't perform a square root. |
| GetNearestPowerOf2 | Round up to the nearest power of 2. |
| LineToCircle | Do a Line to Circle collision check |
| LinesCross | Do a Line to Line collision check |
| LoadAnimation | Load a tlShape sequence of images. |
| LoadEffects | Load a TimelineFX Library |
| LoadShape | Load a tlShape |
| NearestPointToCircle | Return the nearest point on a line to the center of a circle |
| PreventOverlap | Prevent boundaries from overlapping, based on a tlCollisionResult |
| Round | rounds a number to the nearest int. |
| SetUpdateFrequency | Set the update frequency of the particles |
| TweenValues | Interpolate between 2 values. |
| WithinFieldOfView | Check if a point is with a field of view |


-
1
class Array
-
-
# Patching Array to add this method which will perform a reduce and sum up
-
# all integer values of each card in the Array. Useful for using on splat
-
# parameters instead of having to covert them to a CardDeck::Hand first.
-
1
def raw_integer_value
-
189
self.reduce(0) {|sum, card| sum + card.raw_integer_value }
-
end
-
-
end
-
1
require "active_support/all"
-
1
require "array_patch"
-
-
1
require "card_decks/version"
-
1
require "card_decks/card"
-
1
require "card_decks/decks/enumerable"
-
1
require "card_decks/decks/values"
-
1
require "card_decks/decks/configurable"
-
1
require "card_decks/hand"
-
1
require "card_decks/deck"
-
-
1
module CardDecks
-
# CardDecks is an API for building any digital card game.
-
end
-
1
module CardDecks
-
1
class Card
-
1
include Comparable
-
-
1
attr_accessor :deck, :suit, :value, :integer_value, :wild
-
1
alias_method :raw_integer_value, :integer_value
-
-
1
SPADE = "\u2664"
-
1
CLUB = "\u2667"
-
1
HEART = "\u2661"
-
1
DIAMOND = "\u2662"
-
-
# Creates a new card instance. Must have a reference back to the deck it belongs.
-
# Automatically figures out its integer value if it is not passed in.
-
#
-
# @param [Hash] data Metadata hash containing card information.
-
1
def initialize data = {}
-
3146
@deck = data[:deck]
-
3146
raise 'Cannot create a card without the reference to the deck' unless @deck
-
3145
@suit = data[:suit]
-
3145
@value = data[:value]
-
3145
@integer_value = data[:integer_value] || @deck.face_values[@value] ||
-
(@value == :joker && @deck.joker_value) || raise("Cannot find integer value for #{@value}")
-
3196
@wild = data[:wild] || (@deck.wild_config[:blocks] || []).any? {|block| block.call(self) }
-
end
-
-
# Creates a joker for the given deck. Uses the deck.joker_value configuration item
-
# to set its joker value.
-
#
-
# @return CardDecks::Card
-
1
def self.joker(deck)
-
4
new(deck: deck, suit: :joker, value: :joker, integer_value: deck.joker_value)
-
end
-
-
# Reports if this card is wild or not.
-
#
-
# @return [true, false]
-
1
def wild?
-
395
wild
-
end
-
-
# Makes this card flagged as wild. Wild is used as just metadata about the
-
# card. It can be used to write custom card combination rules.
-
1
def wild!
-
12
@wild = true
-
end
-
-
# Checks if suits are considered wild by checking with the deck instance.
-
1
def suits_wild?
-
52
@deck.suits_wild?
-
end
-
-
# Fetches the value of the suit for card value computation if it is necessary
-
# to differentiate between suits with value. This can be used as a multiplier or
-
# to add to the final integer_value to make certain suits win over others in
-
# certain combinations.
-
#
-
# @return [Fixnum] Configured value for this suit.
-
1
def suit_value
-
1840
deck.suits[suit]
-
end
-
-
# Checks if this card is considered a "face card". This helper is available just
-
# for help writing combinations.
-
1
def face?
-
38
deck.face_cards.include?(self.value)
-
end
-
-
# Mathematical operations
-
1
[:+, :*, :/, :-, :%, :**].each do |op|
-
6
define_method op do |other_card|
-
43
if other_card.is_a?(CardDecks::Card)
-
8
self.integer_value.send(op, other_card.integer_value)
-
else
-
35
self.integer_value.send(op, other_card)
-
end
-
end
-
end
-
-
# Comparison between cards. The integer value as well as the suit_value is used
-
# in comparing between cards. In a tie between integer_value, suit value will
-
# be the determining factor.
-
#
-
# @return [Fixnum]
-
1
def <=>(other_card)
-
920
[integer_value, suit_value] <=> [other_card.integer_value, suit_value]
-
end
-
-
# Pretty prints the card for better display to the user. Uses unicode values
-
# to display spades, clubs, hearts and diamonds.
-
1
def inspect
-
11
const = self.class.const_defined?(self.suit.to_s.singularize.upcase) ? self.class.const_get(self.suit.to_s.singularize.upcase) : "?"
-
11
"#{const} #{self.value.to_s.titleize}"
-
end
-
-
end
-
end
-
1
module CardDecks
-
1
class Deck
-
1
include CardDecks::Decks::Values
-
1
include CardDecks::Decks::Configurable
-
1
include CardDecks::Decks::Enumerable
-
-
1
attr_accessor :used, :inhand, :hands
-
-
# Creates a new deck that has been preconfigured via class methods or is
-
# just a basic 52 card deck already shuffled. Jokers are disabled by default.
-
# To add them in, simply call `with_jokers!` to include them in the current deck.
-
1
def initialize
-
59
@cards = full_deck.shuffle
-
59
@used = []
-
59
@inhand = []
-
59
@hands = []
-
end
-
-
# Adds into the current list of cards the number of jokers passed in.
-
#
-
# @param [Fixnum] amount Amount of jokers to include in the deck, default 2.
-
1
def with_jokers!(amount = 2)
-
2
amount.times do
-
4
@cards << CardDecks::Card.joker(self)
-
end
-
end
-
-
1
@@anonymous_player_count = 0
-
# Deals any number of cards out of the deck making sure to track them properly.
-
#
-
# @param [Fixnum] amount Amount of cards to deal from the deck, default 5.
-
# @param [String] player_name The name of the player to attach the hand to.
-
# @return CardDecks::Hand
-
1
def deal amount = 5, player_name = "Player #{@@anonymous_player_count += 1}"
-
21
cards = amount.times.map do
-
195
card = take(1).first
-
195
unless card
-
14
reset_unused!
-
14
card = take(1).first
-
end
-
195
@inhand << card
-
195
card
-
end
-
21
hand = CardDecks::Hand.new *cards, deck: self, name: player_name
-
21
@hands << hand
-
21
hand
-
end
-
-
# Returns any number of hands to the deck. These cards are added into the
-
# used pile and will not be reused until after the deck is fully emptied.
-
#
-
# @param [CardDecks::Hand, Array<CardDecks::Card>, CardDecks::Card] hands List of cards or hands to return
-
1
def return *hands
-
10
hands.each do |hand_or_cards|
-
15
cards = (hand_or_cards.is_a?(CardDecks::Hand) ? hand_or_cards.cards : Array.wrap(hand_or_cards))
-
15
@used += cards
-
100
@inhand.delete_if {|c| cards.include?(c) }
-
137
@hands.each {|h| h.cards.delete_if {|c| cards.include?(c) } }
-
end
-
end
-
-
# Resets the deck back to its new state. All hands are discarded, the used pile
-
# is emptied and added back to the card list.
-
1
def reset!
-
1
@hands.each(&:discard!)
-
1
@cards += @used
-
1
@used = []
-
end
-
-
# Resets just the unused pile back to the card list. Does not discard all hands.
-
1
def reset_unused!
-
14
@cards += @used
-
14
@used = []
-
end
-
-
# Determines a winner by sorting the hands by the provided block
-
#
-
# @param [Proc] block Block of custom sort function between hands.
-
1
def winner &block
-
1
if block_given?
-
1
@hands.sort(&block)
-
end
-
end
-
-
end
-
end
-
1
module CardDecks
-
1
module Decks
-
1
module Configurable
-
1
include CardDecks::Decks::Values
-
1
extend ActiveSupport::Concern
-
-
# Makes a particular card or card for any suit wild on this deck instance.
-
#
-
# @param value [Symbol] Symbol of card (:ace, :two, ... :queen, :king)
-
# @param suits [*Symbol] Symbols of suits to apply to (defaults to all)
-
# @param block [Proc] Custom block allows identifying wilds by hand.
-
1
def wild value = nil, *suits, &block
-
4
@wilds ||= {}
-
4
if block_given?
-
1
@wilds[:blocks] ||= []
-
1
@wilds[:blocks] << block
-
else
-
3
if value == :joker
-
1
@wilds[:joker] = true
-
else
-
2
suits = self.class.suits.keys if suits.empty?
-
2
@wilds[value] = suits
-
end
-
end
-
4
update_wilds!
-
end
-
-
# Updates the current deck for any changes in the wild configuration.
-
# Automatically called after wild configuration on the deck instance. Needs
-
# to be called manually after changes to the class configuration.
-
1
def update_wilds!
-
4
@wilds.each do |value, suits|
-
4
(@cards || []).select do |card|
-
210
if value == :blocks
-
52
blocks = suits
-
104
blocks.any? {|b| b.call(card) }
-
else
-
158
card.value == value && (suits == true || suits.include?(card.suit))
-
end
-
4
end.each(&:wild!)
-
end
-
end
-
-
# Returns the cards which are wild in this deck.
-
#
-
# @return [Array<CardDecks::Card>]
-
1
def wilds
-
6
(@cards || []).select(&:wild?)
-
end
-
-
# Wild configuration merged with class' wild configuration.
-
#
-
# @return [Hash]
-
1
def wild_config
-
3203
(@wilds ||= {}).merge(self.class.wild_config)
-
end
-
-
# Makes suits wild
-
1
def suits_wild!
-
2
@suits_wild = true
-
end
-
-
# Checks if suits are wild
-
1
def suits_wild?
-
53
@suits_wild.nil? ? self.class.suits_wild? : @suits_wild
-
end
-
-
# Add a combination to be checked when evaluating hands. These will boost
-
# scores of hands and are the basis for creating a game by putting all your
-
# game rules in here.
-
1
def add_combination &block
-
2
@combinations ||= []
-
2
@combinations << block
-
end
-
-
1
attr_writer :combinations
-
# Gets all combination Proc objects.
-
#
-
# @return [Array<Proc>]
-
1
def combinations
-
380
(@combinations ||= []) + self.class.combinations
-
end
-
-
1
module ClassMethods
-
-
1
attr_accessor :wilds
-
-
# Class configuration for setting wild values. Makes a particular card or card for any suit wild on this deck instance.
-
#
-
# @param value [Symbol] Symbol of card (:ace, :two, ... :queen, :king)
-
# @param suits [*Symbol] Symbols of suits to apply to (defaults to all)
-
# @param block [Proc] Custom block allows identifying wilds by hand.
-
1
def wild value = nil, *suits, &block
-
18
@wilds ||= {}
-
18
if block_given?
-
2
@wilds[:blocks] ||= []
-
2
@wilds[:blocks] << block
-
else
-
16
if value == :joker
-
1
@wilds[:joker] = true
-
else
-
15
suits = self.suits.keys if suits.empty?
-
15
@wilds[value] = suits
-
end
-
end
-
end
-
-
# Class configuration for wild values.
-
#
-
# @return [Hash]
-
1
def wild_config
-
3203
@wilds ||= {}
-
end
-
-
# Class configuration for suits being wild
-
1
def suits_wild!
-
1
@suits_wild = true
-
end
-
-
# Returns class configuration for suits build wild
-
1
def suits_wild?
-
1
@suits_wild
-
end
-
-
# Adds a combination to the list of combinations for this class.
-
#
-
# @param method [Symbol, String] Method name to call on the instance to run the combination
-
1
def add_combination method = nil, &block
-
5
@combinations ||= []
-
5
if block_given?
-
2
@combinations << block
-
3
elsif method
-
3
@combinations << method.to_sym
-
end
-
end
-
-
1
attr_writer :combinations
-
-
# Gets class level combination Proc objects.
-
#
-
# @return [Array<Proc>]
-
1
def combinations
-
382
@combinations ||= []
-
end
-
-
end
-
-
end
-
end
-
end
-
1
module CardDecks
-
1
module Decks
-
1
module Enumerable
-
1
include ::Enumerable
-
-
1
attr_accessor :cards
-
-
# Allows insertion of new items into the list.
-
#
-
# @param item [CardDecks::Card] Card to push
-
1
def << item
-
@cards << item
-
self
-
end
-
-
# Fetches card at index
-
#
-
# @param index [Fixnum] Index to fetch card at
-
1
def [] index
-
1
@cards[index]
-
end
-
-
# Takes a certain number (or range) of cards from the deck. Additionally,
-
# A hash can be provided to name specific cards to take those from the
-
# deck. Take is useful for temporarily or permanently removing certain
-
# cards from the deck. For example, if a game doesn't use Aces. Cards
-
# taken with take will not be tracked and must be manually inserted back
-
# into the deck.
-
# # Single suit
-
# {ace: :spades}
-
# # Multiple suits
-
# {king: [:hearts, :diamonds]}
-
#
-
# @param index_or_range [Fixnum, Range, Hash]
-
# @return [CardDecks::Card, Array<CardDecks::Card>]
-
1
def take index_or_range
-
219
if index_or_range.is_a?(Fixnum) || index_or_range.is_a?(Range)
-
214
@cards.pop(index_or_range)
-
5
elsif index_or_range.is_a?(Hash)
-
index_or_range.map do |value, suits|
-
314
cards = @cards.select {|c| c.value == value && Array.wrap(suits).include?(c.suit) }
-
19
cards.each {|c| @cards.delete(c) }
-
6
cards
-
5
end.flatten
-
end
-
end
-
-
# Returns the count of cards in the deck.
-
#
-
# @return [Fixnum]
-
1
def size
-
13
@cards.size
-
end
-
-
# Allows iteration on the deck object, looping through each card.
-
#
-
# @return [Enumerable] When no block is given.
-
1
def each
-
4
if block_given?
-
110
@cards.each {|c| yield(c) }
-
else
-
Enumerator.new(self, :each)
-
end
-
end
-
end
-
end
-
end
-
1
module CardDecks
-
1
module Decks
-
1
module Values
-
1
extend ActiveSupport::Concern
-
-
1
DEFAULT_SUITS = {spades: 4, clubs: 3, hearts: 2, diamonds: 1}
-
-
1
DEFAULT_FACE_VALUES = {
-
ace: 1,
-
two: 2,
-
three: 3,
-
four: 4,
-
five: 5,
-
six: 6,
-
seven: 7,
-
eight: 8,
-
nine: 9,
-
ten: 10,
-
jack: 11,
-
queen: 12,
-
king: 13
-
}
-
-
1
DEFAULT_FACE_CARDS = [:jack, :queen, :king]
-
-
1
DEFAULT_JOKER_COUNT = 0
-
1
DEFAULT_JOKER_VALUE = 14
-
-
# Configured suit hash for this deck.
-
#
-
# @see #CardDecks::Decks::Values::DEFAULT_SUITS
-
# @return [Hash]
-
1
def suits
-
1900
@suits ||= self.class.suits
-
end
-
-
# Configured face_cards list for this deck.
-
#
-
# @see #CardDecks::Decks::Values::DEFAULT_FACE_CARDS
-
# @return [Array<Symbol>]
-
1
def face_cards
-
38
@face_cards ||= self.class.face_cards
-
end
-
-
# Configured face values for each card in this deck.
-
#
-
# @see #CardDecks::Decks::Values::DEFAULT_FACE_VALUES
-
# @return [Hash]
-
1
def face_values
-
3201
@face_values ||= self.class.face_values
-
end
-
-
1
attr_writer :joker_value
-
-
# Configured joker value for this deck instance.
-
#
-
# @return [Fixnum] Joker's value
-
1
def joker_value
-
4
@joker_value ||= self.class.joker_value
-
end
-
-
# Builds a full deck without shuffling.
-
1
def full_deck
-
60
wild_config = respond_to?(:wild_config) ? self.wild_config : {}
-
suits.keys.product(face_values.keys).map do |card_data|
-
3120
wild = (wild_config[card_data.second] || []).include?(card_data.first)
-
3120
CardDecks::Card.new deck: self, suit: card_data.first, value: card_data.second, wild: wild
-
end +
-
60
(self.class.joker_count.times.map do
-
CardDecks::Card.new deck: self, suit: :joker, value: :joker, wild: wild_config.has_key?(:joker)
-
60
end)
-
end
-
-
1
module ClassMethods
-
-
# Includes jokers in instances created
-
1
def with_jokers!(amount = 2)
-
14
@joker_count = amount
-
end
-
-
# Fetches the current configured joker count.
-
1
def joker_count
-
60
@joker_count ||= DEFAULT_JOKER_COUNT
-
end
-
-
1
attr_writer :joker_value
-
# Fetches the current configured joker value for newly instantiated decks.
-
1
def joker_value
-
2
@joker_value ||= DEFAULT_JOKER_VALUE
-
end
-
-
# Fetches the suit hash.
-
#
-
# @see #CardDecks::Decks::Values::DEFAULT_SUITS
-
# @return [Hash]
-
1
def suits
-
61
@suits ||= DEFAULT_SUITS
-
end
-
-
# Fetches the face_cards list.
-
#
-
# @see #CardDecks::Decks::Values::DEFAULT_FACE_CARDS
-
# @return [Array<Symbol>]
-
1
def face_cards
-
8
@face_cards ||= DEFAULT_FACE_CARDS
-
end
-
-
# Fetches the face_values hash.
-
#
-
# @see #CardDecks::Decks::Values::DEFAULT_FACE_VALUES
-
# @return [Hash]
-
1
def face_values
-
59
@face_values ||= DEFAULT_FACE_VALUES
-
end
-
-
end
-
-
end
-
end
-
end
-
1
module CardDecks
-
1
class Hand
-
1
include CardDecks::Decks::Enumerable
-
1
include CardDecks::Decks::Values
-
-
1
attr_accessor :cards, :deck, :name
-
-
# Creates an enumerable list of cards which are a subset of cards pulled from
-
# the deck instance. The deck object is expected as options attached to the
-
# end of the splat of cards.
-
#
-
# @param cards [*CardDecks::Card] A splat array of cards
-
1
def initialize *cards
-
33
metadata = cards.extract_options!
-
33
@deck = metadata[:deck]
-
33
raise 'Cannot create a hand without the reference to the deck' unless @deck
-
32
@name = metadata[:name]
-
32
@cards = (cards || []).delete_if(&:nil?)
-
32
@cards.each do |card|
-
221
raise "All cards must have come from the same deck passed in." unless card.deck == @deck
-
end
-
end
-
-
# Returns all the cards in this hand to the deck. This method is called by the
-
# deck when reset! is called. After calling, the cards in this hand are all cleared.
-
1
def discard!
-
7
deck.return(self)
-
7
self.cards = []
-
end
-
-
# Computes the highest possible integer value for this hand based on all deck rules
-
# and returns that value. Note that all unique card combinations are tried and so
-
# for a large number of cards with lots of rule sets this call could become heavy.
-
#
-
# @return Fixnum
-
1
def integer_value
-
78
all_combinations = (1..@cards.size).map {|int| @cards.combination(int).to_a }.flatten(1)
-
14
combo_points = all_combinations.map do |combination|
-
(deck.combinations.map do |c|
-
99
c.is_a?(Symbol) ? deck.send(c, *combination) : c.call(*combination)
-
378
end.delete_if(&:nil?).max)
-
end.max || 0
-
14
raw_points = @cards.raw_integer_value
-
14
if combo_points > raw_points
-
3
combo_points
-
else
-
11
raw_points
-
end
-
end
-
-
# Pretty prints the hand for better legibility
-
#
-
# @return String
-
1
def inspect
-
1
"#<#{self.class.name} @name=\"#{name}\", @cards=#{cards.inspect}>"
-
end
-
-
end
-
end
-
1
require 'spec_helper'
-
-
1
class MyClassConfiguredDeck < CardDecks::Deck; end
-
1
class MyInstanceConfiguredDeck < CardDecks::Deck; end
-
-
1
describe CardDecks::Decks::Configurable do
-
-
1
context 'class object configuration' do
-
-
1
before :each do
-
13
MyClassConfiguredDeck.wilds = {}
-
13
MyClassConfiguredDeck.with_jokers!(0)
-
13
MyClassConfiguredDeck.combinations = []
-
13
MyClassConfiguredDeck.wild :ace, :spades
-
end
-
-
1
it 'can access wilds' do
-
1
MyClassConfiguredDeck.wilds.should == {ace: [:spades]}
-
end
-
-
1
it 'setting value and suit' do
-
1
MyClassConfiguredDeck.wild :queen, :diamonds
-
1
MyClassConfiguredDeck.wilds.should == {ace: [:spades], queen: [:diamonds]}
-
end
-
-
1
it 'setting just value' do
-
1
MyClassConfiguredDeck.wild :jack
-
1
MyClassConfiguredDeck.wilds.should == {ace: [:spades], jack: [:spades, :clubs, :hearts, :diamonds]}
-
end
-
-
1
it 'setting a joker' do
-
1
MyClassConfiguredDeck.with_jokers!
-
1
MyClassConfiguredDeck.wild :joker
-
1
MyClassConfiguredDeck.wilds.should == {ace: [:spades], joker: true}
-
end
-
-
1
it 'setting suits wild' do
-
1
MyClassConfiguredDeck.suits_wild!
-
1
MyClassConfiguredDeck.suits_wild?.should be true
-
end
-
-
1
it 'setting wild blocks' do
-
1
block = Proc.new do |card|
-
card.integer_value > 12
-
end
-
1
MyClassConfiguredDeck.wild &block
-
1
MyClassConfiguredDeck.wilds.should == {ace: [:spades], blocks: [block]}
-
end
-
-
1
it 'wild blocks makes the correct cards wild' do
-
1
MyClassConfiguredDeck.wild do |card|
-
51
card.integer_value > 12
-
end
-
1
deck = MyClassConfiguredDeck.new
-
5
deck.wilds.map {|c| "#{c.value} of #{c.suit}" }.sort.should == [
-
"ace of spades", "king of clubs", "king of diamonds", "king of hearts", "king of spades"
-
1
]
-
end
-
-
1
it 'can add and fetch combinations' do
-
1
combination = Proc.new do |*cards|
-
if cards.map(&:integer_value).uniq.size == 1
-
# Return the number of matches times the total value
-
cards.reduce(&:+) * cards.size
-
end
-
end
-
1
MyClassConfiguredDeck.add_combination &combination
-
1
MyClassConfiguredDeck.combinations.should == [combination]
-
end
-
-
1
it 'adds card combinations to increase their point value' do
-
1
MyClassConfiguredDeck.add_combination do |*cards|
-
# If cards all have the same integer value then multiply their sum
-
# by the number of cards. This is a basic pairs, tripples, ect combo
-
3
if cards.map(&:integer_value).uniq.size == 1
-
3
cards.reduce(&:+) * cards.size
-
end
-
end
-
1
deck = MyClassConfiguredDeck.new
-
1
cards = deck.take(ace: [:spades,:diamonds])
-
1
hand = CardDecks::Hand.new *cards, deck: deck
-
# Two aces at value 1 each should be doubled to 4
-
1
hand.integer_value.should == 4
-
end
-
-
1
context "using &:method in a class definition" do
-
-
1
class MyClassConfiguredDeckWithAmpersandTest < CardDecks::Deck
-
-
4
[:rule_1, :rule_2, :rule_3].each {|rule| add_combination(rule) }
-
-
# Highest card is worth twice as much
-
1
def rule_1 *cards
-
31
cards.max + cards.raw_integer_value
-
end
-
-
# A wild card in your hand doubles
-
# the value of your hand
-
1
def rule_2 *cards
-
31
if cards.any?(&:wild?)
-
cards.raw_integer_value * 2
-
end
-
end
-
-
# All cards are face cards adds 50 points
-
1
def rule_3 *cards
-
31
if cards.all?(&:face?)
-
puts "Upping the anti! #{cards.map(&:face?)}"
-
cards.raw_integer_value + 50
-
end
-
end
-
-
end
-
-
5
let (:ampersand_deck) { MyClassConfiguredDeckWithAmpersandTest.new }
-
-
1
it 'adds the combinations' do
-
1
MyClassConfiguredDeckWithAmpersandTest.combinations.size.should == 3
-
1
ampersand_deck.combinations.size.should == 3
-
end
-
-
1
it 'uses rule 1' do
-
1
cards = ampersand_deck.take(ten: :spades, ace: [:spades, :diamonds, :hearts, :clubs])
-
1
hand = CardDecks::Hand.new *cards, deck: ampersand_deck
-
# Ten = 10 * 2 = 20 + 4 Aces = 24
-
1
hand.integer_value.should == 24
-
end
-
-
1
it 'uses rule 2' do
-
1
cards = ampersand_deck.take(ace: [:spades,:diamonds])
-
1
hand = CardDecks::Hand.new *cards, deck: ampersand_deck
-
end
-
-
1
it 'uses rule 3' do
-
1
cards = ampersand_deck.take(ace: [:spades,:diamonds])
-
1
hand = CardDecks::Hand.new *cards, deck: ampersand_deck
-
end
-
-
end
-
-
end
-
-
1
context 'instance object configuration' do
-
-
10
let(:deck) { MyInstanceConfiguredDeck.new }
-
-
1
it 'can access wilds' do
-
1
deck.wilds.should == []
-
end
-
-
1
it 'setting value and suit' do
-
1
deck.wild :ace, :diamonds
-
2
deck.wilds.map {|c| "#{c.value} of #{c.suit}" }.sort.should == ["ace of diamonds"]
-
end
-
-
1
it 'setting just value' do
-
1
deck.wild :king
-
4
deck.wilds.map {|c| "#{c.value} of #{c.suit}" }.sort.should == [
-
"king of clubs", "king of diamonds", "king of hearts", "king of spades"
-
1
]
-
end
-
-
1
it 'setting a joker' do
-
1
deck.with_jokers!
-
1
deck.wild :joker
-
2
deck.wilds.map {|c| "#{c.value} of #{c.suit}" }.sort.should == [
-
"joker of joker", "joker of joker"
-
1
]
-
end
-
-
1
it 'setting suits wild' do
-
1
deck.suits_wild!
-
1
deck.suits_wild?.should be true
-
end
-
-
1
it 'suits wild makes all cards have wild suits' do
-
1
deck.suits_wild!
-
53
deck.cards.all? {|card| card.suits_wild? }
-
end
-
-
1
it 'setting wild blocks' do
-
1
block = Proc.new do |card|
-
52
card.integer_value > 12
-
end
-
1
deck.wild &block
-
4
deck.wilds.map {|c| "#{c.value} of #{c.suit}" }.sort.should == [
-
"king of clubs", "king of diamonds", "king of hearts", "king of spades"
-
1
]
-
end
-
-
1
it 'can add and fetch combinations' do
-
1
combination = Proc.new do |*cards|
-
if cards.map(&:integer_value).uniq!.size == 1
-
# Return the number of matches times the total value
-
cards.reduce(&:+) * cards.size
-
end
-
end
-
1
deck.add_combination &combination
-
1
deck.combinations.should == [combination]
-
end
-
-
1
it 'adds card combinations to increase their point value' do
-
1
deck.add_combination do |*cards|
-
# If cards all have the same integer value then multiply their sum
-
# by the number of cards. This is a basic pairs, tripples, ect combo
-
3
if cards.map(&:integer_value).uniq.size == 1
-
3
cards.reduce(&:+) * cards.size
-
end
-
end
-
1
cards = deck.take(ace: [:spades,:diamonds])
-
1
hand = CardDecks::Hand.new *cards, deck: deck
-
# Two aces at value 1 each should be doubled to 4
-
1
hand.integer_value.should == 4
-
end
-
-
end
-
-
end
-
1
require 'spec_helper'
-
-
1
describe CardDecks::Decks::Values do
-
-
5
let(:deck) { CardDecks::Deck.new }
-
-
1
describe 'card values' do
-
-
1
it 'creates a full deck of cards' do
-
1
deck.full_deck.size.should == 52
-
end
-
-
1
it 'creates a shuffled card deck with new' do
-
1
deck.first.should_not == CardDecks::Deck.new.first
-
end
-
-
1
it 'creates a deck with only four suits' do
-
53
deck.reduce([]) {|suits, c| suits << c.suit }.uniq.sort.should == [:clubs, :diamonds, :hearts, :spades]
-
end
-
-
1
it 'creates a deck with only one of each kind' do
-
52
deck.reduce([]) {|values, c| values << c.value }.uniq.sort.should == [
-
:ace, :eight, :five, :four, :jack, :king, :nine, :queen, :seven, :six, :ten, :three, :two
-
1
]
-
end
-
-
end
-
-
end
-
1
require 'spec_helper'
-
1
require 'ostruct'
-
-
1
describe CardDecks::Hand do
-
-
7
let(:deck) { CardDecks::Deck.new }
-
6
let(:cards) { deck.take(5) }
-
6
let(:hand) { CardDecks::Hand.new *cards, deck: deck, name: "Joe" }
-
-
1
it 'is enumerable' do
-
1
CardDecks::Hand.included_modules.should include(CardDecks::Decks::Enumerable)
-
end
-
-
1
it 'includes deck values' do
-
1
CardDecks::Hand.included_modules.should include(CardDecks::Decks::Values)
-
end
-
-
1
it 'has a name field' do
-
1
hand.name.should == "Joe"
-
end
-
-
1
it 'has a list of cards' do
-
1
hand.cards.should == cards
-
end
-
-
1
it 'can be discarded' do
-
1
cards # Call to activate take
-
1
hand.discard!
-
1
hand.cards.should be_empty
-
end
-
-
1
it 'should raise an exception when creating a hand without a reference to the deck' do
-
2
expect { CardDecks::Hand.new }.to raise_exception
-
end
-
-
1
it 'should raise an exception when creating a hand cards from a different deck' do
-
1
d = CardDecks::Deck.new
-
1
c = d[0..5]
-
2
expect { CardDecks::Hand.new *c, deck: deck }.to raise_exception
-
end
-
-
1
it 'should have an integer value' do
-
1
hand.integer_value.should be_a(Fixnum)
-
1
hand.integer_value.should_not == 0
-
end
-
-
1
it 'has a pretty inspect' do
-
1
hand.inspect.should == "#<CardDecks::Hand @name=\"#{hand.name}\", @cards=#{hand.cards.inspect}>"
-
end
-
-
end
-
1
require 'spec_helper'
-
-
1
describe CardDecks do
-
-
1
it 'is a module' do
-
1
should be_a(Module)
-
end
-
-
end


{{round}}
Songs Sung Report for those in Draw for Next Round
{% for appearance in appearances %}
- Draw {{appearance.draw}}: {{appearance.competitor.group.name}}
{% for sung in appearance.sungs %}
- {{sung}}
{% endfor %}
{% empty %}
(No Competitors in Draw for Next Round)
{% endfor %}


Files by Google can now play local files on a nearby Chromecast
by Ben SchoonIn the age of streaming services and cloud backups, it’s not all that often we have to play local files off of a device. However, Google is making that a lot easier with the latest update to its file manager app. Files by Google can now play your locally stored media on a Chromecast display.
Files by Google version 1.0.27 is available now on the Google Play Store and it finally delivers the long-awaited support for Chromecast to all users. Previously the feature was available for beta users.
The feature works with all types of media that you’d want to display on a Chromecast including videos, photos, and audio too. Notably, the only way to get the Chromecast icon to show up is to go into a section of the app that contains media. It won’t appear on the app’s main screen for instance.
Once content is playing you’ll get a full-screen interface showing what media is playing. In this interface – at least if you’re displaying pictures – a swipe from the left or right will change the image on-screen. In our brief testing of the feature, it seems to work pretty well although sometimes it rotates images or takes a moment to load. Notably, it even works on smart displays and Android TV devices too.
You should be able to use this functionality as soon as you update the app, but closing it and re-opening seems to trigger the feature if it doesn’t immediately appear.
More on Files by Google:
- Files by Google beta tests Chromecast support for videos and photos
- Files by Google gets dark mode and better media controls for 100 million users
FTC: We use income earning auto affiliate links. More.


Hello! This is Hrishikesh Bhagwat. I am a Third Year student in VJTI, Mumbai. I am currently pursuing my Bachelor's degree in Electronics Engineering. I have a keen interest in Data Science, Web Development, Mobile Application Development and Competitive Programming. I have worked with various libraries and frameworks in these domains while working on various projects.
I am currently pusuing B.Tech in Electronics in VJTI, Mumbai. Though an Electronics Engineering student I have a keen interest in Data Science and Computer Science subjects.
I completed my High School Certificate Examination (HSC, Maharashtra Board) here. I secured 88.92% in my board exams.
I completed my schooling here. I secured 95.5% in my ICSE Examinations in 2016.
I have worked with C, C++, Python, Javascript, Kotlin and Dart.
I have worked with html, css, bootstrap, javascript and React.js. I have worked with GraphQL API.
I have built backends in Node.js, Express.js, Flask, Django and FASTAPI. I have built GraphQL servers.
I have built mobile applications in Java and Kotlin for android OS and Flutter for android as well as iOS.
I have worked on various Data Science projects in Python and Julia.
I have worked with teams and have displayed strong communication, leadership and communication skills.


"s"
for speaker notes
Any sunday-review
issues?
Any other Questions?
(~30 min)
What can you expect to cover in class today?
The fastest way to fail.
HTTP response status codes indicate whether a specific HTTP request has been successfully completed.
Responses are grouped in five classes:
Submitting forms, uploading pictures, viewing pictures uploaded by other users. All forms of Dynamic Data being and the things we can do with them.
This is what gives true power and interactivity to the Internet.
A way for users to modify the backend by POSTing data. POST is used to send data to a server to create/update a resource. The data sent to the server with POST is stored in the request body of the HTTP request.
const express = require('express')
const bodyParser = require('body-parser')
const app = express()
app.use(express.urlencoded({extended:true}))
...
app.post('/endpoint', function(req, res) {
const body = req.body
})
Memory is volatile, disk is forever.
const items = []
...
app.post(`/endpoint`, function(req, res) {
const item = req.body.item
items.push(item)
})
writeFileSync('/items.txt', '')
...
app.post(`/endpoint`, async function(req, res) {
const item = req.body.item
await appendFileAsync('/items.txt', `${item}\n`)
})
What is Multi-tier architecture?
A middleware performs some specific function on the HTTP request or response at a specific stage in the HTTP pipeline before or after the user defined controller.
Absolutely everything!
"s"
for speaker notes


FC Salzburg's Erling Haaland 'living the dream' ahead of Liverpool clash
by Mark OgdenSALZBURG, Austria -- Erling Haaland has said he is "living the dream" as he attempts to score in a sixth successive Champions League game for FC Salzburg and knock European champions Liverpool out of the competition.
Haaland, 19, has become one of the hottest properties in Europe, with Manchester United leading the chase for his signature, after scoring in every Group E game for Salzburg this season. The Norwegian also netted a hat trick on his Champions League debut against Genk in September.
But despite his growing reputation, Haaland insists he is simply enjoying the challenge of playing against the biggest clubs in Europe.
"It's lovely, to be honest," Haaland said in Salzburg on Monday. "I'm living the dream.
"Matches like this are what you dream of, so I am enjoying it. Preseason was hard but since then I haven't looked back.
"I try to be mostly relaxed on the field and outside the field and in training, but you also have to be focused. I try to play my own game and enjoy the game.
"I'm just focused on my job: playing football. I try to enjoy what I do every day, and go in with a clear mindset and enjoy the moment right now.
"My focus now is on Salzburg and me as a player. It is not hard at all. I am enjoying every day playing football."
A victory for Salzburg in Austria on Tuesday will secure qualification for the knockout stage and send Liverpool crashing out of the competition they won in Madrid last June, if Napoli avoid defeat to bottom club Genk.
And Haaland has warned Liverpool that the Austrian champions expect to score at least once in the Red Bull Arena.
"I am confident that we will score tomorrow," he said. "Liverpool are a fantastic team but Salzburg are also a fantastic team and we create a lot of chances.
"I am confident we will attack the game tomorrow and create more chances."


L.A. CONFIDENTIAL (1997)
Directed by Curtis Hanson Starring : Kevin Spacey (Jack Vincennes) Russell Crowe (Bud White) Guy Pearce (Ed Exley) Kim Basinger (Lynn Bracken) Running Time : 2hrs 25mins Rating : ****1/2 out of *****
With storytelling this compelling, who needs books?
Based on the book by author James Ellroy, L.A. CONFIDENTIAL is probably one of the best piece of work produced by Hollywood in recent years. Together with director Curtis Hanson (The Hand That Rocks The Cradle, The River Wild) whom Ellroy corroborated closely throughout the shooting of the film, resulted in a movie with a plot and and script so tight, an atom would have to squeeze itself through.
Set in the 50s, the story revolves around 3 policemen of vivid personalities. Jack Vincennes (Spacey) is the cop who is more concerned on busting with fame and stardom ala Hollywood style, concentrating heavily on work which will attract him media attention. There is also the young hot-shot rookie, Ed Exley (Pearce), fresh out of the academy and all-out to carve a name for himself in the footsteps of his legendary cop father. The tough and unnerving Bud White (Crowe), a cop who believes in justice, the swift and violent way. 3 policemen, distinct in their characters and paths but all of them working in a place where there is no real distinction between good and evil.
When his partner is murdered on the day of his resignation, Bud sets out to find the people responsible but unwittingly delved himself into something more than just a simple robbery murder. Even after Exley receives a promotion for his work on the murder case, happenings began to link itself to the murder. The 3 eventually reach a point of convergence when what actually began as a personal investigation turns out to be an uncovering of a complex web of organised-crime in Hollywood.
The last time I remember a film so clever and compelling was when I watched THE USUAL SUSPECTS. In L.A. CONFIDENTIAL, you do not get the shock and cleverness as the former but it has a lot more of `story' going for it. There is not a single moment in the film in which I felt was slow at all. Surprisingly, though Spacey did a very convincing job as the street-wise Vincennes, the movie was carried mostly by the two rather `unknowns', Pearce and Crowe. Pearce's Exley is cool and calculative in his actions and there is a slight hint of Val Kilmer in his appearance. Crowe's Bud White is the most impressive of all; head-strong and temperamental, he should obtain some sort of recognition for his work here.
Superb acting., wonderful storytelling and one of the best climaxing gunfights ever. Easily the best Hollywood piece for 1997.
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


STAR TREK: INSURRECTION (1998)
Rating: 2.5 stars (out of 4.0) ******************************** Key to rating system: 2.0 stars - Debatable 2.5 stars - Some people may like it 3.0 stars - I liked it 3.5 stars - I am biased in favor of the movie 4.0 stars - I felt the movie's impact personally or it stood out ********************************* A Movie Review by David Sunga
Directed by: Jonathan Frakes
Written by: Rich Berman and Michael Piller
Starring: Patrick Stewart, Donna Murphy, Brent Spiner, Jonathan Frakes, Michael Dorn, LeVar Burton, Marina Sirtis, Gates McFadden, F. Murray Abraham
Ingredients: Forced displacement of ethnic minorities, idealistic starship captain
Synopsis: An idyllic planet has rings around it that emit mysterious metaphasic radiation, creating an anti-aging effect similar to that of the fabled Fountain of Youth. In order to covet this valuable resource for themselves, the greedy United Federation of Planets and their ally the mysterious Ru'afo of the Son'a race (F. Murray Abraham) try to forcibly relocate the planet's inhabitants: 600 peaceful Ba'ku villagers, who have renounced technology and don't wish to be relocated.
Captain Picard (Patrick Stewart) and the crew of the Federation starship USS Enterprise decide that forced relocation of minorities is an immoral violation of the Prime Directive (the law preventing the Federation from interfering with the development of other societies). They side with the villagers and lead an insurrection against Ru'afo's forces.
In the subplot, Picard falls in love with Anij, a Ba'ku woman who is over 300 years old.
Opinion: In 1962 racism in America was so rampant that George Wallace won his governorship supporting the separation of Whites from non-Whites. Only about three years later came Gene Rodenberry's space adventure series Star Trek - - a disguised method for 1960s people to examine their own attitudes towards war, racism and international cooperation. Roddenberry's Star Trek was not so much about the future as it was about current issues and moral dilemmas. Advocating a more multicultural society, it helped shape America.
Like its 1960s predecessor, STAR TREK: INSURRECTION has a strong moral tint to it: questioning whether the greater good of the majority (the Federation) outweighs the needs of the minority (the Ba'ku). This agonizing question, which has plagued humanity for centuries, is decided in about 5 minutes by the Enterprise crew. Then they have a short, bloodless war, where a child must predictably run back to look for his beloved lost pet despite an avalanche of falling rocks. And in the aftermath, the heroes ride off into the sunset without regard to how future conflicts over the metaphasic resource might occur or be prevented; or how their use of technology has affected the villagers whose culture has vowed to renounce technology; or the politics of disobeying Federation military orders.
STAR TREK: INSURRECTION clocks in at about an hour and 43 minutes. Somewhat escapist, the film leaves the juicy, formidable questions unanswered. But it is still plenty enjoyable in the way that TV episodes are: nice, neat, and sanitized. After an intriguing beginning, there is no shortage of action in the second half to keep Trekkies and non-Trekkies satisfied.
Reviewed by David Sunga December 11, 1998
Copyright © 1998 by David Sunga This review and others like it can be found at THE CRITIC ZOO: http://www.criticzoo.com email<EMAIL_ADDRESS>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


--- type: formControls title: Prepended flat select usage: A flat single select control with a label. stylesheet: '/scss/controls/flat-select.scss' ---


Description: Selects all sibling elements that follow after the "prev" element, have the same parent, and match the filtering "siblings" selector.
The notable difference between (prev + next
) and (prev ~ siblings
) is their respective reach. While the former reaches only to the immediately following sibling element, the latter extends that reach to all following sibling elements.
<!DOCTYPE html>

div (doesn't match since before #prev)

span#prev

div sibling

div sibling
div niece

span sibling (not div)

div sibling


@* * Copyright 2021 HM Revenue & Customs * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *@ @import config.AppConfig @import config.PbikContext @import utils.FormMappingsConstants._ @import config.LocalFormPartialRetriever @this(parentTemplate: ParentTemplate, context: PbikContext, config: AppConfig, localFormPartialRetriever: LocalFormPartialRetriever) @(backLink:String= "payrolled-benefits-expenses", empRef: Option[EmpRef])(implicit request:Request[_], messages: Messages) @parentTemplate(pageTitle = messages("Service.title"), None, Some(empRef.toString)) {
@Html(messages("ErrorPage.try.later"))
}


BANKNET
Home
(current)
Record
Transaction
Contact
Cuenta Cast
About
Name:
Last Name:
Email:
balance:


WITNESS LIST Civil Practices Committee April 23, 2003-2:00P HB 1355 For: Burt, Stephanie (Self) Hilton, Victoria (Texas Association Against Sexual Assault) HB 1359 For: Espinosa, Sandra (Self) Against: Boulette, Jason (Texas Employment Law Council) On: Edmonds, Mr. Shannon (Texas District & County Attorneys Association) HB 1907 For: Burt, Stephanie (Self) Espinosa, Sandra (Self) HB 2267 For: Blackwell, Tom (Self) HB 2841 For: Lyons, Jim (Texas Ambulance Association) Sprinkle, G. K. (Texas Ambulance Association) Against: Harvey, Jay (Self and Texas Trial Lawyers) HB 2843 For: Davis, James (Texans for Lawsuit Reform) Hoagland, Ken (Texans for Lawsuit Reform) Against: Choate, Guy (Texas Trial Lawyers Assoc.) HB 2920 For: Moss, Ron (Texans for Lawsuit Reform) Against: James, Reggie (Consumers Union S. W. Regional Office) On: Barton, Andrew (American Arbitration Association) HB 3201 For: Cole, Keith H. (M&I Electric Industries, Inc.) Dauber, Art (M&I Electric Industries, Inc.) Marshall, Doug (Wyatt Field Service Company) Against: Sebree, Ben (Texas Oil & Gas Association) HB 3248 For: Lenz, Carole (Harris County Commissioner Steve Radack) Nachtigall, George A. (Harris County, Texas - Assistant County Atty) HB 3439 Against: Harvey, Jay (Self and Texas Trial Lawyers)


You may find similar information over at Metacritic, but this is a list of movies that take into account two types of audiences (IMDB, RT) and critics, to find the best movies of 2013-2015.
This is the list for the hipsters - movies that are critically acclaimed but nobody knows about them, yet.
Critics are often said to prefer the high-brow movies and some of their preferences seem to indicate that they are not quite predispositioned to like what the general lay-person likes.
Here is a list of movies that the critics really got wrong - they just couldn't quite see what the normal lay-person sees in them.
Interestingly, there seems to be a subset of movies that only RT audiences love.
This is a list of movies that a lot of people have seen, but almost all critics and audiences agree that these movies are awful.


This tutorial will show you some simple sytax examples for some built in SQL scalar functions
This section shows just a small sample of the functions that are available to the end user, including text, arithmetic and the soundex function.


{% extends "base.html" %} {% block title %}Home{% endblock %} {% block css %} {% endblock %} {% block body %}
Generate meals and shopping lists on the fly with given restrictions such as dietary restrictions and cost!


Over 175 million professionals use LinkedIn to exchange information, ideas and opportunities.
-
Stay informed about your contacts and industry
-
Find the people & knowledge you need to achieve your goals
-
Control your professional identity online
Join LinkedIn Today


Fix jumbled text that have Arabic and English together like how it was intended to be written.
Our fine algorithms are specifically made for almost every
known website to ensure the best results.
1. Write your awesome text
2. Copy and paste it
here.
3. viola!


<details/summary>, default styling:
Details
Something small enough to escape casual notice.
Custom styling:
Details
Something small enough to escape casual notice.


py2app - convert python scripts into standalone Mac OS X applications
py2app is a Python distutils suite which provides several
useful features for distributing Python applications and libraries
on the Mac OS X platform. The py2app suite contains the following
packages:
- py2app:
- A distutils command that converts Python scripts into
executable Mac OS X applications, able to run without requiring
a Python installation. It has been used to create standalone
application bundles and plug-ins for open source, commercial,
and in-house projects. It is known compatible with GUI
frameworks such as wxPython, Tkinter, pygame, PyQt, and
PyObjC, but it should work in the context of any framework with
little or no effort. It may also be used in conjunction with
PyObjC to write plug-ins for Cocoa applications, screen
savers, preference panes, etc. This is a complete replacement
for the bundlebuilder tool included in the Python standard library.
- bdist_mpkg:
- Creates Mac OS X installer .mpkg files from Python libraries.
Installer packages are familiar to Mac OS X users, provide a
safe and easy way to authenticate as root to install privileged
files such as headers and scripts. Once a bdist_mpkg
distribution has been created, it may be installed to other
machines with a similar Python environment without requiring a
compiler. Installer packages can be used to do distributed
installations with tools such as Apple Remote Desktop or they
could be integrated into a custom Mac OS X installation DVD
with a tool such as Slipy.
- macholib:
- Reads and writes the Mach-O object file format. Used by py2app
to build a dependency graph of dyld and framework dependencies for your
application, and then to copy them into your application and rewrite
their load commands to be @executable_path relative. The end
result is that your application is going to be completely standalone
beyond a default install of Mac OS X. You no longer have to worry
about linking all of your dependencies statically, using
install_name_tool, etc. It's all taken care of!
- modulegraph:
- A replacement for the Python standard library modulefinder. Stores
the module dependency tree in a graph data structure and allows for
advanced filtering and analysis capabilities, such as GraphViz dot
output. This is used internally by py2app, but the code should
be completely cross-platform. It is hoped that this package will be
adopted by application packaging software for other platforms in the
future, such as py2exe and cx_Freeze.
- altgraph:
- This is a fork of Istvan Albert's graphlib, and it used internally
by both macholib and modulegraph. It contains several small
feature and performance enhancements over the original graphlib.
Any components of the py2app suite may be distributed under the MIT
or PSF open source licenses.
Note that the installer for PyObjC 1.2 ships with py2app 0.1.7.
An installer for py2app 0.1.8 may be downloaded from:
The source to py2app 0.1.8 may be downloaded here:
py2app maintains a public subversion source code repository currently
located at:
As of version 0.1.6, py2app uses the extra_path feature of
distutils, which changes the installation layout.
If you have py2app 0.1.5 or earlier installed, you must manually
remove the following directories from your site-packages directory
(probably /Library/Python/2.3) if they exist before upgrading:
- py2app
- macholib
- bdist_mpkg
- modulegraph
- altgraph
How do I use py2app?
py2app is a distutils command that is used in a similar manner to
py2exe. For your application, you must create a Python script
(conventionally named setup.py) that looks like the following:
#!/usr/bin/env python
"""
setup.py - script for building MyApplication
Usage:
% python setup.py py2app
"""
from distutils.core import setup
import py2app
setup(
app=['MyApplication.py'],
)
When running this script as directed, py2app will do the following:
Process the command line for arguments. The arguments accepted by the py2app
command can be enumerated using the following command line:
% python setup.py py2app --help
Global options:
... (these are available from any distutils command)
Options for 'py2app' command:
... (these are specific to py2app)
usage:
... (this is a generic distutils usage message)
Note that any of the options accepted on the command line may also be used
in your setup.py script! For example:
#!/usr/bin/env python
"""
setup.py - script for building MyApplication
"""
from distutils.core import setup
import py2app
# Note that you must replace hypens '-' with underscores '_'
# when converting option names from the command line to a script.
# For example, the --argv-emulation option is passed as
# argv_emulation in an options dict.
py2app_options = dict(
# Map "open document" events to sys.argv.
# Scripts that expect files as command line arguments
# can be trivially used as "droplets" using this option.
# Without this option, sys.argv should not be used at all
# as it will contain only Mac OS X specific stuff.
argv_emulation=True,
# This is a shortcut that will place MyApplication.icns
# in the Contents/Resources folder of the application bundle,
# and make sure the CFBundleIcon plist key is set appropriately.
iconfile='MyApplication.icns',
)
setup(
app=['MyApplication.py'],
options=dict(
# Each command is allowed to have its own
# options, so we must specify that these
# options are py2app specific.
py2app=py2app_options,
)
)
Issue the distutils build command
- If your application needs any Extensions, then these will be
built at this time, and the build directory will be added to sys.path.
Analyze the application for Python dependencies
- Compile MyApplication.py to Python bytecode and analyze it for
import statements.
- Build a dependency graph of everything it finds (with modulegraph).
- It will look for modules and packages in the same manner as Python would
if you ran python MyApplication.py. Namely, it will look first in the
same directory as MyApplication.py, and then it will search sys.path.
If for some reason you need it to look somewhere else, simply modify your
setup.py script such that it modifies sys.path before calling the
distutils setup(...) function.
Make sense of the dependencies
- Using special library-specific tweaks called recipes, it will modify
this dependency graph as needed. For example, it will perform such tasks
as eliminating unwanted dependencies (pydoc's import of Tkinter) and
including "plugins" for certain libraries that do not use the normal import
statements (PIL, docutils). See the section below on recipes for
more information about this process.
Create the application bundle
- An application bundle will be created in the dist directory with the name
of your application.
- Based upon information in py2app and information you passed to
setup(...), an Info.plist will be created in the application bundle
with metadata appropriate to your application.
- A __boot__.py script will be created in the Contents/Resources folder
of the application bundle containing py2app specific bootstrapping code
to get your application running.
- The main script of your application will be copied as-is to the
Contents/Resources/Python folder. This may change in the future,
but it is currently in source form and is not obfuscated in any way
other than its location.
- Packages that were explicitly included with the --packages option are
placed in Contents/Resources/Python/site-packages.
- A zip file containing all other dependencies is created at
Contents/Resources/Python/site-packages.zip.
- Extensions that could not be included in the zip file are copied to
appropriate locations in Contents/Resources/Python/lib-dynload.
Make the application bundle standalone
- Since a typical Python application may have C library dependencies, such as
the Python interpreter itself, wxWidgets, etc. a second dependency resolution
pass occurs on the application bundle.
- Scan the application bundle for all Mach-O files (executables, shared libraries,
plugins, extensions, etc.).
- Read the load commands from every Mach-O file (using macholib) and build
a dependency graph.
- Copy in every dependent dylib (shared library) and framework that is not already
in the application bundle. Note that dylibs and frameworks in vendor locations
(/System and /usr - except for /usr/local) are NOT included in your
application bundle. This can include the Python interpreter, if you are using
a Python interpreter shipped with Mac OS X. Thus your application may be
"tightly bound" to a particular major version of Mac OS X if you are using
the vendor Python.
- Rewrite the Mach-O load commands such that the libraries know that
they have moved inside of an application bundle (i.e. using
@executable_path relative ids).
- Strip every Mach-O file of extraneous information (debugging symbols, etc.)
to save space. This may be disabled with --no-strip.
What recipes does py2app come with?
- docutils:
Locates and includes all plugins that ship with docutils (languages,
parsers, readers, writers)
- pydoc:
Removes several dependencies that are only used when running the pydoc
web server or Tkinter GUI (Tkinter, tty, BaseHTTPServer, mimetools, select,
threading, ic, getopt).
- pygame:
Includes the whole pygame package as-is, so that it will locate its data
files correctly. This recipe may be improved in the future if pygame
undergoes appropriate modifications.
- PIL:
Locates and includes all image plugins (Python modules that end with
ImagePlugin.py), removes unwanted dependencies on Tkinter.
- pyOpenGL:
Includes the whole pyOpenGL package as-is, so that it can read its version
file during __init__.py. This recipe may be improved in the future if
PyOpenGL undergoes appropriate modifications.
- py2app:
Includes the whole py2app package as-is, so that it has copies of the
executable and plugin templates. This recipe may be improved in the future
if py2app undergoes appropriate modifications.
- sip:
If ANY extension that uses sip is detected, include all extensions that use
sip. This is necessary because sip generates C code to do its imports,
and is thus not trackable by bytecode analysis. The only package known to use
sip is PyQt, so what this means is that if you use any of PyQt, then
all of it will be included.
Note that recipes are developed on an
as-needed basis, and coverage of every single Python library is not possible.
If you have trouble with a particular library, please let us know.
The following packages are known to need recipes, but none currently exist:
- PEAK:
The workaround is to include PEAK using the packages option.
- Anything that uses Pango or GTK+:
These C libraries require data files and environment variables set up.
A workaround exists, but one has not yet been written and tested.
- wxPython 2.4.x:
A data_files option to include a resource file must be added to
setup.py:
#!/usr/bin/env python
"""
setup.py - workaround for wxPython 2.4.x
Usage:
% python setup.py py2app
"""
from distutils.core import setup
import py2app
setup(
app=['test.py'],
data_files=[('../Frameworks', [
'/usr/local/lib/libwx_mac-2.4.0.rsrc',
]
)],
)
XXX
- What's the recommended py2app development model?
- What does py2app install?
- How does py2app differ from py2exe or cx_Freeze?
- When should I subclass the py2app command?
- Known issues with py2app
XXX
- What exactly does bdist_mpkg do?
- What options does bdist_mpkg accept?
- When should I subclass the bdist_mpkg command?


 This isn't about my curiousity, and it's definitley not a fabrication. This is my addiction, and how I've lived through it.
No need to go into details about my vast drug experience, because I'm here only to tell you my experiences with heroin, my one true love, so I had thought.
I fell in love with this substance a while ago. I can't even remember the first time I used. I only remember the feeling. Feeling as if I was the only one who knew how good it was. Wrong. Feeling that it would solve all of my problems. Yeah right. Feeling that I was safe from any possible threat to my body, my emotions, myself in general.  What I fell in 'love' with was lying to myself, and to everybody else.
Now, I am by no means well to do when it comes to money. The fact of the matter was that I had none, and my friends had none. What we had were hands that could grab at cash. We had minds that would trick us into selling our personal belongings. We had eyes for every bit of merchandise that was flat out 'worth anything.' And that's when it got worse.
I would score at least 2 bags a day. I would scrounge up money every which way possible, not feeling guilt. Every dollar I had was somehow in my mind 'saving me' from any worry, pain, or problem.
The ritual of scoring, hastily riding back to my house, and booting was as my friends would call it 'the biggest rock and roll fantasy.'  I was just glad to stop sweating, glad to stop feeling sick.  Mostly me on my back. (Use mental imagery to convert the heroin into a Heroine(woman)).
I had my friend living with me at the time, and he was my partner in crime, literally. We used to have the same routine every day.
Wake up, shoot up(if we had any), and figure out how to get the next score. We were downright fucked. Had we not had a hit yet that morning, we would quickly submerse into a sweaty race to find ten dollars. Whomever found the ten was the proprieter of 2/3 of the bag. Me, being the extremely talented con-artist, would always and always find the ten first. The only occasion he had found a ten before me was when I passed out and he went out without me.
The first hit of the day was like daily masturbation, I usually had to work for my satisfaction. I would beg and plead with anyone and everyone, I would beg my mother for money, knowing that she had none herself. Although I have to say this about my mother. She has never done heroin, but she sure did buy alot of it. That meaning I had lied on every occasion on a way to get drug money out of her.
I often did odd jobs for people, but that was only when I had horrible withdrawal, which being every morning. So I pretty much always made up some useless job to do.
Skipping months because it went on like this, we move ahead. Let's just say, my tolerance was through the roof, and the heroin was out of this world. But, I had little money and had resorted to anything that could be done to get a dollar. I stopped buying new needles and just reused my needles to the point that the numbers and markings had worn away and it was just a clear syringe which I used a magic marker to draw a line on to diagram my normal dose.
My arms looked like a pin cushion. God knows I loved my needles.
I had learned to shoot in both arms, and had designated areas for every hit. First hit was the crook of my arm(s). Second hit was the lower forearm(because I had already used my sweet spot for the first hit). And any hit after that would be switched up my arms.
After a while it wasn't an unusual thing for me to shoot up 8 times every day. I had sold every expensive piece of item in my house.
As it turns out to this day, I went to rehab and have been clean for a little over a month. And I feel almost confident in saying that I will relapse. But my only worry being, will I make it again?  I'm just down and out. And the only thing left for me to say is, I'm an addict.
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.


| OLD line(s): 483
<!-- Prior Years Commented out Until they Become Active in Succeeding Years --> | NEW line(s): 482
|
| OLD line(s): 485
<!-- xsd:element name="CurrentYearMinus3Years" type="Form990SchDPartVGroup1Type" minOccurs="0"> | NEW line(s): 484
<xsd:element name="CurrentYearMinus3Years" type="Form990SchDPartVGroup1Type" minOccurs="0"> |
| OLD line(s): 492
</xsd:element --> | NEW line(s): 491
</xsd:element> |
| OLD line(s): 493
| NEW line(s): 493
<!-- Prior Years Commented out Until they Become Active in Succeeding Years --> |


Jake Trent
@jaketrent
- Custom jewelry / awards
- Appreciating great work
- B2B software
- Milestones
- Performance
Great Team
- 2 Designers
- 2 Frontend
- 4 Backend
- 2 iOS
- 1 Product
- 1 Sales
Tao
- Continuous Deployment
- </overhead>
- Testing
- Devops
D3 = Data-Driven Documents
Alternatives
SVG - Raphael, Google Charts, Highcharts
Canvas - Chart.js, CanvasJS
D3++ - Rickshaw
IE9+
Polyfill
mhemesath/r2d3 - IE7+
d3.select, d3.selectAll
select dom nodes
.append
put something in the dom
.data
bind data to selection
.enter
appending to enter() creates missing elements
d3.json, d3.csv, etc
async load data source
d3.scale
map data space to visual space
.domain
possible values on axis
.transition
animation mechanism
Use d3 a lot on what it's good for.
eg, chart
Use it little on what it's not good for.
eg, labels
Fetch data externally
eg, pass in req promise
Consider abstractions judiciously
eg, super common, tedious


My partner and I are looking at either buying or setting up a kiwifruit orchard. I’d like to be able use web development and data science To help track changes is the different parts of the orchard. Incorporating sensors that are available today and research in to soil science to incorporate regenerative ag ideas and concepts into an orchard environment.
Completing this course will also allow me to have an income while working towards my goals.
I used to quite a social person, working in Human Resources, talking to people came easy to me. I could start a conversation with anyone. Over that last few years due to a variety of circumstances I became quite isolated, I feel I’ve lost that ease I used to have dealing with and forming connections with people. I would like get my people skills back, network and learn to work as part of a team again.
As I have mentioned in a previous post I love learning, but I have to be careful I don’t get lost “down the rabbit hole” when exploring and researching a topic. I am a prolific researcher, and I love nothing more than a good intellectual debate.
I have been out structured employment for a number of years, helping my partner assisting my partner working on property. I no longer have a routine to my days. I need to establish some habits in my day, get up earlier (which is always difficult as I am no morning person!) and create a plan for what I want to achieve that day. I am hoping that by the time bootcamp starts the room I intend to work from is finished and I’ll have an area free of distractions. I’ve been using a Pomodoro planning app. So far it has worked well to remind me to take a break, but also plan my time for each task. I feel this part of the course, planning my time, actually sticking to it will be vital to getting me through the course work on time.
When I hit a roadblock during this course I will turn to my facilitator, the slack channel (foundations) or discord(boot camp) in order to get help from fellow students and teachers.
I expect the team at Dev Academy to not solve a problem for me but to lead me towards it. Guiding my learning to areas I need to work on. I hope to establish a good relationship with the team at Dev and also with my Cohort. I feel that with the technology we have today this is possible even through remote learning.
The only commitments I have during the day right now is making sure take my dogs outside a few times during the day.