2016/01/04: Version Control:Why You Need It Before The Sun Comes Up!
When I was a young sophomore in high school, I pulled an all-nighter writing, editing and finalizing a journalism assignment for my high school newspaper. By the time the sun came up that early morning, I was a zombie and in my half-asleep state somehow managed to accidentally overwrite my file. To my horror, all the night's work was lost. And this wasn't even a case of not saving my work. I DID save my work. But there was no safety net to allow me to recover my work from just a few minutes before I overwrote my file. If only I could go back in time just 30 minutes!
When I was much older I was updating a peace of code with two new features. I got one feature working perfectly. Feeling a sense of "flow", I felt I was unstoppable and continued to code the second feature request without making a backup of the working code that had the first feature all done. Hours later I realized that the new (second) feature was not working correctly as I'd hoped, and I wasn't going to have the second feature debugged any time soon. Meanwhile my employer wanted at least the first feature (that was ready just hours ago!) to go off to be tested in the User Acceptance Test--feature #2 could wait. Unfortunately feature #2 broke all of the code, making feature #1 unuseable until I got feature #2 either removed or debugged completely. If only I had not been so eager and had made a backup RIGHT AFTER feature #1 was completed.
Both of these real-world scenarios would have benefited from source control. In both situations, copies of the work could have been saved off periodically throughout the work-effort, creating checkpoints in time. In the first scenario, the moment I overwrote the final copy, I could have gone to my version control system and requested the last checked-in copy, meaning I would have probably just lost maybe only 1 hours worth of work instead of the entire night. In the latter scenario, I could have extracted a copy of the source code immediately before I started working on feature #2, allowing my team to start downstream testing feature #1.
Git is one of these version control systems. It allows you to keep snapshots in time of your work. It saves the incremental changes to a repository on your local computer. For added safety (as well as ease of collaberation with others), you can have the work uploaded to a third-party central cloud server called GitHub. That way if you happen to also lose your PC harddrive or perhaps laptop all together, your work (and all its incremental pieces) can be re-downloaded from the cloud.Obviously this was just a VERY high level simplistic, single case-study (actually two) of a good reason to use Git, GitHub and version control, but I think it gets the point across. For more information, start at this Git website.
Hope This Helps,
-- JLH


This a demonstration of zuck.js javascript library.
Not associated with Facebook, Instagram, WhatsApp or Snapchat.


Click and drag, or use arrow keys to move pieces. Use shift+arrows to rotate/flip.
* This is a representation I made of a real-life physical puzzle created by William Waite. It is called the CircleTrap Puzzle, and is nearly impossible to do manually! I created this web version to find all solutions and practice my javascript and algorithms skills. It's been fun!


The ethics of telco fraud
Ethics Litmus Tests
now online!
www.ethical-litmus.site
NB borrowed code from Ben Buchanon's version, for Oblique Strategies. You'll know him from the big stonking post - WD conf blogpost. V1 static, V2 is going to allow suggestions and a vote / poll mechanism to add new cards
Section 1
Friend or fraud?
So, let's get stuck into it!
Lineup
Developing a healthy cynicism about data sources
Mapping knowledge states
Designing for failure first
Upstream prevention vs downstream mitigation
Four primary findings I'll walk you through. These findings and techniques I offer apply to any kind of automation or decision system. Not telco or fraud-specific, they apply to you!
Ethics ops consulting
debias.ai
At the beginning of 2020 (which is either a year or a lifetime ago, who even knows) I began consulting with a telco for Debias AI. I am primarily embedded in their fraud detection team. Their approach to fraud detection is pretty standard - a mix of monitoring, internal business rules, and third party systems with proprietary fraud ML algorithms.
Ethics ops is like devops for ethics - I introduce a harm identification and mitigation lens, and work on monitoring / notifications / alerts as well as product flows and feedback loops.
A balancing act
Fraud is an interesting space in which to discuss ethics. Not only are you (the company) capable of inflicting harm on your customers, you are also under attack by a sub-set of customers who mean you harm. You have to balance the real, often urgent concerns of identifying bad behaviour & halting costs while also acknowledging the possibility of false positives, and considering how you might identify and support any innocent parties who accidentally get caught in the cross-fire. It's a war of attrition - like email spam.
Finding #1
Developing a healthy cynicism about data sources
When we start to feel really comfortable is usually when we discover something can be totally different than our expected interpretation.
Data (interpretation) pride comes before a fall
The textivist... (NB Marketing use - overseas texting is EXPENSIVE and outside of most terms of use for personal plans). Self-automation... The auto-call on smartwatch...
Deconstructing your proxy
All data is a proxy - it's an approximation of the thing we actually want to measure. (time allowing - Apple CC example).
This is the framing I use, and I think it helps us be explicit about the logic leaps we are making. Always asking the question how good a proxy is this data for the thing I REALLY want to know? Don't forget we also measure anti-signals.
A $600m mistake?
""[The dataset] is an index of Australian addresses. The dataset does not contain a list of premises," he said."
— Another 300k NBN connections to cost $600m, CEO blames blowout on bad address data
NBN budget increased to deal with 300k premises that were not captured in their original sweep. Imagine being the unit on a block which was overlooked? Or being the last on your street to get upgraded? This impacts work, study, house prices, lives.
Look at your raw data
Not just at dashboards
Data scientists please use your tools to interrogate raw data validity: does it actually meet our expectations? Types, formatting, data quality? Don't just examine 1st 10 results in a data table. SMEs & everyone else - get up close and personal with incoming data too, look for the human stories behind the data. You'll be surprised what you learn!
Data misinterpretation is easy , and likely under pressure
One of the most interesting things about working with fraud is the pressure it puts on data interpretation in periods of attack. Like putting data science hygiene through the wringer - in unexpected bursts.
For example...
Maintenance outages (planned) causing delays in data stream. Fixed delay in timeframe from data ingest > running feature > alert in slack - got us every time!
 Be explicit. Make it impossible to misinterpret. Just because your team is smart, technical, doesn't mean you want them to have to be brilliant detectives under time and cost pressure.
