Founder of China's smartphone maker Smartisan barred from planes, trains
by ReutersBEIJING: The founder of China’s smartphone maker Smartisan Technology has been barred from taking flights and high-speed railway trains due to the company’s failure to comply with court rulings from a contractual dispute, a local court document showed.
Smartisan is a niche player in China’s smartphone sector and is best known for its flamboyant founder Luo Yonghao, who made headlines in recent years with bold statements including a claim that he was planning to acquire Apple.
Luo is also barred from spending at higher quality hotels, night clubs and golf clubs, buying properties and high-premium insurance and sending his children to expensive private schools, under an order issued by the court of Danyang in eastern China.
The order was issued after the court found the company failed to comply with previous court rulings from a contractual dispute with a local electronics firm, the document said.
Smartisan’s smartphone sales in China lag behind players like Huawei, Xiaomi and Oppo. Chinese social media firm ByteDance earlier this year said it was developing a phone with Smartisan after acquiring a set of patents from it.
Smartisan launched a new phone on Thursday. In a video posted on its official Weibo account, Smartisan Chief Operating Officer Wu Dezhou said that most of the Smartisan team had moved to ByteDance following the deal to work on smartphones and education hardware, but that Luo had left the team due to personal reasons.
Luo, in a statement posted on the twitter-like social media platform Weibo, apologized to his creditors and investors and promised to pay off all of his debt in the future.
The company used to owe as much as 600 million yuan as business deteriorated since last year, but managed to return 300 million yuan during the past 10 months, said Luo.


--- title: Lesson 7 - Siamese keywords: fastai sidebar: home_sidebar nb_path: "nbs/course2020/vision/07_Siamese.ipynb" ---
This notebook goes through how to build a Siamese dataset from scratch.
Common use cases:
Let's think of an example problem:
I own 3 dogs and I want to differentiate between the three of them from a photo, but I only have 5 images of each animal. By our normal standards, we would say that is far too little of data for us to work with. But in this case, we have now 120 training samples (not including augmentation).
Our example will use the PETS
dataset. We won't be training, but if you're dealing with this problem, you should have all the tools you need by now
from fastai.vision.all import *
src = untar_data(URLs.PETS)/'images'
We'll grab all the file names:
items = get_image_files(src)
And now we can start preparing our dataset. We will be doing everything at the lowest level possible today. First let's make a transform that will open some image from a filename and resize it.
def resized_image(fn:Path, sz=128):
"Opens an image from `fn` and resizes it to `sz`"
x = Image.open(fn).convert('RGB').resize((sz,sz))
return tensor(array(x)).permute(2,0,1).float()/255.
Now let's get two random images (that we know are different)
img1 = resized_image(items[0], 448)
img2 = resized_image(items[1], 448)
Now we need some way of viewing our image, along with a title. Let's make a TitledImage
class:
class TitledImage(Tuple):
def show(self, ctx=None, **kwargs): show_titled_image(self, ctx=ctx, **kwargs)
TitledImage(img1, 'Test').show()
Now let's make something similar for a pair of images (our Siamese
)
class SiameseImage(Tuple):
def show(self, ctx=None, **kwargs):
im1, im2, is_same = self
return show_image(torch.cat([im1,im2], dim=2), title=is_same, ctx=ctx, **kwargs)
Let's look at two examples (which look remarkably) similar to that image earlier:
SiameseImage(img1, img1, True).show(figsize=(7,7));
SiameseImage(img1, img2, False).show(figsize=(7,7));
class SiamesePair(Transform):
"A transform to generate Siamese data"
def __init__(self, items, labels):
self.items, self.labels, self.assoc = items,labels,self
sortlbl = sorted(enumerate(labels), key=itemgetter(1))
self.clsmap = {k:L(v).itemgot(0) for k,v in itertools.groupby(sortlbl, key=itemgetter(1))}
self.idxs = range_of(self.items)
def encodes(self,i):
"x: tuple of `i`th image and a random image from same or different class; y: True if same class"
othercls = self.clsmap[self.labels[i]] if random.random()>0.5 else self.idxs
otherit = random.choice(othercls)
same = tensor([self.labels[otherit]==self.labels[i]]).int()
return SiameseImage(self.items[i], self.items[otherit], same)
We are going to want some labels to be sued, so let's grab some:
labeller = RegexLabeller(pat = r'/([^/]+)_\d+.jpg$')
labels = items.map(labeller)
labels[:5], len(labels)
Now we can build our SiamesePair
transform
sp = SiamesePair(items, labels)
Let's look at a few bits
sp.clsmap
sp.labels
Now finally, we can build our Pipeline
First we'll want to make a Transform
out of that resized_image
function we had
OpenAndResize = Transform(resized_image)
And now that we have all the pieces together, let's build a Pipeline
:
pipe = Pipeline([sp, OpenAndResize])
And take a look at it's first set:
x,y,z = pipe(0)
x.shape, y.shape, z
To turn anything into a DataLoader
, we want it to first be a TfmdList
. We can accomplish this by passing in a list of index's and a Pipeline
to run through:
tls = TfmdLists(range_of(items), pipe)
And now make our Dataloaders
dls = tls.dataloaders(bs=16, after_batch=[Normalize.from_stats(*imagenet_stats)])
And we can look at a batch!
batch = dls.one_batch()
Now I did not get the show
function working, so let's take a look the very "simple" way
a,b,c = batch[0][0], batch[1][0], batch[2][0]
a.shape, b.shape, c
from torchvision import transforms
im1 = transforms.ToPILImage()(batch[0][0]).convert("RGB")
im2 = transforms.ToPILImage()(batch[1][0]).convert("RGB")
display(im1, im2)
While we cannot display, you now have a DataLoader
ready for Siamese networks!
For more information on training a model and predicting, see the official fastai Siamese tutorial here


{% extends 'vesper/base.html' %} {% block head %}
Shows the recording capabilities of the selected audio input device.


Admin User
Locators
Username
Password
Action
Admin
Aa1234567
edit
archive
Locator Username
Locator Password
Action
Admin
Aa1234567
edit
archive


This Bloom Pass is inspired by the bloom pass of the Unreal Engine. It creates a mip map chain of bloom textures and blur them with different radii. Because of the weigted combination of mips, and since larger blurs are done on higher mips, this bloom is better in quality and performance.
Model: Primary Ion Drive by Mike Murdock, CC Attribution.


Philp Park
Hoigi-dong Dongdaemun-gu Seoul
phone) 010-9999-9999 | email<EMAIL_ADDRESS>Education
KyungHee University 2013-2018
PP High School 2008-2011
Work History
VeggieAvocado CTO  2018
Keystone Investment CTO 2016-present
Skill
Project Manager
Negotiated and finalized contracts with new and existing customers.
Maintained project schedules by managing timelines and making proactive adjustments.
Defined clear targets and objectives and communicated them to other team members.
Monitored the market to capitalize on the latest trends.


{include file="common/header" /} {include file="common/css" /}
{include file="common/navbar" /} {include file="common/head" /}
{$postcard.title}
{$postcard.create_time}
正面
反面
原文件
下载
{$postcard.descript}
{include file="common/js" /}


Ocala events
-
what did beethoven die from
Ishmael - Profile Of Ishmael Son Of Abraham
Ishmael was the first son of Abraham, born to his wife's maid servant Hagar. Abraham's wife Sarah was well-past childbearing years when she convinced her .
http://christianity.about.com/od/oldtestamentpeople/a/Ishmael.htmGenesis 25:16 These were the sons of Ishmael, and these are the ...
These twelve sons of Ishmael became the founders of twelve tribes named after . These are Ishmael's sons, and these are their names by their villages and .
http://bible.cc/genesis/25-16.htmHow the Offspring of Isaac Blesses the Sons of Ishmael - Desiring God
Oct 22, 2011 . I am speaking the truth in ChristI am not lying; my conscience bears me witness in the Holy Spirit 2 that I have great sorrow and unceasing .
http://www.desiringgod.org/resource-library/sermons/how-the-offspring-of-isaac-blesses-the-sons-of-ishmael
danny carlos kiss me mp3 Upcoming events in Ocala
seige of darkness drizzt Hottest Tickets
-
Apr 11i max in carolina beach nc
Amway Center -
Apr 28resume and vendor management
Amway Center -
Jun 25tricoci university beauty culture
Bob Carr Performing Arts Center -
Mar 30skin effects intensive 7 day firming
Amway Center -
Aug 27marraige licence required for hotel stay
Amway Center -
Jun 21free application to universities
Amway Center -
Sep 13no spit no quit
Francis Field -
Mar 17fair det collection act
St Augustine Amphitheatre -
Oct 8las ventanas and mexico and hotel
Amway Center -
May 4wild girls at madi graw
Bob Carr Performing Arts Center
Ocala's best venues
-
Abraham and the Child of Sacrifice - Isaac or Ishmael?
They believe that the Holy Bible supports this by its declaration that Abraham offered his only son (see above verses). Ishmael was Abraham's only son for over .
http://www.answering-islam.org/Shamoun/sacrifice.htm -
Ishmael and Isaac
Ishmael - the son of the Egyptian slave woman - is the father of the Arab nations, most of whom today are Muslim.... When Abraham (then still known as Avram .
http://www.therefinersfire.org/ishmael_and_isaac.htm -
Ishmael: How Does it End? - Meaningful Life Center
Thus ends the story of Ishmael son of Abraham. In each of the last three Torah portions Ishmael plays a prominent role: in Lech Lecho Ishmael is born, with the .
http://www.meaningfullife.com/currentevents/sept11/IshmaelCOLON_How_Does_it_EndQUESTION.phpwhen seven worlds collide
98 people's favorite
-
Isaac and Ishmael, Children of the Bible Biographies Childrens Corner
Abraham had two sons; one named Ishmael, and the other Isaac. Though these brothers had the same father, they did not have the same mother; Ishmael was .
http://www.wholesomewords.org/children/chbible/ch1.html -
God promised to make a Nation from Hagar and Abraham
Ishmael married a daughter of the Jorhamite prince Mudad and she gave him an illustrious son named Kedar (Ar. Qaidar). Kedar was the ancestor of Adnan (Ar.
http://www.mostmerciful.com/js-md1.htm


Current student at Eastern Michigan University. Formerly Education Major, formerly English Major, formerly Economics Major, currently Computer Science - Applied Major. I've been a computer user since 1996 - I have medium+ computer literacy.  I am also a compulsive reader.
Please don't judge the webpage, or my life, too harsly as they are both works in progress. Things to check out to better understand me:


Nakama.NSelfUpdateMessage.Builder Class Reference
Public Member Functions | |
| Builder () | |
| Builder | AvatarUrl (string avatarUrl) |
| Builder | Handle (string handle) |
| Builder | Fullname (string fullname) |
| Builder | Lang (string lang) |
| Builder | Location (string location) |
| Builder | Metadata (string metadata) |
| Builder | Timezone (string timezone) |
| NSelfUpdateMessage | Build () |
Detailed Description
Definition at line 48 of file NSelfUpdateMessage.cs.
Constructor & Destructor Documentation
◆ Builder()
| Nakama.NSelfUpdateMessage.Builder.Builder | ( | ) |
Definition at line 52 of file NSelfUpdateMessage.cs.
Member Function Documentation
◆ AvatarUrl()
| Builder Nakama.NSelfUpdateMessage.Builder.AvatarUrl | ( | string | avatarUrl | ) |
Definition at line 57 of file NSelfUpdateMessage.cs.
◆ Build()
| NSelfUpdateMessage Nakama.NSelfUpdateMessage.Builder.Build | ( | ) |
Definition at line 99 of file NSelfUpdateMessage.cs.
◆ Fullname()
| Builder Nakama.NSelfUpdateMessage.Builder.Fullname | ( | string | fullname | ) |
Definition at line 69 of file NSelfUpdateMessage.cs.
◆ Handle()
| Builder Nakama.NSelfUpdateMessage.Builder.Handle | ( | string | handle | ) |
Definition at line 63 of file NSelfUpdateMessage.cs.
◆ Lang()
| Builder Nakama.NSelfUpdateMessage.Builder.Lang | ( | string | lang | ) |
Definition at line 75 of file NSelfUpdateMessage.cs.
◆ Location()
| Builder Nakama.NSelfUpdateMessage.Builder.Location | ( | string | location | ) |
Definition at line 81 of file NSelfUpdateMessage.cs.
◆ Metadata()
| Builder Nakama.NSelfUpdateMessage.Builder.Metadata | ( | string | metadata | ) |
Definition at line 87 of file NSelfUpdateMessage.cs.
◆ Timezone()
| Builder Nakama.NSelfUpdateMessage.Builder.Timezone | ( | string | timezone | ) |
Definition at line 93 of file NSelfUpdateMessage.cs.
The documentation for this class was generated from the following file:
- Nakama/NSelfUpdateMessage.cs


Company profile - Canadian Company Capabilities
Third-Party Information Liability Disclaimer
Some of the information on this Web page has been provided by external sources. The Government of Canada is not responsible for the accuracy, reliability or currency of the information supplied by external sources. Users wishing to rely upon this information should consult directly with the source of the information. Content provided by external sources is not subject to official languages, privacy and accessibility requirements.
Clarity Healthcare Inc
Mailing Address:
PO Box 1017GRAND BEND, Ontario
N0M 1T0
Location Address:
17 Harbour Park CrtGRAND BEND, Ontario
N0M 1T0
Tel.:<PHONE_NUMBER>
Tel.:<PHONE_NUMBER>
Fax:<PHONE_NUMBER>
Logo
Company Profile
Clarity Healthcare Solutions provides patient assessment software for long-term care, rehab, mental health and homecare. Using international standards to perform point of care assessments for hospital and community health care agencies.
Products are based on the InterRAI assessment tools. We provide CCRS (Complex continuing care reporting), NRS (National Rehabilitation Reporting), MHRS (Mental Health Reporting) and HCRS (Home care reporting) for CIHI data submission.
Full profile
Full profile
Contact information
Company description
Product / Service / Licensing
Clarity Healthcare for NRRS - FIM(R) reporting for Inpatient Rehab
Clarity Healthcare of MHRS - RAI-MH (C) Ontario Mental Health reporting for inpatient mental health.
Clarity Healthcare for HCRS - RAI-HC(c) the home care reporting of patient assessments.
Sector information
Key / Major clients:
http://www.torontorehab.on.ca/ - Toronto Rehab is Canada's largest inpatient rehab institutionhttp://www.westpark.org/ - West Park is one of Canada's leading complex care and rehab facilities
http://www.hamiltonhealthsciences.ca/ - Hamilton Health Sciences is leading teaching hospital in Canada
http://www.tegh.on.ca - Toronto East General Hospital
http://tsh.to/ - The Scarborough Hospital
http://www.tbrhsc.com/ - Thunder Bay Regional Hospital
http://www.sjcg.net - St. Joseph's Care Group in Thunder Bay
http://www.hrsrh.on.ca/ - Sudbury Regional Hospital
http://www.pemgenhos.org/ - Pembroke Regional Hospital
http://www.cornwallgeneralhospital.com/ - Cornwall General Hospital
Success stories:
Clarity Healthcare has been implemented at leading teaching hospitals to integrate with legacy systems. The Clarity Healthcare Solution is used in community and regional hospitals to provide multi-facility access to patient assessments.Clarity healthcare is integrated with Meditec, Cerner, Misys and Anzer ADT systems. Using standard HL7 messaging the software can be used to integrate leading healthcare software.
Testimonial:
Each discipline has the independence to input their own data which not only improves efficiency, but also enhances the quality of the data being collected at the Hospital. Our clinicians working with Clarity Healthcare for NRRS are pleased about how easy it is to use and there is very little maintenance required by our IT department which reduces the workload for our support staff.Connie Benn, RN, BScN. MDS Classification
Officer, Continuing Care and Rehabilitation Program , Hôpital régional de Sudbury Regional Hospital: Laurentian Site
---------------------------------------------------------------------------------------------
Thunder Bay Regional Health Sciences Centre is a state-of-the-art acute care facility serving the healthcare needs of people living in Thunder Bay and Northwestern Ontario. The Regional Health Sciences Centre has 375 acute care beds and is closely affiliated with St. Josephs Care Group which operates 586 beds at multiple sites throughout Thunder Bay and is a recognized leader in the provision of complex care, rehabilitation, mental health and long term care services.
Though the Regional Health Sciences Centre and St. Josephs Care Group are distinct corporate entities, they work closely together to coordinate across the continuum of care. When the Ontario Mental Health Reporting System (OMHRS) was mandated in October of 2005, the two organizations made plans for a system that would serve the inpatient Mental Health services provided through the Regional Health Sciences Centre (50 beds) and the Lakehead Psychiatric Hospital (76 beds).
The Lakehead Psychiatric Hospital was doing assessments as a result of participation in some of the early pilot projects with clinical staff completing paper-based forms. According to Therese Lim, the RAI coordinator for Mental Health, this manual process caused delays especially when staff missed filling in a required field. Then it would take as much as a few days before the error would be caught and corrected. The Thunder Bay Regional Health Sciences Centre also had to start collecting assessment data and prepare for submissions.
Through the end of 2005, data was collected manually as Lim and the team evaluated systems that the shared IT group could use to support a common electronic OMHRS data collection and submission system for the two sites. Lims team looked at several options that would allow them to integrate an assessment solution with their ADT system, be compatible with existing IT requirements such as the SQL database, and that would be user friendly and minimize training time and costs.
After an intensive set of on-site vendor demonstrations that included participation by the clinician users, Clarity Healthcare for MHRS was selected. Lim started training staff in the first two weeks of January 2006 as Clarity Healthcare for MHRS was implemented and by February had 200 staff trained in using the system. Staff are finding it much nicer to use than the paper-based forms states Lim. Its easier to fill in so were getting complete information in a timelier fashion. With the error-checking built in, were getting much better data quality. When staff describe the Clarity Healthcare solution with the words cool and user-friendly, I knew we had made the best decision.
Now that the Mental Health services teams are collecting data electronically and have completed several reporting submissions successfully, Lim is looking to start using the data for performance reporting and analysis as well as making it available to the research department. When asked whether there is anything else that sets Clarity Healthcare apart from the competition, she says, support response time has been really critical for us. The team at Clarity Healthcare deserves a lot of credit because theyve been there whenever we have had a question or needed any assistance.
-------------------------------------------------------------------------------------------
Pembroke Regional Hospital serves a population of 13,000 northwest of Ottawa and delivers a wide range of health services to the community. The hospital employs over 750 staff, including 120 doctors and 10 dentists. It recently completed a major new building project and now serves as one of the Stroke Strategy Centres for the Province.
The hospital originally implemented the CIHI Access database tool to support the submission of rehab data for the National Rehabilitation Reporting System (NRS). While there was no initial cost to use this tool, the hospital quickly realized that they were not able to eliminate the expense and delays associated with paper forms and a single data entry point.
The Hospital then implemented the database from the Sisters of Charity (SOC). Pembroke had to develop their own interface and provide their own support since ongoing maintenance was unavailable from SOC. All this meant there were some major delays with submission of Rehab data to CIHI as well as low acceptance from clinical staff because of poor data quality.
Bernie Roosen, IT Manager at Pembroke, decided that the free tools offered by CIHI and SOC were too costly over time. Internally developed and supported product may seem prudent at first, but it just couldnt deliver the reliability of a professionally engineered and vendor-supported solution, said Roosen. We chose the Clarity Healthcare solution for its ease of use and ability to integrate quickly with our systems. It was implemented in under a month and we were able to convert the data from the prior solutions without incident.
The Pembroke implementation included a seamless integration with their ADT, using a standard XML data transformation to pre-populate records and give clinical staff a head start in capturing patient data. Ongoing regulator updates and maintenance are provided quickly and professionally, saving Pembroke from dealing with the ongoing support issues they had with previous internally maintained systems.
According to Sabine Mersmann, Director of Rehab Services, the system was so easy to use the clinical staff basically trained themselves. The use of an in-house training environment means staff can do refresh training whenever, wherever they want. Roosen is greatly relieved that Pembroke has a cost-effective NRS solution now and no support headaches saying Consulting Cadre has been very quick to respond and take care of things before it becomes an issue. They actually independently did our last upgrade over a weekend and when we came in Monday our users were working right away.
As a result of the success of the NRS solution, Roosen is now implementing the solution for Pembrokes Mental Health inpatient unit. "After an extended wait for our ADT vendor to produce an acceptable product for MHRS, our clinical staff went with the proven solution and selected Clarity Healthcare for MHRS."
AD QUOTE
Bernie Roosen, IT Manager at Pembroke Regional Hospital. We selected Clarity Healthcare Solutions for the ease of use and ability to seamlessly integrate with our ADT system. Not only was it implemented in under a month but we were able to convert the previous data without incident. Weve been so satisfied with the NRS solution, were now doing the same for MHRS.
--------------------------------------------------------------------------------------------
Third-Party Information Liability Disclaimer
Some of the information on this Web page has been provided by external sources. The Government of Canada is not responsible for the accuracy, reliability or currency of the information supplied by external sources. Users wishing to rely upon this information should consult directly with the source of the information. Content provided by external sources is not subject to official languages, privacy and accessibility requirements.
Contacts
Contact information
Description
Company description
Products, services and licensing
Product / Service / Licensing
Clarity Healthcare for NRRS - FIM(R) reporting for Inpatient Rehab
Clarity Healthcare of MHRS - RAI-MH (C) Ontario Mental Health reporting for inpatient mental health.
Clarity Healthcare for HCRS - RAI-HC(c) the home care reporting of patient assessments.
Sector
Sector information
Key / Major clients:
http://www.torontorehab.on.ca/ - Toronto Rehab is Canada's largest inpatient rehab institutionhttp://www.westpark.org/ - West Park is one of Canada's leading complex care and rehab facilities
http://www.hamiltonhealthsciences.ca/ - Hamilton Health Sciences is leading teaching hospital in Canada
http://www.tegh.on.ca - Toronto East General Hospital
http://tsh.to/ - The Scarborough Hospital
http://www.tbrhsc.com/ - Thunder Bay Regional Hospital
http://www.sjcg.net - St. Joseph's Care Group in Thunder Bay
http://www.hrsrh.on.ca/ - Sudbury Regional Hospital
http://www.pemgenhos.org/ - Pembroke Regional Hospital
http://www.cornwallgeneralhospital.com/ - Cornwall General Hospital
Success stories:
Clarity Healthcare has been implemented at leading teaching hospitals to integrate with legacy systems. The Clarity Healthcare Solution is used in community and regional hospitals to provide multi-facility access to patient assessments.Clarity healthcare is integrated with Meditec, Cerner, Misys and Anzer ADT systems. Using standard HL7 messaging the software can be used to integrate leading healthcare software.
Testimonial:
Each discipline has the independence to input their own data which not only improves efficiency, but also enhances the quality of the data being collected at the Hospital. Our clinicians working with Clarity Healthcare for NRRS are pleased about how easy it is to use and there is very little maintenance required by our IT department which reduces the workload for our support staff.Connie Benn, RN, BScN. MDS Classification
Officer, Continuing Care and Rehabilitation Program , Hôpital régional de Sudbury Regional Hospital: Laurentian Site
---------------------------------------------------------------------------------------------
Thunder Bay Regional Health Sciences Centre is a state-of-the-art acute care facility serving the healthcare needs of people living in Thunder Bay and Northwestern Ontario. The Regional Health Sciences Centre has 375 acute care beds and is closely affiliated with St. Josephs Care Group which operates 586 beds at multiple sites throughout Thunder Bay and is a recognized leader in the provision of complex care, rehabilitation, mental health and long term care services.
Though the Regional Health Sciences Centre and St. Josephs Care Group are distinct corporate entities, they work closely together to coordinate across the continuum of care. When the Ontario Mental Health Reporting System (OMHRS) was mandated in October of 2005, the two organizations made plans for a system that would serve the inpatient Mental Health services provided through the Regional Health Sciences Centre (50 beds) and the Lakehead Psychiatric Hospital (76 beds).
The Lakehead Psychiatric Hospital was doing assessments as a result of participation in some of the early pilot projects with clinical staff completing paper-based forms. According to Therese Lim, the RAI coordinator for Mental Health, this manual process caused delays especially when staff missed filling in a required field. Then it would take as much as a few days before the error would be caught and corrected. The Thunder Bay Regional Health Sciences Centre also had to start collecting assessment data and prepare for submissions.
Through the end of 2005, data was collected manually as Lim and the team evaluated systems that the shared IT group could use to support a common electronic OMHRS data collection and submission system for the two sites. Lims team looked at several options that would allow them to integrate an assessment solution with their ADT system, be compatible with existing IT requirements such as the SQL database, and that would be user friendly and minimize training time and costs.
After an intensive set of on-site vendor demonstrations that included participation by the clinician users, Clarity Healthcare for MHRS was selected. Lim started training staff in the first two weeks of January 2006 as Clarity Healthcare for MHRS was implemented and by February had 200 staff trained in using the system. Staff are finding it much nicer to use than the paper-based forms states Lim. Its easier to fill in so were getting complete information in a timelier fashion. With the error-checking built in, were getting much better data quality. When staff describe the Clarity Healthcare solution with the words cool and user-friendly, I knew we had made the best decision.
Now that the Mental Health services teams are collecting data electronically and have completed several reporting submissions successfully, Lim is looking to start using the data for performance reporting and analysis as well as making it available to the research department. When asked whether there is anything else that sets Clarity Healthcare apart from the competition, she says, support response time has been really critical for us. The team at Clarity Healthcare deserves a lot of credit because theyve been there whenever we have had a question or needed any assistance.
-------------------------------------------------------------------------------------------
Pembroke Regional Hospital serves a population of 13,000 northwest of Ottawa and delivers a wide range of health services to the community. The hospital employs over 750 staff, including 120 doctors and 10 dentists. It recently completed a major new building project and now serves as one of the Stroke Strategy Centres for the Province.
The hospital originally implemented the CIHI Access database tool to support the submission of rehab data for the National Rehabilitation Reporting System (NRS). While there was no initial cost to use this tool, the hospital quickly realized that they were not able to eliminate the expense and delays associated with paper forms and a single data entry point.
The Hospital then implemented the database from the Sisters of Charity (SOC). Pembroke had to develop their own interface and provide their own support since ongoing maintenance was unavailable from SOC. All this meant there were some major delays with submission of Rehab data to CIHI as well as low acceptance from clinical staff because of poor data quality.
Bernie Roosen, IT Manager at Pembroke, decided that the free tools offered by CIHI and SOC were too costly over time. Internally developed and supported product may seem prudent at first, but it just couldnt deliver the reliability of a professionally engineered and vendor-supported solution, said Roosen. We chose the Clarity Healthcare solution for its ease of use and ability to integrate quickly with our systems. It was implemented in under a month and we were able to convert the data from the prior solutions without incident.
The Pembroke implementation included a seamless integration with their ADT, using a standard XML data transformation to pre-populate records and give clinical staff a head start in capturing patient data. Ongoing regulator updates and maintenance are provided quickly and professionally, saving Pembroke from dealing with the ongoing support issues they had with previous internally maintained systems.
According to Sabine Mersmann, Director of Rehab Services, the system was so easy to use the clinical staff basically trained themselves. The use of an in-house training environment means staff can do refresh training whenever, wherever they want. Roosen is greatly relieved that Pembroke has a cost-effective NRS solution now and no support headaches saying Consulting Cadre has been very quick to respond and take care of things before it becomes an issue. They actually independently did our last upgrade over a weekend and when we came in Monday our users were working right away.
As a result of the success of the NRS solution, Roosen is now implementing the solution for Pembrokes Mental Health inpatient unit. "After an extended wait for our ADT vendor to produce an acceptable product for MHRS, our clinical staff went with the proven solution and selected Clarity Healthcare for MHRS."
AD QUOTE
Bernie Roosen, IT Manager at Pembroke Regional Hospital. We selected Clarity Healthcare Solutions for the ease of use and ability to seamlessly integrate with our ADT system. Not only was it implemented in under a month but we were able to convert the previous data without incident. Weve been so satisfied with the NRS solution, were now doing the same for MHRS.
--------------------------------------------------------------------------------------------


Phase One: Dazed and Confused but Loving It
Phase 1 Recap
Learning How to "Embrace the Confusion"
December 7, 2014
Wow. Phase One of Dev Bootcamp is over and done with. It’s hard to believe how fast it all went. It was a complete blur of astonishment, pride, frustration, and inconceivable amounts of learning. If I had to sum it up, so far it’s all been about “embracing the confusion.” That’s a phrase we heard a lot during Phase 0 but that I didn’t really understand till now. It’s a strange but very motivating feeling to be completely lost in confusion for more than a few days, but suddenly see it all come into focus. That embrace of confusion is the crux of what DBC (and programming) is all about. It’s a cop-out to say that DBC has been indescribable so far, so I’ll at least try to walk back through Phase One.
Week One was spent learning about algorithms, reinforcing syntax, and of course being introduced to DBC’s unique culture. The culture here is another thing that had been given a lot of lip service in Phase 0 and in DBC’s marketing materials. Within the first two days, I realized that that all wasn’t just talk. This is nothing like the daycare of K-12 or the still-not-optimal learning environment of college. Most students are here because they tried other careers or did other things and were unsatisfied. Some are even desperate for a new career or a good job. I may have even been part of the desperate camp when I started here. That all translates to some incredibly motivated students. The amount of learning we are able to cram into nine weeks wouldn’t be possible without everyone’s collective agreement to drop the normal school routines that were instilled in us for most of our lives. Everyone is here simply to learn and help others learn.
Week Two was focused on Object Oriented Design principles, or ways to make your programs simple, elegant, and easily changeable (i.e. futureproof). This was a very interesting topic to me. The deep dive into these “best practices” was more theoretical, but really helped us get lost reading through various codebases that reinforced our understanding of syntax and structure. It was all about architecture, and having this foundation will be essential as we build more and more complex apps in the next few weeks.
Week Three really kicked it up a notch with databases, and pretty much everyone was swimming in confusion for the first few days. In the first part of the week, we wrote our own (very basic) Object Relational Mappers, or ORMs, which map our Ruby data into a database. While these exercises were really tough, we were soon taught that most database services have pre-built ORMs and structures. Thankfully, these challenges were just to teach us how databases interact with our code, and we won’t have to build our own mappers from scratch every time. Moving on, we dove into ActiveRecord, a database service that is really robust and fairly flexible, which we’ll be using a lot when we get to Rails.
Phase Two starts Monday, and all I’ve heard from fellow classmates is that it's even tougher and more fast paced. The confusion we dealt with in Week 3 will be extended over pretty much the whole next three weeks, with more late nights and frustration. On the other hand, we’re learning front-end technologies, including Sinatra, JavaScript, Jquery, and more, which I’m all really excited about. It’ll be cool to move on from the basic Terminal apps we’ve been creating and actually have a web page to show people. I feel like I have a pretty good design sense, and once I have the architecture down in Ruby, it really excites me to make a site look good and feel user friendly. So far, DBC’s dizzying pace and incredible support system has definitely transformed me, shaken me, and made me feel like I can learn anything. More on that later. For now, onward to Phase 2!


I love the simplicity of vert/frag shaders; they only do one thing (push verts and colors to the screen), and they do it exceptionally well, but sometimes, that simplicity feels limiting and you find yourself staring at a loop of matrix calculations happening on your CPU trying desperately to figure out how you could store them in a texture…
…Or maybe that’s just me, but regardless, compute shaders solve that problem, and it turns out that they’re dead simple to use, so I’m going to explain the basics of them today. First I’ll go through the example compute shader that unity auto creates for you, and then I’ll finish off with an example of a compute shader working with a structured buffer of data.
Simply put, a compute shader is a is a program executed on the GPU that doesn’t need to operate on mesh or texture data, works inside the OpenGL or DirectX memory space (unlike OpenCL which has its own memory space), and can output buffers of data or textures and share memory across threads of execution.
Right now Unity only supports DirectX11 compute shaders, but once everyone catches up to OpenGL 4.3, hopefully us mac lovers will get them too :D
This means that this will be my first ever WINDOWS ONLY tutorial. So if you don’t have access to a windows machine, the rest of this probably won’t be helpful.
Two words: math and parallelization. Any problem which involves applying the same (no conditional branching) set of calculations to every element in a data set is perfect. The larger the set of calculations, the more you’ll reap the rewards of doing things on your GPU.
Conditional branching really kills your performance because GPUs aren’t optimized to do that, but this is no different from writing vertex and fragment shaders so if you have some experience with them this will be old hat.
There’s also the issue of latency. Getting memory from the GPU back to your CPU takes time, and will likely be your bottleneck when working with compute shaders. This can be somewhat mitigated by ensuring that you optimize your kernels to work on the smallest buffers possible but it will never be totally avoided.
Since we’re working with DirectX, Unity’s compute shaders need to be written in HLSL, but it’s pretty much indistinguishable from the other shader languages so if you can write Cg or GLSL you’ll be fine (this was my first time writing HLSL too).
The first thing you need to do is create a new compute shader. Unity’s project panel already has an option for this, so this step is easy. If you open up that file, you’ll see the following auto generated code (i’ve removed the comments for brevity):
#pragma kernel CSMain
RWTexture2D<float4> Result;
[numthreads(8,8,1)]
void CSMain (uint3 id : SV_DispatchThreadID)
{
Result[id.xy] = float4(id.x & id.y, (id.x & 15)/15.0, (id.y & 15)/15.0, 0.0);
}
This is a really good place to start figuring out compute shaders, so let’s go through it line by line:
#pragma kernel CSMain
This specifies the entry point to the program (essentially the compute shader’s “main”). A single compute shader file can have a number of these functions defined, and you can call whichever one you need from script.
RWTexture2D<float4> Result;
This declares a variable that contains data the shader program will work wth. Since we aren’t working with mesh data, you have to explicitly declare what data your compute shader will read and write to. The “RW” in front of the datatype specifies that the shader will both read and write to that variable.
[numthreads(8,8,1)]
This line specifies the dimensions of the thread groups being spawned by our compute shader. GPUs take advantage of the massive parallel processing powers of the GPU by creating threads that run simultaneously. Thread groups specify how to organize these spawned threads. In the code above, we are specifying that we want each group of threads to contain 64 threads, which can be accessed like a 2D array.
Determining the optimum size of your thread groups is a complicated issue, and is largely related to your target hardware. In general, think of your gpu as a collection of stream processors, each of which is capable of executing X threads simultaneously. Each processor runs 1 thread group at a time, so ideally you want your thread group to contain X threads to take best advantage of the processor. I’m still at the point where I’m playing with these values to really get a handle on them, so rather than dispense advice on how best to set these values, I’ll leave it up to you to google (and then share on twitter :D ).
The rest of the shader is pretty much regular code. The kernel function determines what pixel it should be working on based on the id of the thread running the function, and writes some data to the Result buffer. Easy right?
Obviously we can’t attach a compute shader to a mesh and expect it to run, especially since it isn’t working with mesh data. Compute shaders actually need to be set up and called from scripts, which looks like this:
public ComputeShader shader;
void RunShader()
{
int kernelHandle = shader.FindKernel("CSMain");
RenderTexture tex = new RenderTexture(256,256,24);
tex.enableRandomWrite = true;
tex.Create();
shader.SetTexture(kernelHandle, "Result", tex);
shader.Dispatch(kernelHandle, 256/8, 256/8, 1);
}
There are a few things to note here. First is setting the enableRandomWrite flag of your render texture BEFORE you create it. This gives your compute shaders access to write to the texture. If you don’t set this flag you won’t be able to use the texture as a write target for the shader.
Next we need a way to identify what function we want to call in our compute shader. The FindKernel function takes a string name, which corresponds to one of the kernel names we set up at the beginning of our compute shader. Remember, a Compute Shader can have multiple kernels (functions) in a single file.
The ComputeShader.SetTexture call lets us move the data we want to work with from CPU memory to GPU memory. Moving data between memory spaces is what will introduce latency to your program, and the amount of slowdown you see is proportional to the amount of data that you are transferring. For this reason, if you plan on running a compute shader every frame you’ll need to aggressively optimize how much data is actually get operated on.
The three integers passed to the Dispatch call specify the number of thread groups we want to spawn. Recall that each thread group’s size is specified in the numthreads block of the compute shader, so in the above example, the number of total threads we’re spawning is as follows:
This ends up equating to 1 thread per pixel in the render texture, which makes sense given that the kernel function can only operate on 1 pixel per call.
So now that we know how to write a compute shader that can operate on texture memory, let’s see what else we can get these things to do.
Modifying texture data is a bit too much like vert/frag shaders for me to get too excited; it’s time to unshackle our GPU and get it working on arbitrary data. Yes it’s possible, and it’s as awesome as it sounds.
A structured buffer is just an array of data consisting of a single data type. You can make a structured buffer of floats, or one of integers, but not one of floats and integers. You declare a structured buffer in a compute shader like this:
StructuctedBuffer<float> floatBuffer;
RWStructuredBuffer<int> readWriteIntBuffer;
What makes these buffers more interesting though, is the ability for that data type to be a struct, which is what we’ll do for the second (and last) example in this article.
For our example, we’re going to be passing our compute shader a set of points, each of which has a matrix that we want to transform it by. We could accomplish this with 2 separate buffers (one of Vector3s and one of Matrix4x4s), but it’s easier to conceptualize a point/matrix pair if they’re together in a struct, so let’s do that.
In our c# script, we’ll define the data type as follows:
struct VecMatPair
{
public Vector3 point;
public Matrix4x4 matrix;
}
We also need to define this data type inside our shader, but HLSL doesn’t have a Matrix4x4 or Vector3 type. However, it does have data types which map to the same memory layout. Our shader might end up looking like this:
#pragma kernel Multiply
struct VecMatPair
{
float3 pos;
float4x4 mat;
};
RWStructuredBuffer<VecMatPair> dataBuffer;
[numthreads(16,1,1)]
void Multiply (uint3 id : SV_DispatchThreadID)
{
dataBuffer[id.x].pos = mul(dataBuffer[id.x].mat,
float4(dataBuffer[id.x].pos, 1.0));
}
Notice that our thread group is now organized as a 1 dimensional array. There is no performance impact regarding the dimensionality of the thread group, so you’re free to choose whatever makes the most sense for your program.
Setting up a structured buffer in a script is a bit different from the texture example we did earlier. For a buffer, you need to specify how many bytes a single element in the buffer is, and store that information along with the data itself inside a compute buffer object. For our example struct, the size in bytes is simply the number of float values we are storing (3 for the vector, 16 for the matrix) multiplied by the size of a float (4 bytes), for a total of 76 bytes in a struct. Setting this up in a compute buffer looks like this:
public ComputeShader shader;
void RunShader()
{
VecMatPair[] data = new VecMatPair[5];
//INITIALIZE DATA HERE
ComputeBuffer buffer = new ComputeBuffer(data.Length, 76);
buffer.SetData(data);
int kernel = shader.FindKernel("Multiply");
shader.SetBuffer(kernel, "dataBuffer", buffer);
shader.Dispatch(kernel, data.Length, 1,1);
}
Now we need to get this modified data back into a format that we can use in our script. Unlike the example above with a render texture, structured buffers need to explicitly be transferred from the GPU’s memory space back to the CPU. In my experience, this is the spot where you’ll notice the biggest performance hit when using compute shaders, and the only ways I’ve found to mitigate it are to optimize your buffers so that they’re as small as possible while still being useable and to only pull data out of your shader when you absolutely need it.
The actual code to get the data back to the cpu is actually really simple. All you need is an array of the same data type and size as the buffer’s data to write to. If we modified the above script to write the resulting data back to a second array, it might look like this:
public ComputeShader shader;
void RunShader()
{
VecMatPair[] data = new VecMatPair[5];
VecMatPair[] output = new VecMatPair[5];
//INITIALIZE DATA HERE
ComputeBuffer buffer = new ComputeBuffer(data.Length, 76);
buffer.SetData(data);
int kernel = shader.FindKernel("Multiply");
shader.SetBuffer(kernel, "dataBuffer", buffer);
shader.Dispatch(kernel, data.Length, 1,1);
buffer.GetData(output);
}
That’s really all there is to it. You may need to watch the profiler for a bit to get a sense of exactly how much time you’re burning transferring data to and from the cpu, but I’ve found that once you’re operating on a big enough data set compute shaders really pay dividends.
One last thing - once you’re done working with your buffer, you should call buffer.Dispose() to make sure the buffer can be GC’ed. (Thanks to Andreas S for e-mailing me with this addition, and a few other corrections!).
If you have any questions about this (or spot a mistake in what’s here), send me a send me a message on twitter. I won’t write shaders for you, but I’m happy to point you in the right direction for your specific use case. Happy shading!


GrDrawArc(), GrFillArc()
An arc is a partial ellipse. An arc is defined in terms of its base ellipse, the angle at which to start drawing the arc, and the angle at which to stop drawing. Angles are counted in degrees counter-clockwise with 0° corresponding to the positive x axis (i.e., "3 o'clock").
GrDrawArc()
draws the outline of an elliptical arc, a curved line. It does so using the GState's current line attributes.
GrFillArc()
fills the arc. There are two ways to fill an arc: you can fill in the wedge described by the arc, or you can fill just the region between the arc and its chord; set the style with an
ArcCloseType
value.


To view a blog, search by their username or tags in the provided boxes below.
{{ post.created | date : "short" }}


Element service¶
Element service is used to bind a type specified in attributes type and assembly to one ore more types specified in implementation child elements.
Single Implementation¶
An example of service element that binds type SharedServices.Interfaces.IInterface4 in assembly with alias shared_services to a type SharedServices.Implementations.Interface4_Impl1 is shown below.
<!--...-->
<services>
<!--...-->
<service type="SharedServices.Interfaces.IInterface4" assembly="shared_services">
<implementation type="SharedServices.Implementations.Interface4_Impl1"
assembly="shared_services"
scope="singleton">
</implementation>
</service>
<!--...-->
</services>
An instance of type SharedServices.Implementations.Interface4_Impl1 will be injected as a constructor parameter or into properties by dependency injection, when interface SharedServices.Interfaces.IInterface4 is requested.
Here is an example of injecting SharedServices.Implementations.Interface4_Impl1 as a constructor parameter interface4.
public class TestConstructorInjection
{
// An instance of type SharedServices.Implementations.Interface4_Impl1 will
// be injected for constructor parameter interface4.
public TestConstructorInjection(SharedServices.Interfaces.IInterface4 interface4)
{
}
}
Multiple Implementations¶
If multiple implementation elements are specified under service element, the type specified in element service will be bound to multiple types. In such a cases we should use System.Collections.Generic.IEnumerable<TService>.
An example of service element that binds a type SharedServices.Interfaces.IInterface8 in assembly with alias shared_services to two types, SharedServices.Implementations.Interface8_Impl1 and SharedServices.Implementations.Interface8_Impl2 is shown below.
<!--...-->
<services>
<service type="SharedServices.Interfaces.IInterface8"
assembly="shared_services">
<implementation type="SharedServices.Implementations.Interface8_Impl1"
assembly="shared_services"
scope="singleton">
</implementation>
<implementation type="SharedServices.Implementations.Interface8_Impl2"
assembly="shared_services"
scope="transient">
</implementation>
</service>
<!--...-->
</services>
Here is an example of injecting instances of types SharedServices.Implementations.Interface8_Impl1 and SharedServices.Implementations.Interface8_Impl2 for parameter interface8Resolutions of type System.Collections.Generic.IEnumerable<SharedServices.Interfaces.IInterface8>.
In this example, the injected collection interface8Resolutions will have two items. The first item will be of type SharedServices.Implementations.Interface8_Impl1 and the second item will be of type SharedServices.Implementations.Interface8_Impl2.
public class TestConstructorInjectionForMultipleBindings
{
public TestConstructorInjection(
IEnumerable<SharedServices.Interfaces.IInterface8> interface8Resolutions)
{
}
}
Binding Scope¶
Attribute scope in element implementation under element service is used to specify binding resolution scope for resolved types (see Resolution Scopes for more details). The value of this attribute can be one of the following: singleton, transient, and scopeLifetime.


public class TrcPath
extends java.lang.Object
| Constructor and Description |
|---|
TrcPath(boolean inDegrees,
TrcWaypoint... waypoints)
Constructor: Create a new TrcPath object.
|
TrcPath(TrcWaypoint... waypoints)
Constructor: Create a new TrcPath object.
|
| Modifier and Type | Method and Description |
|---|---|
TrcPath |
clone() |
TrcWaypoint[] |
getAllWaypoints()
This method returns the array of waypoints of the path.
|
double |
getArcLength()
Get the curved length of the entire path.
|
TrcWaypoint |
getLastWaypoint() |
double |
getPathDuration()
Get the estimated duration of the entire path.
|
int |
getSize()
This method returns the number of waypoints in this path.
|
TrcWaypoint |
getWaypoint(int index)
This method returns the waypoint at the given index of the path.
|
void |
inferAccelerations() |
void |
inferTimeSteps()
Use velocity and position data to infer the timesteps of the waypoint.
|
TrcPath |
insertWaypoint(int index,
TrcWaypoint waypoint)
Insert a waypoint in the middle of the path.
|
boolean |
isInDegrees()
Check if this path defines heading using degrees.
|
static TrcPath |
loadPathFromCsv(boolean inDegrees,
java.lang.String path,
boolean loadFromResources)
This method loads waypoints from a CSV file and create a path with them.
|
void |
mapSelfToDegrees()
If not already in degrees, convert this path's heading values to degrees.
|
void |
mapSelfToRadians()
If not already in radians, convert this path's heading values to radians.
|
TrcPath |
relativeToStart() |
TrcPath |
toDegrees()
Create a new path identical to this one, except the heading values are in degrees.
|
TrcPath |
toRadians()
Create a new path identical to this one, except the heading values are in radians.
|
java.lang.String |
toString() |
TrcPath |
translate(double x,
double y)
Translate the path by an x and y offset.
|
TrcPath |
trapezoidVelocity(double maxVel,
double maxAccel)
Set the velocity and accelerations of the waypoints in the path to follow a trapezoidal velocity profile.
|
public TrcPath(boolean inDegrees, TrcWaypoint... waypoints)
inDegrees
- specifies true if the heading values are in degrees, false if they are radians.waypoints
- specifies the array of points that will constitute this path. Cannot be null, and must have
at least 2 waypoints.public TrcPath(TrcWaypoint... waypoints)
waypoints
- specifies the array of points that will constitute this path. Cannot be null, and must have
at least 2 waypoints.public static TrcPath loadPathFromCsv(boolean inDegrees, java.lang.String path, boolean loadFromResources)
inDegrees
- specifies true if the heading values are in degrees, false if they are radians.path
- specifies the file path or the resource name where we load the waypoints.loadFromResources
- specifies true if waypoints are loaded from resources, false if from file path.public TrcPath translate(double x, double y)
x
- Amount to offset in x axis.y
- Amount to offset in y axis.TrcPath
object which is this path with an offset.public TrcPath insertWaypoint(int index, TrcWaypoint waypoint)
index
- The index to insert the new point, in the range [0, getSize()
]waypoint
- The waypoint to insert.TrcPath
object with the waypoint inserted.public TrcPath clone()
clone
in class java.lang.Object
public TrcPath relativeToStart()
public TrcPath trapezoidVelocity(double maxVel, double maxAccel)
maxVel
- The maximum velocity of the path, with matching units.maxAccel
- The maximum acceleration of the path, with matching units.TrcPath
object, with the velocities and accelerations matching the profile.public TrcWaypoint getLastWaypoint()
public TrcWaypoint getWaypoint(int index)
index
- specifies the index to the path array.public boolean isInDegrees()
public int getSize()
public TrcWaypoint[] getAllWaypoints()
public TrcPath toDegrees()
public TrcPath toRadians()
public void mapSelfToDegrees()
public void mapSelfToRadians()
public double getPathDuration()
timeStep
.public double getArcLength()
x
and y
.public void inferAccelerations()
public void inferTimeSteps()
public java.lang.String toString()
toString
in class java.lang.Object


core
Vector3
=
defn
(λ [(Ref (Vector3 a)), (Ref (Vector3 a))] Bool)
(= a b)
add
defn
(λ [(Ref (Vector3 a)), (Ref (Vector3 a))] (Vector3 a))
(add a b)
angle-between
defn
(λ [(Ref (Vector3 a)), (Ref (Vector3 a))] a)
(angle-between a b)
Get the angle between two vectors a and b.
anti-parallel?
defn
(λ [(Ref (Vector3 a)), (Ref (Vector3 a))] Bool)
(anti-parallel? a b)
Check whether the two vectors a and b are anti-parallel.
cmul
defn
(λ [(Ref (Vector3 a)), (Ref (Vector3 a))] (Vector3 a))
(cmul a b)
copy
template
(λ [(Ref (Vector3 f))] (Vector3 f))
copies the Vector3
.
cross
defn
(λ [(Ref (Vector3 a)), (Ref (Vector3 a))] (Vector3 a))
(cross a b)
Compute the cross product of the two vectors x and y.
delete
template
(λ [(Vector3 f)] ())
deletes a Vector3
. Should usually not be called manually.
dist
defn
(λ [(Ref (Vector3 a)), (Ref (Vector3 a))] a)
(dist a b)
Get the distance between the vectors a and b.
div
defn
(λ [(Ref (Vector3 a)), a] (Vector3 a))
(div v n)
dot
defn
(λ [(Ref (Vector3 a)), (Ref (Vector3 a))] a)
(dot a b)
Get the dot product of the two vectors x and y.
init
template
(λ [f, f, f] (Vector3 f))
creates a Vector3
.
mag
defn
(λ [(Ref (Vector3 a))] a)
(mag o)
Get the magnitude of a vector.
mag-sq
defn
(λ [(Ref (Vector3 a))] a)
(mag-sq o)
Get the squared magnitude of a vector.
map
defn
(λ [(λ [a] b), (Ref (Vector3 a))] (Vector3 b))
(map f v)
mul
defn
(λ [(Ref (Vector3 a)), a] (Vector3 a))
(mul v n)
neg
defn
(λ [(Ref (Vector3 a))] (Vector3 a))
(neg a)
normalize
defn
(λ [(Ref (Vector3 a))] (Vector3 a))
(normalize o)
Normalize a vector.
parallel?
defn
(λ [(Ref (Vector3 a)), (Ref (Vector3 a))] Bool)
(parallel? a b)
Check whether the two vectors a and b are parallel.
perpendicular?
defn
(λ [(Ref (Vector3 a)), (Ref (Vector3 a))] Bool)
(perpendicular? a b)
Check whether the two vectors a and b are perpendicular.
prn
template
(λ [(Ref (Vector3 f))] String)
converts a Vector3
to a string.
random
defn
(λ [] (Vector3 a))
(random)
set-x
template
(λ [(Vector3 f), f] (Vector3 f))
sets the x
property of a Vector3
.
set-x!
instantiate
(λ [(Ref (Vector3 f)), f] ())
sets the x
property of a Vector3
in place.
set-y
template
(λ [(Vector3 f), f] (Vector3 f))
sets the y
property of a Vector3
.
set-y!
instantiate
(λ [(Ref (Vector3 f)), f] ())
sets the y
property of a Vector3
in place.
set-z
template
(λ [(Vector3 f), f] (Vector3 f))
sets the z
property of a Vector3
.
set-z!
instantiate
(λ [(Ref (Vector3 f)), f] ())
sets the z
property of a Vector3
in place.
str
template
(λ [(Ref (Vector3 f))] String)
converts a Vector3
to a string.
sub
defn
(λ [(Ref (Vector3 a)), (Ref (Vector3 a))] (Vector3 a))
(sub a b)
sum
defn
(λ [(Ref (Vector3 a))] a)
(sum o)
update-x
instantiate
(λ [(Vector3 f), (Ref (λ [f] f))] (Vector3 f))
updates the x
property of a Vector3
using a function f
.
update-y
instantiate
(λ [(Vector3 f), (Ref (λ [f] f))] (Vector3 f))
updates the y
property of a Vector3
using a function f
.
update-z
instantiate
(λ [(Vector3 f), (Ref (λ [f] f))] (Vector3 f))
updates the z
property of a Vector3
using a function f
.
vapprox
defn
(λ [(Ref (Vector3 a)), (Ref (Vector3 a))] Bool)
(vapprox a b)
Check whether the vectors a and b are approximately equal.
vlerp
defn
(λ [(Ref (Vector3 a)), (Ref (Vector3 a)), a] (Vector3 a))
(vlerp a b amnt)
Linearly interpolate between the two vectors a and b by amnt (between 0 and 1).
vreduce
defn
(λ [(λ [a, b] a), a, (Ref (Vector3 b))] a)
(vreduce f i v)
x
instantiate
(λ [(Ref (Vector3 f))] &f)
gets the x
property of a Vector3
.
y
instantiate
(λ [(Ref (Vector3 f))] &f)
gets the y
property of a Vector3
.
z
instantiate
(λ [(Ref (Vector3 f))] &f)
gets the z
property of a Vector3
.
zero
defn
(λ [] (Vector3 a))
(zero)
zip
defn
(λ [(λ [a, b] c), (Ref (Vector3 a)), (Ref (Vector3 b))] (Vector3 c))
(zip f a b)


Welcome to the TTS Twilight Twitter Page!
Please enter your info below to login.
Login unsuccessful.
Log in
Sign up


CONCAT
joins two expressions as a single character string. The data type of the return value is the same as the expressions, or if they are mixed, the one that results in a lossless conversion.
CHAR | NCHAR | VARCHAR2 | NVARCHAR2
CONCAT(char1, char2)
char1
and char2
are text expressions.
CONCAT('The current date is ', 'October 13, 2006')
returns the string The current date is October 13, 2006
.


{{ $student.full_name }}
- ID: {{ $student.face_id }}
- Present Days: {{ $student.total_present_days }}
- Absent Days: {{ $student.total_absent_days }}
- Presence Percentage: {{ $student.present_percentage }}%
- Most Frequently Seen by: {{ $student.freq_seen_by }}


Barcelona Bike Trips
Visualization of the trips carried out with the public system of electric bicycles


Contents
Short Descriptions
|
are simple one-line wrapper scripts to jw. They are provided as easy-to-remember names used to convert DocBook or other SGML files to the respective format. |
|
|
are symlinks pointing at the respectively named docbook2* commands, created to satisfy some program's use of these names. |
|
|
is a script used to convert DocBook or other SGML files to various output formats. It hides most of OpenJade's complexity and adds comfortable features. |
|
|
is used to compare two SGML files and only return the differences in the markup. This is especially useful to compare files that should be identical except for language differences in the content. |


Personal Blog
The goal of this mini-project was to set up a simple website to use as a personal blog. You are currently looking at the result of it.
The What
The basic idea was to set up a simple blog that allows me to manage posts on some topics that interest me and to provide some info on some of the projects I work on. Having played around with Wordpress in the past, I wanted to try something different this time.
My main requirements:
- Easy to use (for me, so opinionated)
- Easy to host, on a custom domain with HTTPS
- Free of costs, no licence or hosting fees
- Learn something new in the process
The Why
My main motivation is to have a place to keep track of some of the technical experiments I do and their outcomes. A blog that allows me to write small posts, tag them, and easily search through them seemed like a good solution.
If others may find these experiments and learn from them, that would be an additional benefit. And if in turn they would provide feedback, even better!
The How
After looking around a bit I decided to try out the following:
- Use Hugo, a static site generator written in Go
- Write the content in markdown
- Use a GitHub repository to keep the sources
- Use another GitHub repository to host the resulting blog
- Open Source the result so others might learn from it
The Results
The current state of this project is open for all to see. Look around and take a look at the sources if you are interested.
This is a work in progress, posts will be added and edited to my likings, and I hope to add some additional features every now and then as well.
I hope you may find this useful somehow!


In order to avoid congestion in scenic spots or stuck in the highways, this vacation I chose to stay at home to watch TV series and write some articles or have dinner with friends nearby. Today is the Dragon Boat Festival, according to the traditional custom of residents in Hangzhou, we get used to making Zongzi, hanging on the wormwood, watching the dragon boats and drinking realgar wine.
I am not at home this time, so I found out the photos I took last year to share with you. If you are interested in making this kind of traditional food, you can follow the steps as I wrote in this post.
 Then you can put the reed leaves and cotton thread into the pot with water and salt to cook for nearly 10 minutes;
Soak the glutinous rice for 2 hours. After this, you should make sure the water is drained from the glutinous rice. Add some edible oil and salt, then stir them together;
Cut the streaky pork into chunks and marinated it overnight in advance with light soy sauce, dark soy sauce, white sugar, five-spice powder, paprika powder and cooking wine;
Roll up the reed leaves, filling them in the order of glutinous rice - streaky pork - glutinous rice, and wrap them in the way as you like;
After all the staffs have been finished, you should add some cold water above the Zongzi into the pot. When the water is boiling, turn the fire to the lower level and keeping cooking them for about half an hour;
Done!
Tips
When you’re cooking the Zongzi, you can adjust the time due to the amount as well as the size of them. Make sure them’ve cooked once, or that would be troublesome when you eat them.
Let’s try to make this kind of traditional food!
「中文部分」
为了避免在景区拥挤或者在高速上塞车，冰冰这次放假选择呆在家里看剧写文章或者在附近和朋友聚餐。今天是端午节，杭州人的习俗是要在这一天包粽子、挂艾草、看龙舟以及喝雄黄酒的。
这次我不在家，所以找出来了去年包粽子时候拍的照片分享给大家。如果有兴趣的小伙伴，也可以动手试着包粽子噢，毕竟中国人过年也是要吃粽子的嘛。在我看来自己做的东西，会特别好吃也更加有意义。
材料：糯米、粽叶、五花肉、食用油、食盐、生抽、老抽、白糖、五香粉、花椒粉、料酒
做法：
粽叶浸泡后剪掉不需要的部分然后清洗干净，放入锅里加盐煮10分钟（棉线也可以同时放进去消毒）；
将糯米洗干净后浸泡两小时，之后沥干水并加入少许油和盐拌匀备用；
将五花肉切成大块，用生抽、老抽、料酒、白糖、花椒粉和少量五香粉提前腌制一晚入味；
把粽叶卷起来，按照糯米——五花肉——糯米的顺序铺上去，最后按自己喜欢的方式和形状包起来；
全部包好后放入大锅中，加入没过粽子的冷水，大火烧开后转小火煮约半个小时左右；
搞定！
注意：
煮粽子的时间需要根据粽子的大小和多少做出调整，但必须一次性煮熟。不然的话，半生不熟的粽子后面食用的时候会比较麻烦。
大家一起来试试看包粽子吧，期待你们的成品唷:D
（本篇完）
谢谢大家的来看我的文章，如果您喜欢的话，请转发、留言或是点赞。你们的支持是我继续努力的最大动力，再次感谢～
Thank you for reading my articles. If you like me, plz forward, upvote me or leave your comments. Thx a looooooot~
This page is synchronized from the post: ‘【Vicky’’s Food】端午节粽子 Zongzi in Dragon Boat Festival’


yafs.application
¶
-
class
yafs.application.
Application
(name)[source]¶ An application is defined by a DAG between modules that generate, compute and receive messages.
- Args:
- name (str): The name must be unique within the same topology.
- Returns:
- an application
-
TYPE_MODULE
= 'MODULE'¶ A module
-
TYPE_SINK
= 'SINK'¶ A sink is like actuator
-
TYPE_SOURCE
= 'SOURCE'¶ A source is like sensor
-
add_service_module
(module_name, message_in, message_out='', distribution='', module_dest=[], p=[], **param)[source]¶ Link to each non-pure module a management of transfering of messages
- Args:
module_name (str): module name
message_in (Message): input message
message_out (Message): output message. If Empty the module is a sink
distribution (function): a function with a distribution function
module_dest (list): a list of modules who can receive this message. Broadcasting.
p (list): a list of probabilities to send this message. Broadcasting
- Kwargs:
- param (dict): the parameters for distribution function
-
add_service_source
(module_name, distribution=None, message=None, module_dest=[], p=[])[source]¶ Link to each non-pure module a management for creating messages
- Args:
module_name (str): module name
distribution (function): a function with a distribution function
message (Message): the message
module_dest (list): a list of modules who can receive this message. Broadcasting.
p (list): a list of probabilities to send this message. Broadcasting
- Kwargs:
- param_distribution (dict): the parameters for distribution function
-
class
yafs.application.
Message
(name, src, dst, instructions=0, bytes=0, broadcasting=False)[source]¶ A message is set by the following values:
- Args:
name (str): a name, unique for each application
src (str): the name of module who send this message
dst (dst): the nsame of module who recibe this message
inst (int): the number of instrucctions to be executed ((by default 0), Instead of MIPS, we use IPt since the time is relative to the simulation units.
bytes (int): the size in bytes (by default 0)
- Internal args used in the yafs.core are:
timestamp (float): simulation time. Instant of time that was created.
path (list): a list of entities of the topology that has to travel to reach its target module from its source module.
dst_int (int): an identifier of the intermediate entity in which it is in the process of transmission.
app_name (str): the name of the application


-
Hashing for large scale similarity
Machine Learning
-
Implementing Matrix Factorisation using Tensorflow.
My quora response
-
How exactly is machine learning used in recommendation engines?
My quora response
Machine Learning
My quora response
My quora response


JavaCC [tm]: Release Notes for the C++ version
Javacc is extended to support C++ code generation starting with version 6.0. The generated code mostly uses the same design as the Java version.
C++ specific issues
Since C++ is somewhat different from Java in code organization in terms of header files etc., we made the following changes:
- com.learn.javacc.cust.Parser class in PARSER_BEGIN/PARSER_END - this cannot be supported as the parser is generated into the header file. So in the C++ version you can only define the contents of the class, not the class itself.
- Include files - in order to write any action code for the lexer/parser/tree, you might need to include header files. So we allow to specify what the header file is for each of the components - see the list of C++ options below for more details.
- Limitation on code in actions - since we don't have a full C++ parser embedded in the JavaCC grammar, we don't support arbitrary C++ code. So be aware of this when you write the actions. In general, it's a good idea to make them all function calls.
- Object lifetimes - in general, the parser deletes all the objects it creats - including the tokens. So any data that you want to pass out of the parser should be copied to your own objects that you can return. Note that tree created is a "return value" of the parser so that's not deleted.
- Exceptions - due to the way the code evolved, we could not use exceptions in C++. So we have an ErroHandler interface instead which by default just prints syntax error and continues trying to parse. Please see the apiroutiunes.html documt for more details.
- Wide character support - C++ version is fully wide character compatible and it has been tested on Windows, Linux and Mac environments.
-------------------------------------------------------------------
*******************************************************************
-------------------------------------------------------------------
STARTING WITH VERSION 6.0
Implemented all JavaCC options for the C++ version as well.
Added new options relevant to C++:
-NAMESPACE - namespace to be used for all the generated classes.
-PARSER_INCLUDES - a single include file that gets includedin the parser. Use this to include all the declarations needed for your actions.
-PARSER_SUPER_CLASS - super class of the parser class (as we do not allow class declaration in PARSER_BEGIN/PARSER_END for C++)
-TOKEN_INCLUDES - a single include file for the token class
-TOKEN_MANAGER_INCLUDES - a single include file for the TokenManager
-TOKEN_MANAGER_SUPER_CLASS - super class of the token manager
-IGNORE_ACTIONS - an option to ignore all the action so a clean parser can be generated even when jjtree is used. Useful for debugging/profiling/testing


If script raises an error, catch will return a non-zero integer value corresponding to the exceptional return code returned by evaluation of script. Tcl defines the normal return code from script evaluation to be zero (0), or TCL_OK. Tcl also defines four exceptional return codes: 1 (TCL_ERROR), 2 (TCL_RETURN), 3 (TCL_BREAK), and 4 (TCL_CONTINUE). Errors during evaluation of a script are indicated by a return code of TCL_ERROR. The other exceptional return codes are returned by the return, break, and continue commands and in other special situations as documented. Tcl packages can define new commands that return other integer values as return codes as well, and scripts that make use of the return -code command can also have return codes other than the five defined by Tcl.
If the resultVarName argument is given, then the variable it names is set to the result of the script evaluation. When the return code from the script is 1 (TCL_ERROR), the value stored in resultVarName is an error message. When the return code from the script is 0 (TCL_OK), the value stored in resultVarName is the value returned from script.
If the optionsVarName argument is given, then the variable it names is set to a dictionary of return options returned by evaluation of script. Tcl specifies two entries that are always defined in the dictionary: -code and -level. When the return code from evaluation of script is not TCL_RETURN, the value of the -level entry will be 0, and the value of the -code entry will be the same as the return code. Only when the return code is TCL_RETURN will the values of the -level and -code entries be something else, as further described in the documentation for the return command.
When the return code from evaluation of script is TCL_ERROR, three additional entries are defined in the dictionary of return options stored in optionsVarName: -errorinfo, -errorcode, and -errorline. The value of the -errorinfo entry is a formatted stack trace containing more information about the context in which the error happened. The formatted stack trace is meant to be read by a person. The value of the -errorcode entry is additional information about the error stored as a list. The -errorcode value is meant to be further processed by programs, and may not be particularly readable by people. The value of the -errorline entry is an integer indicating which line of script was being evaluated when the error occurred. The values of the -errorinfo and -errorcode entries of the most recent error are also available as values of the global variables ::errorInfo and ::errorCode respectively.
Tcl packages may provide commands that set other entries in the dictionary of return options, and the return command may be used by scripts to set return options in addition to those defined above.
if { [catch {open $someFile w} fid] } { puts stderr "Could not open $someFile for writing\n$fid" exit 1 }
There are more complex examples of catch usage in the documentation for the return command.


#include <constraint_solver.h>
|
| | SolutionCollector (Solver *const solver, const Assignment *assignment) |
| |
| | SolutionCollector (Solver *const solver) |
| |
| | ~SolutionCollector () override |
| |
| std::string | DebugString () const override |
| |
| void | Add (IntVar *const var) |
| |
| void | Add (const std::vector< IntVar * > &vars) |
| |
| void | Add (IntervalVar *const var) |
| |
| void | Add (const std::vector< IntervalVar * > &vars) |
| |
| void | Add (SequenceVar *const var) |
| |
| void | Add (const std::vector< SequenceVar * > &vars) |
| |
| void | AddObjective (IntVar *const objective) |
| |
| void | EnterSearch () override |
| |
| int | solution_count () const |
| |
| Assignment * | solution (int n) const |
| |
| int64 | wall_time (int n) const |
| |
| int64 | branches (int n) const |
| |
| int64 | failures (int n) const |
| |
| int64 | objective_value (int n) const |
| |
| int64 | Value (int n, IntVar *const var) const |
| |
| int64 | StartValue (int n, IntervalVar *const var) const |
| |
| int64 | EndValue (int n, IntervalVar *const var) const |
| |
| int64 | DurationValue (int n, IntervalVar *const var) const |
| |
| int64 | PerformedValue (int n, IntervalVar *const var) const |
| |
| const std::vector< int > & | ForwardSequence (int n, SequenceVar *const var) const |
| |
| const std::vector< int > & | BackwardSequence (int n, SequenceVar *const var) const |
| |
| const std::vector< int > & | Unperformed (int n, SequenceVar *const var) const |
| |
| | SearchMonitor (Solver *const s) |
| |
| | ~SearchMonitor () override |
| |
| virtual void | RestartSearch () |
| |
| virtual void | ExitSearch () |
| |
| virtual void | BeginNextDecision (DecisionBuilder *const b) |
| |
| virtual void | EndNextDecision (DecisionBuilder *const b, Decision *const d) |
| |
| virtual void | ApplyDecision (Decision *const d) |
| |
| virtual void | RefuteDecision (Decision *const d) |
| |
| virtual void | AfterDecision (Decision *const d, bool apply) |
| |
| virtual void | BeginFail () |
| |
| virtual void | EndFail () |
| |
| virtual void | BeginInitialPropagation () |
| |
| virtual void | EndInitialPropagation () |
| |
| virtual bool | AcceptSolution () |
| |
| virtual bool | AtSolution () |
| |
| virtual void | NoMoreSolutions () |
| |
| virtual bool | LocalOptimum () |
| |
| virtual bool | AcceptDelta (Assignment *delta, Assignment *deltadelta) |
| |
| virtual void | AcceptNeighbor () |
| |
| virtual void | AcceptUncheckedNeighbor () |
| |
| virtual bool | IsUncheckedSolutionLimitReached () |
| |
| Solver * | solver () const |
| |
| virtual void | PeriodicCheck () |
| |
| virtual int | ProgressPercent () |
| |
| virtual void | Accept (ModelVisitor *const visitor) const |
| |
| virtual void | Install () |
| |
| | BaseObject () |
| |
| virtual | ~BaseObject () |
| |
Definition at line 4076 of file constraint_solver.h.
◆ SolutionCollector() [1/2]
| operations_research::SolutionCollector::SolutionCollector |
( |
Solver *const |
solver, |
|
|
const Assignment * |
assignment |
|
) |
| |
◆ SolutionCollector() [2/2]
| operations_research::SolutionCollector::SolutionCollector |
( |
Solver *const |
solver | ) |
|
|
explicit |
◆ ~SolutionCollector()
| operations_research::SolutionCollector::~SolutionCollector |
( |
| ) |
|
|
override |
◆ DebugString()
| std::string operations_research::SolutionCollector::DebugString |
( |
| ) |
const |
|
inlineoverridevirtual |
◆ Add() [1/6]
| void operations_research::SolutionCollector::Add |
( |
IntVar *const |
var | ) |
|
◆ Add() [2/6]
| void operations_research::SolutionCollector::Add |
( |
const std::vector< IntVar * > & |
vars | ) |
|
◆ Add() [3/6]
| void operations_research::SolutionCollector::Add |
( |
IntervalVar *const |
var | ) |
|
◆ Add() [4/6]
| void operations_research::SolutionCollector::Add |
( |
const std::vector< IntervalVar * > & |
vars | ) |
|
◆ Add() [5/6]
| void operations_research::SolutionCollector::Add |
( |
SequenceVar *const |
var | ) |
|
◆ Add() [6/6]
| void operations_research::SolutionCollector::Add |
( |
const std::vector< SequenceVar * > & |
vars | ) |
|
◆ AddObjective()
| void operations_research::SolutionCollector::AddObjective |
( |
IntVar *const |
objective | ) |
|
◆ EnterSearch()
| void operations_research::SolutionCollector::EnterSearch |
( |
| ) |
|
|
overridevirtual |
◆ solution_count()
| int operations_research::SolutionCollector::solution_count |
( |
| ) |
const |
◆ solution()
| Assignment* operations_research::SolutionCollector::solution |
( |
int |
n | ) |
const |
◆ wall_time()
| int64 operations_research::SolutionCollector::wall_time |
( |
int |
n | ) |
const |
◆ branches()
| int64 operations_research::SolutionCollector::branches |
( |
int |
n | ) |
const |
◆ failures()
| int64 operations_research::SolutionCollector::failures |
( |
int |
n | ) |
const |
◆ objective_value()
| int64 operations_research::SolutionCollector::objective_value |
( |
int |
n | ) |
const |
◆ Value()
| int64 operations_research::SolutionCollector::Value |
( |
int |
n, |
|
|
IntVar *const |
var |
|
) |
| const |
◆ StartValue()
| int64 operations_research::SolutionCollector::StartValue |
( |
int |
n, |
|
|
IntervalVar *const |
var |
|
) |
| const |
◆ EndValue()
| int64 operations_research::SolutionCollector::EndValue |
( |
int |
n, |
|
|
IntervalVar *const |
var |
|
) |
| const |
◆ DurationValue()
| int64 operations_research::SolutionCollector::DurationValue |
( |
int |
n, |
|
|
IntervalVar *const |
var |
|
) |
| const |
◆ PerformedValue()
| int64 operations_research::SolutionCollector::PerformedValue |
( |
int |
n, |
|
|
IntervalVar *const |
var |
|
) |
| const |
◆ ForwardSequence()
| const std::vector<int>& operations_research::SolutionCollector::ForwardSequence |
( |
int |
n, |
|
|
SequenceVar *const |
var |
|
) |
| const |
◆ BackwardSequence()
| const std::vector<int>& operations_research::SolutionCollector::BackwardSequence |
( |
int |
n, |
|
|
SequenceVar *const |
var |
|
) |
| const |
◆ Unperformed()
| const std::vector<int>& operations_research::SolutionCollector::Unperformed |
( |
int |
n, |
|
|
SequenceVar *const |
var |
|
) |
| const |
◆ PushSolution()
| void operations_research::SolutionCollector::PushSolution |
( |
| ) |
|
|
protected |
◆ Push()
| void operations_research::SolutionCollector::Push |
( |
const SolutionData & |
data | ) |
|
|
inlineprotected |
◆ PopSolution()
| void operations_research::SolutionCollector::PopSolution |
( |
| ) |
|
|
protected |
◆ BuildSolutionDataForCurrentState()
| SolutionData operations_research::SolutionCollector::BuildSolutionDataForCurrentState |
( |
| ) |
|
|
protected |
◆ FreeSolution()
| void operations_research::SolutionCollector::FreeSolution |
( |
Assignment * |
solution | ) |
|
|
protected |
◆ check_index()
| void operations_research::SolutionCollector::check_index |
( |
int |
n | ) |
const |
|
protected |
◆ prototype_
| std::unique_ptr<Assignment> operations_research::SolutionCollector::prototype_ |
|
protected |
◆ solution_data_
| std::vector<SolutionData> operations_research::SolutionCollector::solution_data_ |
|
protected |
◆ recycle_solutions_
| std::vector<Assignment*> operations_research::SolutionCollector::recycle_solutions_ |
|
protected |
The documentation for this class was generated from the following file:


OUR APPROACH:
Pacannim believes that Approach to a project plays a significant role in its Quality and Customer Satisfaction, and that made us have a cleaner approach for every project based on its kind. We divided our expertise areas into 3 broad categories and we have different approach for each one, keeping in mind Project Quality and Customer Satisfaction.
WEB - Wireframe to Going Live, Static Small Level to Enterprise Level Web Applications..etc
BRANDING/ADVERTISING - Logo,Business Card,Flyer,Banner,Infographic,Email,Brochure,Illustration..etc
Applications - Custom Web Tools,Desktop Applications, Web Services..etc
STEP 1
UNDERSTANDINGSTEP 2
WIREFRAMESTEP 3
MOCK AND DESIGNSTEP 4
TESTING AND DISCUSSIONSTEP 5
FINAL DELIVERYSTEP 6
SUPPORTSTEP 1
UNDERSTANDINGSTEP 2
DESIGN CONCEPTSSTEP 3
MOCK AND DESIGNSTEP 4
TESTING AND DISCUSSIONSTEP 5
FINAL DELIVERYSTEP 6
SUPPORTSTEP 1
UNDERSTANDINGSTEP 2
WIREFRAMESTEP 3
MOCK AND DESIGNSTEP 4
TESTING AND DISCUSSIONSTEP 5
FINAL DELIVERYSTEP 6
SUPPORT


This week I was transported back to my high school days of problem solving in maths, using a part of my brain that's mostly been on vacation these past few years. Welcome to the world of JavaScript! Time to get back to work Brain, you slacker.
So far we've been learning about HTML, the bread and butter of websites, and CSS, what you use to make everything pretty. Now we're starting to learn JavaScript - the thing that makes websites interactive.
JavaScript tells the browser how to change the web page in response to certain events (like a user clicking on a link, or filling out the details of a form).
Control flow is the concept of controlling how your code runs under different conditions or until a certain condition is met. One way to do this is through if/else statements. These tell the browser to run code if certain conditions are true. Using an everyday example, you might choose to set yourself a limit of 6 cups of tea a day. In this case, if you have had less than 6 cups on a particular day, you could make yourself a fresh pot, else you'd have to stick with water. Here's an example of this if/else statement in code:
var cupOfTeaTally = 3
if (cupOfTeaTally < 6) {
console.log ("Put the kettle on!");
} else {
console.log ("I think you've had enough.");
} // Put the kettle on!
(Except this example doesn't really make sense, because you can never have too much tea.)
If you wanted to run a piece of code a number of times, you could keep writing it out until you got the right result, but that's a bit time-consuming. Loops allow you to carry out an action multiple times without having to repeat yourself. For instance, if you wanted to list of all the cups of tea you had gone through in a day but you didn't want to write the same sentence over and over you could use a for loop like this:
for(i=1; i<21; i++){
console.log("This is cup number " + i);
};
Arrays and objects are used to store multiple values in a single variable (var
). For instance, if you wanted to store a range of muffin flavours in the variable "muffins", you could use an array as follows:
var muffins = ["blueberry", "banana choc chip", "apple cinnamon"]
Numbers are used to access the values (or "elements") of an array. In this case, muffins[0]
returns "blueberry" (arrays indexes start with 0).
An array is a special type of object. One major difference between an array and an object is that you use names to access the values in an object, rather than numbers. For instance, in the example below, cake.filling
returns "jam":
var cake = {type:"sponge", filling:"jam", number: 3};
Arrays are best when you want your element names to be numbers. Objects should be used when you want the element names to be text.
A function is a "subprogram", made up of a sequence of statements, which can be used to perform a particular task. As Code Academy puts it: "a function takes in inputs, does something with them, and produces an output."
Functions can be declared using:
function nameOfFunction(parameter) {
console.log("Print the word " + parameter);
};
To use a function, you "call" the function by typing the function's name and putting a parameter value inside the parentheses after it e.g. for the above example, function("Hello")
would output "Print the word Hello"
.
Functions are useful because they allow you to use the same piece of code over and over without having to write the whole thing out again. You can use the same function with different values (or "arguments") and it will produce different results.


?6
7
8
9
io
The
New
York
copyright
reserved
botanical
Garden
The
University
of
Texas
Herbarium
(LL,
TEX)
Capraria
biflora
L.
Det:
J.
Williams
&
B.L.
Turner,
30
Jul
1996
PLANTS
OF
PUERTO
RICO
Capraria
biflora
L.
det.
C.M.Taylor
1987
SCROPHULARIACEAE
Municipio
de
Guayama:
N
of
Guayama
along
rte
706
ca.
0.5-1
mile
S
of
its
intersection
with
rte
712.
Dry
thickets
and
pastures.
Weed
ca.
0.8
m
tall,
corollas
bright
white.
C.M.
Taylor
#
6792
10
Feb.
1986
BOTANICAL
GARDE**,
0080
01008013
Legend -
Level of confidence that token is an accurately-transcribed word
extremely low
very low
low
undetermined
medium
high
very high


I started my working career in the Army National Guard when I was 17.I served 6 years and deployed to Kuwait for Operation Iraqi Freedom/ Operation Enduring Freedom. While on deployment I worked in a warehouse where we ordered parts for the mechanics to fix helicopters. I was also apart of the general's driver detail where I was honored to meet General Dunwoody. She became the first female four star general! After deployment I was offered a job as a contractor for the 1106th TASMG. I worked there for 7 years and gained most of my computer knowledge there. This is where I first began to learn about coding. My husband introduced me to Geekwise Academy and I realized that I was coding at work. I'm currently a student at Geekwise taking a JavaScript class. My coding skills are impoving everyday and so far I'm proficient with HTML and CSS.


Email: Email is required!
Password:
Name: Name is required!
Surname: Surname is required!
Password: Password is required!


I have a passion for Pilates!
What an incredible Cinderella story! This unknown, comes out of nowhere, to lead the pack at Augusta. He’s at the final hole. He’s about 455 yards away, he’s gonna hit about a 2-iron, I think. Oh, he got all of that. The crowd is standing on its feet here at Augusta. The normally reserved crowd is going wild…for this young Cinderella who’s come out of nowhere. He’s got about 350 yards left, he’s going to hit about a 5-iron, it looks like, don’t you think? He’s got a beautiful backswing… that’s- oh, he got all of that one! He’s gotta be pleased with that! The crowd is just on its feet here. He’s a Cinderella boy. Tears in his eyes, I guess, as he lines up this last shot. He’s got about 195 yards left, and he’s got a, looks like he’s got about an 8-iron. This crowd has gone deadly silent… Cinderella story, out of nowhere, former greenskeeper, now about to become the Masters champion. It looks like a mirac- it’s in the hole! It’s in the hole!
That's Me!
Come by and sweat for a while


On the Live View tab page, you can view the live video from the camera. In the top right corner of the view window, you can select a stream to view.
Double-clicking the view window will enter the full screen mode. Double-clicking the view window again or pressing Esc will return.
| Main Stream | The main stream is usually recorded. To configure the main stream, see Encoding. |
| Secondary Stream | When bandwidth resources are insufficient, you can view the secondary stream with a lower encoding rate and a lower resolution. To configure the secondary stream, see Encoding. |
| Third Stream | You can view the third stream with a lower encoding rate and a lower resolution on your mobile phone. To configure the third stream, see Encoding. |
| Fourth Stream | The fourth stream is reserved for the Intelligent Analysis feature. To configure the fourth stream, see Encoding. |
| - | |
| - | |
| Original size of a stream | |
| Adapt to the aspect ratio of your PC |
| / | Start or pause a viewing. |
| Stop a viewing. | |
| Volume | |
| Call the camera. | |
Take a snapshot. By default, all the snapshots are saved in C:\IPCWeb\Pic\Preview. To change the save path, see Settings--Local. |
|
Start a recording. Clicking the button will start a recording and clicking the button again will stop the recording. By default, all records are saved in C:\IPCWeb\Rec. To change the save path, see Settings--Local. |
|
| Draw a square rightwards to digitally zoom in. Draw a square leftwards to return. | |
You can draw a square rightwards on the view window to zoom in. Then, the target field will be displayed in the center of the view window. You can draw a square leftwards on the view window to return. If you double-click a point on the view window, the target field will be displayed in the center of the view window. Note: This option is available only to PTZ cameras. |
|
| Show the frame rate and encoding rate. | |
| View the video in full screen mode. Press Esc or double-click the view window to return. |