Functions for reading ontologies into R as lists and manipulating sets of ontological terms - 'ontologyX: A suite of R packages for working with ontological data', Greene et al 2017 <doi:10.1093/bioinformatics/btw763>.
| Version: | 2.4 |
| Depends: | R (≥ 3.1.0) |
| Suggests: | knitr, ontologySimilarity, ontologyPlot |
| Published: | 2017-02-06 |
| Author: | Daniel Greene |
| Maintainer: | Daniel Greene <dg333 at cam.ac.uk> |
| License: | GPL-2 | GPL-3 [expanded from: GPL (≥ 2)] |
| NeedsCompilation: | no |
| Citation: | ontologyIndex citation info |
| Materials: | NEWS |
| CRAN checks: | ontologyIndex results |
| Reference manual: | ontologyIndex.pdf |
| Vignettes: |
Introduction to ontologyX Creating an ontology_index |
| Package source: | ontologyIndex_2.4.tar.gz |
| Windows binaries: | r-devel: ontologyIndex_2.4.zip, r-release: ontologyIndex_2.4.zip, r-oldrel: ontologyIndex_2.4.zip |
| OS X binaries: | r-release: ontologyIndex_2.4.tgz, r-oldrel: ontologyIndex_2.4.tgz |
| Old sources: | ontologyIndex archive |
| Reverse imports: | gsEasy, ontologyPlot, ontologySimilarity, SimReg |
Please use the canonical form https://CRAN.R-project.org/package=ontologyIndex to link to this page.


--- layout: post title: scriptcs.rebus 0.5.0 date: 2014-11-13 05:37:15.000000000 +01:00 categories: - scriptcs - scriptcs.rebus tags: [] status: publish type: post published: true meta: _edit_last: '1' author: login: admin email<EMAIL_ADDRESS>display_name: admin first_name: '' last_name: '' ---
This release is coming very soon after the 0.4.0. It doesn't mean that I'm going to increase my release cycle, it's just that I have some new features that I'd like to share with you and there were things in the 0.4.0 that I wasn't satisfied with.
The following subsections describe the new features of scriptcs.rebus 0.5.0.
In 0.4.0 I introduced the hosting feature in scriptcs.rebus. With this feature you can extend any standard .Net application with new functionality using scriptcs. You would send a custom script to a host application, which would then be able to compile the script and execute this inside the host process. Now, in 0.4.0 you would send the script like this:
Require<RebusScriptBus>()
.ConfigureBus("myOwnBus")
.SendAScriptFile("start.csx")
This would send the script inside the start.csx
to a host for execution. And, if you would need to download and reference a NuGet package, you would do it like this:
Require<RebusScriptBus>()
.ConfigureBus("myOwnBus")
.SendAScriptFile("start.csx", "mongocsharpdriver")
This would download and reference the Mongo C# driver and execute the start.csx
script inside the host application. This was my initial and, admitted, pretty naive implementation. So, when I wanted to introduce the use of the Mono compiler inside the hosted application, I ran into some issues. You can read all about my endeavours with scriptcs.hosting here.
So, in 0.5.0 I've changed the API, so now if you want to send a script you go like this:
Require<RebusScriptBus>()
.ConfigureBus("myOwnBus")
.WithAScript("Console.WriteLine(\"Hello everyone!\")")
.Send()
And a script file:
Require<RebusScriptBus>()
.ConfigureBus("myOwnBus")
.WithAScriptFile("start.csx")
.Send()
This is all just semantics, so why the change? Well, I wanted to add a bunch of additional options, so therefore I needed a fluent api for this. In the following sections I'll shortly describe them.
If you want to reference a local assembly to be used in your script, this could be an assembly that is part of the host application, you can add the following option:
Require<RebusScriptBus>()
.ConfigureBus("myOwnBus")
.WithAScriptFile("start.csx")
.AddLocal("someLocal.dll")
.Send()
Now, you can reference more local assemblies, just add another AddLocal()
.
So if your script needs a NuGet package to extend the host, you can specify these using the AddFromNuGet()
like this:
Require<RebusScriptBus>()
.ConfigureBus("myOwnBus")
.WithAScriptFile("start.csx")
.AddFromNuGet("mongocsharpdriver")
.Send()
Again, you can add multiple AddFromNuGet()
to the configuration.
So, imagine we now have downloaded a NuGet package or referenced a local assembly, then to make it available for the script, you need to specify in which namespace to find the type you wanna use:
Require<RebusScriptBus>()
.ConfigureBus("myOwnBus")
.WithAScriptFile("start.csx")
.AddFromNuGet("mongocsharpdriver")
.ImportNamespace("MongoDB.Bson")
.Send()
This would download and reference the Mongo C# driver and make the MongoDB.Bson namespace available to the script for execution.
Since the current release of Roslyn, does not support things like the dynamic
keyword or async/await
, it might be handy to be able to use the Mono compiler on the host:
Require<RebusScriptBus>()
.ConfigureBus("myOwnBus")
.WithScriptFile("start.csx")
.UseMono()
.Send()
Now the Mono compiler is set as execution engine, the script will be compiled. A scenario like this could also be relevant when doing cross-platform development.
In some cases it might be great to see some debugging output in the host console.
Require<RebusScriptBus>()
.ConfigureBus("myOwnBus")
.WithScriptFile("start.csx")
.UseLogging()
.Send()
This sets the loglevel to Debug, instead of Info which is default. This feature is only relevant in a limited number of cases where the host is a console application.
Script packs are really just NuGet packages used for hiding boilerplate code of common frameworks. Therefore, if you download and reference a script pack, it will be made available to the script without any further.
That's all there is to 0.5.0. So throw me comment, either below or on Twitter.


Enumerable Methods!
Enumerable#each_slice(n)
10/10/2015
Before this week, I had always considered Enumerable
methods confusing (OK, maybe They're still a little confusing). Ruby has several of these built in that makes searching or going through an array or hash much easier.
This week we had a challenge that involved adding commas to to numbers. We wanted integers like 1000 to return 1,000. This was a tricky challenge that I spent a lot of time on this week working to refactor to be as clean as possible.
My solution for it used an enumerable #each_slice(n):
def separate_comma(num)
new_num = num.to_s.reverse.split("")
output = []
new_num.each_slice(3) do |word|
output << word.join("")
end
output.join(",").reverse
end
The use of #each_slice(3)
took an array(new_num) and seperated it into chunks of 3. I could then combine those digits into a 3 character long string and put it into my output array. This way if I entered a number like "1234" into the method. My output array in the #each_slice(3)
would be ["123","4"]
. This made it possible for my final output to be joined together again with a comma seperating each character set in the array.
This image above from globalnerdy is a good example of what each_slice does. It takes a large array containing things like the baseball, smiley face, spelling block and teddy bear and sorts them into new arrays in groups of 3. They have other examples of other enumerable methods on their site and I recommend looking through them for simplified explanations!


Burgers.
There is so many types of Burgers.
Like : KFC Burger, MCD Burger, CHEESE Burger, PIZZA Burger and so many more.
Here is an example of a MCD - Mcdonald's menu.
I like Burgers.
This Is the newest Burger in MCD from these fast foods chains you have to try!


using NSpec; [Tag("describe_act")] class describe_batman_sound_effects_as_text : nspec { void they_are_loud_and_emphatic() { //act runs after all the befores, and before each spec //declares a common act (arrange, act, assert) for all subcontexts act = () => sound = sound.ToUpper() + "!!!"; context["given bam"] = () => { before = () => sound = "bam"; it["should be BAM!!!"] = () => sound.should_be("BAM!!!"); }; context["given whack"] = () => { before = () => sound = "whack"; it["should be WHACK!!!"] = () => sound.should_be("WHACK!!!"); }; } string sound; }
describe batman sound effects as text they are loud and emphatic given bam should be BAM!!! given whack should be WHACK!!! 2 Examples, 0 Failed, 0 Pending


Fixes / Features:
- By Popular Demand, Tabli now supports a Dark Mode Theme. Select preferred
Theme (light or dark) via "Preferences..." on Tabli's menu button (☰).
- Tabli ❤ The Great Suspender.
A number of Tabli users also use
The Great Suspender,
an excellent Chrome extension that automatically suspends tabs you aren't using,
freeing memory and CPU. This release of Tabli resolves a long-standing issue
to ensure the correct icon and URL are shown for tabs suspended
by the Great Suspender, and adds a little 💤 icon to indicate suspended tabs.
...plus numerous other internal upgrades and minor bug fixes.


While on a nine-hour flight from China, a 70-year-old man began to experience pain and collapsed, according to the Sun. He told flight attendants that he was unable to urinate and that his bladder was close to rupturing.
Dr. Zhang Hong and Dr. Xiao Zhangxiang sprung into action and fashioned a catheter out of a syringe, a milk straw, and a plastic tube.
“He was going into shock and may have suffered a risk to his life if we didn't tend to him urgently,” Zhang said. “His family said he had a history of prostate enlargement, so we suspected this was causing urinary retention.”
“Saving lives is a doctor's instinct,” he added.


Next we will describe Bee syntax using examples of code. This is a high level design not a detailed specification. We organize the pages in logical order from basic concepts to advanced to learn the language features and use cases.
Basic Concepts
Advanced Concepts
Bee require Unicode symbols so it is hard to type. To overcome this difficult obstacle we have design a special keyboard. One day maybe we will manage to create this keyword to fix productivity issues. With this keyboard writing Bee code will be more efficient. Until then we can use a tablet app or programable keyboard.
Bee-14a Layout
We store code snippets, project code and tools on GitHub. There is no release, but you can clone this repository on your computer to investigate the examples. Bee have syntax color files for Notepad++.
Instructions: We use dark theme for this project. So after you download, and install the "UDL" (User Define Language) you have to change settings in the Notepad++ style dialog, like the picture below:
Notepad++ Style Configuration
Read next: Language Features


How to build a Chat for my class
I want to build a chat for my AP bio class. I was wondering how long that would take and what I would need in order to create the chat?
I want to build a chat for my AP bio class. I was wondering how long that would take and what I would need in order to create the chat?
I'm have a few csv files of data needing analysis, I've run then through ANOVA, plotted LSD Intervals with 95% Confidence, and I need to create a Means Plot with 95% Decision Limits, similar to: http://blogs.sas.com/iml/uploads/funnelanom.png
I need to build an IOS app to organize pickup basketball games in parks around NYC. I data on basketball courts in NYC but don't know how to use it. Any IOS developers who know how to build this?


Guess Who
Think of Someone...
I'm Ready!
Yes
No
OK, I gave up...
You thought of:
Question to differentiate
Make me Smarter!
I knew it!
Next time I'll know for sure!


Skip to main content
Python Bookdown
Show table of contents
Table of contents
About This Book
1
Fundamentals
2
Built-in Data Types
3
Built-In Data Structure
4
Control and Loops
5
Library and Functions
6
Exception Handling
7
Object Oriented Programming
8
Decorator
9
datetime Standard Library
10
Getting External Data
11
Plydata (dplyr for Python)
12
numpy
13
pandas
14
matplotlib
15
seaborn
16
plotnine
17
sklearn
18
Web Scrapping
View book source
10
Getting External Data
9
datetime Standard Library
11
Plydata (dplyr for Python)
On this page
10
Getting External Data
View source
Edit this page


Lens of China
No Panorama! Sorry, but no panorama was found for this location.
No Info! Sorry, but no information were found for this location.
No Objects! Sorry, but the objects from the Harvard Art Museum were unable to load.
No Objects! Sorry, but the objects from the Getty Museum were unable to load.
No Map! Sorry, but Google Maps was unable to load. Please refresh the page or try again in a few minutes.


statsmodels.stats.proportion.power_ztost_prop¶
-
statsmodels.stats.proportion.
power_ztost_prop
(low, upp, nobs, p_alt, alpha=0.05, dist='norm', variance_prop=None, discrete=True, continuity=0, critval_continuity=0)[source]¶ Power of proportions equivalence test based on normal distribution
- Parameters
- low, uppfloats
lower and upper limit of equivalence region
- nobsint
number of observations
- p_altfloat in (0,1)
proportion under the alternative
- alphafloat in (0,1)
significance level of the test
- diststring in [‘norm’, ‘binom’]
This defines the distribution to evalute the power of the test. The critical values of the TOST test are always based on the normal approximation, but the distribution for the power can be either the normal (default) or the binomial (exact) distribution.
- variance_propNone or float in (0,1)
If this is None, then the variances for the two one sided tests are based on the proportions equal to the equivalence limits. If variance_prop is given, then it is used to calculate the variance for the TOST statistics. If this is based on an sample, then the estimated proportion can be used.
- discretebool
If true, then the critical values of the rejection region are converted to integers. If dist is “binom”, this is automatically assumed. If discrete is false, then the TOST critical values are used as floating point numbers, and the power is calculated based on the rejection region that is not discretized.
- continuitybool or float
adjust the rejection region for the normal power probability. This has and effect only if
dist='norm'
- critval_continuitybool or float
If this is non-zero, then the critical values of the tost rejection region are adjusted before converting to integers. This affects both distributions,
dist='norm'
anddist='binom'
.
- Returns
- powerfloat
statistical power of the equivalence test.
- (k_low, k_upp, z_low, z_upp)tuple of floats
critical limits in intermediate steps temporary return, will be changed
Notes
In small samples the power for the
discrete
version, has a sawtooth pattern as a function of the number of observations. As a consequence, small changes in the number of observations or in the normal approximation can have a large effect on the power.continuity
andcritval_continuity
are added to match some results of PASS, and are mainly to investigate the sensitivity of the ztost power to small changes in the rejection region. From my interpretation of the equations in the SAS manual, both are zero in SAS.works vectorized
verification:
The
dist='binom'
results match PASS, Thedist='norm'
results look reasonable, but no benchmark is available.References
SAS Manual: Chapter 68: The Power Procedure, Computational Resources PASS Chapter 110: Equivalence Tests for One Proportion.


Cloning and Copying VirtualBox virtual machines
This article explains how to clone and copy VirtualBox VMs (virtual machines).
Change History
2018-11-14: Updates.
2013-12-08: Updates.
2011-09-22: Updates.
2008-11-03: Updates.
2008-11-01_: First draft.
The techniques described in this article were tested on a Windows XP Pro SP2 host operating system using VirtualBox version 2.0.4. The details may vary if you use a Linux or some other host OS.
Introduction
Cloning and copying VirtualBox VMs is not as straight forward or obvious as it is with VMWare Desktop and this subject has created a lot of confusion in the support forums. This is because:
- There is no single VirtualBox command for VM cloning.
- The documentation is vague.
- A couple of the VirtualBox commands are poorly named.
The good news is that the underlying technology is just great and with a little understanding copying and cloning VMs is quite easy.
This article explains how to copy an existing VM containing an installed and configured guest OS. Before starting it helps to have a basic understanding of VirtualBox virtual machines.
Virtual Machines
A VirtualBox VM consists of three parts:
- One or more virtual hard disk image files (VDI files).
- Zero or more Snapshots (also VDI files).
- XML configuration files defining the VM (virtual hardware parameters).
Snapshots
- A snapshot bookmarks the state of the VM (specifically the VM file system) at the point in time the snapshot is made.
- You return to a previous snapshot by deleting the current state and all newer snapshots.
- When you create a snapshot, changes to the file system accumulate in the current snapshot file, older snapshot files and disk image files are effectively read-only.
- If there are no snapshots the VM's disk image file accumulates file system changes just like normal disks -- the VM's Current State is merged into the disk image automatically when you close the VM.
With respect to copying the important thing to understand about snapshots is that there is no easy way to copy them, so if your source VM has any snapshot information that you want to copy you first need to merge the snapshot(s) into the source VM's disk images.
Copying a Virtual Machine
Here's an outline of the copy process:
- If the source VM has any snapshot information that you want to copy you first need to merge the snapshot(s) into the source VM's disk image files.
- Make a clone the source VM's disk image file(s).
- Create a new VM and attach the cloned disk image file(s).
Here are the details:
Merge source snapshots
Here's how to merge the source snapshots to the source disk image VDI file (skip this step if you source VM doesn't have any snapshots).
- If the source VM is running close it.
- From the VirtualBox window select the source VM then click the Snapshots tab.
- If you want to include the current state of the disk in the merge save it as a snapshot by selecting the Current State then executing the Take Snapshot (Ctrl+Shift+S) command.
- Select the most recent snapshot you want to include in the target VM and execute the Discard Snapshot (Ctrl+Shift+D) command. This merges the snapshot file into it's parent VDI file (snapshot or base disk).
- Repeat the previous step, working your way down the snapshot list until the oldest snapshot has been merged into the base VDI.
The VirtualBox snapshot commands are poorly named, in particular the inconsistent and confusing use of the word Discard:
| Command | Should be named | Applied to | Description |
| Discard Snapshot (Ctrl+Shift+D) | Merge with Parent | Snapshot | Merges the snapshot file into the parent snapshot or disk image file and then deletes the now redundant snapshot file. |
| Revert to Current Snapshot (Ctrl+Shift+R) | Current State | Deletes the current state returning the VM state to the most recent snapshot. | |
| Discard Current Snapshot and State (Ctrl+Shift+B) | Delete Current Snapshot and State | Current State | Deletes the current state and the most recent snapshot returning the VM state to that of the penultimate snapshot. Use this command to delete snapshots. |
Clone or copy the source disk image
At this point the entire state of the source VM that we want to copy is contained in the disk image VDI file.
To avoid confusion I use the term copying to refer to copying a VM to different host machine and the term cloning to refer to creating a copy on the same host.
- If the source VM is running close it.
- Copy the source disk image to the VirtualBox VDI directory on the
target host machine. You'll normally find the source disk image in
the VirtualBox VDI directory (the standard VDI location on Windows
hosts is
C:\Documents and Settings\<username>\.VirtualBox\VDI
).
Once you've copied the disk image you need to register it with VirtualBox on the target host machine:
- From the VirtualBox window select File->Virtual Disk Manager (Ctrl+D) menu command.
- Press the Add button and select the copied disk image file.
Use the VBoxManage
command-line utility the clonevdi
command
option to clone and register the disk image (you can't just copy the
disk image to the same host machine because the disk UUID will
conflict with the source disk image):
- Open a Command Prompt window on the host machine.
- Change to the VirtualBox VDI directory (normally
C:\Documents and Settings\<username>\.VirtualBox\VDI
). - Now run the
VBoxManage
command with theclonevdi
command option. The following example transcript shows the creation of a copy ofUbuntu 8.04.vdi
namedUbuntu 8.04 clone.vdi
and registers the new disk:C:\Documents and Settings\srackham\.VirtualBox\VDI> "C:\Program Files\Sun\xVM VirtualBox\VBoxManage.exe" clonevdi "Ubuntu 8.04.vdi" "Ubuntu 8.04 clone.vdi" VirtualBox Command Line Management Interface Version 2.0.4 (C) 2005-2008 Sun Microsystems, Inc. All rights reserved. 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100% C:\Documents and Settings\srackham\.VirtualBox\VDI>
My experience is that merging snapshots into a single base VDI saves a
lot of space (a Windows XP guest with 5 snapshots shrank from 8.6GB to
3.7GB) but defragging the drive and then running the VBoxManage
modifyvdi compact
command didn't appear to regain any disk space in
either Windows XP or Vista.
Create a new virtual machine
There is no command to copy a VM so we create a new VM and attach our copied disk to it:
- From the VirtualBox window select Machine->New... (Ctrl+N) menu command.
- Work your way through the Create New Virtual Machine wizard till you get to the Virtual Hard Disk page then press the Existing... (not the New...) button and select the disk image VDI file that you previously cloned or copied.
That's it, you should now be able to start and run your new VM.
WARNING: Try not to be tempted to edit the VirtualBox XML configuration files manually -- the files are interrelated and making changes manually is not as easy as it looks (I'm talking from experience here) -- best to use the VirtualBox commands instead.
Final Thoughts
Although I have not tried, it should be relatively easy to automate
the copying and cloning procedures by scripting the powerful
VirtualBox VBoxManage
command.


Your site to download your App to your phone.
Note: on a free cloud9 site https://c9.io this web page needs to be restarted every 24 hours
if other people are going to test your debug version Android App
Set Android phone to Settings--> More--> security--> unknown sources
The lowest .apk will be the most recent


Cat and Dog talk to each other!
Click a button to see what the cat says. Then see what the dog has to say in response!
Kitty
Doggy
The Cat says:
The Dog says:


I am the dog aunt to a chocolate lab/german shorthair dog
These are some of my favorite things about Paige
She is adorable.
She is a beggar of food scraps.
She likes to cuddle
She likes to go hiking and swimming.


{% load otree staticfiles %} {% load static %}
In Part {{ Constants.part_fluid }} you will interact with the same {{ Constants.others }} players from Part {{ Constants.part_fixed }}. There are 4 stages in each round.
At the beginning of each round you will be assigned to the same group you belonged to in Part {{ Constants.part_fixed }}. In Stage 1 you will choose a group. You can stay in the group you have been assigned to or you can change it. {% if player.treat == 1 or player.treat == 4 %} The group symbol will indicate the group each player has chosen. A player's appearance will change if he changes his group. {% elif player.treat == 2 or player.treat == 5 %} The group symbol will indicate the group each player has chosen. A player's appearance will not change when he changes his group. {% elif player.treat == 3 or player.treat == 6 %} The group symbol will not be visible independently of whether a player changes his group or stays. A player's appearance will not change when he changes his group. {% endif %} {% if player.treat >= 4 %} Staying in the same group is free while changing groups has a cost of {{ Constants.switch_cost }} {{ Constants.exp_currency }}. {% endif %}
In stage 2 you can propose connections to other players at a cost of {{ Constants.link_cost }} {{ Constants.exp_currency }}.
In stage 3, you choose an action: or . You will earn {{ Constants.exp_currency }} depending on the group you choose, the action you choose, and the number of your active connections choosing the same action as you:
If your chosen group is ● and you:
If your chosen group is ▲ and you:
In stage 4 you will see how many {{ Constants.exp_currency }} you get in that round.
You will participate for {{ Constants.rounds_fixed }} rounds in Part {{ Constants.part_fluid }}. At the end of the experiment the computer will randomly select one of the {{ Constants.rounds_fixed }} rounds. The number of {{ Constants.exp_currency }} you got in the selected round will be added to the total of points used to determine your payment.


New Products
Shop By
Shopping Options
- Price
-
- $10.00 - $20.00 (1)
- $20.00 - $30.00 (4)
- $40.00 - $50.00 (1)
- $60.00 - $70.00 (1)
My Cart
You have no items in your shopping cart.
Compare Products
You have no items to compare.
Community Poll
What is your favorite Magento feature?


Client: Lifestyle | Category: UI/UX Design
Our market research showed that if a person is trying to achieve a goal, the more often they monitor their progress, the greater the likelihood that they will succeed, and their chances of reaching their goals are even more likely if they physically record them. Following this premise, the idea of an all around lifestyle app was embarked. A mobile application that will present this concept in a delightful and user-friendly manner.
Lifestyle wanted to start with an MVP model to prove their assumptions / hypothesis as they had already performed extensive Market Research, which gave me enough actual data to start the design phase, focusing on the user and business needs.
The interface was presented with a minimalistic style - ensuring the user a straight forward experience. The use of bright and inviting colors are ideal choices, suggesting vitality, vibrance and evoking action. The user is able to add their information and check their progress with ease, by having consistency - in colors, typeface and design patterns. Creating a unified design that demonstrates cohesiveness to the user experience.
With the interface defined, our approach was to build a Minimum Viable Product with a maximum of 5 features - most recommended. Then performing testing and iterations until all the necesssary elements were given the green light by the user.
By presenting a user centered design approach, an engaging User Interface, along with contextually relevant content, the MVP model proved to be the first important milestone achieved.


Dear Niken,
You’re there and I am here.
It’s just distance which is not
an obstacle for our true love.
You’re always in my heart.
And I am always in yours.
May you receive everything that
you have wished for on your
birthday!
Happy Birthday !
♥DickySuryo


This class is used to represent the container of destination nodes corresponding to one origin.
More...
#include <Origin.h>
|
|
const int | index_ |
| |
|
std::list< PairOD * > | destList_ |
| |
This class is used to represent the container of destination nodes corresponding to one origin.
| Origin::Origin |
( |
int |
index | ) |
|
|
explicit |
This class is responsible for deleting all destinations once it is destroyed.
| void Origin::addDestination |
( |
PairOD * |
dest | ) |
|
Adds destination dest to the set of destinations belonging to this origin.
| PairODIterator Origin::begin |
( |
| ) |
|
- Returns
- iterator pointing to the first destination belonging to this origin.
| PairODIterator Origin::end |
( |
| ) |
|
| int Origin::getIndex |
( |
| ) |
const |
| int Origin::getNbDest |
( |
| ) |
const |
- Returns
- total number of destination nodes belonging to this origin.
| bool Origin::isEmpty |
( |
| ) |
const |
- Returns
- true if there is no destinations belonging to this origin, false otherwise.
The documentation for this class was generated from the following files:


--- title: Modifying Quake 3 - part 3 - Missile behavior tags: meta: abstract: In the earlier posts we saw how to compile Quake 3 source code and how to accept user-inputs. In this final post, we'll see how to change the behavior of a rocket to convert it into a homing missile and few variations for this homing missile. thumbnail: date: 2007-04-11T00:04 ---
< Continued from Part 2: Gamer inputs
Changing the behavior of the new missile
Now once we are done with accepting input, we need to change the behavior of the missile based on this value. As discussed before, to achieve this we will have create a new think function that will have the necessary code to exhibit different behavior.
Re-stating: if you see the fire_rocket method in g_missile.c under the game project you will find lines stating:
bolt->nextthink = level.time + 15000; bolt->think = G_ExplodeMissile; //Game time here is in milliseconds.
G_ExplodeMissile is a think function for the rocket. This means that after 15 seconds the rocket will explode. 15 seconds is the next think time here.
We will point it to a different think function missile_think. Also a homing missile needs to move a bit slower initially. This is shown below:
gentity_t *fire_rocket (gentity_t *self, vec3_t start, vec3_t dir) { gentity_t *bolt; ............ bolt->classname = "rocket"; //0 -> off //1 -> Constant speed //2 -> Variable speed //3 -> Fireworks with varible speed if(self->client->pers.homingMissle == 1) { bolt->think = missile_think; bolt->nextthink = level.time + 1; } else if(self->client->pers.homingMissle == 2) { bolt->think = missile_think_variable_speed; bolt->nextthink = level.time + 1; } else if(self->client->pers.homingMissle == 3 || self->client->pers.homingMissle == 4 || self->client->pers.homingMissle == 5) { bolt->think = missile_think_variable_speed_fireworks; bolt->nextthink = level.time + 1; } else { bolt->nextthink = level.time + 15000; bolt->think = G_ExplodeMissile; } ............ ............ bolt->s.pos.trType = TR_LINEAR; // move a bit on the very first frame bolt->s.pos.trTime = level.time - MISSILE_PRESTEP_TIME; VectorCopy( start, bolt->s.pos.trBase ); if (self->client->pers.homingMissle == 1) { // Initial speed of homing missile has to be less VectorScale( dir, 500, bolt->s.pos.trDelta ); } else { VectorScale( dir, 900, bolt->s.pos.trDelta ); } // save net bandwidth SnapVector( bolt->s.pos.trDelta ); VectorCopy (start, bolt->r.currentOrigin); return bolt; }
The speed is initially set to 500. In my code, the speed increases once target is found, but I feel it is completely personal choice.
Now that we have pointed to another think function, we must define it. Before defining the function, let me explain the behavior that the think function will exhibit in the game environment.
Defining: The homing missile will select a nearest target, steer towards it and blast into it.
When the missile is fired and travelling straight, it should scan all the entities in its visibility distance and visual cone. The visual cone limits the visibility of missile and allows it to become more realistic, else it can just take a 180 degree turn and hit some target behind.
It should only select other player entities and should not select the firing-player and his team members (in case of team match).
The target should be directly visible. Since this is a virtual world, the visual cone mathematics does not solve this problem. We need to address it bit differently.
The code for this think function is also placed in g_missile.c just under the line "#define MISSILE_PRESTEP_TIME 50". It is shown below.
#define MISSILE_PRESTEP_TIME 50 gentity_t *findNearestTargetInRadius (gentity_t *ent, float rad, vec3_t *pTargetDirectionVector, vec3_t missileNormalizedForwardDirection, double fVisionCone) { gentity_t *pEntity = NULL; gentity_t *pTarget = NULL; vec3_t pEntityMidBodyVector; vec_t fEntityMidBodyVectorLengh=0; vec_t fTargetDistance=0; vec3_t temp_vector; trace_t trace; // Check for all the entities and find atleast one in radius for (pEntity = g_entities; pEntity < &g_entities[level.num_entities]; pEntity++) { if (!pEntity->inuse) // If not on map, continue continue; // Hit the player in the body and not in feet // Add the mins and maxs. Then divide by two. // Add the current origin to it. // That would yeild the middle of the body (bounding box atleast) VectorAdd(pEntity->r.mins,pEntity->r.maxs,pEntityMidBodyVector); VectorScale(pEntityMidBodyVector,0.5,pEntityMidBodyVector); VectorAdd(pEntity->r.currentOrigin,pEntityMidBodyVector,pEntityMidBodyVector); // Now subtract to get a proper direction. VectorSubtract(pEntityMidBodyVector,ent->r.currentOrigin,pEntityMidBodyVector); // We calculated the distance vector above. So this is the distance to entity. fEntityMidBodyVectorLengh = VectorLength(pEntityMidBodyVector); // If the distance is greater than the given radius, leave it. if (fEntityMidBodyVectorLengh > rad) continue; // Check the entity for different conditions. if(pEntity!=NULL) { if (!pEntity->client) continue; if (pEntity == ent->parent) continue; if (pEntity->health <= 0) continue; if (pEntity->client->sess.sessionTeam == TEAM_SPECTATOR) continue; if ( OnSameTeam( pEntity, ent->parent ) ) continue; // Normalize the direction vector VectorCopy(pEntityMidBodyVector,temp_vector); VectorNormalize(temp_vector); // Lesser the value of vision cone, wider it will be. // Value 1 will narrow down the cone. if ( fVisionCone > 0.01 && DotProduct(missileNormalizedForwardDirection, temp_vector) < fVisionCone ) continue; // Check if visible trap_Trace (&trace, ent->s.pos.trBase, NULL, NULL, pEntity->s.pos.trBase, ent->s.number, MASK_SHOT ); if ( trace.contents & CONTENTS_SOLID ) // If not visible, then continue continue; // Passed all the tests, it is a possible target. // Check if there is closer target. // Added 100 so that missle does not change targets // frequently in case of players close to each other if ((pTarget == NULL) || (fEntityMidBodyVectorLengh < fTargetDistance+100)) { pTarget=pEntity; // Copy the direction vector for the think function. // We dont need to recalculate it there. VectorCopy(pEntityMidBodyVector, (*pTargetDirectionVector)); fTargetDistance = fEntityMidBodyVectorLengh; } } } return pTarget; } void missile_think( gentity_t *ent ) { gentity_t *pTarget = NULL; vec3_t targetdir,forward; int speed=900; VectorCopy(ent->s.pos.trDelta, forward); VectorNormalize(forward); pTarget = findNearestTargetInRadius(ent,5000,&targetdir, forward,0.7); if(pTarget!=NULL) { // Steer the missile to the target. // Lower the value in place of 0.05, larger the turning circle. VectorMA(forward, 0.05, targetdir, targetdir); VectorNormalize(targetdir); VectorScale(targetdir, speed, ent->s.pos.trDelta); } // These two lines are used to smoothen the missile trajectory. // Removing these will exhibit jerky movement. VectorCopy( ent->r.currentOrigin ,ent->s.pos.trBase ); ent->s.pos.trTime = level.time; ent->nextthink = level.time + 1; }
I feel the comments placed above are self-explanatory, so not discussing the same. In the attached code, you will find multiple missile_think functions and in total five different homing modes. Here's a brief on those:
Homing Missiles with constant speed:
These are the ones shown above. Once launched the missile steers towards the target at same speed.
Homing Missiles with variable speed:
I like these one the most and designed for higher precision to hit the target. If the target is far enough, the missile will increase its speed to come close to it. Once it is quite closer, it takes a relative measurement of the angle between itself and target. If angle is too less, missile will again increase its speed and hit the target before it moves out of sight. It is capable of shooting a target in mid-air almost every time.
Homing Missiles with variable speed and fireworks:
Well this idea came from the epic and one time everybody's favorite tele-serial Ramayan, where, in the wars one arrow fired would spawn multiple arrows. Similarly this function facilitates spawning of non-homing rockets when the target is closer. Absolutely no way to escape. Not much interesting to play with. But you'll get to see some great fireworks.
Homing Missiles with variable speed, fireworks and wide angle:
The visual cone is much spread out. Rest is same as above
Homing Missiles with variable speed, fireworks and all view:
Same as above. The visual cone is completely open. Expect the missile to take hair-pin turns when using this.
Concluding...
Here, in the code, I have set some values in code, for the homing missile, such that it works with high precision and the target cannot escape. Now that's a kind of military scenario. In game playing, that will be a real tough scenario and will not be interesting. I leave it upto you to change the code so that the fun part in gaming is not lost.
Learning Quake 3 can be real fun. Some day it can be used to teach you game development, simulation, 3D geometry and vector mathematics. And besides playing games, its engine can be quite useful for creating 3D UI applications, researching on building architectures,etc.
At many places I have wrongly spelled "Missile" as "Missle". Please excuse that. May be I was hungry for "i" when writing this.
Happy coding!


| 1002 | (A) | was lene als a leke and lorne hade the strenghe |
| 1007 | (C) | was lethie as a leke . & lefte hadde her strengħ |
| 989 | (D) | were lithe as a leef and lost have her strengthe |
| 969 | (E) | were lethy as a leef . & lost hadde her streyngthe . |
| (Ex) | ---- no text ---- | |
| 1027 | (L) | was lyþy as a leke & lost han here strengþe |
| 942 | (P) | wex laythly als a leke & loste had þe strengthe |
| 980 | (U) | waxen litel os a leef / and lost haue her strenght |
| 67 | (V) | weryn letchy as a leeke . and lorn haddin þeire strengthe |


-
Theironyard Wk6
Theironyard Wk6
Theironyard Bookmark Wk6
Theironyard Bookmark Wk6
Theironyard Wk5
Theironyard Wk5
Theironyard Tutorial Wk5
Theironyard Tutorial Wk5
Theironyard Bookmark Wk5
Theironyard Bookmark Wk5
Theironyard Wk4
Theironyard Wk4
Theironyard Wk3
Theironyard Wk3
Theironyard Wk2
Theironyard Wk2
Theironyard Wk1
Theironyard Wk1
Mindset
Mindset
-
Phillip Creglow
@pcreglow
Phillip Creglow
@wahoopcc
Phillip Creglow
phillip_creglow


COPY({{settlementInfo.PrintCount}}) OF ORIGINAL
Settlement Slip
Receipt No: SR{{ settlementInfo.SettlementReceiptNo }}
Date: {{settlementInfo.CreatedOn | DanpheDateTime:'format':'YYYY-MM-DD'}} ({{localDate}})
Age/Sex : {{settlementInfo.Patient.DateOfBirth | DanpheDateTime:'age' }}/{{settlementInfo.Patient.Gender}}
Hospital No: {{settlementInfo.Patient.PatientCode}}
Contact No: {{settlementInfo.Patient.PhoneNumber}}
Address: {{settlementInfo.Patient.Address}}, {{settlementInfo.Patient.CountrySubDivisionName}}
Method of payment: {{settlementInfo.PaymentMode }}
| S.No | Invoice Date | Invoice No. | Amount |
|---|---|---|---|
| {{i+1}} | {{txn.CreateOn | DanpheDateTime:'format':'YYYY-MM-DD'}} | {{txn.InvoiceCode}}{{txn.InvoicePrintId}} | {{txn.TotalAmount | number : "1.2-2"}} |
| Total Amount | {{totalCrAmount | number : "1.2-2"}} | ||
| Less: Deposit Amount | {{settlementInfo.DepositDeducted | number : "1.2-2"}} | ||
| Balance Amount 0" style="font-weight:bold;"> Payable 0" style="font-weight:bold;"> Refundable | {{settlementInfo.PayableAmount || settlementInfo.RefundableAmount | number : "1.2-2"}} | ||
| Discount Amount | {{settlementInfo.DiscountAmount | number : "1.2-2"}} | ||
| Paid Amount | {{ settlementInfo.PaidAmount | number : "1.2-2"}} | ||
| Returned Amount | {{ settlementInfo.ReturnedAmount | number : "1.2-2"}} |
Processed By
{{settlementInfo.BillingUser}}
Time: {{settlementInfo.CreatedOn | DanpheDateTime:'format':'HH:mm'}}
Acknowledged By
Signature
Remark: {{settlementInfo.Remarks}}


GoRemind is an app designed to remind users at the proper time and location. Utilizing users' current location and sound feedback, we aim to provide a useful reminder app that doesn't get ignored easily.
The development team consists of UC San Diego students Liuyi Chen, Francisco Ochoa, Kai-Chin Shih, and Yujie Wang.
To add a new task, click on the "ADD" button on the top right.
To delete a task, click on the garbage can icon.
Follow phone notification settings.
Play through headphones.
Reminded only by vibration.
To log out, click on the "LOG OUT" button on the top left.


| Database Environment Functions | Description |
|---|---|
| db_appinit | Open a Berkeley DB environment |
| db_appexit | Close a Berkeley DB environment |
| db_version | Berkeley DB version information |
| Database Functions | Description |
| db_open | Open a database |
| DB->close | Close a database |
| DB->cursor | Open a cursor into a database |
| DB->del | Delete items from a database |
| DB->fd | Return a file descriptor from a database |
| DB->get | Get items from a database |
| DB->join | Perform a database join on cursors |
| DB->put | Store items into a database |
| DB->stat | Return database statistics |
| DB->sync | Flush a database to stable storage |
| Database Cursor Functions | Description |
| DBcursor->c_close | Close a cursor |
| DBcursor->c_del | Delete by cursor |
| DBcursor->c_get | Retrieve by cursor |
| DBcursor->c_put | Store by cursor |
| Lock Manager Functions | Description |
| lock_close | Close a lock region |
| lock_detect | Perform deadlock detection |
| lock_get | Acquire a lock |
| lock_id | Acquire a locker ID |
| lock_open | Open a lock region |
| lock_put | Release a lock |
| lock_stat | Return lock region statistics |
| lock_unlink | Remove a lock region |
| lock_vec | Acquire/release locks |
| Log Manager Functions | Description |
| log_archive | List log and database files. |
| log_close | Close a log region. |
| log_compare | Compare two DB_LSNs. |
| log_file | Map DB_LSNs to log file names. |
| log_flush | Flush log records. |
| log_get | Get a log record. |
| log_open | Open a log region. |
| log_put | Put a log record. |
| log_register | Register a file name with the log manager. |
| log_stat | Return log region statistics. |
| log_unlink | Remove a log region. |
| log_unregister | Unregister a file name with the log manager. |
| Buffer Pool Functions | Description |
| memp_close | Close a buffer pool. |
| memp_fclose | Close a file in a buffer pool. |
| memp_fget | Get a page from a file in a buffer pool. |
| memp_fopen | Open a file in a buffer pool. |
| memp_fput | Return a page from a buffer pool. |
| memp_fset | Modify meta information for buffer pool page. |
| memp_fsync | Flush pages from a file in a buffer pool. |
| memp_open | Open a buffer pool. |
| memp_register | Register input/output functions for a file in a buffer pool. |
| memp_stat | Return buffer pool statistics. |
| memp_sync | Flush pages from a buffer pool. |
| memp_trickle | Trickle flush pages from a buffer pool. |
| memp_unlink | Remove a buffer pool |
| Transaction Manager Functions | Description |
| txn_abort | Abort a transaction |
| txn_begin | Begin a transaction |
| txn_checkpoint | Checkpoint the transaction region |
| txn_close | Close a transaction region |
| txn_commit | Commit a transaction |
| txn_id | Return a transaction ID |
| txn_open | Open a transaction region |
| txn_prepare | Prepare a transaction for commit |
| txn_stat | Return transaction region statistics |
| txn_unlink | Remove a transaction region |
| DB Library Configuration | Description |
| db_jump_set | Configure DB library functions |
| db_value_set | Configure DB library information |
| Historic Interfaces | Description |
| dbm | UNIX Dbm/Ndbm Interfaces |
| hsearch | UNIX Hsearch Interfaces |


Class: ActiveSupport::Testing::Parallelization::Worker
| Relationships & Source Files | |
| Inherits: | Object |
| Defined in: | activesupport/lib/active_support/testing/parallelization/worker.rb |
Class Method Summary
- .new(number, url) ⇒ Worker constructor
Instance Method Summary
Constructor Details
.new(number, url) ⇒ Worker
# File 'activesupport/lib/active_support/testing/parallelization/worker.rb', line 7
def initialize(number, url) @id = SecureRandom.uuid @number = number @url = url @setup_exception = nil end
Instance Method Details
#add_setup_exception(result) (private)
[ GitHub ]#after_fork
[ GitHub ]# File 'activesupport/lib/active_support/testing/parallelization/worker.rb', line 80
def after_fork Parallelization.after_fork_hooks.each do |cb| cb.call(@number) end end
#perform_job(job)
[ GitHub ]# File 'activesupport/lib/active_support/testing/parallelization/worker.rb', line 42
def perform_job(job) klass = job[0] method = job[1] reporter = job[2] set_process_title("#{klass}##{method}") result = klass.with_info_handler reporter do Minitest.run_one_method(klass, method) end safe_record(reporter, result) end
#run_cleanup
[ GitHub ]# File 'activesupport/lib/active_support/testing/parallelization/worker.rb', line 86
def run_cleanup Parallelization.run_cleanup_hooks.each do |cb| cb.call(@number) end end
#safe_record(reporter, result)
[ GitHub ]# File 'activesupport/lib/active_support/testing/parallelization/worker.rb', line 56
def safe_record(reporter, result) add_setup_exception(result) if @setup_exception begin @queue.record(reporter, result) rescue DRb::DRbConnError result.failures.map! do |failure| if failure.respond_to?(:error) # minitest >5.14.0 error = DRb::DRbRemoteError.new(failure.error) else error = DRb::DRbRemoteError.new(failure.exception) end Minitest::UnexpectedError.new(error) end @queue.record(reporter, result) rescue Interrupt @queue.interrupt raise end set_process_title("(idle)") end
#set_process_title(status) (private)
[ GitHub ]# File 'activesupport/lib/active_support/testing/parallelization/worker.rb', line 97
def set_process_title(status) Process.setproctitle("Rails test worker #{@number} - #{status}") end
#start
[ GitHub ]# File 'activesupport/lib/active_support/testing/parallelization/worker.rb', line 14
def start fork do set_process_title("(starting)") DRb.stop_service @queue = DRbObject.new_with_uri(@url) @queue.start_worker(@id) begin after_fork rescue => @setup_exception; end work_from_queue ensure set_process_title("(stopping)") run_cleanup @queue.stop_worker(@id) end end
#work_from_queue
[ GitHub ]# File 'activesupport/lib/active_support/testing/parallelization/worker.rb', line 36
def work_from_queue while job = @queue.pop perform_job(job) end end


--- layout:post title:How to Play Bond Bond date:2016-12-07 14:32:45 +0800 --- Edit Article
Community Q&A
Bond Bond is a fun card game suitable for all ages.It's a good idea to play on a rainy day or just pass some time and it only needs some players and a deck of cards.Gather some friends read this article if you don't know how to play.


{% block head %}{% endblock %}
{{settings.strings.bank_name}}
Home
(current)
About Us
Log In
Поиск
{% block body %}
If you can see this, the KGB
probably
got me.
{% endblock %}
{% block scripts %} {% endblock %}


I am a student at Arizona State University who enjoys hacking and programming in lower level languages such as C and C++.
If you have any questions for me concerning my github or anything else, feel free to contact me with the form below.


Blacksmith Pinter:
Hmm, how strange...!? You should've already gotten the special Armor for Academy members from Blacksmith Newyear in Schuttgart!
(Characters who have undertaken 'To Lead and Be Led' are not permitted to take on this quest.)


| Class and Description |
|---|
| SegmentsStats |
| Class and Description |
|---|
| Segment |
| Class and Description |
|---|
| CommitStats
a class the returns dynamic information with respect to the last commit point of this shard
|
| SegmentsStats |
| Class and Description |
|---|
| Engine.Delete |
| Class and Description |
|---|
| Engine.IndexingOperation |
| Class and Description |
|---|
| EngineException |
| Class and Description |
|---|
| IgnoreOnRecoveryEngineException
Exceptions implementing this interface will be ignored during recovery.
|
| Class and Description |
|---|
| CommitStats
a class the returns dynamic information with respect to the last commit point of this shard
|
| Engine |
| Engine.CommitId |
| Engine.Create |
| Engine.Delete |
| Engine.DeleteByQuery |
| Engine.FailedEngineListener |
| Engine.Get |
| Engine.GetResult |
| Engine.Index |
| Engine.IndexingOperation |
| Engine.Operation |
| Engine.Operation.Origin |
| Engine.Operation.Type |
| Engine.Searcher |
| Engine.SyncedFlushResult |
| EngineClosedException
An engine is already closed.
|
| EngineConfig |
| EngineException |
| EngineFactory
Simple Engine Factory
|
| IndexSearcherWrapper
Extension point to add custom functionality at request time to the
DirectoryReader
and IndexSearcher managed by the Engine . |
| IndexSearcherWrappingService
Service responsible for wrapping the
DirectoryReader and IndexSearcher of a Engine.Searcher via the
configured IndexSearcherWrapper instance. |
| Segment |
| SegmentsStats |
| Class and Description |
|---|
| Engine.GetResult |
| Class and Description |
|---|
| Engine.Create |
| Engine.Delete |
| Engine.Index |
| Class and Description |
|---|
| CommitStats
a class the returns dynamic information with respect to the last commit point of this shard
|
| Engine |
| Engine.CommitId |
| Engine.Create |
| Engine.Delete |
| Engine.FailedEngineListener |
| Engine.Get |
| Engine.GetResult |
| Engine.Index |
| Engine.Searcher |
| Engine.SyncedFlushResult |
| EngineConfig |
| EngineException |
| EngineFactory
Simple Engine Factory
|
| IndexSearcherWrappingService
Service responsible for wrapping the
DirectoryReader and IndexSearcher of a Engine.Searcher via the
configured IndexSearcherWrapper instance. |
| SegmentsStats |
| Class and Description |
|---|
| Engine.Create |
| Engine.Delete |
| Engine.DeleteByQuery |
| Engine.Index |
| Class and Description |
|---|
| Engine.Searcher |
| SegmentsStats |
| Class and Description |
|---|
| Engine.CommitId |
| Class and Description |
|---|
| Engine.Searcher |
| Class and Description |
|---|
| Engine.Searcher |
Copyright © 2009–2016. All rights reserved.


Monday’s TSX breakouts: This sector-leading stock rises to a record high
by Jennifer DowtyOn today’s TSX Breakouts report, there are 35 stocks on the positive breakouts list (stocks with positive price momentum), and 10 securities are on the negative breakouts list (stocks with negative price momentum).
Year-to-date, the top performing sector in the S&P/TSX composite index is the technology sector, reporting a gain of 54 per cent, compared to a 18 per cent return for the TSX Index.
Discussed today is a technology stock that appeared on the positive breakouts list last week with the share price closing at a record high. The stock has delivered robust returns to long-term investors with any price weakness representing a buying opportunity.
In early November, the company reported solid quarterly earnings results, which led to eight analysts revising their target prices higher.
For fiscal 2019, the company’s reported ROE (return on equity) was 18.5 per cent, and ROIC (return on invested capital) was 15.1 per cent. However, the stock is not cheap and several analysts believe the stock is fairly valued at current levels. A potential catalyst for the stock is a large acquisition announcement. The security highlighted today is CGI Inc. (GIB-A-T).
A brief outline is provided below that may serve as a springboard for further fundamental research.
The company
Montreal-based CGI is a leading, global independent information technology and business consulting services firm. The company provides consulting services, technological systems and solutions, and technology servicing outsourced from its clients. The majority, 33 per cent, of CGI’s revenue is from government agencies.
In terms of geographical revenue breakdown, in fiscal 2019, 29 per cent was from the U.S., 16 per cent of revenue was from Canada, 15 per cent was from France, 12 per cent from the U.K., 7 per cent from Sweden, 6 per cent from Finland, and 15 per cent was from the rest of the world.
Before the market opened on Nov. 6, the company reported solid fourth-quarter financial results (the company’s fiscal year-end is Sept. 30) that lifted the share price 2.6 per cent that day.
Revenue climbed to $2.96-billion, up 5.7 per cent year-over-year. Organic, or internal, growth was 4 per cent. Adjusted EBIT (earnings before interest and taxes) came in at $457.5-million. The adjusted EBIT margin was 15.5 per cent. Adjusted earnings per share was $1.21, matching the consensus estimate. Bookings were strong at $12.6-billion with an impressive high book-to-bill ratio of 1.15 times.
There was weakness in the U.K. market due to the ongoing Brexit uncertainty. This region posted a book-to-bill ratio of less than 1 times, which management anticipates will improve in 2020. Backlog was $22.6-billion, up sequentially from $22.4-billion reported last quarter. For fiscal 2019, return on equity was 18.5 per cent, up from 17.3 per cent realized in fiscal 2018. Return on invested capital was 15.1 per cent, up from 14.5 per cent reported last year.
On the earnings call, management reiterated its commitment to its “Build and Buy” strategy. Management targets doubling the size of the company within five to seven years.
Responding to a question relating to large acquisition opportunities, president and chief executive officer George Schindler said: “We’re certainly not through on the metro market merger strategy. There’s lots of continued opportunities there. But to your direct question on the transformational opportunities, I think, again, that we haven’t seen it yet on the larger transformational opportunities on valuation. But I actually believe that we’ll see more attractive valuations as the market continues to shift and slow in different geographies, most pronounced right now in Europe.”
The company has a healthy balance sheet to fund acquisitions.
The company’s shares are dual-listed, trading on Toronto Stock Exchange under the ticker GIB-A and on the New York Stock Exchange with the ticker GIB.
Returning capital to shareholders
Management is focused on growth and as a result, currently does not pay its shareholders a dividend.
The company has been actively repurchasing shares as part of its share buyback program. During fiscal 2019, the company repurchased 12,460,232 shares at a weighted average price of $90.37.
Analysts’ recommendations
The stock is well covered.
Since the company released its fourth-quarter financial results, 17 analysts that have issued reports, of which nine analysts have buy recommendations, six analysts have neutral recommendations, and two analysts have “sell” recommendations on the stock (Derric Macron of Société Générale and Morningstar’s Andrew Lange).
The firms providing recent research coverage on the company are: Accountability Research, BMO Nesbitt Burns, Canaccord Genuity, CIBC World Markets, Desjardins Securities, Eight Capital, GMP, Morningstar, National Bank Financial, PI Financial, Raymond James, RBC Dominion Securities, Scotiabank, Société Générale, TD Securities, Veritas Investment Research, and Wells Fargo Securities.
Revised recommendations
This month, after the company reported its quarterly earnings results, eight analysts raised their targets
- BMO’s Thanos Moschopoulos to $117 from $115;
- PI Financial’s Gus Papageorgiou by $5 to $111;
- Raymond James’ Steven Li to $114 from $110;
- TD Securities’ Daniel Chan to $120 from $115;
- Wells Fargo’s Edward Caso Jr. to $108 from $105;
- Accountability Research’s Harriet Li by $11 to $113;
- Veritas’ Howard Leung to $110 from $105.
- Société Générale’s Derric Marcon by $1 to $87.
Financial forecasts
The Street is forecasting earnings per share of $5.18 in fiscal 2020, up 10 per cent from $4.70 reported in fiscal 2019, with earnings expected to rise to $5.60 in fiscal 2021.
Valuation
On a valuation basis, the stock is not cheap.
According to Bloomberg, the stock trades at a price-to-earnings multiple of 20.9 times the fiscal 2020 consensus estimate, above its three-year historical average of 18.6 times, but below its peak multiple of 22.6 times. On an enterprise value-to-EBITDA (earnings before interest, taxes, depreciation and amortization) basis, the stock is trading at 13.3 times the fiscal 2020 consensus estimate, above the three-year historical average of 11.4 times.
The average one-year target price is $109.56, suggesting the share price is nearly fully valued. However, target prices range widely. Individual target prices are as follows in numerical order: $82 (from Mornigstar’s Andrew Lange), $87, three at $106, $108, two at $110, $111, $113, $114, $115, $116, $117, three at $120 (from National Bank’s Richard Tse, TD’s Daniel Chan and Desjardins’ Maher Yaghi).
Insider transaction activity
Month-to-date, three insiders have reported trades in the public market – all sales.
Between Nov. 11 and Nov. 18, Leena-Mari Lähteenmaa, president of Finland, Poland and the Baltics, exercised her options, receiving 9,912 shares at an average cost per share of approximately $43.85, and sold 9,912 shares at an average price per share of roughly $106.84, eliminating her portfolio’s position. Net proceeds, not including trading fees, totaled over $624,000.
On Nov. 13, founder and the executive chairman Serge Godin exercised his rights, receiving 135,429 shares, and sold 72,198 shares at a price per share of $105.581, leaving 63,231 shares in his personal account. In a separate account where he has indirect ownership (Godin Family Foundation), he sold 85,000 shares at an average price per share of approximately $105.58 with 84,600 shares remaining in this account.
On Nov. 12, Gilles Labbé, who sits on the board of directors, exercised his options, receiving 7,292 shares at an average cost per share of approximately $15.18, and sold 7,292 shares at an average price per share of roughly $105.81, eliminating his account’s holdings. Net proceeds, excluding commission charges, exceeded $660,000.
Chart watch
The stock has been a strong long-term performer with any price weakness representing a buying opportunity. The share price closed at a record high of $109.46 on Tues. Nov. 19. Year-to-date, the share price is up 30 per cent. Looking back, in 2018, 2017, 2016, 2015, 2014 and 2013, the stock price rallied 22 per cent, 6 per cent, and 16 per cent, 25 per cent, 25 per cent, and 55 per cent, respectively.
In addition, the stock has provided investors with downside protection during periods of market weakness. For instance, between Oct. 1, 2018 and Dec. 24, 2018, the S&P/TSX composite index collapsed 14 per cent, while CGI’s stock price retreated just 4 per cent.
Looking at key resistance and support levels for CGI, the stock price is approaching an initial ceiling of resistance around $110, and after that there is overhead resistance around $120. There is strong downside technical support around $100, near its 200-day moving average (at $98.94).
The Breakouts file is a technical analysis screen intended to identify companies that are technically breaking out. In addition, this report highlights a company’s dividend policy, analysts’ recommendations, financial forecasts, and provides a brief technical analysis for a security to provide readers with more information.
If a stock appears on the positive breakouts list, this indicates positive price momentum, and that a company may be worthwhile for investors to look at the fundamentals in order to determine if the recent price strength is warranted and will continue. If a security appears on the negative breakouts list, this indicates negative price momentum, and may be indicative of either deteriorating fundamentals or perhaps indicates a buying opportunity.
Securities screened are from the S&P/TSX composite index, the S&P/TSX Small Cap index, as well as Canadian small cap stocks outside of these indexes that have a minimum market capitalization of $200-million.
A technical analysis screen does not replace fundamental analysis, but can help identify companies worth having a closer look at.
| Positive Breakokuts | Nov. 22 close | |
|---|---|---|
| ABT-T | Absolute Software Corp | $8.52 |
| AD-T | Alaris Royalty Corp | $22.10 |
| ACQ-T | AutoCanada Inc | $13.71 |
| BEP-UN-T | Brookfield Renewable Energy Partners LP | $60.98 |
| BTB-UN-T | BTB Real Estate Investment Trust | $4.98 |
| CWB-T | Canadian Western Bank | $35.89 |
| CWX-T | CanWel Building Materials Group Ltd. | $5.41 |
| CPX-T | Capital Power Corp | $32.78 |
| CM-T | CIBC | $115.46 |
| CSU-T | Constellation Software Inc | $1,400.03 |
| EFN-T | Element Fleet Management Corp. | $11.61 |
| ENGH-T | Enghouse Systems Ltd | $41.40 |
| GSY-T | goeasy Ltd | $65.29 |
| GCG-A-T | Guardian Capital Group Ltd | $27.51 |
| HDI-T | Hardwoods Distribution Inc | $15.92 |
| IPCO-T | International Petroleum Corp. of Sweden | $5.78 |
| JE-T | Just Energy Group Inc | $3.42 |
| KEL-T | Kelt Exploration Ltd | $3.81 |
| KXS-T | Kinaxis Inc | $106.17 |
| MEQ-T | Mainstreet Equity Corp | $68.70 |
| MKP-T | MCAN Mortgage Corp | $16.87 |
| NA-T | National Bank of Canada | $70.69 |
| NWH-UN-T | NorthWest Healthcare Properties REIT | $12.32 |
| NVO-T | Novo Resources Corp. | $3.16 |
| PLC-T | Park Lawn Corp. | $29.96 |
| PTS-T | Points International Ltd | $16.27 |
| REAL-T | Real Matters | $12.19 |
| RPI-UN-T | Richards Packaging Income Fund | $45.10 |
| RY-T | Royal Bank of Canada | $109.25 |
| RUS-T | Russel Metals Inc | $23.14 |
| TFII-T | TFI International Inc. | $43.82 |
| TSGI-T | The Stars Group Inc. | $31.57 |
| TRZ-T | Transat AT Inc | $16.08 |
| TCN-T | Tricon Capital Group Inc | $11.03 |
| TSU-T | Trisura Group Ltd. | $38.96 |
| Negative Breakouts | ||
| ADW-A-T | Andrew Peller Ltd | $11.90 |
| BPF-UN-T | Boston Pizza Royalties Income Fund | $14.32 |
| CKI-T | Clarke Inc | $12.30 |
| FEC-T | Frontera Energy Corp. | $9.44 |
| HR-UN-T | H&R Real Estate Investment Trust | $21.22 |
| HBM-T | HudBay Minerals Inc | $4.29 |
| LGO-T | Largo Resources Ltd. | $0.91 |
| RSI-T | Rogers Sugar Inc | $4.65 |
| TH-T | Theratechnologies Inc | $4.09 |
| TCL-A-T | Transcontinental Inc | $14.53 |
Source: Bloomberg


{% extends "modal_form.html" %} {% block pre_form_content %} Confirm that the Bill of Materials (BOM) is valid for:{{ part.full_name }} {% endblock %}


Why do ML engineers struggle to build trustworthy ML applications?
While research in ethics of AI increased significantly during the last years, practitioners tend to neglect the risks coming from inequity or unfairness of their ML components. This is one of the insights of the annual State of AI report for 2020 recently published by the Human-Centred Artificial Intelligence group from Stanford University.
Why does this gap exist between theory and practice, and how can it be closed?
In our own research (SE4ML), we have approached this issue from several angles, specifically for the major AI subarea machine learning (ML). On the one hand, we studied ML engineering practices and their level of adoption among ML engineering teams. On the other hand, we studied the requirements for trustworthy ML formulated by policy makers. Finally, we investigated the relative importance of a range of decision drivers for architects of ML systems.
As we discuss in more detail below, our overall conclusion is that ML engineering teams lack concrete courses of action for designing and building their systems, specifically to satisfy trustworthiness requirements, such as security, robustness, and fairness. Also, we can draw the conclusion that practitioners are aware of the ethical and robustness risks raised by improper development of ML components, but are currently constrained by more traditional concerns such as scaling their systems, or maintaining performance between training and testing.
What are ML engineering practices?
ML engineering is a discipline concerned with developing engineering principles for the design, development, operation and maintenance of software systems with ML components. In order to facilitate the adoption of engineering principles by practitioners, we have systematically distilled actionable engineering practices. On our website, we share the software engineering best practices for ML components. Moreover, we measure and publish the adoption rate of these practices and their perceived effects, in order to allow comparisons and assessments of teams of engineers building software with ML components.
Adoption of practices for trustworthy ML, in the order defined in the catalogue.
Trustworthy ML
Following recent interest by policy makers to address improper use of machine learning (ML), we made efforts to extend our catalogue of practices to include operational practices for trustworthy ML. In particular, we followed the requirements for trustworthy ML developed by the High level expert group on AI from the European Commission, which defines trustworthy AI as being lawful, ethical and robust, and defines 7 key requirements for trustworthy AI.
Inspired by these requirements, we searched the literature for engineering practices that can be directly applied by developers, to address ethical and robust development of ML components. In total, we identified 14 new practices, which include topics such as testing for bias, assuring security, or having the application audited by third parties. For all new practices, we summarised the related work into a body of knowledge that follows the same structure as the previous practices from our catalogue, including detailed description, concise statement of intent, motivation, applicability, related practices, and references.
We also extended our survey to measure the adoption of trustworthiness practices by teams developing ML solutions. Unfortunately, we found out that the practices for trustworthy ML have relatively low adoption (as can be seen in the figure above). In particular, practices related to assuring security of ML components have the lowest adoption.
The contributing factors to these results are diverse. For example, most defences against adversarial examples — a known threat to ML components — have been breached. Moreover, research into data poisoning attacks shows that only a small percentage of training data needs to be altered in order to induce malicious behaviours. We believe the lack of “off the shelf” solution to security issues of ML components is the largest contributor factor to our results.
Architectural decision drivers for systems using ML components.
Architecture of ML systems
In a parallel study, in which we investigated how practitioners define the software architecture of systems with ML components, we asked practitioners to rank the most important decision drivers for their systems. Once again, we found out that decision drivers related to trustworthy ML, such as Security, Privacy, or Robustness, were considered less important than more traditional drivers such as Performance or Scalability (as can be seen in the figure above). These results entail that practitioners are still working on solving basic concerns for developing and operationalising the ML components, and tend to neglect the importance of trustworthy ML.
Outlook
We believe that consistent efforts to address ethics and robustness through the eyes of software engineering will enhance the practitioners’ ability to prioritise these requirements, and develop trustworthy ML components. Moreover, we believe that the adoption of trustworthiness-specific and general ML engineering practices is interconnected. For instance, the practice of continuous integration can make the practices for bias testing more effective. Therefore, we are working on defining sets of traditional engineering and trustworthiness related practices that can be directly applied by practitioners to develop more ethical and robust ML components.
Learn more about the practices for trustworthy ML by reading our publication.


Content
The Content
element provides an extension point for
the view of derived components. Its children define default content to
be used in the stead of a default view.
Content < Element
A component may have at most one Content
element within
its view, i.e., there cannot exist two Content
elements C1 and C2 such that
C1.view
is the same View
element as
C2.view
. Multiple
Content
elements can be supported with the addition of a
select
property. This property would allow to select
specific nodes in the View
of a derived component,
instead of the whole view (which would still be the default.) A query
language beyond that used for watches must also be defined.


  It's like a morality car wash." --Sam "Ace" Rothstein
In Casino, director Martin Scorsese takes a good look at those who run Las Vegas' casinos as well as the also-rans. The thought that some 30 million people visit Las Vegas each year (and, I confess to being one of them), is enough to make you sick at heart. You may win now and then but in the final computation everyone is a loser. Of course, that does not include the gangsters who run the casinos. For them it's a gold mine.
Scorsese's film is based on the real life story (from Nicholas Pileggi's book) of Sam "Ace" Rothstein, a big time bookie, who was sent to Las Vegas by "the mob" to find out who was stealing, who tinkered with the mechanisms of slot machines so they would win huge jackpots, and to put a stop to it, as well as watch that the blackjack dealers were kept honest. Oddly, you are left with a lot of empathy for Rothstein (Robert De Niro) largely because the way he plays his role and Scorsese's direction.
While Rothstein may have known everything there was to know about gambling, drugs, prostitution, alcohol. etc. he nevertheless falls heavily for Ginger McKenna (Sharon Stone). He even goes so far as to marry her, while she becomes a drug and alcohol user. This bodes no good for Ace. I do not think it did much for Sharon Stone, either, as I felt she was miscast.
There is one other main character, Nicky (Joe Pesci), a childhood friend of Ace, but too much of a trigger-happy mobster. Pesci runs away with the film as he bends all his efforts to take over the operations from his pal, Ace.
Also in the cast but in smaller roles are Alan King, James Woods, Don Rickles L Q Jones and Kevin Pollak.
Scorsese has succeeded in once again making an exciting film but it would not have hurt one iota if a half hour had been edited out along the way.
3.5 bytes
4 bytes = Superb 3 bytes = Too good to be missed 2 bytes = So so 1 byte = Save your money
Ben Hoffman
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


Vim documentation: if_sniff
main help file*if_sniff.txt* For Vim version 7.2. Last change: 2005 Mar 29 VIM REFERENCE MANUAL by Anton Leherbauer<EMAIL_ADDRESS>SNiFF+ and Vim *sniff* 1. Introduction |sniff-intro| 2. Commands |sniff-commands| 3. Compiling Vim with SNiFF+ interface |sniff-compiling| {Vi does not have any of these commands} *E275* *E274* *E276* *E278* *E279* The SNiFF+ interface only works, when Vim was compiled with the |+sniff| feature.
1. Introduction *sniff-intro* The following features for the use with SNiFF+ are available: * Vim can be used for all editing requests * SNiFF+ recognizes and updates all browsers when a file is saved in Vim * SNiFF+ commands can be issued directly from Vim How to use Vim with SNiFF+ 1. Make sure SNiFF+ is running. 2. In the Editor view of the Preferences dialog set the Field named 'External Editor' to 'Emacs/Vim'. 4. Start Vim 5. Connect to SNiFF+ (:sniff connect) Once a connection is established, SNiFF+ uses Vim for all requests to show or edit source code. On the other hand, you can send queries to SNiFF+ with the :sniff command.
2. Commands *sniff-commands* *:sniff* *:sni* :sni[ff] request [symbol] Send request to sniff with optional symbol. {not in Vi} :sni[ff] Display all possible requests and the connection status Most requests require a symbol (identifier) as parameter. If it is omitted, Vim will use the current word under the cursor. The available requests are listed below: request mapping description ------------------------------------------------------------------------------- connect sc Establish connection with SNiFF+. Make sure SNiFF+ is prepared for this in the Preferences disconnect sq Disconnect from SNiFF+. You can reconnect any time with :sniff connect (or 'sc') toggle st Toggle between implementation and definition file find-symbol sf Load the symbol into a Symbol Browser browse-class sb Loads the class into a Class Browser superclass ss Edit superclass of symbol overridden so Edit overridden method of symbol retrieve-file srf Retrieve symbol in current file retrieve-project srp Retrieve symbol in current project retrieve-all-projects srP Retrieve symbol in all projects retrieve-next sR Retrieve symbol using current Retriever settings goto-symbol sg Goto definition or implementation of symbol hierarchy sh Load symbol into the Hierarchy Browser restr-hier sH same as above but show only related classes xref-to sxt Start a refers-to query on symbol and load the results into the Cross Referencer xref-by sxb Start a referred-by query on symbol xref-has sxh Start a refers-to components query on symbol xref-used-by sxu Start a referred-by as component query on symbol show-docu sd Show documentation of symbol gen-docu sD Generate documentation of symbol The mappings are defined in a file 'sniff.vim', which is part of every SNiFF+ product ($SNIFF_DIR/config/sniff.vim). This file is sourced whenever Vim connects to SNiFF+.
3. Compiling Vim with SNiFF+ interface *sniff-compiling* To compile Vim with SNiFF+ support, you need two source files of the extra archive: if_sniff.c and if_sniff.h. On Unix: Edit the Makefile and uncomment the line "--enable-sniff". Or run configure manually with this argument. On NT: Specify SNIFF=yes with your make command. top - main help file


{% extends "templates/base-1-col.html" %} {% block content-body %}
Custom-styled Google Maps:
Maps generated from .kml files uploaded to the blog:
.kml


4chan captcha key: 6Ldp2bsSAAAAAAJ5uyx_lx34lJeEpTLVkP5k04qc Google supports a noscript version of the new recaptcha, described here https://developers.google.com/recaptcha/docs/faq https://www.google.com/recaptcha/api/fallback?k=6Ldp2bsSAAAAAAJ5uyx_lx34lJeEpTLVkP5k04qc Put this in an iframe and when the user has successfully filled in the captcha the user is told to copy paste the key into the real website field (outside the iframe, g-captcha-response) https://www.google.com/recaptcha/api/challenge?k=6Ldp2bsSAAAAAAJ5uyx_lx34lJeEpTLVkP5k04qc contains an image and and a field named "c" with the challenge after the user has solved the image, do a POST to https://www.google.com/recaptcha/api/fallback?k=6Ldp2bsSAAAAAAJ5uyx_lx34lJeEpTLVkP5k04qc POST: c = the challenge given response = text response from the user Next if the captcha was solved, get the hash inside the textarea of div.fbc-verification-token If the textarea isn't present, the captcha wasn't solved correctly you'll reuse the received html. next send off the reply to 4chan POST: g-captcha-response: HASH Initial HTML:


Typography Assignment
Basic Idea
Blue on Blue
Yellow on Blue
Pink on Blue
Orange on Blue
A Little Andy Warhol
Or Maybe Exit Through The Gift Shop


XKCD Star Wars Spoiler Generator
Loading...
Generate
Share
This generator was made after I saw the
XKCD comic
The source code is availabe on
Github