Litmus test
On a quick glance, is this easy to misunderstand?
Even if you're not working in the space of fraud, we experience this same kind of pressure all the time. When a customer discovers a bug in production. When there's an outage with a third party, etc.
Pointers for data interpretation
Using DSL (domain specific language)?
Add units
Absolute (total count) or relative (%)?
Is the data recency clear?
Finding #2
Mapping knowledge states
ok. so you probably knew this was coming. This is the section where i tell you that the best way to improve your data science practice as a whole is to do better, much better, at the boring science bits.
Beware the swamp of lazy assumptions
Anecdote: when joined telco there was a lot of confusion about what types of fraud were, and what they were called. Names were quite confusing, unintuitive, imprecise language, name overlaps! I wasn't the only one who was confused.
Implicit vs Explicit knowledge
Become a knowledge excavator
Just because a thing is knowable, doesn't mean it is known. Often the first step to establishign a shared understanding is to sniff out this existing implicit knowledge and formalise it.
Naming matters
Build a shared vocabulary
Build shared mental models
Avoid name-space clashing
For example
International revenue sharing fraud -vs- Toll fraud
these are confusingly different names for the same thing unrelated to Call Reselling (but these often get confused)
Personas
For example - a persona for people who overuse promotions which describes a 'deal seeking behaviour', very different to the persona of someone trying to pose as a telco and on-sell services. We established a shared model and vocab that stakeholders from support and ops to data science can use.
Defining your baseline
If you don't have a shared understanding it's hard to move forwards. Needed for all experiments, hypotheses you want to try moving forwards. Also - perhaps minor discrepancies in what is the current state will reveal a question to investigate?
Data schemas
For internal experiments. Take the job of data capture about your customers seriously. Take the time to think about what fields, what meta data will be useful for investigations. Future you will thank you.
Changing our language changes our minds
"We'll wait until we're 100% certain... no make that 99% certain"
Colleague who has started to change his language
Added uncertainty in the space of fraud
You really can't trust what people say
In UXR you develop a sniff test for honesty and vulnerability vs bulshit answers. But in the fraud space you had this added complexity of knowing that sometimes customers may be lying or trying to game the system to meet their own ends. Dealing with this day-in day-out can make these discussions feel instantly suspect, and you'll start to see fraud everywhere.
The antidote to suspicion
Setting the intention to be respectful
The best way to avoid falling into this trap is to be explicitly, deliberately kind and respectful in all our communications
bUt wHAt iF iT's A BAd AcTor?
So what?
What is the cost of all outcomes? Being respectful to someone who is trying to rip you off vs speaking harshly to a legit customer by accident? Or disconnecting a bad actor (save $) vs a legit or differently abled customer (lose $). Also consider also reputational harms. Focus on your automation goal.
Keep the moralising out of it
Being 'right' isn't helpful. You don't know that person, you don't know their story.
Tip
Describe behaviours , not people
Describe behaviour (service misuse) not people (fraudster). There's literally no value in applying a moralising title to a person. THere's every possibility of harm, on both sides, if you get it wrong.
Finding #3
Designing for failure first
In my experience, we have been experimenting with designing comms flows to provide clearer feedback to people whose service came under suspicion, and allow for them to request support if they think there has been a mistake. In some cases, there was a warning, others was after-the-fact. This was... challenging... unexpected work.
If you don't ask, customers won't tell
If your system makes an incorrect assumption, are you in a position to find out? I think of this as the rule of lurkers vs contributors. Most people won't bother to give you feedback. In the space of fraud, if you have taken an action on a service they're more likely to churn than to make an effort to reach out to you - and why would they bother based on a market where churn is the norm and it's easy to swap providers? If they are really angry you might get feedback - but through the form of a complaint to the TIO (the regulator) - also a bad outcome.
Feedback loops must be
Intuitive
Contextual
Timely
I'm a fan of micro-feedback, small and contextual questions that are really lightweight and easy to answer.
Plan time for...
Customer support
Product/model improvements
Integrating your learnings
Be explicit
If you can't imagine consequences, you're not thinking hard enough
The best way to prepare yourself to design in this world is to be ultra explicit about the goals of your system, and the possible harms that might occur to your end users.
Chaser
"The goal is to protect the graph against all attacks rather than to maximize the accuracy of any one specific classifier. The opportunity cost of refining a model for one attack may be increasing the detection and response on other attacks."
— Facebook Immune System by Tao Stein, Roger Chen, Karan Mangla
Harm mapping
Recommended starting point
github.com/summerscope/mapping-fair-ml
This is a whole topic but just to point to it, this is the bit where we think about what we might get wrong, and what are the consequences. There are a whole bunch of tools and frameworks out there to try - ethics litmus tests among them.
Failure-first design
UI interactions (Get help / This isn't right)
Email / SMS templates
Support scripts for conversations
Data schema design (capturing your learnings)
Places you could think about starting for a feature design / product flow.
Litmus test
What if this happened to my most vulnerable customer?
In the space of a telco, we're asking what could go wrong with a mobile service level action. I find this question useful for thinking about service level actions. It helps frame the cost of false positives and makes us more focused on the minimum viable intervention needed to achieve our goals of capping these costs.
Prepare for pushback
People don't like it when you make bad assumptions about them!
Making the implicit explict is going to be uncomfortable
Designing an escape hatch
I think of this work as designing the escape hatch. You don't want to have to use it, but if you need it you sure hope it's there.
Litmus test
Could any customer go through my escape hatch, recover and remain a happy customer?
Sometimes you have to think creatively - pitch a friction as a value add. "We are working hard to protect your identity and your account's safety" is a good one, for instance. Test out your explanations and flows on random people NOT those who match the assumptions your system made as a way to assess the quality of the solution.
"Delays in feedback loops are common causes of oscillations. If you're trying to adjust a system state to your goal, but you only receive delayed information about what the system state is, you will overshoot and undershoot."
- Leverage Points: Places to Intervene in a System by Donella Meadows
The escape hatch is also your feedback loop telling you about the state of your system.
Finding #4
Upstream prevention vs downstream mitigation
Is this a product problem or a data science / behaviour detection problem?
These sorts of things will happen. I’m very intentional about not saying abuse "might" happen - if it can, it will.
- Eva PenzeyMoog newsletter
I see a reseblance between Fraud and Abuse (tech used in DV / DA). These are people with a different agenda to yours. They are looking for vulnerabilities they can exploit for their own ends.
Product use cascade
What you can do in the product
Intentions, framing, design
Culture of your community
...
Terms of use
It's a hierarchy of permissions - #1 trumps #2, #3 trumps #5, etc
Possible = permissible
I can't say it more strongly. If you don't care to make it impossible to do something in your product, that's tacit permission for the behaviour to occur. Even if it's not intended, designed for, etc. It sucks, but it's the nature of the beast.
Setting boundaries is design
I we often miss out on opportunities to do this well. Marketing, on-boarding, engagement comms - these are all opportunities to show how people can and should be successful using your product, and to offer little nudges away from the kinds of behaviour you don't want to see.
Think of TOC - necessary evil but not the intuitive place to enact change if it's possibel to go up the cascade
Downstream is usually more costly than upstream
In retail - think promotions abuse, etc. Can you add guardrails in at the planning stage?  Anyone who's worked on an abuse team will testify to this. It's not always possible, but if you can resolve something with a product change rather than monitoriing for it and remediation after the fact - usually preferable.
Section 2
Top-down vs. bottom-up
Responsible tech
No magic bullets
So if you were hoping I'd be giving you pointers on writing a values startegy or principles document, I'm sorry to disappoint.
No magic bullets*
* Anyone who tells you otherwise is selling something
There are no magic bullets. The desire for a magic bullet is part of the problem. We're in the Cambrian explosion phase not just of AI but of also of AI Ethics. It's on us to interrogate the power structures and agendas lurking behind the glossy marketing copy.
Let me be a bit more precise in my critique of strategy documents. I'm not particularly interested in writing ethics strategy or data governance strategy - whether industry, govt or private sector, unless it there is a clear line between the principle being defined and the granular decisions being made at a product or data level. The day-to-day decisions. The little course corrections.
"Goal: Consumers choose trustworthy products when available and demand them when they aren't."
— Mozilla Trustworthy AI Paper
Ummmm cool. How can they assess whether a tool is trustworthy? What kind of power do they have to demand it if not? How can this be measured?
"AI must be designed to minimize bias and promote inclusive representation"
— IBM Everyday Ethics for Artificial Intelligence
"So much wrapped up in this. How do we minimise or mitigate bias? What does inclusive representation mean exactly? What's the code test for that?"
So yeah, I worry that this is ethics bike shedding. Without measurable outcomes, these principles are toothless. And worse, they're resource thiefs.  They lull us into thinking we're already doing the work, without actually having started. I'd argue the real work starts at implementation. What's your plan to integrate these principles into your decision making at every level? How will this change your culture? How will you help people unlearn bad habits? Who will set the boundaries of acceptable time and discourse (e.g. how much money are you willing to spend)? Do you have internal champions who can 'show by doing'? Do you need to offer training or upskilling?
"A string of empty profunditites"
- Andy Kitchen
The work is in the detail, the daily decisions. The desire to abstract, to generalise, can itself be a form of procrastination.
— Gif by Barbara Pozzi
A metaphor: sailing in a big cruise liner. When you're on the passenger deck it's quiet, safe, boring even. No sense of motion. When you go out on deck you see the speed, the mass of water displaced, etc... Sometimes we *want* to feel the wind rushing past. I think insulating ourselves from that sensation is unhelpful.
How not to do principles
Don't point at a document, framework, or methodology and say "Go use it". Champion the approach from inside the team. Get your hands dirty. Show by doing.
Commit to action
Assign strategy champion(s)
Set measurable targets
Provide examples
Allow for uncertainty
If you must have a strategy document or page, make it a commitment to action. Without real commitment to the longevity of your principles, what often happens is the documents gather dust in the corner, and life very quickly returns to the status quo.
Findings
Developing a healthy cynicism about data sources
Mapping knowledge states
Designing for failure first
Upstream prevention vs downstream mitigation
Let's take a moment to remember these findings we talked through. ... They lead nicely into the final topic I want to touch on, automation design.
Rethinking automation design
So many options we don't need to think about automations as all or nothing
Breaking down the monolith
Concierge prototypes (human-as-bot)
Automations can be temporary or time-boxed
Dashboard? Notification? Escalation? Action?
Do usability testing (duh)
If it feels weird/wrong as a human interaction, it probably means it's bad as an automation.
"The first principle is that you must not fool yourself – and you are the easiest person to fool."
— Richard Feynman
The real game
Trying to catch fraud, yet not defraud ourselves
We too, are fair game. We have more in common with the fraudsters than we might think.
We are driven by the same incentives as the fraudsters - capitalism played out in light and dark markets.


Press space bar when on an item, to move it within the list. CMD plus left and right arrow keys, to move items between lists.
May Not Edit Event
-
Test User 1
-
Test User 3
-
Test User 6
-
Test User 7
-
Test User 8
-
Test User 9
-
Test User 10
-
Test User 11
-
Test User 12
-
Test User 13
-
Test User 13
-
Test User 12
-
Test User 12
-
Test User 12
-
Test User 12
-
Test User 12
-
Test User 12
-
Test User 12
-
Test User 12
-
Test User 12


{% extends "layout.html" %} {% block content %}
You do not have permission to view this page. Return to homepage.


Ksh. 600 - 1300
Ksh. 600 - 1200
Ksh. 500 - 1200
Ksh. 600 - 1100
Ksh. 500 - 1300
You have not selected any item.
The Delivery fee is: Ksh.200


Neuroplasticity and Growth Mindset
13 February, 2020
Neuroplasticity
Discuss how understanding the principles of neuroplasticity benefits people
There is this misconception that the brain doesn’t age very well; as we grow older, it becomes impossible to learn. The idiom “you can’t teach an old dog new tricks” stems from that belief. But research in neuroplasticity has shown that the brain can change even for adults.
There are currently two main types of neuroplasticity:
- Structural neuroplasticity, where the strength of the connections between neurons (or synapses) changes
- Functional neuroplasticity, where the permanent changes in synapses due to learning and development
Discuss how might engage with the principals of neuroplasticity for your own benefit
Knowing the brain can change is incredibly powerful because that means anyone can take ownership of their learning and improve their ability.
What are some of the ways to increase your neuroplasticity
- intermittent fastening
- Travelling
- Exercise
- Mnemonic devices
- Musical instrument
- Non-dominant hand exercises
- Reading fiction
- Creating artwork
- Expand vocab/learn a different language
- Dancing
- Sleeping
Link to a resource that you found particularly useful or engaging.
 It promotes resilience and exploration as well as placing emphasis on the journey rather than the outcome.
in this exploration, did anything surprise you? Change for you?
I’ve always been interested in learning and motivation and I came across a study on the way teachers encourage students can guide them into fixed or growth mindset. The results were mind-blowing because it demonstrated how powerful words can be and how easily our mind can be influenced.
How will you integrate growth mindset into your learning journey?
Placing more emphasis on the journey and less on the outcome.


Creating Images with Dockerfiles (1/2)
By the end of this exercise, you should be able to:
- Write a Dockerfile using the
FROM
andRUN
commands - Build an image from a Dockerfile
- Anticipate which image layers will be fetched from the cache at build time
- Fetch build history for an image
Writing and Building a Dockerfile
Create a folder called
myimage
, and a text file calledDockerfile
within that folder. InDockerfile
, include the following instructions:FROM centos:7 RUN yum update -y RUN yum install -y wget
This serves as a recipe for an image based on
centos:7
, that has all its default packages updated andwget
installed on top.Build your image with the
build
command. Don't miss the.
at the end; that's the path to yourDockerfile
. Since we're currently in the directorymyimage
which contains it, the path is just.
(here).[centos@node-0 myimage]$ docker image build -t myimage .
You'll see a long build output - we'll go through the meaning of this output in a demo later. For now, everything is good if it ends with
Successfully tagged myimage:latest
.Verify that your new image exists with
docker image ls
, then use it to run a container andwget
something from within that container, just to confirm that everything worked as expected:[centos@node-0 myimage]$ docker container run -it myimage bash [root@1d86d4093cce /]# wget example.com [root@1d86d4093cce /]# cat index.html [root@1d86d4093cce /]# exit
You should see the HTML from example.com, downloaded by
wget
from within your container.It's also possible to pipe a Dockerfile in from STDIN; try rebuilding your image with the following:
[centos@node-0 myimage]$ cat Dockerfile | docker image build -t myimage -f - .
(This is useful when reading a Dockerfile from a remote location with
curl
, for example).
Using the Build Cache
In the previous step, the second time you built your image should have completed immediately, with each step save the first reporting using cache
. Cached build steps will be used until a change in the Dockerfile is found by the builder.
Open your Dockerfile and add another
RUN
step at the end to installvim
:FROM centos:7 RUN yum update -y RUN yum install -y wget RUN yum install -y vim
Build the image again as above; which steps is the cache used for?
Build the image again; which steps use the cache this time?
Swap the order of the two
RUN
commands for installingwget
andvim
in the Dockerfile:FROM centos:7 RUN yum update -y RUN yum install -y vim RUN yum install -y wget
Build one last time. Which steps are cached this time?
Using the history
Command
The
docker image history
command allows us to inspect the build cache history of an image. Try it with your new image:[centos@node-0 myimage]$ docker image history myimage:latest IMAGE CREATED CREATED BY SIZE f2e85c162453 8 seconds ago /bin/sh -c yum install -y wget 87.2MB 93385ea67464 12 seconds ago /bin/sh -c yum install -y vim 142MB 27ad488e6b79 3 minutes ago /bin/sh -c yum update -y 86.5MB 5182e96772bf 44 hours ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0B <missing> 44 hours ago /bin/sh -c #(nop) LABEL org.label-schema.... 0B <missing> 44 hours ago /bin/sh -c #(nop) ADD file:6340c690b08865d... 200MB
Note the image id of the layer built for the
yum update
command.Replace the two
RUN
commands that installedwget
andvim
with a single command:... RUN yum install -y wget vim
Build the image again, and run
docker image history
on this new image. How has the history changed?
Conclusion
In this exercise, we've seen how to write a basic Dockerfile using FROM
and RUN
commands, some basics of how image caching works, and seen the docker image history
command. Using the build cache effectively is crucial for images that involve lengthy compile or download steps; in general, moving commands that change frequently as late as possible in the Dockerfile will minimize build times. We'll see some more specific advice on this later in this lesson.


I work as a Technical Architect at Hexaware Technologies for Fannie Mae since March 2017. I have over 10 years of experience in architecting, designing and development of robust web applications. I have managed a team of six developers & led a team of on-shore and off-shore developers. I architect Angular applications by using the latest and best available modules, deciding app structure, best practices & mock API's.
I have excellent skills in modern Web Technologies like HTML5, CSS3, JavaScript ES6, Angular 2+, NGRX, ReactJS, Redux, Enzyme, Bootstrap, Jade, Sass, JAVA, JSP, PHP, Python, Apex, ASP.NET, Servlets and XML. I have good understanding of cloud based applications and deployment on AWS and Azure. Check out my RESUME to learn more about my skillset and experience. Have a look at my Projects to see details about projects or go to CERTIFICATIONS to check latest certifications.
This is Single Page application deployed on S3 static website on AWS. It has two S3 buckets: www.ktalathi.com and ktalathi.com. www.ktalathi.com is a simple redirect to ktalathi.com. ktalathi.com holds all the assets like html, css, js, images etc. Route 53 is used as Domain name system. It is build with Angular Electron boilerplate and following is the source map for the same:


We take privacy very seriously, and it is our policy never to send unwanted email messages. You were sent this message because you previously expressed interest in Moms Meet and/or natural and organic products and promotions. If this is incorrect, please accept our apologies.
If you no longer wish to receive these emails, you may unsubscribe from Moms Meet emails at any time.
@2017. May Media Group LLC. All rights reserved
May Media Group 104 Centre Blvd, Suite A, Marlton, NJ 08053 United States<PHONE_NUMBER>


Give Analysis Type Use-Case.Description:Gives the type of the analysis which will be created.The 4 types are : PARTITIONING, TEARING, SEQUENCING and SEQUENTIAL MODULAR ANALYSIS.Assumptions:None.Exceptions:None.


Debate Camps in New York State
Information from Capitol Debate
Top debate highschools
Top highschools at debate according to Speech and Debate
- Regis Highschool
- Chaminade Highschool
- Syosset Highschool
- Scarsdale Highschool
- The Bronx Highschool of Science
- Jericho Highschool
-
Xaverian Highschool
- Edgemont Highschool
- Poly Prep Country Day School
Stuff to do
Be sure to do your homework before moving onto debate
If you truly have done all of this, congratulations, I'm impressed. +10 respect Major sticker
Evidence
2017-2018-Education
2018-2019-Immigration
Discord
Recommended News Sources


File Class
Introduction
The File class offers a set of methods for working with files & directories. This can be done through some helper methods or through a more advanced object oriented method where all files and directories are wrapped in objects.
Configuration
The File class is highly configurable and gives you all the control you need over the behaviour supplied by the class. Configuration settings vary from restricting filesystem access to setting drivers by filetype.
The default file config is located at core/config/file.php. To change these settings create a config file with you own settings at app/config/file.php.
The following configuration values can be defined:
| Param | Type | Default | Description |
|---|---|---|---|
| basedir | string |
|
The path to the basedir. Defaults to null for no restrictions. When defined this will restrict the access to that specific directory. |
| extensions | array |
|
Array of allowed extensions, null for all. If defined the File class will only handle the given extentions and filter out the rest. |
| url | string |
|
Base url for files, null for not available. |
| use_locks | null |
|
Whether to use file locks. Set to true if you want the File class to use them. |
| file_drivers | array |
|
Array of file drivers per extension. These allow you to use custom drivers on a by filetype basis. |
| magic_file | string |
|
Alternative location of the fileinfo() magic file. If not specified, the system default will be used. |


| Bibliothek: | Legacy |
| Eingeführt: | 2.0 Beta 12 |
| Aussehen: |
This component exists only for backwards compatibility with Logisim 1.0X; for new circuits, the Memory library's register is recommended instead.
The register stores a single 8-bit value, which is displayed in hexadecimal within its rectangle, and is emitted via its outputs on its east edge. (Logisim 1.0X did not support multi-bit values, so the register had to have a pin for each individual bit.) At the instant when the clock input (indicated by a triangle on the west edge) rises from 0 to 1, the value stored in the register changes to the value specified through the eight other bits on the west edge.
Keines.
Clicking the register brings keyboard focus to the register (indicated by a red rectangle), and typing hexadecimal digits will change the value stored in the register.
Keines.


Search for anything...
Choose your top nine in a variety of categories, including sports, video games, makeup, movies, and more!
Share your top nine lists with everyone and find out who your friends really are!


'Instinct' (1999)
A movie review by Walter Frith
<EMAIL_ADDRESS>Member of the 'Online Film Critics Society' http://www.ofcs.org
What do you get when you cross two terrific Oscar winning actors with a totally unoriginal story? Two Oscar winning actors appearing in an unoriginal story, of course. Sound silly? Try and equate the question and answer you just read with the feeling you'll experience after seeing 'Instinct'. Sleeping pills may be needed to stay awake during this film that is like an airliner that never gets off the ground. You just sit there and wait for something to happen.
The posturing of 'Instinct' is outrageously insulting to a movie buff. There is a combination of 'One Flew Over the Cuckoo's Nest', 'The Silence of the Lambs' and 'Gorillas in the Mist' at almost every turn. There is even a copycat camera shot of a scene right out of 'The Shawshank Redemption'. Throw into the mix a confined setting where too much time is spent on one issue and you have the atmosphere of spending an afternoon with a really annoying relative you can't get away from. It's a shame because the performances in this film are very good and don't dignify the pace and texture that this film has to offer.
Anthony Hopkins is Dr. Ethan Powell, an renowned anthropologist who goes missing in 1994 in the jungles of Africa while on an excursion to observe the behavioural traits of gorillas. He is arrested for murder by the authorities and spends a significant amount of time in custody before a U.S. state department official brings him home and he is confined to the psychiatric section of a maximum security prison in Florida. A former colleague of Powell's (Donald Sutherland) assigns a bright young psychologist named Theo Caulder (Cuba Gooding Jr.) to help Powell out of his shell.  In fact, Powell feels more secure and has a better peace of mind when he's in the company of the wilderness than with humans at all, including his daughter (Maura Tierney). Caulder tries to establish a trusting doctor/patient relationship with Powell but fails when Powell resists his attempts at rehabilitation after we learn that it's not his mind that's been affected but rather his environment.
The conditions at the so called care facility are atrocious. The psychiatric wing of the prison is overcrowded. Medication levels are too high for the men. They aren't given the proper recreation time and the guards are especially brutal and harsh with them.
There are two relatively interesting scenes of excitement, one near the beginning and one near the end that give 'Instinct' moments of exclusive and badly needed tension but the rest of the time the film is bogged down with a lot of sappy dialogue and watered down characterizations. Director Jon Turteltaub who has made 'Cool Runnings', 'While You Were Sleeping' and 'Phenomenon' is not a suitable choice for this material which needs a steady and heavy hand and not one experienced at lightweight drama, free floating comedy or romantic overtures.
On the plus side, the performances are very stirring by the two leads. I was overwhelmed to see a young actor like Cuba Gooding Jr. hold his own with a seasoned veteran like Anthony Hopkins. The two of them are solid and are casted well in their roles. Too bad the screenplay by Gerald Di Pego based on the novel entitled 'Ishmael' by Daniel Quinn is such an experience in boredom.
OUT OF 5 > * *
Visit FILM FOLLOW-UP by Walter Frith http://www.cgocable.net/~wfrith/movies.htm
* * * * * - a must see * * * * 1/2 - don't miss it * * * * - an excellent film * * * 1/2 - a marginal recommendation * * * - can't quite recommend it * * 1/2 - don't recommend it * * - avoid it * 1/2 - avoid it seriously * - avoid it AT ALL COSTS 1/2 - see it at your own risk zero - may be hazardous to your health
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


root > Testing > 5_Dev Testing BA > 80000_1010
loading data...
Apply to
Current node only
Current node and child nodes
Child nodes only


All the input forms in the demo application use a very simple one line view:
<form-input ng-repeat="field in formSchema" info="{{field}}"></form-input>
which generates the forms on the client using the Mongoose schemas, optionally fine-tuned by hand.
This demo application uses the models in the table below. Have a look at a schema or two and then click on the new link to see the forms that are generated by them.
| {{model.resource_name | titleCase}} | View schema | New | List |
For those who want to see the gory detail the forms and the buttons are generated by directives and the schema processing / behaviour is handled by a controller. The library currently weighs in at 17.3Kb minimised (obviously the ui dependencies and angular itself add substantially to that).
For each model the following routes are supported:
The first of these supports filters, such as
/#/b_using_options?f={"surname":"Smith"}
It is easy to create custom form schemas which are a subset of the whole schema by specifying the fields to include and any options. See the static in this example. The custom form schemas are invoked as follows:
The Angular controllers make use of the following API calls:
It is easy to incorporate a simple search form, as shown in the Navbar. When you enter text into it the SearchCtrl controller makes a call to the server which looks for matching data by searching all the indexed fields in each model for values starting with the search string. There are other search API calls as shown below:
The menu can be added to where required by the models. The NavCtrl controller loads menus from "model controllers" (see an example here and the controller source code here). The options can be configured to appear when records are being listed, edited or created.


Intro to React
Projected Time
7 Hours 30 Minutes
- Lesson : 1 Hr
- Examples: 30-45 mins
- Guided Practice: 2 Hrs
- Independent Practice: 30-45 mins
- Challenge: 3 Hrs
Prerequisites
Motivation
React makes it easy to update your HTML as data changes and build complex apps out of simple, reusable components.
React is an open-source JavaScript library that is used for building user interfaces. It’s used for handling the view layer for web and mobile apps. React also allows us to create reusable UI components.
React allows developers to create large web applications that can change data, without reloading the page. The main purpose of React is to be fast, scalable, and simple.
Facebook created React as a framework to create reuseable components, like posts or comments, and allow the user see updates instantly. Instagram and Airbnb use it too.
Objectives
Participants will be able to:
- Explain the Pros and Cons of using React instead of other tools, like jQuery.
- Create a simple React Component.
Specific Things to Learn
- Why React?
- What is JSX and why is it different than HTML?
- Specifics about co-locating markup with logic in code.
Lesson Materials
You will spend the day working through these materials.
- Introduction to React (video)
- Learn React in 5 minutes (video)
- Techtonica React slides
- Building your first component in React.js | Pluralsight (video)
- Work through this React tutorial
- CodePen for Hello World Example
- CodePen Greeting with Input Example
- CodePen for Counter Example
- CodePen for List - Rendering using a loop in React
Topics to learn & Facilitate
- React lets you generate HTML using JavaScript
- The HTML can change over time, unlike regular HTML
- No jQuery needed
Examples
CodePen - Hello World component
In this CodePen, a basic Hello World component is rendered.
Try modifying line 5 of the JS file to see the changes made to the file rendered.
CodePen of Example 1
CodePen - Component with a single prop
Properties are values that are passed to the component for various uses. Here, the component has a prop called name.
Try modifying line 12 of the JS file by changing the value ABC and view the changes made.
CodePen of Example 2
CodePen - Component assigning a className
React uses className instead of class for CSS styling and other purposes.
Here, the component has a className heading. Try applying various styles for the component by modifying the CSS file.
CodePen of Example 3
Common Mistakes / Misconceptions
- In render functions, don’t forget to return JSX. You can return null for an empty output. Remove the return from a component in one of the CodePens and take note of the error message shown.
- Don’t forget that variables in JSX must be enclosed in brackets. Example:

Hello {this.state.thing}

- The event system in React uses attributes you are likely familiar with from HTML, but they are written using camelCase. Example:
<button onClick={function() { alert('hello!') }}>I am a button</button>
Guided Practice
- Rendering a List using map
- View the Codepen which renders an Ordered List using React. Try to modify the code and work along with it.
- Here, a class component named
FriendsContainer
is declared from the lines 1 - 19.
- Every class component has a render function which returns the code to be rendered.
- A few variables are declared such as name, friends, listItem.
name
is just a string. friends
is a list of Strings. listItem
maps each element of the friends list as li
tags.
- Inside return, the list is rendered by using
{ variableName }
this helps React understand that it has to render the value of the variable there.
ReactDOM.render()
is used to render the component at the div which has the id app
in the HTML file.
- Use ES6 arrow function
- Use semantic HTML, like

- If something is modified or updated, React needs to quickly figure out which element changed and where it needs to reflect that change. So, we have to set
key
attribute on the li of the list.
- If the key property is not set, then the browser will give warning in the console.
Independent Practice
- Rendering a List using map
- Try rendering the List by using declaring another component and passing the list to it for rendering it there.
- Or try rendering the List in a different order by sorting it.
Alternatives
- Modify the props or components.
- Play along with the code, modify it and see the changes it makes.
- Try rendering a basic calculator which does only the basic operations.
Challenge
- Remove from list
- Putting two counters on the page
- Append to list using React


×
Staff Management
New Staff Profile
{{fieldTitle.FieldTitleName}}
Upload Passport
Upload Identification Document


|
|
def | setUp |
| |
|
def | tearDown |
| |
|
def | test_handle_get |
| |
|
def | test_handle_post |
| |
|
def | test_handle_with_error |
| |
|
def | test_handle_with_error_no_error_handler |
| |
|
def | test_handle_with_error_missing_error_handler |
| |
|
def | test_http_response_early_failure |
| |
|
def | test_http_response_late_failure |
| |
|
def | test_connection_error |
| |
|
def | test_connection_error_process_quit |
| |
|
def | test_handle_background_thread |
| |
|
def | test_prior_error |
| |
| def | assertHeadersEqual |
| |
| def | assertResponse |
| |
The documentation for this class was generated from the following file:
- code/googleappengine-read-only/python/google/appengine/tools/devappserver2/http_proxy_test.py


CHAPTER 4.5.1 The Distance-Vector (DV) Routing Algorithm
- The problem of routing a packet from source host to destination host clearly boils down to the problem of routing the packet from source router to destination router
- The purpose of a routing algorithm is then simple: given a set of routers, with links connecting the routers, a routing algorithm finds a “good” path from source router to destination router.
-
A global routing algorithm computes the least-cost path between a source and destination using complete, global knowledge about the network. That is, the algorithm takes the connectivity between all nodes and all link costs as inputs. This then requires that the algorithm somehow obtain this information before actually performing the calculation. The calculation itself can be run at one site
- The key distinguishing feature here is that a global algorithm has complete information about connectivity and link costs.
- algorithms with global state information are often referred to as link-state (LS) algorithms, since the algorithm must be aware of the cost of each link in the network.
-
dx(y) = minv{c(x,v) + dv(y)}
- after traveling from x to v, if we then take the least-cost path from v to y, the path cost will be c(x,v) + dv(y). Since we must begin by traveling to some neighbor v, the least cost from x to y is the minimum of c(x,v) + dv(y) taken over all neighbors v.
-


Ask questions about the core tech here, but not questions about prices or personal questions or GUI and please don't DM JL777.
https://dexstats.info/richlistlookup.php?address=RLVzC4tr9cNKvuw2z4m8KuMfZURwCehx55
https://medium.com/@jameslee777
100 messages
Before 05-Dec-19 12:00 AM
PTYX18-Apr-19 05:18 PM
@Mark81 in order for people to trade votes?
Mark8118-Apr-19 05:19 PM
Yes, that what tried to say.
But i believe that could be probably prevented with crypto conditions at least on chain by allowing transactions only to certain addresses. Of course people can do otc and go around that with it.(edited)
jl777c18-Apr-19 05:26 PM
with the vote bribery for the most part squelched at the source (NN doing revshare is very limited now) there is not much cash value to the VOTE
so how much would people pay for it?
Mark8118-Apr-19 05:29 PM
if you can get elected every year from votes like in way that you can run more than one notary node i think there it depends of revenue that notary mining generates in kmd.
In point where kmd price goes higher and gets stable i think there is your market that you are looking for.
jl777c18-Apr-19 05:32 PM
at most it would be worth 0.01 KMD
20% of the 5%
hopefully the whales will take into account the potential harm (or non-improvement) by this practice
Mark8118-Apr-19 05:36 PM
i think this is market that will come once people get more familiar with kmd ecosystem.
jl777c18-Apr-19 05:46 PM
what would it do.. i guess the buyers would be investing to become a NN
not quite the dynamic that is best, but not the end of the world either
maybe the solution is to pay people to vote
Mark8118-Apr-19 05:49 PM
Or they might promise certain % of revenue from mining. If i understand its quite predictable income from notary mining if theres not any hardware or software issues to deal with.
jl777c18-Apr-19 05:50 PM
i know!
maybe we make it so you cant collect rewards without proof of voting in last year election
so if you sell the VOTE, then you forfeit your 5%
which means it needs to be sold for more than 5%, but it is worth at most 1% and more like 0.5%
Mark8118-Apr-19 05:52 PM
So newly buyed coins would have to wait year before getting apr?
jl777c18-Apr-19 05:52 PM
it would seem so
so i hope we are not forced to do something like this
CryptoNinjaa18-Apr-19 05:53 PM
Jus to butt in. But ppl can choose not to vote cant they. Like a none vote ?
jl777c18-Apr-19 05:53 PM
they could just vote for themselves
CryptoNinjaa18-Apr-19 05:53 PM
Yes
As a no vote
jl777c18-Apr-19 05:53 PM
yes, the CC would only check that a VOTE was cast
CryptoNinjaa18-Apr-19 05:54 PM
Yea thats fair. I was seeing it as if not voted no 5%
essentially sedning to ur self is burning them which is a vote.
Mark8118-Apr-19 05:55 PM
Also moving coins to new address would drop you off from 5% Apr
jl777c18-Apr-19 05:55 PM
only if you lose the privkey
CryptoNinjaa18-Apr-19 05:56 PM
Could you lock a utxo to only be able to be sent say once?
jl777c18-Apr-19 05:56 PM
I think I could make it so that when you vote, you get credits that allow to collect rewards
and these credits you control and can use on whatever address
but it is becoming more complex... let us hope such drastic measures are not needed
Mark8118-Apr-19 05:58 PM
There are big downsides what comes to current system, yeah you painted fastly a an tough situation.
jl777c18-Apr-19 06:19 PM
so far there is no problem detected
if this ever becomes a real issue and not just theoretical we can iterate solutions that lessen the issue
this year we went to an ac_public chain to prevent any zvoting
not that there was much of an issue before but this step puts everything transparently
of course offchain agreements could be made for future revshares, but in some sense that is a business arrangement and not so sure that is against things anyway. if a whale wants to manage a tech to do the NN, then is that really so wrong?
since it seems we cant stop this, maybe the answer is to facilitate it
have a set of qualified tech NN operators and they can match up with some whale
i think the sensitivities about election manipulation is exaggerated, its not like an elected notary can "push the red button" or change policy, pass laws
and ultimately it is what the stake wants to do that decides and if the stake decides to hire out a tech, then so be it
phm8718-Apr-19 07:15 PM
if a whale moves the kmd after the votes airdrop then sells the private key controlling the votes, how is it possible to detect that votes were sold ?
ComputerGenie 👴👴👴18-Apr-19 07:17 PM
Anonymous will release the emails on wikileaks
beyond that, it's not
phm8718-Apr-19 07:20 PM
we can detect that kmd were moved after the votes airdrop but it can be a normal tx to move the coins (sth about interests to earn if doing some tx but I'm not sure if I understand correctly)(edited)
jl777c18-Apr-19 07:21 PM
ultimately it is not possible to detect this, that is why i am saying to just allow it
be open about it
its like making drugs illegal, it just increases the price of the drugs
make it legal and its just normal business
phm8718-Apr-19 07:21 PM
I agree about drugs
we were thinking together with CG and other ppl about your idea to promote AC on explorers and do you want to list all public AC or only dpow AC or another list of AC ?
jl777c18-Apr-19 07:24 PM
it should just be AC that need/want more people, so they should have a website
if not, then nothing to send people to
some things (dilithium, trustless oracles) maybe just goes to blog pages
i asked marketing to come up with the set of text to use
I invented programmable probabilistic payments.
https://t.co/i8OFjludzU
state channels are to channels what programmable probabilistic payments are to probabilistic payments.
A blockchain for trust-free markets in financial derivatives - zack-bitcoin/amoveo
jl777c19-Apr-19 05:59 AM
i didnt make that, though it would be a simple enough CC to do. it makes payments like solomining instead of pool mining
occasionally big, mostly zero. average of the same. net effect is a lot less traffic
same value transfered (statistically)
Mark8119-Apr-19 08:30 AM
Supernet owns 900 million redfox coins?
jl777c19-Apr-19 08:42 AM
acting as escrow
there is a SAFT mandated release schedule
Mark8119-Apr-19 08:45 AM
Whst does that mean?
There is 50 million being sold in IEO offer and then there is against that 18x supply for in escrow?
i am going through now redfox ann site. clears a bit things....
jl777c19-Apr-19 08:51 AM
the entire supply is not released for years
redfoxlabs.io should explain it
i just distribute according to the established schedule
Mark8119-Apr-19 08:54 AM
yeah noticed that. its looks actually quite good schedule.
having a feeling now that i missed something big
jl777c19-Apr-19 09:04 AM
trading starts soon
Mark8119-Apr-19 09:06 AM
i have to hope it start below ieo price... but dont know with these usdt pair ieo offerings..
jl777c19-Apr-19 09:07 AM
why would it start beloe ieo price if the ieo sold out relatively quickly
Mark8119-Apr-19 09:08 AM
its just a hope.
zatJUM19-Apr-19 09:11 AM
Warning: mysqli_real_connect(): (HY000/2002): Connection refused in /var/www/redfoxlabs.io/htdocs/wp-includes/wp-db.php on line 1612
Connection refused
Southeast Asia’s first blockchain Venture Builder. We innovate with blockchain technology to build market leading companies in emerging markets.
zatJUM19-Apr-19 09:20 AM
thanks
Shinzo Abe19-Apr-19 05:26 PM
id like to build a smart contract on KMD that pays users for locking up their KMD on the platform. the smart contract would take say a 20% fee for every lock up and then pay a high interest like 4% daily for the locked up tokens
has that been done already ?
jl777c19-Apr-19 05:26 PM
rewards CC
already done
but it charges nothing more than txfee
Shinzo Abe19-Apr-19 05:30 PM
that is pretty darn convenient
jl777c19-Apr-19 05:31 PM
KMD itself wont have it but it can be done on KMDCC sidechain
Shinzo Abe19-Apr-19 05:49 PM
thats a very interesting project i wish i do it
but not very good with code
jl777c19-Apr-19 05:49 PM
the problem is where do the coins come from
Shinzo Abe19-Apr-19 05:49 PM
why wont komodo have it , is it beccause KMD is more like a metta layer ?
coins would have to be paid to the contract assigning a percentage of that payment to devs
coins cannot be unlocked one they are paid to contract so its non refundable
jl777c19-Apr-19 05:51 PM
but who would fund this? usually the creator of chain can allocate coins for rewards plan


BusMall
Order your favorite items!
Which Item Would You Like?

Unicorn Meat
USB tentacle
Water Can of Hate
Hole in Wine Glass
Email Address
First Name
Last Name
Address
Credit Card #
Create Order


Describe the output voltage waveform for positive and negative limiter in Fig.1(a). Assume the VSUPPLY+ 12V for positive limiter and -15V for negative limiter. Peak to peak input voltage is 20V. (10 Marks)
Consider the circuit in Fig. 1(b).
(10 Marks)
What type of circuit is this?
What is the total peak secondary voltage?
Determine the peak output voltage for this circuit?
Sketch the voltage waveform across R
L
What PIV rating is required for this circuit?
Determine the output voltage waveform for each circuit in Fig.2a(i) and Fig. 2a(ii).(10 Marks)
For the circuit in Fig. 2(b):
(10 Marks)
Determine VOUT at IZK
and at IZM
Calculate the value of R that should be used.
Determine the minimum value of R
L that can be used.
The transistor in Fig.3(a) has the following maximum ratings: PD(max) = 800mW, VCE(max) = 15V and IC(max) = 100mA. Determine the maximum value to which VCC can be adjusted without exceeding a rating. Which rating would be exceeded first?(10 Marks)
Determine IB, IC, VCE and VCB in the circuit of Fig.
3(b). If VCE(sat)=0.2,determine whether or not, this transistor is in saturation(10 Marks)
Determine the IC and VCE
for the pnp transistor circuit in Fig.4(a).
(10 Marks)
What is the minimum value of βDC
in Fig. 4(b) that makes RIN(BASE)≥
10R2? The bias resistor R2 in Figure 4(b) is replace by a otentiometer. What minimum resistance setting causes saturation?
(10 Marks)
Determine the total input resistance, voltage gain, current gain, and power gain in terms of power delivered to the load RL of the emitter-follower in Fig-5(a). Assume βac
=175, Vin= 3Vrms,and that the capacitive reactance are negligible at the frequency of operation.
(10 Marks)
Find the input resistance, voltage gain, current gain, and power gain for the amplifier in Fig-5(b).Assume βDC=250.
(10 Marks)


{{ site.description }}
{% include social-media-links.html %}
© {{ site.time | date: '%Y' }} Joshua Goings. All rights reserved.


SCALPICIN ANTI-ITCH MAXIMUM STRENGTH- hydrocortisone liquid
Reckitt Benckiser LLC
Disclaimer: Most OTC drugs are not reviewed and approved by FDA, however they may be marketed if they comply with applicable regulations and policies. FDA has not evaluated whether this product complies.
Active ingredient
Hydrocortisone 1%
Uses
- temporarily relieves itching associated with minor skin irritations and rashes due to
- seborrheic dermatitis
- eczema
- psoriasis
- other uses of this product should be only under the advice and supervision of a doctor
Warnings
For external use only
Flammable. Keep away from fire, flame or heat.
When using this product avoid contact with the eyes
Stop use and ask a doctor if condition worsens, symptoms persist for more than 7 days or clear up and occur again within a few days, and do not begin use of any other hydrocortisone product unless you have asked a doctor
Keep out of reach of children. If swallowed, get medical help or contact a Poison Control Center right away.
Directions
- adults and children 2 years of age and older: apply to affected area not more than 3 to 4 times daily
- children under 2 years of age: do not use; ask a doctor
- twist the flow-control cap to open
- if using after shampooing, towel dry hair
- apply from bottle directly to scalp, massage in
- to avoid running or dripping, do not squeeze bottle too hard
Other information
- store at 20-25°C (68-77°F)
- protect from humidity
- Keep carton for full directions for use.
Inactive ingredients
alcohol denat., water, propylene glycol, PEG-40/PPG-8 methylaminopropyl/hydroxypropyl dimethicone copolymer, glycerin, dipropylene glycol, menthol, disodium EDTA, aloe barbadensis leaf juice, isopropyl alcohol, melaleuca alternifolia (tea tree) leaf oil, menthol, tocopheryl acetate
Questions?
1-888-963-3382
You may also report side effects to this phone number.
Distributed by: Reckitt Benckiser LLC
Parsippany, NJ 07054-0224
Made in Canada
© 2012 RB
PRINCIPAL DISPLAY PANEL - 44 mL Bottle Carton
NDC 63824-851-15
SCALPICIN®
MAXIMUM STRENGTH
Hydrocortisone 1% Anti-Itch Liquid
Anti-Itch Liquid
MAXIMUM
STRENGTH
Relieves Scalp Itch
1.5 FL OZ (44 mL)


*** User 2017-04-18 15:42:15.025 ***
15:42:15.024 [info] Disabling blocking sync...
*** User 2017-04-18 15:42:15.029 ***
15:42:15.029 [info] Configured peer_service_manager partisan_default_peer_service_manager on node 'node-1@MBPdeAnneFrance'
*** User 2017-04-18 15:42:16.492 ***
15:42:16.492 [info] Enabling membership...
*** User 2017-04-18 15:42:16.493 ***
15:42:16.493 [info] Disabling blocking sync...
*** User 2017-04-18 15:42:16.498 ***
15:42:16.498 [info] Configured peer_service_manager partisan_default_peer_service_manager on node 'node-2@MBPdeAnneFrance'
*** User 2017-04-18 15:42:17.989 ***
15:42:17.989 [info] Enabling membership...
*** User 2017-04-18 15:42:17.990 ***
15:42:17.990 [info] Disabling blocking sync...
*** User 2017-04-18 15:42:17.995 ***
15:42:17.995 [info] Configured peer_service_manager partisan_default_peer_service_manager on node 'node-3@MBPdeAnneFrance'
*** User 2017-04-18 15:42:18.260 ***
Joining node: 'node-3@MBPdeAnneFrance' to runner@MBPdeAnneFrance at port 53473
*** User 2017-04-18 15:42:18.261 ***
Joining issued: 'node-3@MBPdeAnneFrance' to runner@MBPdeAnneFrance at port 53473
*** User 2017-04-18 15:42:18.261 ***
Joining node: 'node-2@MBPdeAnneFrance' to runner@MBPdeAnneFrance at port 53458
*** User 2017-04-18 15:42:18.261 ***
Joining issued: 'node-2@MBPdeAnneFrance' to runner@MBPdeAnneFrance at port 53458
*** User 2017-04-18 15:42:18.262 ***
Joining node: 'node-1@MBPdeAnneFrance' to runner@MBPdeAnneFrance at port 53447
*** User 2017-04-18 15:42:18.262 ***
Joining issued: 'node-1@MBPdeAnneFrance' to runner@MBPdeAnneFrance at port 53447
*** User 2017-04-18 15:42:18.324 ***
Waiting for join to complete with manager: partisan_default_peer_service_manager
*** User 2017-04-18 15:42:18.325 ***
Finished.
*** CT 2017-04-18 15:42:18.325 *** COVER INFO
Adding nodes to cover test: [runner@MBPdeAnneFrance]
*** CT 2017-04-18 15:42:18.333 *** COVER INFO
Successfully added nodes to cover test: []
*** User 2017-04-18 15:42:26.360 ***
Case finished: map_test
*** User 2017-04-18 15:42:33.403 ***
15:42:33.403 [info] Application lasp exited with reason: stopped
*** User 2017-04-18 15:42:33.404 ***
15:42:33.404 [info] Application partisan exited with reason: stopped
=== Ended at 2017-04-18 15:42:33
=== successfully completed test case
=== Returned value: ok
Test run history
| Top level test index


SimLoader
- Loading widgets...
- Reticulating splines...
- Maximizing throughput...
- Categorizing hotdogs...
- Alphabetizing ducks...
- Obfuscating pictograms...
- Projecting flatulence dissipators...
- Diffusing osmotic flavonoids...
- Masticating chewing gum...
- Obliterating dangerous subsequences...
A SimCity style loader for showing fun messages in sequence. Easily degradable fallback, semantic, micro-sized, intelligent defaults.


Triple stain imaged with Leica SP2
Table of Contents
- Sample description and download
- Loading the data
- Options and parameters
- Examining the progress during runtime
- Analysing the results
Back to the main Page
Download the data set from here. The data consists of
12 images, comprising 3 excitations with 4 emission channels each. Stains: double-stranded
nucleic acids (mainly ribosomal RNA and nuclear DNA) were labeled with EtBr;
filamentous actin (F-actin) was stained with Alexa Fluor 532 (A532) conjugated phalloidin,
while tubulin was labeled with an Alexa Fluor 488 (A488) linked antibody.
The sample was imaged with a LEICA SP2 using the exciation wavelength 488, 514 and 561nm.
Raw Data:
Start the plugin from the plugin menu
while no image is open. You will be asked to specify the type of data. Choose Leica SP2 and locate
image series the in the open dialog that follows. Select on of the images and click "Open".
A dialog will appear listing the excitation (488, 514 and 561nm). Select all three.
The plugin will open three stacks, one for each excitation.
The first piece of information the plugin needs to know, is the number of sources the
data is to be decomposed into. Choose 3. Next, another dialog will appear,
in which the mandatory and optional information can be specified. The parameter dialog is shown in
the next figure. The number of iterations is preset to 100 (which is rather small, but suitable for
illustration purposes).
The image is taken with a 12bit AD converter, such that a saturation threshold
slightly below 4096 is appropriate. A background threshold of 100 is reasonable.
Higher background thresholds result in smaller runtime since the algorithm runs on a smaller data set.
For the background spectrum, select ROI selection, leave everything else as is and hit run.
Next, you will be prompted for a ROI which contains only background. Select a small region
without cells and press OK. The algorithm will start.
After the algorithm started, PoissonNTF opened two windows displaying the emission and excitation
spectra and a small dialog with a Cancel and Least Square Solution.
The plots shows the evolution of the estimated spectra and the initial spectra. If the spectra
look correct and don't change anymore, the user can interrupt the algorithm by pressing the
Least square solution button to use the current spectra to calculate a standard linear
unmixing solution. The progress of the algorithm is illustrated in the ImageJ progress bar.
After the last iteration finished, PoissonNTF displays an image stack containing the estimated
sources and opens a small dialog with functions to produce false color overlay of some of the
sources, save the spectra or display the background spectrum.
The spectra are normalized to unit area and the concentrations maps are scaled to maximum intensity.
The actual scale of the images is absorbed in the excitation efficiencies, which can be of
vastly different magnitudes. If desired, images can be individually rescaled
using functions ImageJ provides.
Spectra and Sources
Emission Spectra:
Excitation Spectra:
RBG false color overlay
After pressing the RGB overlay button, a small dialog appears where the sources are assigned
to colors. PoissonNMF then produces a RGB picture according to the selection, where each source
is scaled to maximum intensity.
Red-Green-Blue Overlay:
Background Map
The button Background map displays the partition of the image into background, saturated regions and the parts used for the analysis. Pixels that fall below the background threshold in every lambda channel are displayed in blue, the saturated regions in red and the part used for the analysis in green.


Coding Quiz Challenge
Try to answer the following code related questions within the time limit. Click on a button to choose your answer. Beware! Incorrect answers wil penalise your remaining time by ten seconds!
All Done!
Your final score is:
Your Highscores
Start Page
Timer: 75
Try to answer the following code related questions within the time limit. Click on a button to choose your answer. Beware! Incorrect answers wil penalise your remaining time by ten seconds!
Your final score is:


The Nokia 9000i Communicator comes with a calendar application for scheduling appointments and keeping a to-do list. You can add appointments and to-do items with the API defined in calendar.goh; you can also retrieve, modify, and delete events that you have added.
You can search for the existence of any event within a particular time period (including events you did not add yourself); however, Calendar API is not intended for use in retrieving, modifying, or deleting pre-existing events in the user's calendar database.
Calendar API uses IACP (Inter-Application Communication Protocol); your application sends a message to the Calendar application object, which services your request and then returns a status code (and other requested information) with a callback message. Before reading this section, you may wish to review the material on IACP or look at code in the CalApi.goc sample application.
On the Nokia 9000i Communicator, only devices manufactured after February 1997 support this API; your application should check the Calendar application version. Also, only one-time events may be manipulated; this API does not support repeating events.
1 Overview
2 Examples
3 Reference
MSG_CALENDAR_ADD_EVENT MSG_CALENDAR_GET_EVENT_BY_ID MSG_CALENDAR_MODIFY_EVENT_BY_ID MSG_CALENDAR_DELETE_EVENT_BY_ID MSG_CALENDAR_CHECK_IF_EVENT_EXISTS
These five messages correspond to the operations you can perform on the user's calendar database: add an event, get an event you added, modify an event you added, delete an event you added, and search for the existence of any event within a specified time interval.
Because these messages are sent via IACP to the Calendar application, they cannot directly return status values. In each case, you specify a callback message and an object to receive it; status values and requested information (if any) are processed by your callback method.
CALENDAR_ADD_EVENT_CALLBACK_MSG
MSG_CALENDAR_ADD_EVENT
;
passes status value and the assigned event ID.
CALENDAR_GET_EVENT_CALLBACK_MSG
MSG_CALENDAR_GET_EVENT_BY_ID
; passes status value and handle to
a CalendarReturnedEventStruct
.
CALENDAR_ACCESS_EVENT_COMMON_CALLBACK_MSG
MSG_CALENDAR_MODIFY_EVENT_BY_ID,
MSG_CALENDAR_DELETE_EVENT_BY_ID,
and
MSG_CALENDAR_CHECK_IF_EVENT_EXISTS
; passes status value.
Only the start date is mandatory; if no start time
(CAL_NO_TIME
) is specified, the event is listed as a daily
reminder (before the time-ordered list for its day). If only a start date
and time are specified (the end date and time are CAL_NO_DATE
and CAL_NO_TIME
), the event is listed at the start time without
an associated interval. If an end time is also specified, the event is
shown spanning a time interval on a single day; if both an end date and time
are specified, the event is shown spanning the entire interval
from the start date and time until the end date and time.
If you specify a start time and an end date, you must also specify an end time; if the end time (or date and time) is specified, it must be later than the start time.
If you specify a start date and no start time (a daily reminder), do not
specify an end time; specify an end date if you wish to have a multi-day
daily reminder. Do not use the CEPS_reserveWholeDay
parameter
to create a multi-day daily reminder; if you omit the start and end times,
you will instead create a multi-day event (see below) with the default start
and end times of 00:00 and 23:59.
| Start Param Specified | End Param Specified | Result | ||
|---|---|---|---|---|
| Date | Time | Date | Time | |
| Yes | No | No | No | Daily reminder, listed at beginning of day. |
| Yes | No | Yes | No | Multi-day daily reminder, listed at the beginning of each day. |
| Yes | No | * | Yes | Not defined. Typically creates a daily reminder. |
| Yes | Yes | No | No | Event listed (at the start time) with no interval. |
| Yes | Yes | No | Yes | Event spanning a time interval on one day. |
| Yes | Yes | Yes | Yes | Event (possibly) spanning multiple days. |
| Yes | Yes | Yes | No | Not allowed. |
| * = Doesn't matter "No" = CAL_NO_DATE or CAL_NO_TIME was specified |
CEPS_reserveWholeDay
in CalendarEventParamStruct
;
also specify the start and end time (which will apply to each day) and the
start day. The end day value is ignored when
CEPS_reserveWholeDay
is non-zero. If you omit the start or end
time (using CAL_NO_TIME
), it defaults to 00:00 (start time) or
23:59 (end time).
CAL_NO_DATE
and the start time to the event's status.
CEE_EVENT_NOT_SUPPORTED
will be returned if
you specify a non-zero CEPS_repeatInfo
field when adding or
modifying event, or if you attempt to get, modify, or delete a repeating
event. Also, MSG_CALENDAR_CHECK_IF_EVENT_EXISTS
will not check
for repeating events in the specified range.
CalendarAlarmStruct
field in the event's parameter structure, CalendarEventParamStruct
.
CalendarAlarmStruct
is actually a WordFlag
that
encodes whether an alarm is set and how long before the event's start
time it should sound. On the Nokia 9000i Communicator, this time must be
specified in minutes.
Alarms use the RTCM (Real-Time Clock Manager) library, which allows them to activate when Calendar is not running or when the device is sleeping.
[Calendar] calApi = True
See GEOS .INI Files for more information on INI files; also see this example.
structures:
CalendarEventParamStruct CalendarReturnedEventStruct CalendarEventRepeatInfo CalendarEventRepeatDurationDataWordFlags:
CalendarAlarmStruct CalendarEventRepeatLengthByteEnums:
CalendarEventDescType CalendarAlarmIntervalType CalendarEventRepeatDuration CalendarEventRepeatLengthUnitType CalendarEventRepeatWeekday CalendarEventRepeatIntervalType CalendarEventRepeatIntervalenums:
CalendarEventError CalendarToDoItemStatus
MSG_CALENDAR_REQUEST_SEARCH MSG_CALENDAR_DELETE_EVENTS_BEFORE_DATE MSG_CALENDAR_GET_NEXT_EVENT_ID MSG_CALENDAR_SET_NEXT_EVENT_ID
[Calendar] calApi = TrueThis setting can be checked as follows:
#include <initfile.h> Boolean calapi; if ( InitFileReadBoolean( "Calendar", "calApi", &calapi ) ) { /* entry was not found */ FoamDisplayWarning( @CantRunCalApi ); @send application::MSG_META_QUIT(); } else { if ( calapi == FALSE ) { /* entry has wrong value */ FoamDisplayWarning( @NoCalApiSupport ); @send application::MSG_META_QUIT(); } } |
CalendarEventParamStruct
with parameters to specify an event
with a start date, start time, optional end date, optional end time, and an
alarm.
@include <calendar.goh> #include <timedate.h> /* definition of TimerDateAndTime */ /* Declare event_g as a Calendar event param structure */ CalendarEventParamStruct event_g; /* Other variables in this example */ TimerDateAndTime date, time; Boolean boolEndDate, boolEndTime; word alarmMinutes; TCHAR *eventText_g; /* Fill the start date and time. (Assume the variables "date" and "time" * have already been filled.) Variables are cast as dwords to prevent * bit-shifting off the left of a too-small word. */ event_g.CEPS_startDateTime = ( (dword)date.TDAT_year << FDAT_YEAR_OFFSET ) | ( (dword)date.TDAT_month << FDAT_MONTH_OFFSET ) | ( (dword)date.TDAT_day << FDAT_DAY_OFFSET ) | ( (dword)time.TDAT_hours << FDAT_HOUR_OFFSET ) | ( (dword)time.TDAT_minutes << FDAT_MINUTE_OFFSET ); /* Fill the end date and time. (Assume the variables "date", "time", and * "boolEndXxxx" have already been filled.) Variables are cast as dwords to * prevent bit-shifting off the left of a too-small word. Use CAL_NO_XXXX * if a value is not specified. */ if (boolEndDate) { event_g.CEPS_endDateTime = ( (dword)date.TDAT_year << FDAT_YEAR_OFFSET ) | ( (dword)date.TDAT_month << FDAT_MONTH_OFFSET ) | ( (dword)date.TDAT_day << FDAT_DAY_OFFSET ); } else { event_g.CEPS_endDateTime = (dword)CAL_NO_DATE << FDAT_DAY_OFFSET; } if (boolEndTime) { event_g.CEPS_endDateTime |= ( (dword)time.TDAT_hours << FDAT_HOUR_OFFSET ) | ( (dword)time.TDAT_minutes << FDAT_MINUTE_OFFSET ); } else { event_g.CEPS_endDateTime |= (dword)CAL_NO_TIME << FDAT_2SECOND_OFFSET; } /* The event will not be a multi-day event */ event_g.CEPS_reserveWholeDay = 0; /* * The alarm will go off "alarmMinutes" minutes before event time. * Mask with CAS_INTERVAL to ensure alarmMinutes is in range. */ event_g.CEPS_alarm = CAS_HAS_ALARM | ( CAIT_MINUTES << CAS_TYPE_OFFSET ) | ( CAS_INTERVAL & ( alarmMinutes << CAS_INTERVAL_OFFSET )); /* Event has a text description */ event_g.CEPS_eventType = CEDT_GEOS_TEXT; /* Event is not repeating */ event_g.CEPS_repeatInfo = 0; /* Assume event text is already pointed to by eventText_g */ event_g.CEPS_dataLength = LocalStringSize( eventText_g ); event_g.CEPS_data = eventText_g; |
CAL_NO_DATE
and the to-do priority is set in the start time
field.
@include <calendar.goh> /* Declare event_g as a Calendar event param structure */ CalendarEventParamStruct event_g; /* Other variables in this example */ word myPriority; TCHAR *eventText_g; /* "myPriority" can be in the range [0-2] here, corresponding to * CTDIS_HIGH_PRIORITY, CTDIS_NORMAL_PRIORITY, and CTDIS_COMPLETED. */ event_g.CEPS_startDateTime = ((dword)CAL_NO_DATE << FDAT_DAY_OFFSET) | ((dword)(myPriority + CTDIS_HIGH_PRIORITY) << FDAT_2SECOND_OFFSET); /* Assume the to-do text is already pointed to by eventText_g */ event_g.CEPS_dataLength = LocalStringSize( eventText_g ); event_g.CEPS_data = eventText_g; /* This parameter must be zero, otherwise the error CEE_EVENT_NOT_SUPPORTED * will be generated. */ event_g.CEPS_repeatInfo = 0; |
Other parameters in CalendarEventParamStruct
will be ignored.
MSG_CALENDAR_ADD_EVENT
to the Calendar
application's process object via IACP. The error code and assigned event ID
can be checked in your callback method
(MSG_CALAPI_PROCESS_ADD_EVENT_CALLBACK
here); see examples
of callbacks below.
/* * serverGeodeToken - token of the calendar app * connectionFlags - optional flags for connection * iacpConnectionToken - token for this IACP connection * serverCount - the number of running servers * hMsgToSend - handle of the recorded message * hLaunchBlock - handle of launch block * pLaunchBlock - pointer to launch block */ GeodeToken serverGeodeToken = CALENDAR_TOKEN; IACPConnectFlags connectionFlags = 0; IACPConnection iacpConnectionToken; word serverCount; EventHandle hMsgToSend; MemHandle hLaunchBlock; AppLaunchBlock * pLaunchBlock; /* * Make a launch block so that server (calendar app) is * launched if not running already. */ hLaunchBlock = IACPCreateDefaultLaunchBlock( MSG_GEN_PROCESS_OPEN_APPLICATION ); /* * Make sure it does not bring up the calendar on top of us. * Otherwise, the user can interact with it and produce * unwanted side-effects. */ pLaunchBlock = MemLock( hLaunchBlock ); pLaunchBlock->ALB_launchFlags |= ( ALF_OPEN_IN_BACK | ALF_DO_NOT_OPEN_ON_TOP ); MemUnlock( hLaunchBlock ); /* * Connect to the Calendar IACP server. */ iacpConnectionToken = IACPConnect( &serverGeodeToken, connectionFlags, hLaunchBlock, NullOptr, &serverCount ); if ( iacpConnectionToken != IACP_NO_CONNECTION ) { /* * Record the ADD_EVENT message for transmittal via IACP. */ hMsgToSend = @record null::MSG_CALENDAR_ADD_EVENT( &event_g; ConstructOptr( GeodeGetProcessHandle(), NullChunk ), MSG_CALAPI_PROCESS_ADD_EVENT_CALLBACK ); /* * Send the recorded message to the Calendar process obj * using IACPSendMessage. */ IACPSendMessage( iacpConnectionToken, hMsgToSend, TO_PROCESS, NULL, IACPS_CLIENT ); /* * Shut down the IACP connection and return the error value. */ IACPShutdown( iacpConnectionToken, NullOptr ); return( CAE_NO_ERROR ); } else { /* * Return an error as something went wrong * trying to connect to the calendar app. */ return( CAE_CANNOT_CONNECT_CALENDAR ); } |
MSG_CALENDAR_GET_EVENT_BY_ID
via IACP and inspect the returned
memory block in your callback method. Send the IACP message as above,
replacing the ADD_EVENT request with a GET_EVENT one; the
eventID
is the one returned to your ADD_EVENT callback.
hMsgToSend = @record MSG_CALENDAR_GET_EVENT_BY_ID( eventID, GeodeGetProcessHandle(), ConstructOptr( GeodeGetProcessHandle(), NullChunk ), MSG_CALAPI_PROCESS_GET_EVENT_CALLBACK ); |
In your callback method (the last parameter above), extract the information you are interested in. See the sample application CalApi for the complete method; excerpts are shown below.
/* In your class declaration: */ @message (CALENDAR_GET_EVENT_CALLBACK_MSG) MSG_CALAPI_PROCESS_GET_EVENT_CALLBACK;; /******************************************************************** * MSG_CALAPI_PROCESS_GET_EVENT_CALLBACK ******************************************************************** * SYNOPSIS: Callback from Calendar IACP server on result of * MSG_CALENDAR_GET_EVENT_BY_ID. * PARAMETERS: CalendarEventError error * MemHandle eventBlock * RETURN: void * * STRATEGY: Check status value; successful if CEE_NORMAL * If successful, * Lock and dereference returned global block * Calculate pointer to event text (it follows * the returned event structure) * Extract information from structure * Free the global memory block! * *******************************************************************/ @method CalApiProcessClass, MSG_CALAPI_PROCESS_GET_EVENT_CALLBACK { /* * eventData - pointer to the returned event data * eventTextData - pointer to the event description * dateTime - dateTime structure used to display event info * tempStr - used to convert event info into strings * alarmType - used to convert alarm info into alarm setting */ CalendarReturnedEventStruct * eventData; TCHAR * eventTextData; TimerDateAndTime dateTime; TCHAR tempStr[MAX_EVENT_TEXT_LENGTH]; CalApiAlarmType alarmType; /* * If there are no errors in getting the event, * we lock down the returned structure and dereference * the event text description. */ if ( CEE_NORMAL == error ) { eventData = MemLock( eventBlock ); eventTextData = (TCHAR*)((TCHAR*)eventData + sizeof( CalendarReturnedEventStruct ) ); /* * Convert the start date/time into strings. * First turn the FileDateAndTime into a TimerDateAndTime. * Then use LocalFormatDateTime to turn that into a string. * Don't forget to handle the case where the date or * time isn't specified (i.e. equals -1). */ dateTime.TDAT_year = FDATExtractYear( eventData->CRES_startDateTime ) + FDAT_BASE_YEAR; dateTime.TDAT_month = FDATExtractMonth( eventData->CRES_startDateTime ); dateTime.TDAT_day = FDATExtractDay( eventData->CRES_startDateTime ); dateTime.TDAT_hours = FDATExtractHour( eventData->CRES_startDateTime ); dateTime.TDAT_minutes = FDATExtractMinute( eventData->CRES_startDateTime ); if ( ( eventData->CRES_startDateTime & 0x0000ffff ) == CAL_NO_DATE ) { strcpy( tempStr, "NO_DATE" ); } else { LocalFormatDateTime( tempStr, DTF_SHORT, &dateTime ); } if ( ( eventData->CRES_startDateTime & 0xffff0000 ) == (dword)CAL_NO_TIME << 16 ) { strcpy( tempStr, "NO_TIME" ); } else { LocalFormatDateTime( tempStr, DTF_HM_24HOUR, &dateTime ); } /* Perform any other processing; display information... */ /* * Free the event data block. */ MemFree( eventBlock ); } else { /* Error handling for error != CEE_NORMAL ... */ } } /* MSG_CALAPI_PROCESS_GET_EVENT_CALLBACK */ |
MSG_CALENDAR_CHECK_IF_EVENT_EXISTS
via IACP (as in the example
above). Use your callback to interpret the returned status code.
/* Check for events overlapping the range 12:15 PM June 9, 1997 until 9:15 AM June 10, 1997 */ /* Note that constants are specified as Long literals. */ FileDateAndTime startDateTime_g = ( ( ( 1997L - FDAT_BASE_YEAR ) << FDAT_YEAR_OFFSET ) | ( 6L << FDAT_MONTH_OFFSET ) | ( 9L << FDAT_DAY_OFFSET ) | ( 12L << FDAT_HOUR_OFFSET ) | ( 15L << FDAT_MINUTE_OFFSET ) ); FileDateAndTime endDateTime_g = ( ( ( 1997L - FDAT_BASE_YEAR ) << FDAT_YEAR_OFFSET ) | ( 6L << FDAT_MONTH_OFFSET ) | ( 10L << FDAT_DAY_OFFSET ) | ( 9L << FDAT_HOUR_OFFSET ) | ( 15L << FDAT_MINUTE_OFFSET ) ); hMsgToSend = @record null::MSG_CALENDAR_CHECK_IF_EVENT_EXISTS( startDateTime_g, endDateTime_g, ConstructOptr( GeodeGetProcessHandle(), NullChunk ), MSG_CALAPI_PROCESS_CHECK_IF_EVENT_EXISTS_CALLBACK ); |
/* In CalApiProcessClass, declare the method: */ @message (CALENDAR_ACCESS_EVENT_COMMON_CALLBACK_MSG) MSG_CALAPI_PROCESS_CHECK_IF_EVENT_EXISTS_CALLBACK; /******************************************************************** * MSG_CALAPI_PROCESS_CHECK_IF_EVENT_EXISTS_CALLBACK ******************************************************************** * SYNOPSIS: Callback from Calendar IACP server on result of * MSG_CALENDAR_CHECK_IF_EVENT_EXISTS. * PARAMETERS: CalendarEventError error * RETURN: void * STRATEGY: If an event existed, CEE_NORMAL is returned; * otherwise, we get CEE_EVENT_NOT_FOUND. *******************************************************************/ @method CalApiProcessClass, MSG_CALAPI_PROCESS_CHECK_IF_EVENT_EXISTS_CALLBACK { if (error == CEE_NORMAL) { /* At least one event in search range... */ } else if (error == CEE_EVENT_NOT_FOUND) { /* No events overlap search range...*/ } else { /* A processing error occurred... */ } } /* MSG_CALAPI_PROCESS_CHECK_IF_EVENT_EXISTS_CALLBACK */ |
void MSG_CALENDAR_ADD_EVENT( CalendarEventParamStruct *params, optr completionOptr, Message completionMsg);
Adds an event to the calendar database. Only ordinary, multi-day, and to-do list events are supported; repeating events are not.
Pass:
CalendarEventParamStruct
structure holding the
event you are adding.Return: Nothing. Error status and event ID (if successful) are passed to your callback method, if specified.
Include: calendar.goh
See Also: CALENDAR_ADD_EVENT_CALLBACK_MSG prototype.
void MSG_CALENDAR_GET_EVENT_BY_ID( dword eventID, GeodeHandle owner, optr completionOptr, Message completionMsg);
Gets an event in the calendar database. Only ordinary, multi-day, and to-do list events are supported; repeating events are not.
Pass:
Return: Nothing. Error status and data block handle are passed to your callback method.
Include: calendar.goh
See Also: CALENDAR_GET_EVENT_CALLBACK_MSG prototype.
void MSG_CALENDAR_MODIFY_EVENT_BY_ID( CalendarEventParamStruct *params, dword eventID, optr completionOptr, Message completionMsg);
Modifies an event in the calendar database. Only ordinary, multi-day, and to-do list events are supported; repeating events are not.
Pass:
CalendarEventParamStruct
structure holding the
modified event, which will completely replace the existing event.Return: Nothing. Error status is passed to your callback method, if specified.
Include: calendar.goh
See Also: CALENDAR_ACCESS_EVENT_COMMON_CALLBACK_MSG prototype.
void MSG_CALENDAR_DELETE_EVENT_BY_ID( dword eventID, optr completionOptr, Message completionMsg);
Deletes an event in the calendar database. Only ordinary, multi-day, and to-do list events are supported; repeating events are not.
Pass:
Return: Nothing. Error status is passed to your callback method, if specified.
Include: calendar.goh
See Also: CALENDAR_ACCESS_EVENT_COMMON_CALLBACK_MSG prototype.
void MSG_CALENDAR_CHECK_IF_EVENT_EXISTS( FileDateAndTime startDateTime, FileDateAndTime endDateTime, optr completionOptr, Message completionMsg);
Searches the calendar database to see whether any events occur during a specified interval. Only ordinary, multi-day, and to-do list events are checked; repeating events are not.
Pass:
Return: Nothing; the search result is passed to your callback method. The successful results are:
CEE_NORMAL
indicates at least one event in the database overlaps your
search range. CEE_EVENT_NOT_FOUND
indicates that no events in the database overlap
your search range. Include: calendar.goh
See Also: CALENDAR_ACCESS_EVENT_COMMON_CALLBACK_MSG prototype.
void CALENDAR_ADD_EVENT_CALLBACK_MSG( CalendarEventError error, dword eventID);
Template for your MSG_CALENDAR_ADD_EVENT callback. Use this prototype to declare, in the appropriate class definition, the method that will handle the callback from adding an event to the calendar database. For example:
@message (CALENDAR_ADD_EVENT_CALLBACK_MSG) MSG_MYAPP_PROCESS_ADD_EVENT_CALLBACK;
Pass:
CEE_NORMAL
if successful.Return: Nothing.
Include: calendar.goh
See Also: MSG_CALENDAR_ADD_EVENT
void CALENDAR_GET_EVENT_CALLBACK_MSG( CalendarEventError error, MemHandle eventBlock);
Template for your MSG_CALENDAR_GET_EVENT_BY_ID callback. Use this prototype to declare, in the appropriate class definition, the method that will handle the callback from getting an event in the calendar database. For example:
@message (CALENDAR_GET_EVENT_CALLBACK_MSG) MSG_MYAPP_PROCESS_GET_EVENT_CALLBACK;
Pass:
CEE_NORMAL
if
successful.CalendarReturnedEventStruct
.Return: Nothing.
Include: calendar.goh
See Also: MSG_CALENDAR_GET_EVENT_BY_ID
void CALENDAR_ACCESS_EVENT_COMMON_CALLBACK_MSG( CalendarEventError error);
Template for your
@message (CALENDAR_ACCESS_EVENT_COMMON_CALLBACK_MSG) MSG_MYAPP_PROCESS_EVENT_EXISTS_CALLBACK;
Pass:
CEE_NORMAL
indicates successful deletion
or modification; for the
MSG_CALENDAR_CHECK_IF_EVENT_EXISTS
callback,
CEE_NORMAL
is returned if any event overlaps with the specified range,
CEE_EVENT_NOT_FOUND
otherwise.Return: Nothing.
Include: calendar.goh
See Also: MSG_CALENDAR_MODIFY_EVENT_BY_ID, MSG_CALENDAR_DELETE_EVENT_BY_ID, MSG_CALENDAR_CHECK_IF_EVENT_EXISTS.
typedef struct { FileDateAndTime CEPS_startDateTime; /* Event start date and time */ FileDateAndTime CEPS_endDateTime; /* Event end date and time */ word CEPS_reserveWholeDay; /* Number of whole day to reserve the event. The max is * CALENDAR_MAX_RESERVE_WHOLE_DAYS. 0 if not applicable. * * If this field is non-zero, the end date specified in * CEPS_endDateTime is ignored. * * If CEPS_startDateTime does not have time specified, it is assumed * the start time is 00:00. * * If CEPS_endDateTime does not have time specified, it is assumed * the end time is 23:59 */ CalendarAlarmStruct CEPS_alarm; /* Alarm associated with the event */ CalendarEventDescType CEPS_eventType; /* Type of data of the event */ CalendarEventRepeatInfo *CEPS_repeatInfo; /* Repeat event info. 0 if the event is not repeating */ word CEPS_dataLength; /* The number of bytes of the data in CEPS_data. If * CEPS_eventType is CEDT_GEOS_TEXT, CEPS_dataLength does not include * NULL. */ char* CEPS_data; /* The event data. If the CEPS_eventType is CEDT_GEOS_TEXT, the * text passed in from this field must be null-terminated. */ } CalendarEventParamStruct; |
typedef enum { CTDIS_HIGH_PRIORITY = 0x101, CTDIS_NORMAL_PRIORITY, CTDIS_COMPLETED, } CalendarToDoItemStatus; |
This structure fully specifies a calendar event.
Most of the fields are self-explanatory. If you wish to add a to-do list
item, specify CAL_NO_DATE
for the start date and a
CalendarToDoItemStatus
enum in place of the start time.
To-do items do not have start or end times, nor do they repeat or have alarms.
CEPS_reserveWholeDay
is used to specify a single event that
spans multiple days. This is a special case of ordinary events;
instead of creating one long event,
the start and end time you specify will apply to each day the event lasts.
For example, you could use this to record a conference that runs
from 10:00 to 15:00 for three consecutive days.
When specifying FileDateAndTime
values, cast words and
constants to type (dword)
and specify literal long values (such
as "19L") before shifting their bits.
True repeating events are not yet supported.
This structure indicates whether an alarm is set, and how long before the event it should activate itself.
The CAS_HAS_ALARM
bit indicates whether the alarm is set for
the associated event. If so, the number masked by CAS_INTERVAL
indicates when the alarm should sound. If the interval is zero, the alarm
activates at the start time of the event; otherwise, it activates
CAS_INTERVAL
time units before the event. In the latter case,
the time units are specified by CAS_TYPE
, although on the
Nokia 9000i Communicator only CAS_TYPE = CAIT_MINUTES is valid. If
another CAS_TYPE
is specified, the alarm will default to the
maximum number of minutes.
For example, an alarm can be set to go off five minutes before the start of
an event by specifying CAS_TYPE = CAIT_MINUTES
and
CAS_INTERVAL = 5
.
typedef ByteEnum CalendarEventDescType; #define CEDT_GEOS_TEXT (0x0) /* Description is a null-terminated, * single-byte text string in the * GEOS character set */ #define CEDT_UNICODE (0x1) /* Description is a null-terminated, * double-byte text string in the * Unicode character set. */ #define CEDT_INK (0x2) /* Description is digital ink. Number * of points can be determined from * the dataLength field. * |
This enum indicates the format of the event description. Only CEDT_GEOS_TEXT is currently supported.
typedef struct { dword CRES_eventID; /* Unique event ID */ FileDateAndTime CRES_startDateTime; /* Event start date and time */ FileDateAndTime CRES_endDateTime; /* Event end date and time */ word CRES_reserveWholeDay; /* Number of whole day to reserve the event. The max is * CALENDAR_MAX_RESERVE_WHOLE_DAYS. 0 if not applicable. * * If this field is non-zero, the end date specified in * CRES_reserveWholeDay is ignored. * * If CRES_startDateTime does not have time specified, it is assumed * the start time is 00:00. * * If CRES_endDateTime does not have time specified, it is assumed * the end time is 23:59 */ CalendarAlarmStruct CRES_alarm; /* Alarm associated with the event */ CalendarEventDescType CRES_eventType; /* Type of data of the event */ word CRES_repeatInfo; /* Offset in this block that points to CalendarEventRepeatInfo repeat * event info. 0 if the event is not repeating. */ word CRES_dataLength; /* The number of bytes of the data in CRES_data. If * CRES_eventType is CEDT_GEOS_TEXT, CRES_dataLength does not include * NULL. */ /* label char CRES_data;*/ /* The event data. If the CRES_eventType is CEDT_GEOS_TEXT, the * text passed in from this field must be null-terminated. */ } CalendarReturnedEventStruct; |
The event data (CRES_data
) immediately follow this structure
in the returned block. If CRES_eventType = CEDT_GEOS_TEXT
,
the text must be null-terminated.
CRES_repeatInfo
is not currently supported.
typedef enum { CEE_NORMAL = 0x0, CEE_GENERAL_ERROR, CEE_INTERNAL_ERROR, CEE_NOT_ENOUGH_MEMORY, CEE_NOT_ENOUGH_DISKSPACE, CEE_EVENT_NOT_FOUND, CEE_EVENT_TEXT_TOO_LONG, CEE_INVALID_DATE, CEE_INVALID_TIME, CEE_INVALID_TODO_ITEM_STATUS, CEE_INVALID_RESERVE_WHOLE_DAY, CEE_INVALID_ALARM, CEE_INVALID_EVENT_TYPE, CEE_START_DATE_LATER_THAN_END_DATE, CEE_START_TIME_LATER_THAN_END_TIME, CEE_MISSING_END_TIME_WHEN_START_TIME_AND_END_DATE_ARE_SET, CEE_EVENT_NOT_SUPPORTED, CEE_INVALID_TIME_RANGE, /* The time range specified * is invalid: end date/time * is earlier than start date/time.*/ CEE_ACCESS_DENIED /* The requested event is in use and * your access is denied. */ } CalendarEventError; |
Error codes returned by Calendar API.
typedef struct { CalendarEventRepeatInterval CERI_interval; /* how long between events? */ CalendarEventRepeatDuration CERI_duration; /* how long shall we keep this up? */ CalendarEventRepeatDurationData CERI_durationData; /* more details of duration */ word CERI_numExceptions; /* number of exception dates */ /* label FileDate CERI_exceptions;*/ /* array of dates on which event is *not* to take place */ } CalendarEventRepeatInfo; |
Included for completeness; repeating events are not supported in calendar.goh API.
This structure specifies the repeat information in a repeating event. An array of exception dates, if any, follows at the end of this structure.
Included for completeness; repeating events are not supported in calendar.goh API.
This member specifies the interval between occurrences of the event.
The meaning of CERI_WEEK
, CERI_DAY
, and CERI_COUNT
depends on the type of interval for the repeating event:
typedef ByteEnum CalendarEventRepeatDuration; #define CERD_FOREVER (0x0) /* no additional data */ #define CERD_UNTIL (0x1) /* Repeat end date */ #define CERD_LENGTH (0x2) /* CalendarEventRepeatLength */ |
Included for completeness; repeating events are not supported in calendar.goh API.
This member specifies how long before occurrences of the event terminate.
Either the event is repeated indefinitely (CERD_FOREVER
), or for
a finite time; CERD_UNTIL
and CERD_LENGTH
indicate the meaning
of the duration-length parameter.
Included for completeness; repeating events are not supported in calendar.goh API.
This member specifies the duration of a repeating event that terminates. The repeat interval can be specified by its termination date or by its length.
FileDate
is an absolute date in a format defined in
file.h.
CalendarEventRepeatLength
is a word specifying a time unit
(days, weeks, months, or years) and a count.
The count includes the initial event day; for example,
an event repeating every day for 3 days set for 12/15 would have events on
12/15, 12/16, and 12/17.


This is a heading
This is a paragraph.
This is another paragraph.
This is another paragraph.
改变第一个段落的类


"""
Matrix
------
Functions for reading from and writing to disk CSC and CSR sparse matrices
in numpy binary format.
"""
import pathlib
from typing import Union
import numpy as np
import scipy.sparse as sp
from .. import utils
from . import utils as io_utils
[docs]def read_sparse_matrix(
filepath: Union[str, pathlib.Path],
*,
kind: str = "csc",
) -> Union[sp.csc_matrix, sp.csr_matrix]:
"""
Read the data, indices, indptr, and shape arrays from a ``.npz`` file on disk
at ``filepath``, and return an instantiated sparse matrix.
Args:
filepath: Path to file on disk from which data will be read.
kind ({'csc', 'csr'}): Kind of sparse matrix to instantiate.
Returns:
An instantiated sparse matrix, whose type depends on the value of ``kind``.
See Also:
https://docs.scipy.org/doc/numpy-1.13.0/reference/routines.io.html#numpy-binary-files-npy-npz
"""
npz_file = np.load(filepath)
if kind == "csc":
return sp.csc_matrix(
(npz_file["data"], npz_file["indices"], npz_file["indptr"]),
shape=npz_file["shape"],
)
elif kind == "csr":
return sp.csr_matrix(
(npz_file["data"], npz_file["indices"], npz_file["indptr"]),
shape=npz_file["shape"],
)
else:
raise ValueError(
"kind='{}' is invalid; valid values are {}".format(kind, ["csc", "csr"])
)
[docs]def write_sparse_matrix(
data: Union[sp.csc_matrix, sp.csr_matrix],
filepath: Union[str, pathlib.Path],
*,
compressed: bool = True,
make_dirs: bool = False,
) -> None:
"""
Write sparse matrix ``data`` to disk at ``filepath``, optionally compressed,
into a single ``.npz`` file.
Args:
data
filepath: Path to file on disk to which data will be written. If ``filepath``
does not end in ``.npz``, that extension is automatically appended to the name.
compressed: If True, save arrays into a single file in compressed numpy binary format.
make_dirs: If True, automatically create (sub)directories
if not already present in order to write ``filepath``.
See Also:
https://docs.scipy.org/doc/numpy-1.13.0/reference/routines.io.html#numpy-binary-files-npy-npz
"""
if not isinstance(data, (sp.csc_matrix, sp.csr_matrix)):
raise TypeError(
"`data` must be a scipy sparse csr or csc matrix, "
"not '{}'".format(type(data))
)
filepath = utils.to_path(filepath).resolve()
if make_dirs is True:
io_utils._make_dirs(filepath, "w")
if compressed is True:
np.savez_compressed(
str(filepath),
data=data.data,
indices=data.indices,
indptr=data.indptr,
shape=data.shape,
)
else:
np.savez(
str(filepath),
data=data.data,
indices=data.indices,
indptr=data.indptr,
shape=data.shape,
)


Version: (N/A), Upload speed: (N/A), Download speed: (N/A)
Error message here.
GID: a1b2c3, Upload speed: 12.34 Mbps, Download speed: 56.78 Mbps, Progress: 90.12%, Status: active
GID: a1b2c3, Upload speed: 34.56Mbps, Download speed: 78.90Mbps, Progress: 12.34%, Status: active
GID: a1b2c3, Upload speed: 12.34 Mbps, Download speed: 56.78 Mbps, Progress: 90.12%, Status: waiting
GID: a1b2c3, Upload speed: 12.34 Mbps, Download speed: 56.78 Mbps, Progress: 90.12%, Status: paused
GID: a1b2c3, Upload speed: 12.34 Mbps, Download speed: 56.78 Mbps, Progress: 90.12%, Status: error
GID: a1b2c3, Upload speed: 12.34 Mbps, Download speed: 56.78 Mbps, Progress: 90.12%, Status: complete
GID: a1b2c3, Upload speed: 12.34 Mbps, Download speed: 56.78 Mbps, Progress: 90.12%, Status: removed
GID: , Upload speed: , Download speed: , Progress: , Status: