| Nintendo's
GameCube Technical Overview
Yes it looks like a cute little toy, but a very powerful console lies underneath. Release Dates Nintendo released the GameCube on Sept 14th, 2001 (Japan) and Nov 18th, 2001 (North America). That's three years after the Dreamcast Japanese release of Nov/1998. The GameCube was released in North America at a price of $199 US. Specifications First released by Nintendo at Nintendo's Spaceworld on August 24th, 2000 in Tokyo, Japan. New specs announced by Nintendo on it's website on May 15th, 2001, during the 2001 E3 show in LA. "Gekko" CPU upgraded from 400 MHz to 485 MHz, and "Flipper" GPU downgraded from 202.5 MHz to 162 MHz. CPU - "Gekko"
GPU - "Flipper" (system LSI)
(The following sound related functions are all incorporated into the System LSI) Sound Processor: Custom Macronix
16-bit DSP
System Floating-point Arithmetic
Capability: 10.5 GFLOPS (Peak) (MPU, Geometry Engine, Hardware Lighting
Total)
Disc Drive: CAV (Constant
Angular Velocity) System
Input/Output: 4 Controller
Ports, 2 Memory Card Slots, Analog AV Output, Digital AV Output, 2 High-Speed
Serial Ports, High-speed Parallel Port
*The peak figures listed are all for maximum instantaneous performance and cannot be achieved in an actual game. However, following the conventions of the game industry, they are listed for your reference. First off, lets point out that Nintendo is being very conservative in it's 6 to 12 million polygons/seconds rating, as the developer Factor 5 who is developing Star Wars: Rogue Squadron is already doing 12 million polygons/second, and the developer claims they are only using 50 percent of Gamecube's power. Factor 5 indicated they could get 20 million polygons/second per second with all effects. Effects stands for texture layers, and not polygonal lighting. Two videos of Star Wars: Rogue Squadron running on Gamecube at cube.ign.com available here. Here is information on Star Wars: Rogue Squadron, and the Gamecube as provided by Julian Eggebrecht (President) of Factor 5, and was originally presented on the forum at this german video game site: Maniac Online.
A side note on Factor 5 is that they will be providing the sound tools for Gamecube development. The software is called MusyX and you can find details on it here. Motherboard
A beautiful piece of engineering interms of size, number of large components (only 5 large semiconductors with CPU, GPU and three memory chips), low manufacturing cost, and awesome performance. The entire board is roughly the size of a compact disc jewel case! Flipper Die
PLL: Phase Lock Loop
CPU "Gekko" Details Article released some details on the Gekko CPU here: Unlike Sony's Playstation 2 Emotion Engine, the Gekko MPU was not built from the ground up. It's a derivative of the PowerPC 750 RISC processor and includes some 50 new instructions. Based on 0.18-micron copper wire process technology, the device runs at 485 MHz and has an external bus to the Flipper device with a peak of 1.3 Gbytes/s. The chip has a performance rating of 1125 DMips (Dhrystone 2.1).Chip Sizes Nintendo has released the chip size for "Gekko" and "Flipper" as indicated in this article entitled "Designers bring practical touch to GameCube" at EE Times on Sept. 7th, 2000. Although MoSys was perhaps the most strategic partner, the GameCube project involved several alliances. IBM Corp. provided the so-called Gekko CPU, a custom version of the 400-MHz* PowerPC with 256 kbytes of secondary cache — all made with a 0.18-micron copper CMOS process. Despite the large secondary cache, IBM was able to build the chip on a 43-mm2 die, said Takeda.*Note: CPU is now 485 MHz due to revised specs. Small chip sizes is important for the number chips produced on a silicon wafer. The more chips per wafer, the cheaper the cost of production. Smaller circuit sizes can have a huge effect on the size of the chip, as the IBM PowerPC CPU (0.18 micron)with 256 KB of secondary cache is the same size as the Hitachi SH-4 CPU (0.25 micron) used in the Dreamcast! The "Flipper" GPU contains 51 million transistors, of which half is used up by the on-chip memory. The Gamecube has a massive heat sink that covers all the chips, and it does have a fan on one of the air vents on it's side. It has been reported that the fan and the drive are very quiet. Motherboard
Datapath
All the datapaths listed above are bidirectional (read and write). The 81 MHz A-memory has low bandwidth, but it is more then adequate for supporting all the sound channels that the Gamecube is capable of, as this quick calculation shows: 64 (channels) x 48,000 (sample rate) x 16-bits (data size) = roughly 6 MB/sec With a 81 MHz DSP and 16 MB of sound memory, the quality of sound in Gamecube games should be outstanding! Someone from Nintendo has confirmed that the sound chip on "Flipper" has it's own data pins to the 81 MHz DRAM that is seperate from the main memory bus. This means that all sound accesses will not have any negative effect on graphic operations. Note that the CPU also has access to the 81 MHz DRAM, so it can be used for other storage besides sound data. A good place to store information that does not need lots of bandwidth like selection screens. Graphics
Processing Unit (GPU) Datapath
The sound chip was not included in the above diagram, as focus will concentrate on the most bandwidth intensive aspects of the "Flipper" chip. The frame buffer contains the draw frame buffer (640x480x24-bits = 921,600 bytes), and the z-buffer (640x480x24-bits = 921,600 bytes). The display buffer is stored in main ram. The texturing rate was released on
March 16, 2001 by cube.ign who indicate
that they have access to Nintendo's official GameCube Hardware Overview
documentation which states a pixel rate of 648 MPixels/sec. It has come
to my attention from someone who has access to the Gamecube developer documentaton
that there is a single texel unit per pipeline.
Polygon Rate Information below comes from this
article
at cube.ign, and they got the information from Nintendo's official GameCube
Hardware Overview documentation.
Note: above figures where changed to reflect revised specs. Flipper chip is now 162 MHz and not 202.5 MHz. As you can see the Gamecube can push a lot of polygons per second, and it can do 26.4 million textured polygons per second maximum. Note that increasing the number of local lights in a scene would cause the polygonal rate to go down. Flipper (GPU) Instruction Set Info from Beyond3D message board thread from a Japanese individual. It lists the different instructions available by Flipper's Transformation and Lighting (T&L) unit. Here is some information about Flipper from Japanese magazine "Nikkei Electronics 2000/10/9"As you can see, the Gamecube's Flipper GPU has a very rich instruction set for transformations, texturing, lighting, and bump mapping, and is very powerful in the number of instructions it can do in parallel, while being easy to program. Texture Compression The Gamecube's GPU can use S3TC's compressed textures which provides for a 6:1 ratio in compression for 24-bit textures. For 16-bit textures the ratio is 4:1, and for 8-bit textures the ratio is 2:1. Let us consider how much compressed
textures the Gamecube can hold in it's 24 MB of main memory if we consider
different memory size requirements for game code/geometry/etc.
As you can see the Gamecube can store lots of textures in it's memory using S3TC's texture compression format. Note that another benefit of using compressed textures is that the bandwidth requirements also decrease by the same ratio as the actual compression. At a ratio of 6:1, the memory bus can pass 6 times more textures. That means the GPU's texture cache bus of 10.4 GB/sec can pass 62.4 GB of 24-bit compressed textures, and the external bus of 2.6 GB/sec can pass 15.6 GB of 24-bit compressed textures each second! Should a developer
use 16-bit textures over 24-bit textures in order to save space? Let us
compare:
As you can see with the greater ratio of 6:1 for 24-bit textures, it makes more sense for the developer to use only 24-bit compressed textures as they are the same size as 16-bit compressed textures. S3TC also allows texture compression of transparencies, which the Vector Quantization (VQ) texture compression on the Dreamcast could not do. This will allow the Gamecube to store lots of transparencies in it's main memory. Thanks to S3TC's texture compression, the Gamecube's 1 MB of texture cache can hold the equivalent of 6 MB of 24-bit textures. That's roughly 8 x (512 x 512) 24-bit textures, or 32 x (256 x 256) 24-bit textures for example. Hidden Surface Removal Gamecube does do hidden surface removal (HSR) by doing an early z-buffer check, that discards hidden pixels as it renders from front to back. The front to back sorting has to be done by the game engine as developed by game developer or it will not be effective. Of course the results will then vary from developer to developer. This HSR is not as effective as PowerVR's infinite planes, as the PowerVR method does not need the developer to render objects in any order to be effective. This information on Gamecube's HSR was provided by someone who has access to Gamecube's developer documentation. Virtual Texturing Virtual texturing is a hardware feature of managing textures by breaking them up into smaller blocks. This can contribute to quite a savings in bandwidth and make for more efficient use of the texture cache for textures like sky textures for example where in most games only half of the sky can be seen in most scenes. By keeping the most used texture blocks in the texture cache, this allows main memory bandwidth to be used more efficiently. All of this is done automatically, and does not have to be coded in by the developer. Hardware Lighting 8 hardware lights supported. Every polygon in a scene can be affected by as many as 8 lights. The number of polygons that the Gamecube can do with 8 lights depends on whether those lights are local or infinite, and you also have to consider what type of lighting is being used. The number of polygons with light sources could vary greatly depending on these variables. Vertex Compression Gamecube supports vertex compression, as it allows vertex data to be represented by bytes (8-bits) or shorts (16-bits) instead of floating point numbers (32-bits) if the particular game engine can get away with using less accurate polygon positioning. The transformation unit automatically unpacts the integer data, and converts it to floating point values before processing it. Main memory One of the most amazing aspects of the Gamecube, is it's 24 MBytes of 1T-SRAM. 1T-SRAM was invented by MoSys, Inc., and you can find specific information on this memory here at MoSys's website. With Gamecube's main memory of 1T-SRAM and it's sustainable latency of 10 ns or lower, it should be faster then any other affordable memory technology out there when it comes to repeated non-linear accesses. This memory will shine with repeated random accesses that complex game AI may introduce, and not with general texture accesses, since textures are stored in memory linearly. Texture access speed will not suffer though, since the main memory has a bandwidth of 2.6 GB/sec, and there is also that 1 MB of onchip texture cache to help keep the most repeated textures near the rendering unit. The Gamecube also has an extra 16 MB of 81 MHz DRAM and this memory would be great for data that does not need the access speed of the 1T-SRAM main memory like sound, and selection screens. More info on the memory from here: Here again the GameCube uses 1T-SRAM, this time as 24 Mbytes of external memory. Operating at a 324-MHz clock speed, the memory moves data at 2.6 Gbytes/s, with a sustained latency of 10 ns. But unlike the Playstation 2 or the forthcoming XBox, GameCube's memory subsystem does not rely on a Rambus or Double-Data Rate (DDR) interface to boost the bandwidth. Instead, Mosys developed a proprietary active termination I/O that resides near the pads and eliminates the need for placing a bank of resistors on the board, saving area and cost.Texture Cache Here is any interesting article from AsiaBizTech that provides some information on the number of simultaneous accesses that can occur with the texture cache: Parallel Processing of 32 Access Transactions*Note: Data bus transfer is now 2.6 GB/sec due to revised specs, and the external 64-bit data-bus runs at 324 MHz now. More info on the internal bandwidth of the caches from here: Both internal memory buffers have a sustained latency of under 5 nanoseconds. The frame and z-buffer memory is capable of 7.68 Gbytes/second of bandwidth. The texture buffer boasts an even faster bandwidth of 10.4 Gbytes/s because it's divided into 32 independent macros, each 16 bits wide for a total I/O of 512 bits. This gives each macro its own address bus, so that all 32 macros can be accessed simultaneously, said Mark-Eric Jones, vice president of marketing for Mosys.Drive From the specs:
Speed roughly comparable to a 13x to 20x CD-ROM. Developers would store information on the outer tracks first, so 20x speed would be more common. Not all that fast, but not all that slow. Links ArtX's site
|


Man accused of attacking son after discovering him selling drugs outside a Belfast bar
A MAN allegedly punched and kicked his 15-year-old son unconscious after discovering him selling drugs outside a north Belfast bar, a court heard yesterday.
Police said the 40-year-old defendant is accused of stamping on the youth's head and rendering him temporarily unconscious during the incident on Saturday.
The man, who cannot be named due to reporting restrictions, faces charges of assault occasioning actual bodily harm and possessing cannabis.
He denies attacking his son and challenged the reliability of the case against him.
Belfast Magistrates' Court heard claims that the teenager recalled being punched up to eight times and stamped on before losing consciousness.
But a defence lawyer argued that the boy provided a different account at first.
"At no point did he allege that he was knocked out," the solicitor insisted.
District Judge Fiona Bagnall was told the accused initially phoned police to seek their help.
"He had apprehended his son outside a bar in north Belfast selling drugs," the lawyer submitted.
"He told him to come home with him, searched him and found a syringe on and he found drugs on him - the drugs were heroin."
During cross-examination a police officer accepted reference had been made to a needle being discovered on the youth.
Granting bail to the accused, Mrs Bagnall banned him from contacting either his son or ex-partner.
She also imposed an exclusion zone and listed the case for further review in four weeks time.


Toggle navigation
Emotional Analysis
Short Term Chart
Webcam Footage
Emotional History over Video
Options
Plot All
Plot Dynamic
Download Dataset
Reset Data


Hello, {{PhoneCtrl.name}}!
{{phone.name}}
{{phone.snippet}}
Total number of phones: {{PhoneCtrl.phones.length}}
Name
Snippet
{{phone.name}}
{{phone.snippet}}


Home
Search
Logout
justify-content
property controls how our childs are laid out
along the main axis.justify-content
like flex-start,flex-end,center,space-around,space-between,space-evenly
.justify-content
will place on the
horizontal lines and if our elements are in column justify-content
will place on the
vertical lines.


| |
Obtain an event specified by the event ID.
-
Description:
-
This API is used to check whether an event expected by the user occurs according to the event ID, event mask, and event reading mode, and process the event based on the event reading mode. The event ID must point to valid memory.
-
注意:
-
- When the uwMode is LOS_WAITMODE_CLR, the puwEventID is passed-out.
- Otherwise the puwEventID is passed-in.
-
参数:
-
|
参数名称 |
描述 |
|
uwEventID |
[IN/OUT] Pointer to the ID of the event to be checked. |
|
uwEventMask |
[IN] Mask of the event expected to occur by the user, indicating the event obtained after it is logically processed that matches the ID pointed to by uwEventID. |
|
uwMode |
[IN] Event reading mode. The modes include LOS_WAITMODE_AND, LOS_WAITMODE_OR, LOS_WAITMODE_CLR. |
-
返回值:
-
|
返回值 |
描述 |
|
0 |
The event expected by the user does not occur. |
|
UINT32 |
The event expected by the user occurs. |
-
Dependency:
-
- los_event.h: the header file that contains the API declaration.
-
参见:
-
LOS_EventRead |
LOS_EventWrite
-
自从:
-
Huawei LiteOS V100R001C00
|


Project name
Home
About
Contact
addresses
alarms
autoScalingGroups
buckets
images
instances
launchConfigurations
loadBalancers
reservedInstances
scalingPolicies
securityGroups
snapshots
tags


Twenty-Fourth sessions of the Subsidiary Body for Scientific and Technological Advice (SBSTA) and the Subsidiary Body for Implementation (SBI) of the UNFCCC and First session of the Ad Hoc Working Group on Further Commitments for Annex I Parties under the Kyoto Protocol (AWG) and related meetings
19-May-06 — original report
Parties agreed to the agenda (FCCC/SBI/2006/1 and Corr.1) and organization of work after deleting an item on application of the COP -GEF Council memorandum of understanding, and agreeing that submissions on matters related to Protocol Article 3.14(a dverse effects) would be provided intersessionally.
József Feiler (Hungary) and Phetolo Phage David Lesolle (Botswana) were elected as Vice-Chair and Rapporteur, respectively.
South Africa, for the G-77/CHINA, emphasized the Special Climate Change Fund and Adaptation Fund.
Bangladesh, for LDCs, urged implementation of national adaptation plans of action (NAPAs).
The Secretariat introduced a report on the activities of the non-Annex I national communications consultative expert group (CGE) (FCCC/SBI/2006/8).
CGE rapporteur Lilian Portillo (Paraguay) outlined CGE's activities and a relevant report (FCCC/SBI/2006/4).
Many parties stressed the importance of CGE's work.
URUGUAY said CGE's work promotes South-South cooperation and INDONESIA suggested more expert workshops.
The Secretariat introduced sub-items on compilation and synthesis of initial national communications (FCCC/SBI/2006/MISC.2 and FCCC/SBI/2006/18/Adds.1-6 & Add.3/Corr.1) and on provision of financial and technical advice (FCCC/SBI/2006/INF.1).
The G-77/CHINA and AOSIS noted the importance of addressing financial, technical, and institutional constraints. SWITZERLAND, with the EU, called for a desk review of non-Annex I communications and, supported by AOSIS, suggested grouping countries with common circumstances for such a review.
The PHILIPPINES stressed the need for full-cost financial support.
Henrià tte Bersee (Netherlands) and Emily Ojoo-Massawa (Kenya) will consult informally.
SBSTA Chair Kishan Kumarsingh (Trinidad and Tobago) presented the provisional agenda (FCCC/SBSTA/2006/1 and Add.1).
The US and AUSTRALIA, opposed by AOSIS, the EU and BELARUS, objected to including the Mauritius Strategy under the item on cooperation with relevant international organizations.
The agenda was adopted with this item held in abeyance, pending further consultations.
The G-77/CHINA looked forward to progress on adaptation implementation, positive incentives on reducing deforestation, adaptation research, and the Mauritius Strategy.
The AFRICAN GROUP called for strengthening systematic observation and early warning systems in Africa and moving the Buenos Aires Plan on Adaptation to SBI for implementation.
The Secretariat reported on the five-year adaptation work programme (FCCC/SBSTA/2006/4 and FCCC/SBSTA/2006/INF.3).
Many parties stressed the need for a prompt start.
AOSIS, CHINA and others said the current work programme does not add to work already underway, and called for practical and substantial outputs.
ARGENTINA and SUDAN suggested that an expert group on adaptation be considered.
The US proposed stocktaking and interaction with sectoral experts and user groups.
A contact group will be co-chaired by William Agyemang-Bonsu (Ghana) and Helen Plume (New Zealand).
On reducing emissions from deforestation in developing countries (FCCC/SBSTA/2006/MISC.5), many non-Annex I parties emphasized the need for positive incentives.
AOSIS and others stressed the complexity of the issue, and urged parties not to reopen previously agreed decisions.
The REPUBLIC OF KOREA and NORWAY proposed addressing the issue in the UNFCCC Dialogue on long-term cooperative action.
Chair Kumarsingh noted the need to decide the scope of the upcoming workshop, to be held at the end of August 2006 in Rome.
Hernán Carlino (Argentina) and Audun Rosland (Norway) will co-chair a contact group.
Bernard Mazijn (Belgium), Chair of the Expert Group on Technology Transfer (EGTT), reported on EGTT activities (FCCC/SBSTA/2006/INF.4).
Many welcomed the five-theme structure of EGTT work.
The US, EU, and others stressed the private sector role and CHINA underscored the public sector.
AUSTRALIA, JAPAN and others highlighted the G8 and Asia-Pacific partnerships.
The G-77/CHINA underscored adaptation technologies and South-South cooperation.
Carlos Fuller (Belize) and Kunihiko Shimada (Japan) will co-chair a contact group.
The RUSSIAN FEDERATION underscored observation and early warning systems.
The US and CHINA highlighted scientific uncertainties and AOSIS suggested further research on the relationship between climate change and extreme weather events (FCCC/SBSTA/2006/INF.2, MISC.3 and Add.1).
Mar a Paz Cigar n (Peru) and Sergio Castellari (Italy) will co-chair a contact group.
Thelma Krug, IPCC, presented the IPCC 2006 Guidelines.
ARGENTINA and others said more time was needed to reach conclusions, while the EU suggested elaborating a draft decision at this session.
INTERNATIONAL HYDROPOWER ASSOCIATION urged careful consideration of the section on flooded lands.
The EU stressed that harvested wood products are not for consideration for the first commitment period and, with others, noted the complexity of the issue.
Riitta Pipatti (Finland) will conduct informal consultations on this issue and the IPCC 2006 Guidelines.
On emissions from fuel used for international aviation and maritime transport, the International Maritime Organization reported on cooperation with the UNFCCC.
The EU said a balanced compromise was within reach.
Jos Romero (Switzerland) will conduct informal consultations.
The EU, BRAZIL and AOSIS welcomed work by MATCH (Modeling and Assessment of Contributions to Climate Change) and, opposed by the US, supported further consideration by SBSTA 25 (FCCC/SBSTA/2006/MISC.8).
Kaekyu Lim (Republic of Korea) and Jean-Paul Van Ypersele (Belgium) will co-chair a contact group.
On adverse effects and the impact of response measures, the Secretariat reported on recent workshops on response measures, economic diversification and regional adaptation in Latin America.
Parties also considered the work of the LDC expert group (FCCC/SBI/2006/9).
Informal consultations will be held.
Parties considered a report on this item (FCCC/SBSTA/2006/2), with several noting the need to sustain expertise.
Branca Bastos Americano (Brazil) will conduct consultations.
Parties considered implications of the establishment of new HCFC-22 facilities seeking to obtain certified emission reductions for the destruction of HFC-23.
The EU said CDM projects should not have significant negative implications for the UNFCCC or Montreal Protocol. CAN INTERNATIONAL urged that new HCFC-22 facilities not be included in the CDM.
Georg B rsting (Norway) will chair a contact group.
Italy said this issue was a technical issue (FCCC/SBSTA/2006/MISC.1).
Draft conclusions will be prepared.
The AWG convened informal consultations on Thursday evening.
Chair Zammit Cutajar presented his initial views, noting that the AWG aims to amend Protocol Annex B.
He proposed structuring discussions around three areas: evaluation; innovation (including questions on burden sharing, mechanisms, targets, a sectoral approach, technology transfer and bunker fuels); and ambition (including mitigation potential and contribution to the ultimate objective of the Convention).
The G-77/CHINA said there is no linkage to other discussions, the outcome should be substantially higher reduction targets, and the task should be completed by 2008.
INDIA and CHINA stressed that the AWG simply needs to decide on new quantitative commitments and the length of the second commitment period. JAPAN said the second commitment period should be based on a thorough scientific analysis and not a political exercise.
He said the next commitment period should aim to achieve the ultimate objective of the Convention on its own.
SWITZERLAND, NEW ZEALAND and others underscored linkages between Articles 3.9 and 9.
The EU restated its target (15-50% by 2050).
The G-77/CHINA and others asked about the origin of the EU figures.
Negotiations will continue bilaterally and possibly in an informal contact group on Monday.
Parties discussed the possible scope of the planned workshop, including issues relating to definitions, drivers of deforestation, methodological and scientific issues, and positive incentives.
PAPUA NEW GUINEA and others emphasized incentives, while the EU and others stressed methodological issues.
BRAZIL noted the need to distinguish between trading and non-trading approaches.
Co-chairs Rosland and Carlino will present a proposal on Friday.
Co-Chair Plume proposed using the tables on initial activities listed in the report of the Vienna workshop (FCCC/SBSTA/2006/4) as a basis for discussions.
The group will reconvene on Friday.
Discussions on future commitments under Kyoto Article 3.9 dominated chatter in the corridors on Thursday, as informal consultations under the AWG got underway.
Before the evening session, several participants were cautious that a great deal of time would be spent on this issue over the coming days with relatively modest results.
The chorus of those singing a similar tune was even larger by the time the session ended, as it became apparent that parties positions were already quite rigid, and that finding common ground could be extremely difficult.
In the words on one observer, it could require a superhuman effort from AWG Chair Zammit Cutajar.
Many were also focused on the possibility that the dark clouds gathering outside the conference center would soon become a feature inside, as the SBI turns its attention to the financial mechanism on Friday morning.
Initial discussions in the session on non-Annex I communications concerning the GEF did little to dispel this feeling, and left several feeling uneasy about the impending discussion as they made their way to the EU reception on Thursday night.
On capacity building under the UNFCCC (FCCC/2006/5, MISC.4, and MISC.4/Corr.1), JAPAN said the monitoring process should be streamlined.
The US noted the need to avoid monitoring requirements that hinder implementation.
The G-77/CHINA called for an expert workshop.
The RUSSIAN FEDERATION, with BELARUS, stressed consideration of the experiences and needs of EITs.
On capacity building under the Protocol, parties considered relevant reports on this item (FCCC/SBI/2006/5 and FCCC/SBI/2006/MISC.4).
A contact group on capacity building under both the Convention and the Protocol was formed, co-chaired by Crispin d'Auvergne (St. Lucia) and Anders Turesson (Sweden).
The Secretariat introduced this item (FCCC/SBI/2006/INF.4).
Chair Becker will consult informally and prepare draft conclusions.
Germany summarized progress on the new UN Bonn campus.
Chair Becker will consult informally and prepare draft conclusions.
The Secretariat introduced the issue of privileges and immunities for individuals serving on constituted bodies under the Kyoto Protocol (FCCC/SBI/2006/6 and FCCC/SBI/2006/MISC.6).
A contact group chaired by Paul Watkinson (France) will prepare a draft COP/MOP decision.
Level of emissions for the base year of Croatia: The Secretariat introduced the position paper by Croatia (FCCC/SBI/2006/MISC.1).
Jim Penman (UK) will conduct informal consultations on a draft COP decision.
Delegates considered this item in light of Decision 27/CMP.1, which agreed to begin consideration of the issue with a view to taking a decision at COP/MOP 3.
Chair Becker will consult informally.
Parties discussed progress on the International Transaction Log (ITL) (FCCC/SBI/2006/INF.3).
The RUSSIAN FEDERATION, ARGENTINA and the G-77/CHINA expressed concerns relating to timing and procedures for full ITL implementation.
Japan said delays could produce market distortions.
Chair Becker will prepare draft conclusions.


Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.
Aenean tortor est, vulputate quis leo in, vehicula rhoncus lacus. Praesent aliquam in tellus eu gravida. Aliquam varius finibus est, interdum justo suscipit id.


Full name:
org.springframework.boot:spring-boot-maven-plugin:2.2.1.RELEASE:run
Description:
Attributes:
| Name | Type | Since | Description |
|---|---|---|---|
| <classesDirectory> | File | 1.0.0 | Directory containing the classes and resource files that should be
packaged into the archive. Default value is: ${project.build.outputDirectory}. |
| Name | Type | Since | Description |
|---|---|---|---|
| <addResources> | boolean | 1.0.0 | Add maven resources to the classpath directly, this allows live
in-place editing of resources. Duplicate resources are removed from
target/classes to prevent them to appear twice if
ClassLoader.getResources() is called. Please consider
adding spring-boot-devtools to your project instead as
it provides this feature and many more. Default value is: false. User property is: spring-boot.run.addResources. |
| <agent> | File[] | 1.0.0 | Deprecated. since 2.2.0 in favor of agents User property is: spring-boot.run.agent. |
| <agents> | File[] | 2.2.0 | Path to agent jars. NOTE: a forked process is required to use this
feature. User property is: spring-boot.run.agents. |
| <arguments> | String[] | 1.0.0 | Arguments that should be passed to the application. On command line
use commas to separate multiple arguments. User property is: spring-boot.run.arguments. |
| <environmentVariables> | Map | 2.1.0 | List of Environment variables that should be associated with the
forked process used to run the application. NOTE: a forked process
is required to use this feature. |
| <excludeGroupIds> | String | 1.1.0 | Comma separated list of groupId names to exclude (exact match). User property is: spring-boot.excludeGroupIds. |
| <excludes> | List | 1.1.0 | Collection of artifact definitions to exclude. The
Exclude element defines a groupId and
artifactId mandatory properties and an optional
classifier property. User property is: spring-boot.excludes. |
| <folders> | String[] | 1.0.0 | Additional folders besides the classes directory that should be
added to the classpath. User property is: spring-boot.run.folders. |
| <fork> | boolean | 1.2.0 | Flag to indicate if the run processes should be forked. Disabling
forking will disable some features such as an agent, custom JVM
arguments, devtools or specifying the working directory to use. Default value is: true. User property is: spring-boot.run.fork. |
| <includes> | List | 1.2.0 | Collection of artifact definitions to include. The
Include element defines a groupId and
artifactId mandatory properties and an optional
classifier property. User property is: spring-boot.includes. |
| <jvmArguments> | String | 1.1.0 | JVM arguments that should be associated with the forked process
used to run the application. On command line, make sure to wrap
multiple values between quotes. NOTE: a forked process is required
to use this feature. User property is: spring-boot.run.jvmArguments. |
| <mainClass> | String | 1.0.0 | The name of the main class. If not specified the first compiled
class found that contains a 'main' method will be used. User property is: spring-boot.run.main-class. |
| <noverify> | boolean | 1.0.0 | Flag to say that the agent requires -noverify. User property is: spring-boot.run.noverify. |
| <optimizedLaunch> | boolean | 2.2.0 | Whether the JVM's launch should be optimized. Default value is: true. User property is: spring-boot.run.optimizedLaunch. |
| <profiles> | String[] | 1.3.0 | The spring profiles to activate. Convenience shortcut of specifying
the 'spring.profiles.active' argument. On command line use commas
to separate multiple profiles. User property is: spring-boot.run.profiles. |
| <skip> | boolean | 1.3.2 | Skip the execution. Default value is: false. User property is: spring-boot.run.skip. |
| <systemPropertyVariables> | Map | 2.1.0 | List of JVM system properties to pass to the process. NOTE: a
forked process is required to use this feature. |
| <useTestClasspath> | Boolean | 1.3.0 | Flag to include the test classpath when running. Default value is: false. User property is: spring-boot.run.useTestClasspath. |
| <workingDirectory> | File | 1.5.0 | Current working directory to use for the application. If not
specified, basedir will be used. NOTE: a forked process is required
to use this feature. User property is: spring-boot.run.workingDirectory. |


| Package | Description |
|---|---|
| waffleoRai_schedulebot | |
| waffleoRai_Utils |
| Modifier and Type | Method and Description |
|---|---|
static FileBuffer |
OneTimeEvent.serializeDate(java.util.GregorianCalendar c) |
FileBuffer |
OneTimeEvent.serializeMe() |
| Modifier and Type | Class and Description |
|---|---|
class |
CompositeBuffer
A FileBuffer subclass that is composed of a set of sequential references to other file buffers.
|
class |
ROSubFileBuffer
For creating a new file buffer from a piece of an existing one, so
that copying to a new array is not required.
|
class |
StreamBuffer
For files larger than should be held in memory.
|
| Modifier and Type | Method and Description |
|---|---|
FileBuffer[] |
FileBuffer.childrenAfter(long position)
Return a list of referenced child FileBuffers that start after (but not at) a given position.
|
FileBuffer[] |
FileBuffer.childrenEncompassing(long position)
Return a list of referenced child FileBuffers that include a byte at given position.
|
static FileBuffer |
FileBuffer.createBuffer(java.lang.String filename)
Creates a FileBuffer or a StreamBuffer for data I/O.
|
static FileBuffer |
FileBuffer.createBuffer(java.lang.String filename,
boolean isBE)
Creates a FileBuffer or a StreamBuffer for data I/O.
|
static FileBuffer |
FileBuffer.createBuffer(java.lang.String filename,
long stOff)
Creates a FileBuffer or a StreamBuffer for data I/O.
|
static FileBuffer |
FileBuffer.createBuffer(java.lang.String filename,
long stOff,
boolean isBE)
Creates a FileBuffer or a StreamBuffer for data I/O.
|
static FileBuffer |
FileBuffer.createBuffer(java.lang.String filename,
long stOff,
long edOff)
Creates a FileBuffer or a StreamBuffer for data I/O.
|
static FileBuffer |
FileBuffer.createBuffer(java.lang.String filename,
long stOff,
long edOff,
boolean isBE)
Creates a FileBuffer or a StreamBuffer for data I/O.
|
FileBuffer |
StreamBuffer.createCopy(int stPos,
int edPos) |
FileBuffer |
ROSubFileBuffer.createCopy(int stPos,
int edPos) |
FileBuffer |
FileBuffer.createCopy(int stPos,
int edPos)
Create a new copy of the file buffer.
|
FileBuffer |
CompositeBuffer.createCopy(int stPos,
int edPos) |
FileBuffer |
StreamBuffer.createCopy(long stPos,
long edPos) |
FileBuffer |
ROSubFileBuffer.createCopy(long stPos,
long edPos) |
FileBuffer |
FileBuffer.createCopy(long stPos,
long edPos)
Create a new copy of the file buffer.
|
FileBuffer |
CompositeBuffer.createCopy(long stPos,
long edPos) |
FileBuffer |
ROSubFileBuffer.createReadOnlyCopy(int stPos,
int edPos) |
FileBuffer |
FileBuffer.createReadOnlyCopy(int stPos,
int edPos)
Create a Read-Only FileBuffer that references a piece of this buffer.
|
FileBuffer |
ROSubFileBuffer.createReadOnlyCopy(long stPos,
long edPos) |
FileBuffer |
FileBuffer.createReadOnlyCopy(long stPos,
long edPos)
Create a Read-Only FileBuffer that references a piece of this buffer.
|
static FileBuffer |
FileBuffer.createWritableBuffer(java.lang.String tempName,
long size,
boolean isBE)
Create a FileBuffer of a StreamBuffer for writing.
|
FileBuffer |
Huffman.decodeHuff(FileBuffer myFile,
long stOff)
Uses the tree contained in this instance to decode the file
and returns the decoded version
|
FileBuffer |
Huffman.decodeHuff(FileBuffer myFile,
long stOff,
long edOff)
Uses the tree contained in this instance to decode the file
and returns the decoded version
|
FileBuffer |
Huffman.encodeHuff(FileBuffer myFile,
boolean includeTable)
Uses the tree contained in this instance to encode the file
and returns the encoded version
|
FileBuffer |
Huffman.encodeHuff(FileBuffer myFile,
boolean includeTable,
long stOff)
Uses the tree contained in this instance to encode the file
and returns the encoded version
|
FileBuffer |
Huffman.encodeHuff(FileBuffer myFile,
boolean includeTable,
long stOff,
long edOff)
Uses the tree contained in this instance to encode the file
and returns the encoded version
|
FileBuffer |
Huffman.encodeHuff(FileBuffer myFile,
boolean includeTable,
long stOff,
long edOff,
java.lang.String head)
Uses the tree contained in this instance to encode the file
and returns the encoded version.
|
FileBuffer |
Huffman.encodeHuff(FileBuffer myFile,
java.lang.String headerAdd) |
FileBuffer[] |
FileBuffer.getChildren()
Get a list of the child buffers referencing this buffer's contents.
|
FileBuffer |
BitStreamer.getFile()
Getters
|
FileBuffer[] |
FileBuffer.BufferReferenceException.getRefList()
Get the list of child buffer references affected by the events leading up to
the throwing of this exception.
|
static FileBuffer |
Huffman.HuffDecodeFile(FileBuffer myHuff)
Decodes the given file assuming it has been encoded by the above quick
encoder.
|
static FileBuffer |
Huffman.HuffDecodeFile(FileBuffer myHuff,
long stPos)
Decodes the given file assuming it has been encoded by the above quick
encoder.
|
static FileBuffer |
Huffman.HuffEncodeFile(FileBuffer myFile,
int bDepth) |
static FileBuffer |
Huffman.HuffEncodeFile(FileBuffer myFile,
int bDepth,
long stPos,
long edPos)
Encodes the given file using the default table settings.
|
static FileBuffer |
Huffman.HuffEncodeFile(FileBuffer myFile,
int bDepth,
long stPos,
long edPos,
java.lang.String fTablePath)
Encodes the given file using the default table settings.
|
static FileBuffer |
Huffman.HuffEncodeFile(FileBuffer myFile,
int bDepth,
java.nio.file.Path fTablePath) |
static FileBuffer |
Huffman.HuffEncodeFile(FileBuffer myFile,
int bDepth,
java.lang.String header) |
FileBuffer |
Huffman.serializeTable(boolean includeFSize)
Converts the table object contained in the Huffman to a serialized byte string.
|
FileBuffer |
Huffman.serializeTable(long fileSize)
Converts the table object contained in the Huffman to a serialized byte string.
|
| Modifier and Type | Method and Description |
|---|---|
void |
StreamBuffer.addToFile(FileBuffer addition) |
void |
FileBuffer.addToFile(FileBuffer addition)
Add a piece of another FileBuffer to this FileBuffer
|
void |
CompositeBuffer.addToFile(FileBuffer addition)
Insert a new buffer into the composite buffer at the end.
|
void |
StreamBuffer.addToFile(FileBuffer addition,
int stPos,
int edPos) |
void |
FileBuffer.addToFile(FileBuffer addition,
int stPos,
int edPos)
Add a piece of another FileBuffer to this FileBuffer
|
void |
CompositeBuffer.addToFile(FileBuffer addition,
int stPos,
int edPos)
Insert a new buffer into the composite buffer at the end.
|
void |
StreamBuffer.addToFile(FileBuffer addition,
int insertPos,
int stPos,
int edPos) |
void |
FileBuffer.addToFile(FileBuffer addition,
int insertPos,
int stPos,
int edPos)
Add a piece of another FileBuffer to this FileBuffer
|
void |
CompositeBuffer.addToFile(FileBuffer addition,
int insertPos,
int stPos,
int edPos)
Insert a new buffer into the composite buffer at a position other than the end.
|
void |
StreamBuffer.addToFile(FileBuffer addition,
long stPos,
long edPos) |
void |
FileBuffer.addToFile(FileBuffer addition,
long stPos,
long edPos)
Add a piece of another FileBuffer to this FileBuffer
|
void |
CompositeBuffer.addToFile(FileBuffer addition,
long stPos,
long edPos)
Insert a new buffer into the composite buffer at the end.
|
void |
StreamBuffer.addToFile(FileBuffer addition,
long insertPos,
long stPos,
long edPos) |
void |
FileBuffer.addToFile(FileBuffer addition,
long insertPos,
long stPos,
long edPos)
Add a piece of another FileBuffer to this FileBuffer
|
void |
CompositeBuffer.addToFile(FileBuffer addition,
long insertPos,
long stPos,
long edPos)
Insert a new buffer into the composite buffer at a position other than the end.
|
FileBuffer |
Huffman.decodeHuff(FileBuffer myFile,
long stOff)
Uses the tree contained in this instance to decode the file
and returns the decoded version
|
FileBuffer |
Huffman.decodeHuff(FileBuffer myFile,
long stOff,
long edOff)
Uses the tree contained in this instance to decode the file
and returns the decoded version
|
long[] |
FileBuffer.delinkChild(FileBuffer child)
Delink referencing child from this buffer.
|
FileBuffer |
Huffman.encodeHuff(FileBuffer myFile,
boolean includeTable)
Uses the tree contained in this instance to encode the file
and returns the encoded version
|
FileBuffer |
Huffman.encodeHuff(FileBuffer myFile,
boolean includeTable,
long stOff)
Uses the tree contained in this instance to encode the file
and returns the encoded version
|
FileBuffer |
Huffman.encodeHuff(FileBuffer myFile,
boolean includeTable,
long stOff,
long edOff)
Uses the tree contained in this instance to encode the file
and returns the encoded version
|
FileBuffer |
Huffman.encodeHuff(FileBuffer myFile,
boolean includeTable,
long stOff,
long edOff,
java.lang.String head)
Uses the tree contained in this instance to encode the file
and returns the encoded version.
|
FileBuffer |
Huffman.encodeHuff(FileBuffer myFile,
java.lang.String headerAdd) |
static HuffTable |
Huffman.freqTableFromFile(FileBuffer myFile,
int bitDepth)
Generates a new HuffTable from the frequencies of bit chunks (of width
specified) in given file.
|
long[] |
FileBuffer.hardDelinkChild(FileBuffer child)
Delink referencing child from this buffer completely so that neither buffer references the other.
|
boolean |
FileBuffer.hasChild(FileBuffer key)
Check if a buffer is a direct child of this buffer.
|
boolean |
FileBuffer.hasDescendant(FileBuffer key)
Recursive function to see if the provided buffer is a child or "descendant" of
this buffer.
|
static FileBuffer |
Huffman.HuffDecodeFile(FileBuffer myHuff)
Decodes the given file assuming it has been encoded by the above quick
encoder.
|
static FileBuffer |
Huffman.HuffDecodeFile(FileBuffer myHuff,
long stPos)
Decodes the given file assuming it has been encoded by the above quick
encoder.
|
static FileBuffer |
Huffman.HuffEncodeFile(FileBuffer myFile,
int bDepth) |
static FileBuffer |
Huffman.HuffEncodeFile(FileBuffer myFile,
int bDepth,
long stPos,
long edPos)
Encodes the given file using the default table settings.
|
static FileBuffer |
Huffman.HuffEncodeFile(FileBuffer myFile,
int bDepth,
long stPos,
long edPos,
java.lang.String fTablePath)
Encodes the given file using the default table settings.
|
static FileBuffer |
Huffman.HuffEncodeFile(FileBuffer myFile,
int bDepth,
java.nio.file.Path fTablePath) |
static FileBuffer |
Huffman.HuffEncodeFile(FileBuffer myFile,
int bDepth,
java.lang.String header) |
static HuffTable |
Huffman.readHuffTable(FileBuffer myFile,
long stOff)
Parses a serialized HuffTable byte string stored in a file that has been
written by this library.
|
void |
BitStreamer.setFile(FileBuffer f)
Setters
|
void |
BitStreamer.setFile(FileBuffer f,
long stPos) |
| Modifier and Type | Method and Description |
|---|---|
long |
StreamBuffer.getMemoryBurden(java.util.Collection<FileBuffer> inMem) |
long |
ROSubFileBuffer.getMemoryBurden(java.util.Collection<FileBuffer> inMem)
Overload for more accurate calculation.
|
long |
FileBuffer.getMemoryBurden(java.util.Collection<FileBuffer> inMem)
Overload for more accurate calculation.
|
long |
CompositeBuffer.getMemoryBurden(java.util.Collection<FileBuffer> inMem)
Get the minimum amount of memory it takes to hold this buffer.
|
| Constructor and Description |
|---|
BitStreamer(FileBuffer f,
boolean readOnly) |
BitStreamer(FileBuffer f,
long stPos,
boolean readOnly) |
BufferReferenceException(FileBuffer[] children)
Construct a new BufferReferenceException with list of buffers that would be
affected.
|


Provides tools for analyzing adverse outcome pathways (AOPs) for pharmacological and toxicological research. Functionality includes the ability to perform causal network analysis of networks developed in and exported from Cytoscape or existing as R graph objects, and identifying the point of departure/screening/risk value from concentration- response data.
| Version: | 1.0.0 |
| Imports: | graph (≥ 1.38.3), rjson (≥ 0.2.14), igraph (≥ 0.7.1), Rgraphviz (≥ 2.10.0), methods, plyr (≥ 1.8.3), ggplot2 (≥ 1.0.1), splines |
| Suggests: | RUnit, knitr, rmarkdown, BiocGenerics |
| Published: | 2016-12-05 |
| Author: | Lyle D. Burgoon |
| Maintainer: | Lyle D. Burgoon <Lyle.D.Burgoon at usace.army.mil> |
| License: | CC0 |
| NeedsCompilation: | no |
| Materials: | README NEWS |
| CRAN checks: | aop results |
| Reference manual: | aop.pdf |
| Vignettes: |
AOP Vignette AOP Vignette |
| Package source: | aop_1.0.0.tar.gz |
| Windows binaries: | r-devel: aop_1.0.0.zip, r-release: aop_1.0.0.zip, r-oldrel: aop_1.0.0.zip |
| OS X binaries: | r-release: aop_1.0.0.tgz, r-oldrel: aop_1.0.0.tgz |
| Old sources: | aop archive |
Please use the canonical form https://CRAN.R-project.org/package=aop to link to this page.


There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. If you are going to use a passage of you need to be sure there isn't anything embarrassing hidden in the middle of text.
Read More


Welcome to the Data Pipeline Workshop Tutorial! This tutorial starts with a basic Play Framework application and uses it to build a Reactive Data Pipeline Workshop.
Within the Activator UI you can:
Click on the Run Tab and click on start to start the application running. Activator will automatically update the server when changes are made to the code.
Once the application has been compiled and the server started, your application can be accessed at: http://localhost:9000
Check in Run to see the server status.
Play Scala uses Futures to execute asynchronous tasks in the background. The Future is the handle to a future result. A callback function is added to the Future that gets called when the future completes.
The primary way of adding a callback to a Future is to add a map method that essentially means map the result of the Future to a new value - which in this case is a Response.
1. Create a new route that will search twitter by updatingconf/routes with the following route:
GET /search controllers.Tweets.search(query: String)
2. Update app/controllers/Tweets.scala to add a reactive request handler (or controller) for /tweets:
import scala.concurrent.Future
import play.api.libs.json.{JsValue, Json}
import play.api.libs.ws._
import play.api.libs.concurrent.Execution.Implicits.defaultContext
import play.api.Play.current
/**
* A reactive request is made in Play by returning a Future[Result]. This makes the request asynchronous
* since the server doesn't block waiting for the response. This frees the server thread to handle other requests.
* The callback to the Future is added as a map, which maps the results to a new value when the Future completes.
* The results of the Future in this example are mapped to a result (HTTP 200 OK) that gets returned to the client.
**/
def search(query: String) = Action.async {
fetchTweets(query).map(tweets => Ok(tweets))
}
/**
* Fetch the latest tweets and return the Future[JsValue] of the results.
* This fetches the tweets asynchronously and fulfills the Future when the results are returned by calling the function.
* The results are first filtered and only returned if the result status was OK.
* Then the results are mapped (or transformed) to JSON.
**/
def fetchTweets(query: String): Future[JsValue] = {
val tweetsFuture = WS.url("http://twitter-search-proxy.herokuapp.com/search/tweets").withQueryString("q" -> query).get()
tweetsFuture
.filter(response => response.status == play.api.http.Status.OK)
.map { response =>
response.json
} recover {
case _ => Json.obj("statuses" -> Json.arr(Json.obj("text" -> "Error retrieving tweets")))
}
}
3. Test it: http://localhost:9000/search?query=typesafe
1. The build.sbt file already has dependencies on AngularJS and Bootstrap:
"org.webjars" % "bootstrap" % "3.1.1",
"org.webjars" % "angularjs" % "1.2.16",
2. AngularJS has already been enabled in the main twirl template
<html ng-app="tweetMapApp">
<script src="@routes.Assets.versioned("lib/angularjs/angular.min.js")"></script>
3. AngularJS is setup in index.js to fetch the tweets
4. The index.scala.html file displays the tweets.
5. Run the app, make a query, and verify the tweets show up: http://localhost:9000
WebSockets provide a bi-directional, full-duplex communications channels over a single TCP connection.
Play provides different mechanisms for handling WebSockets. In this tutorial we are going to use an actor to handle the WebSockets. First create the Actor to handle the WebSockets. First create the actor that will handle the WebSocket communication.
1. Create a new TweetUserActor.scala file in /app/actors containing:
package actors
import akka.actor.{ActorLogging, Actor, ActorRef, Props}
import play.api.libs.json.JsValue
import scala.concurrent.duration._
import play.api.libs.concurrent.Execution.Implicits.defaultContext
import controllers.Tweets
/** The out actor is wired in by Play Framework when this Actor is created.
* When a message is sent to out the Play Framework then sends it to the client WebSocket.
*
**/
class TweetUserActor(out: ActorRef) extends Actor with ActorLogging {
//The query is optional so that it starts as a None until the user issues the first query.
var maybeQuery: Option[String] = None
//Simulate events by periodically sending a message to self to fetch tweets.
val tick = context.system.scheduler.schedule(Duration.Zero, 5.seconds, self, UserActor.FetchTweets)
def receive = {
//Handle the FetchTweets message to periodically fetch tweets if there is a query available.
case UserActor.FetchTweets =>
maybeQuery.map { query =>
//sending a message to out sends it to the client websocket out by the Play Framework.
Tweets.fetchTweets(query).map(tweetUpdate => out ! tweetUpdate)
}
case message: JsValue =>
maybeQuery = (message \ "query").asOpt[String]
}
override def postStop() {
tick.cancel()
}
}
object TweetUserActor {
case object FetchTweets
def props(out: ActorRef) = Props(new UserActor(out))
}
WebSockets are created in Play using a normal route. The difference is the controller returns a WebSocket instead of a Result.
1. Add a route for the WebSockets connection to the routes file:
GET   /ws controllers.Tweets.ws
2. Add a new controller method to create the Websocket in app/controllers/Tweets.scala:
import play.api.mvc.WebSocket
import actors.UserActor
def ws = WebSocket.acceptWithActor[JsValue, JsValue] { request => out =>
TweetUserActor.props(out)
}
3. Update the body of the app.factory section of index.js replacing the var twitterService = ... with :
var ws = new WebSocket("ws://localhost:9000/ws");
var twitterService = {
tweets: [],
query: function (query) {
ws.send(JSON.stringify({query: query}));
}
};
ws.onmessage = function(event) {
$timeout(function() {
twitterService.tweets = JSON.parse(event.data).statuses;
});
};
return twitterService;
To verify tweets are showing up it is useful to use a browser inspector and then look under network for the path ws. Under there look at the frame and verify the requests are being sent. In chrome the network inspector has a bug and the websocket calls are not refreshed unless you tab out and back in.
4. Run the app and verify the tweets show up: http://localhost:9000
This section is optional and will not be covered in the workshop
1. Create new functions in app/controllers/Tweets.scala to to get (or fake) the location of the tweets:
//update the json imports to these imports:
import play.api.libs.json.{JsObject, JsValue, Json}
import play.api.libs.json.__
import scala.util.Random
private def putLatLonInTweet(latLon: JsValue) = __.json.update(__.read[JsObject].map(_ + ("coordinates" -> Json.obj("coordinates" -> latLon))))
private def tweetLatLon(tweets: Seq[JsValue]): Future[Seq[JsValue]] = {
val tweetsWithLatLonFutures = tweets.map { tweet =>
if ((tweet \ "coordinates" \ "coordinates").asOpt[Seq[Double]].isDefined) {
Future.successful(tweet)
} else {
val latLonFuture: Future[(Double, Double)] = (tweet \ "user" \ "location").asOpt[String].map(lookupLatLon).getOrElse(Future.successful(randomLatLon))
latLonFuture.map { latLon =>
tweet.transform(putLatLonInTweet(Json.arr(latLon._2, latLon._1))).getOrElse(tweet)
}
}
}
Future.sequence(tweetsWithLatLonFutures)
}
private def randomLatLon: (Double, Double) = ((Random.nextDouble * 180) - 90, (Random.nextDouble * 360) - 180)
private def lookupLatLon(query: String): Future[(Double, Double)] = {
val locationFuture = WS.url("http://maps.googleapis.com/maps/api/geocode/json").withQueryString(
"sensor" -> "false",
"address" -> query
).get()
locationFuture.map { response =>
(response.json \\ "location").headOption.map { location =>
((location \ "lat").as[Double], (location \ "lng").as[Double])
}.getOrElse(randomLatLon)
}
}
2. In app/controllers/Tweets.scala update the fetchTweets function to use the new tweetLatLon function:
def fetchTweets(query: String): Future[JsValue] = {
val tweetsFuture = WS.url("http://twitter-search-proxy.herokuapp.com/search/tweets").withQueryString("q" -> query).get()
tweetsFuture.flatMap { response =>
tweetLatLon((response.json \ "statuses").as[Seq[JsValue]])
} recover {
case _ => Seq.empty[JsValue]
} map { tweets =>
Json.obj("statuses" -> tweets)
}
}
This section is optional and will not be covered in the workshop
1. The webjar dependency on leaflets has already been added to build.sbt
2. The Leaflet CSS and JS have already been added to main.scala.html file:
<link rel='stylesheet' href='@routes.Assets.versioned("lib/leaflet/leaflet.css")'>
<script type='text/javascript' src='@routes.Assets.versioned("lib/leaflet/leaflet.js")'></script>
<script type='text/javascript' src='@routes.Assets.versioned("lib/angular-leaflet-directive/angular-leaflet-directive.min.js")'></script>
3. Above the <ul> in index.scala.html add a map:
<leaflet width="100%" height="500px" markers="markers"></leaflet>
4. Update the first line of index.js with:
var app = angular.module('tweetMapApp', ["leaflet-directive"]);
5. Update the body of the app.controller('Tweets' ... section of the index.js file with the following:
$scope.tweets = [];
$scope.markers = [];
$scope.$watch(
function() {
return Twitter.tweets;
},
function(tweets) {
$scope.tweets = tweets;
$scope.markers = tweets.map(function(tweet) {
return {
lng: tweet.coordinates.coordinates[0],
lat: tweet.coordinates.coordinates[1],
message: tweet.text,
focus: true
}
});
}
);
6. Go to http://localhost:9000 to see the TweetMap!
The next phase of the workshop will build on the reactive application model by with a reactive stocks application. All of the code for this half of the workshop is in the Stock Actors Directory:
Stock ActorsIn a very similar fashion to the tweets application, reactive stocks pushes stock data dynamically to the client.
You can access the Reactive Stocks application by going to: http://localhost:9000/stocks
The first thing you will see are three stock charts which are being pushed values in real-time from the server. These values are simulated so the application always has interesting data flowing in real-time. Clicking on a stock chart will fetch recent tweets mentioning the stock symbol, use a service to do sentiment analysis on each tweet, and then display a buy, sell, or hold recommendation based on the aggregate sentiments. New stocks can be added to the list using the form in the header.
No guarantee of accuracy! Please don't make any actual investment decisions based on this recommendation!
The goal of the project is to create an analysis system for the financial services industry. The system will provide analysts with historical time-series tick data for a specific financial instrument. Tick data represents the time, price and quantity traded (shares for stocks or contracts for commodities) for a single trade. From this data, the system can create price and trade data in various durations of time (typically referred to as “price bars”, e.g. 1 hour bars, 1 day bars, etc.). The parameters of interest typically include the open, high, low, and close prices for each price bar. Also included is the total volume traded during each bar is also of interest. A time-series of price bars can then be used to create a graphical “bar chart”.
The system should be designed to retrieve all the tick data for a particular stock in a particular time range. For example the following would be common queries:
This will show how to write data to Cassandra and will cover the Java Driver Setup, the cluster connection, etc.
1. Look at app/stockActors/DataWriterActor.scala to see how an actor can write data to cassandra.
2. Call the Data Writer Actor when a new stock happens. In StockActor.scala inside the FetchLatest block send a message to the DataWriterActor to store the current stock data.
//Increase the time of day by a random amount of minutes
currentDateTime.addMinutes(rand.nextInt(30))
//Calculate the current day offset from epoch that will be used for this days bucket.
val currentDayOffset = (Days.daysBetween(epoch, currentDateTime)).getDays
//Send the stock data to the DataWriter Actor
dataWriterActor ! WriteStock(StockData(symbol, currentDayOffset, currentDateTime.toDateTime, newPrice, rand.nextInt(1000)))
This section will show how to read data from Cassandra. It will read daily summary and write summary back into cassandra
Look at Stock Summary Actor When it receives a message to summarize the data it calls fetchStocksBySymbolDate
After the Stock Data for a day has been read out of the database it needs to be summarized and stored in a summary table.
Add the following to the method fetchStocksBySymbolDate to summarize the data and store it in cassandra:
if (stockDataSet.size > 1) {
val open = stockDataSet.head
val close = stockDataSet.last
val high = stockDataSet.maxBy(sd => sd.price)
val low = stockDataSet.minBy(sd => sd.price)
val totQuantity = stockDataSet.foldLeft(0) {
(sum, sd) => sum + sd.quantity
}
val insertSummaryBind: BoundStatement = insertStockSummary.bind()
insertSummaryBind.setString("symbol", symbol)
insertSummaryBind.setInt("dateOffset", dateOffset)
insertSummaryBind.setDecimal("open", open.price.underlying())
insertSummaryBind.setDecimal("close", close.price.underlying())
insertSummaryBind.setDecimal("high", high.price.underlying())
insertSummaryBind.setDecimal("low", low.price.underlying())
insertSummaryBind.setInt("totQuantity", totQuantity)
session.execute(insertSummaryBind)
}
In StockActor.scala inside the FetchLatest block send a message to the StockSummaryActor to calculate and store the stock summary data.
//When we fetch the latest stock see if the day offset of currentDateTime has changed.
//If it is the next day then calculate the stock summary of the previous day.
if (currentDayOffset != lastDayOffset) {
println(s"crnt: $currentDayOffset and last: $lastDayOffset")
stockSummaryActor ! ReadStock(symbol, lastDayOffset)
lastDayOffset = currentDayOffset
}


In a nutshell, linguistics is the scientific study of language.
Linguists are not only polyglots, grammarians, and word lovers. They are researchers dedicated to the systematic study of language who apply the scientific method by making observations, testing hypotheses, and developing theories. The
science of language encompasses more than sounds, grammar, and meaning.
When you study linguistics, you are at the crossroads of every discipline.
When you study linguistics, you gain insight into one of the most fundamental parts of being human- the ability to communicate through language.
from the Linguistic Society of America
In order to get event reminders and news updates, you must be registered on the roster on CatLife.


JSwitchButton
and SwitchButtonUI
offer a toggle button that is rendered using a switch.
This was popularized by the rise of tablets/smartphones (and accompanying swipe gestures). As of this writing it looks to me like that switches exist occasionally on desktop computers, but they haven't really saturated desktop apps. (At least not yet.) For example: when I open the preferences for Pages on my Mac: I see a sea of tabbed panes and checkboxes (and a few other controls). The only place I've seen switches so far are in my notifications.
Functionally this is the same as a checkbox. It has a "selected" and "unselected" state. What's the difference? One website explains:
You should only use switches on settings that need to take effect instantaneously. If a setting requires a button press before it can take effect, you should use a checkbox instead.Another website more abstractly says checkboxes should be used for multiple characteristics, and switches better represent a binary on/off state.


calculate matrix representing the sequence of AOIs saccaded to Syntax: [ AOISequence ] =calcAOISacSequence( eyePos, aoiCenter, maxDist, maxSaccades) Inputs: sacStruct: returned from codeSaccadesDist aoiCenter: coordinates of AOI in image scale, returned by 'returnAOICenters.m' maxDist: maximum distance to a nearest AOI, anything further considered not part of any AOI, returned by 'returnAOICenters.m' maxSaccades: number of saccades in the sequence to keep Outputs: AOISequence: matrix (numAOI x numFix) with an indicator (1) for in each column corresponding to the AOI of interest. If no AOI, it will be an all 0;
0001 % calculate matrix representing the sequence of AOIs saccaded to 0002 % 0003 % Syntax: [ AOISequence ] =calcAOISacSequence( eyePos, aoiCenter, maxDist, maxSaccades) 0004 % 0005 % Inputs: 0006 % sacStruct: returned from codeSaccadesDist 0007 % aoiCenter: coordinates of AOI in image scale, returned by 'returnAOICenters.m' 0008 % maxDist: maximum distance to a nearest AOI, anything further 0009 % considered not part of any AOI, returned by 'returnAOICenters.m' 0010 % maxSaccades: number of saccades in the sequence to keep 0011 % 0012 % Outputs: 0013 % AOISequence: matrix (numAOI x numFix) with an indicator (1) for 0014 % in each column corresponding to the AOI of interest. If no 0015 % AOI, it will be an all 0; 0016 0017 0018 function [ AOISequence ] =calcAOISacSequenceDist( sacStruct, aoiCenter, maxDist, maxSaccades ) 0019 0020 % initialize some paramters 0021 if nargin < 4 || isempty( maxSaccades ) 0022 maxSaccades = 3; 0023 end 0024 0025 % initialize some variables 0026 endSacPos = sacStruct.endSacPos; 0027 numAOI = size(aoiCenter,2); 0028 numSaccades = size( endSacPos,2); 0029 AOIOrderList = zeros(numSaccades,1); 0030 effectivNumSaccades = 0; 0031 0032 % find AOI fixation sequence 0033 for i1 = 1:numSaccades 0034 dist = calc2Dist( endSacPos(:,i1), aoiCenter); % 2-norm 0035 [minDist minIdx] = min( dist); 0036 if minDist < maxDist 0037 effectivNumSaccades = effectivNumSaccades+1; 0038 AOIOrderList(effectivNumSaccades) = minIdx; 0039 end 0040 end 0041 0042 % code as a matrix of indicator variables 0043 if effectivNumSaccades >0 0044 AOISequence = zeros( numAOI, maxSaccades); 0045 for i1 = 1:min(effectivNumSaccades, maxSaccades) 0046 AOISequence(AOIOrderList(i1),i1) = 1; % indicator for AOI (1) 0047 end 0048 0049 else % all 0 if no relevant AOI 0050 AOISequence = zeros( numAOI,maxSaccades); 0051 end 0052 0053 0054 0055


Screen measurements
Understanding screen measurements in web applications is not a simple task. There are many technical terms to get to grips with, and several layers of abstraction between the real, physical screen and how it is presented to web applications.
This page attempts to explain some of the terminology used, and give practical examples of how different types, sizes and resolutions of screens and images affect an application's appearance.
The concepts covered include:
- ppi (pixels per inch)
- dpi (dots per inch)
- dips (device-independent or density-independent pixels)
- reference pixel (CSS)
- devicePixelRatio
- screen density
Screens and ppi
Pixels per inch or ppi is a common unit for describing the resolution or pixel density of a screen. The following formula calculates the ppi of a screen on one axis:
screen ppi = number of physical pixels on the axis / length of screen on the axis
A variation of this formula is useful for monitors, as they are typically described in terms of their diagonal length (based on Pythagoras' theorem):
screen ppi = (&sqrt; ((pw pw) + (ph ph))) / dl
where:
- pw = width of the screen in pixels
- ph = height of the screen in pixels
- dl = diagonal length of the screen in inches
To give a concrete example, my Samsung 21" monitor has a maximum resolution of 1680x1050. The formula above gives the following ppi value:
ppi = (&sqrt; ((1680 1680) + (1050 1050))) / 21 = 94.34
Allowing for my inaccurate measurements, these values are in line with the expected ppi of a desktop screen (around 100ppi). Desktop screens are designed to be viewed between 3 and 4 feet away from the user; and, at 100ppi, the human eye can't distinguish individual pixels, making an image drawn in pixels appear continuous. But if you look more closely at a desktop screen (at a distance of less than 3 feet), you start to see individual pixels.
By contrast, mobile screens are designed to be used closer to your face, at a distance of half your arm's length or closer (10-12 inches). At this distance, you can see the individual pixels if the ppi is around 100. Consequently, mobile devices typically have a higher pixel density (250ppi or more), so you can't discern individual pixels from 10-12 inches away.
What has this got to do with density? On a screen with more pixels per inch, the pixels are smaller and closer together (more densely packed). Therefore, a screen with a high number of pixels per inch is often called "high density". Apple's Retina Display (trademarked by Apple) was one of the first "high density" screens, and is still prevalent today. It is defined as:
a screen where the pixel density is typically 300ppi or higher for a device held 10 to 12 inches from the eye.
Keep this definition in mind, and consider devices with a screen pixel density of 250ppi or more as "high density".
Image resolution and dpi
dpi is a concept related to ppi, in that it describes dots per inch. It has its origin in printing, where the number of dots per inch defines the resolution of a printed image (higher dpi == higher resolution).
You may be wondering: why is this relevant to screens?
The first reason is that ppi and dpi are often used interchangeably when discussing screens. This happens in places like the Android documentation, where screens are described in terms of dpi (e.g. http://developer.android.com/guide/practices/screens_support.html); and in W3C specifications which refer to screens (e.g. http://www.w3.org/TR/css3-values/#absolute-lengths). However, for the purposes of this article, I will use "ppi" when referring to screens and reserve "dpi" for referring to print.
The second reason is that various specifications relating to HTML and CSS refer to dpi, particularly with respect to images. This is because CSS is not specific to screens, and can also be applied to print media. Some key concepts in CSS are based around dpi, as they use measurements from printing as part of their definition (even when they relate to screens).
But it's important to note that the resolution of an image (the situation where dpi is used most commonly) has absolutely no bearing on how it displays on a screen: it only affects how it appears in print.
As an illustration, consider two image files, both 128x128 pixels square. (These are "raw" pixels inside the image file, not the pixels occupied by the image on a screen.) Even though these images are both the same raw size, they can have different dpi settings, recorded in the image file itself. Each image's "real" size on printed media is determined by combining the raw pixel size of the image file with its resolution (in dpi).
For example, if the first 128x128 pixel image has a resolution of 96 dpi, its print size will be 1.333x1.333 inches (128 / 96); but if the resolution of the second image is 300 dpi (the typical resolution for printed images), its print size will be 0.427x0.427 inches (128 / 300). This is because more of the pixels of the second image will be printed into each inch of the medium.
But if the images are displayed side by side on a web page, they will be indistinguishable, despite their differing resolutions. The resolution only affects print.
Device-independent pixels
Having defined ppi and dpi, we are now ready to move on to "device-independent pixels" ("dips" - be careful not to confuse this with dpi). The dip is a convenience for describing "virtual" pixels which don't correspond one to one with real physical pixels on a device's screen. The reason for their existence is to make life easier for developers: an application's layout can be defined in terms of dips and should scale correctly for different physical screen sizes.
For example, imagine two devices: the first is 320 physical pixels wide, and the second 640 physical pixels wide; but both have the same number of dips. The only difference is that the second device displays each device-independent pixel using 4 physical pixels (it has a screen pixel density of 2dppx - see the next section).
Now imagine an application which is 320 dips wide. It will display at the same width on both devices, despite them having different numbers of physical pixels. This is because its width is defined in dips, and both device screens are the same width in dips.
In the context of CSS, a dip corresponds with the "reference pixel". This is equivalent to one physical pixel on a 96dpi screen at arm's length:
The reference pixel is the visual angle of one pixel on a device with a pixel density of 96dpi and a distance from the reader of an arm's length. For a nominal arm's length of 28 inches, the visual angle is therefore about 0.0213 degrees. For reading at arm's length, 1px thus corresponds to about 0.26 mm (1/96 inch).
Why is the reference pixel defined this way? It's because the definition originated with the default resolution of images displayed in CSS, as defined by the image-resolution
CSS property (see https://developer.mozilla.org/en-US/docs/Web/CSS/resolution).
The reference pixel is what you are using when you define a size or length with a px
value in a CSS stylesheet. When you set sizes in CSS using px
values, you are referring to the number of reference pixels (i.e. device-independent pixels) the element should span, rather than physical pixels on the screen.
Android uses the term "density-independent pixels" rather than "device-independent pixels", but they are effectively the same thing. Though the definition of a dip in Android is different from the CSS definition:
The density-independent pixel is equivalent to one physical pixel on a 160 dpi screen, which is the baseline density assumed by the system for a "medium" density screen...The conversion of dp units to screen pixels is simple: px = dp * (dpi / 160). For example, on a 240 dpi screen, 1 dp equals 1.5 physical pixels.
(If you're interested in finding out more about density-independent design, this page is generally helpful)
While this calculation holds for applications on Android, the same is not true for browsers: it is not possible to determine the dips a browser will have from a screen's ppi in a similar fashion. Browser vendors actually decide how many dips a browser should have on a particular device or physical screen, regardless of its screen size. This article explains the details, but the important point is that browsers (and Crosswalk) actually use another calculation to get the dimension of the viewport in dips:
dips = number of physical pixels / devicePixelRatio
window.devicePixelRatio is set by the browser, depending on the context where it is running and other quirks. This is explained next.
devicePixelRatio and screen density
The devicePixelRatio is "the ratio between physical pixels and device-independent pixels (dips) on the device" (http://www.quirksmode.org/blog/archives/2012/06/devicepixelrati.html).
The formula for calculating the devicePixelRatio is:
devicePixelRatio = physical pixels / dips
The density of a screen is correlated with devicePixelRatio, and measured in device pixels per device-independent pixel, or dppx. In fact, the screen density in dppx is the same as the devicePixelRatio, i.e.
density dppx = physical pixels / dips
As mentioned previously, the number of dips available depends on a variety of factors, and does not directly correlate with the physical size of the screen nor the number of physical pixels it has. However, the devicePixelRatio can usually be retrieved via the window.devicePixelRatio
variable in the browser. Combined with the physical size of the device's screen, you can then figure out the number of dips available.
What difference does devicePixelRatio/screen density make? To give a concrete example, imagine two devices which are 2.5" across, displaying a page which is 320 device-independent pixels wide (defined in a CSS stylesheet), at the same zoom level and distance:
The first device is 320 physical pixels wide (resolution of 128ppi, so normal density). Each dip of the 320 dip page is represented by one physical pixel.
The second device is 640 physical pixels wide (resolution of 256ppi, so high density). Each dip of the 320 dip page is represented by four physical pixels (two across, two down).
This gives the following devicePixelRatio values for the two devices:
First device devicePixelRatio = 320 / 320 = 1
Second device devicePixelRatio = 640 / 320 = 2
While the page is the same width and scale on both devices, and being viewed on two screens of the same size and at the same distance, the page will appear sharper on the device which is 640 pixels wide. This is because the second, high-density device (2dppx) uses more physical pixels to display each device-independent pixel (4 screen pixels per dip, 2 across and 2 down) than the device with screen density of 1dppx (1 screen pixel per dip).


Judges 17:11
And the Levite was content to dwell with the man; and the young man was unto him as one of his sons.


Preparation time
1-2 hours
Cooking time
10 to 30 mins
Serves
Makes 10-12 crumpets
Dietary
Turn teatime into an event by making your own crumpets on the hob.
Equipment: For this recipe you will need metal crumpet rings or chefs' rings.
Weigh the flours in to a bowl. Add the yeast and stir through the flour.
Dissolve the sugar in the warm milk and pour onto the flour. Using a wooden spoon beat until you have a smooth batter. This will take 3-4 minutes and is hard work, but is essential to produce the holes in the crumpets.
Cover and leave for at least 20 minutes and up to an hour. The batter will rise and then begin to fall. You will see marks on the side of the bowl where the batter was before it dropped.
Mix the bicarbonate of soda and salt with the warm water and beat it into the batter. Add about ¾ of the water and keep adding it until you get a double cream consistency. Cover and rest for 20 minutes.
Heat a flat griddle or heavy based pan. Lightly grease the inside of four metal crumpet rings. Lightly grease the griddle. Sit the rings on the griddle over a medium heat.
Drop two dessert spoons of mixture into each ring. After 4-5 minutes bubbles should appear and the surface should be set. Carefully turn the crumpets in their rings and cook for a further three minutes.
Serve immediately or leave to cool and then toast before eating with plenty of butter.


pm4j is a development framework for Java™ to create applications according to the Presentation Model pattern.


Alert Dialog
Confirm Dialog
Prompt Dialog
Custom Labels
Ajax - Multiple Dialog
Standard Log
Standard Log With HTML
HTML works just fine in log messages. Have at it!
Standard Log with callback
Success Log
Success Log with callback
Error Log
Error Log with callback
Closing Log On Click
Disable Log On Click
Hide in 10 seconds
Persistent Log
Maximum Number of Log Messages
Resetting Default Values


| ||||||||||||||||||||
tsget(1)
NAMEtsget - Time Stamping HTTP/HTTPS client
SYNOPSIStsget -h server_url [-e extension] [-o output] [-v] [-d] [-k private_key.pem] [-p key_password] [-c client_cert.pem] [-C CA_certs.pem] [-P CA_path] [-r file:file...] [-g EGD_socket] [request]...
DESCRIPTIONThe tsget command can be used for sending a time stamp request, as specified in RFC 3161, to a time stamp server over HTTP or HTTPS and storing the time stamp response in a file. This tool cannot be used for creating the requests and verifying responses, you can use the OpenSSL ts(1) command to do that. tsget can send several requests to the server without closing the TCP connection if more than one requests are specified on the command line. The tool sends the following HTTP request for each time stamp request: POST url HTTP/1.1 User-Agent: OpenTSA tsget.pl/<version> Host: <host>:<port> Pragma: no-cache Content-Type: application/timestamp-query Accept: application/timestamp-reply Content-Length: length of body ...binary request specified by the user... tsget expects a response of type application/timestamp-reply, which is written to a file without any interpretation.
OPTIONS
ENVIRONMENT VARIABLESThe TSGET environment variable can optionally contain default arguments. The content of this variable is added to the list of command line arguments.
EXAMPLESThe examples below presume that file1.tsq and file2.tsq contain valid time stamp requests, tsa.opentsa.org listens at port 8080 for HTTP requests and at port 8443 for HTTPS requests, the TSA service is available at the /tsa absolute path. Get a time stamp response for file1.tsq over HTTP, output is written to file1.tsr: tsget -h http://tsa.opentsa.org:8080/tsa file1.tsq Get a time stamp response for file1.tsq and file2.tsq over HTTP showing progress, output is written to file1.reply and file2.reply respectively: tsget -h http://tsa.opentsa.org:8080/tsa -v -e .reply \ file1.tsq file2.tsq Create a time stamp request, write it to file3.tsq, send it to the server and write the response to file3.tsr: openssl ts -query -data file3.txt -cert | tee file3.tsq \ | tsget -h http://tsa.opentsa.org:8080/tsa \ -o file3.tsr Get a time stamp response for file1.tsq over HTTPS without client authentication: tsget -h https://tsa.opentsa.org:8443/tsa \ -C cacerts.pem file1.tsq Get a time stamp response for file1.tsq over HTTPS with certificate-based client authentication (it will ask for the passphrase if client_key.pem is protected): tsget -h https://tsa.opentsa.org:8443/tsa -C cacerts.pem \ -k client_key.pem -c client_cert.pem file1.tsq You can shorten the previous command line if you make use of the TSGET environment variable. The following commands do the same as the previous example: TSGET='-h https://tsa.opentsa.org:8443/tsa -C cacerts.pem \ -k client_key.pem -c client_cert.pem' export TSGET tsget file1.tsq
AUTHORZoltan Glozik<EMAIL_ADDRESS>OpenTSA project (http://www.opentsa.org)
SEE ALSOopenssl(1), ts(1), curl(1), RFC 3161 | ||||||||||||||||||||


Like some other programming languages, Ruby is Object-Oriented. This means that everything is represented and manipulated as an Object. What is an Object then? It is basically anything that has its own state and behavior. And we can define our own Objects to best model... well, anything. However, all things (i.e. Objects) are different, but many are kind of the same. This is what a Class is. In Ruby, when defining our own Objects, we will first create a Class to say what kind of Objects we want to create.
For instance, we may think of modeling a 2015 Mercedes-Benz C63 AMG coupe. It is kind of a car, isn't it? So let's first create a Class Car in Ruby:
class Car
end
We may want to specify how to create our car. This is a special behavior of our car. In Ruby, a behavior of an Object is an instance method. And the initialize method can be used at creation:
class Car
def initialize
end
end
The year (2015), brand (Mercedes-Benz), model (C63 AMG), and style (coupe) differentiate our car from other cars. All those characterictics should be saved. We should do this at creation. In Ruby, we use instance variables (starting with a @):
class Car
def initialize(year, brand, model, style)
@year = year
@brand = brand
@model = model
@style = style
end
end
Furthermore, we might want to add its state out of the factory. For instance, its mileage could be set at creation:
class Car
def initialize(year, brand, model, style)
@year = year
@brand = brand
@model = model
@style = style
@mileage = 0
end
end
A car is only good if it can be driven. This will change our mileage. It is another behavior of our car. So we define another instance method to drive:
class Car
def initialize(year, brand, model, style)
@year = year
@brand = brand
@model = model
@style = style
@mileage = 0
end
def drive(distance)
@mileage += distance
end
end
Now, we can create our 2015 Mercedes-Benz C63 AMG coupe and take it for a first drive:
our_car = Car.new(2015, "Mercedes-Benz", "C63 AMG", "coupe")
our_car.drive(10)
Please note that new is being used to create our car Object and calls our special instance method initialize.
"Oh Lord won't you buy me a Mercedes Benz?" Oh yes we did, Janis Joplin!


Keysight HP_E3631A Power Supply.
More...
Inherits labDevice.
|
| function | HP_E3631A (in mode, in varargin) |
| |
| function | delete (in obj) |
| |
| function | read (in obj) |
| |
| function | flush (in obj) |
| |
| function | write (in obj, in txt) |
| |
| function | getCurrentLimit (in obj, in varargin) |
| | Get the current limit for a specified or the active output. More...
|
| |
| function | getCurrentMeasured (in obj, in varargin) |
| | measure the current on a specified or the active output. More...
|
| |
| function | getOutput (in obj) |
| | Get the currently active output. More...
|
| |
| function | getVoltageLimit (in obj, in varargin) |
| | Get the voltage limit for a specified or the active output. More...
|
| |
| function | getVoltageMeasured (in obj, in varargin) |
| | Get the measured voltage for a specified or the active output. More...
|
| |
| function | outputDisable (in obj) |
| | Disable ALL outputs. More...
|
| |
| function | outputEnable (in obj) |
| | Enable ALL outputs. More...
|
| |
| function | setCurrent (in obj, in current, in varargin) |
| | Set the current limit for a specified or the active output. More...
|
| |
| function | setOutput (in obj, in output) |
| | set the currently active output for programming More...
|
| |
| function | setU (in obj, in voltage, in varargin) |
| | Set the voltage limit for a specified or the active output. More...
|
| |
| function | labDevice (in deviceName, in mode, in varargin) |
| | labdevice constructor More...
|
| |
| function | delete (in obj) |
| | Delete labDevice Object. More...
|
| |
| function | flush (in obj) |
| |
| function | read (in obj) |
| | Read data from labdevice. More...
|
| |
| function | write (in obj, in txt) |
| | Write SCPI/skippy commands to labdevice. More...
|
| |
Keysight HP_E3631A Power Supply.
Usage: Initalise subclass
6); % GPIB address
psu.setVoltage(3,'P6V');
psu.setCurrent(1,'P6V');
psu.setOutput('N25V');
psu.setCurrent(0.05);
i = psu.getCurrentMeasured('P6V')
function HP_E3631A(in mode, in varargin)
Definition at line 20 of file HP_E3631A.m.
◆ HP_E3631A()
| function HP_E3631A::HP_E3631A |
( |
in |
mode, |
|
|
in |
varargin |
|
) |
| |
◆ delete()
| function HP_E3631A::delete |
( |
in |
obj | ) |
|
◆ flush()
| function HP_E3631A::flush |
( |
in |
obj | ) |
|
◆ getCurrentLimit()
| function HP_E3631A::getCurrentLimit |
( |
in |
obj, |
|
|
in |
varargin |
|
) |
| |
Get the current limit for a specified or the active output.
- Parameters
-
| obj | Instance of class |
| varargin | 'P6V' || 'P25V' || 'N25V' to select an output, or nothing to use the currently active output |
- Returns
- i current current limit in Ampere
◆ getCurrentMeasured()
| function HP_E3631A::getCurrentMeasured |
( |
in |
obj, |
|
|
in |
varargin |
|
) |
| |
measure the current on a specified or the active output.
- Parameters
-
| obj | Instance of class |
| varargin | 'P6V' || 'P25V' || 'N25V' to select an output, or nothing to use the currently active output |
- Returns
- i measured current in Ampere
◆ getOutput()
| function HP_E3631A::getOutput |
( |
in |
obj | ) |
|
Get the currently active output.
- Parameters
-
- Returns
- output currently active output. 'P6V' || 'P25V' || 'N25V'
◆ getVoltageLimit()
| function HP_E3631A::getVoltageLimit |
( |
in |
obj, |
|
|
in |
varargin |
|
) |
| |
Get the voltage limit for a specified or the active output.
- Parameters
-
| obj | Instance of class |
| varargin | 'P6V' || 'P25V' || 'N25V' to select an output, or nothing to use the currently active output |
- Returns
- u current voltage limit in Volts
◆ getVoltageMeasured()
| function HP_E3631A::getVoltageMeasured |
( |
in |
obj, |
|
|
in |
varargin |
|
) |
| |
Get the measured voltage for a specified or the active output.
- Parameters
-
| obj | Instance of class |
| varargin | 'P6V' || 'P25V' || 'N25V' to select an output, or nothing to use the currently active output |
- Returns
- u measured Voltage in Volts
◆ outputDisable()
| function HP_E3631A::outputDisable |
( |
in |
obj | ) |
|
Disable ALL outputs.
Equivalent to pressing the Output on/off button on the front panel. To individually enable/disable outputs, instead set their current and voltage to zero
- Parameters
-
◆ outputEnable()
| function HP_E3631A::outputEnable |
( |
in |
obj | ) |
|
Enable ALL outputs.
Equivalent to pressing the Output on/off button on the front panel. To individually enable/disable outputs, instead set their current and voltage to zero
- Parameters
-
◆ read()
| function HP_E3631A::read |
( |
in |
obj | ) |
|
◆ setCurrent()
| function HP_E3631A::setCurrent |
( |
in |
obj, |
|
|
in |
current, |
|
|
in |
varargin |
|
) |
| |
Set the current limit for a specified or the active output.
- Parameters
-
| obj | Instance of class |
| current | Current in Ampere |
| varargin | 'P6V' || 'P25V' || 'N25V' to select an output, or nothing to use the currently active output |
◆ setOutput()
| function HP_E3631A::setOutput |
( |
in |
obj, |
|
|
in |
output |
|
) |
| |
set the currently active output for programming
- Parameters
-
| obj | Instance of class |
| output | to be programmed. 'P6V' || 'P25V' || 'N25V' |
◆ setU()
| function HP_E3631A::setU |
( |
in |
obj, |
|
|
in |
voltage, |
|
|
in |
varargin |
|
) |
| |
Set the voltage limit for a specified or the active output.
- Parameters
-
| obj | Instance of class |
| voltage | in Volts |
| varargin | 'P6V' || 'P25V' || 'N25V' to select an output, or nothing to use the currently active output |
◆ write()
| function HP_E3631A::write |
( |
in |
obj, |
|
|
in |
txt |
|
) |
| |
The documentation for this class was generated from the following file:
- /home/thomas/HF-Lab/gitlab/labdevice/@HP_E3631A/HP_E3631A.m


Using a Sandbox Application¶
What is the sandbox application?¶
When you create a new Nobackend account (see Creating a Nobackend Account) to use services for developers, Nobackend creates a new application for you on its servers. With the new application, called “sandbox,” you can add your own example data and try out API calls that do things with the data. Be sure to see Using the API for suggestions.
Is the sandbox secure?¶
To keep things simple and make it easier for you to try things out, the sandbox application has all authentication disabled. That way, it doesn’t require an access token for application-level calls to the API. Permissions are so open on the sandbox application because its “guest” role offers full permissions for all access paths – that is, GET, POST, PUT, and DELETE for /**
. Learn more about roles and permissions in Managing access by defining permission rules.
Warning
Never use a sandbox app for production. Keep in mind that the lack of authentication means that a sandbox application is not secure enough for important or sensitive data. A sandbox is just for experimentation while you learn how the services work, and should never be used for a production application. As with other Nobackend applications you create, a sandbox application is an area of the data store where you can put your own data. You can create as many other applications as you like, including more sandbox applications. When it comes to production (secured) applications, a good rule of thumb is to create one application for each mobile app you develop.
Creating a New Sandbox Application¶
You may want to create (or re-create) a sandbox application. For example, you may want to create a sandbox application for another organization or you may want to create another application for testing purposes.
Warning
Guest Role should never be given full permissions. Giving the guest role full permissions should be used only for testing and should not be used in production. Before you make your app “live”, you should remove the guest permissions for /**
.
Use the following steps to create a sandbox app:
Create a new application using the admin portal. You can name the application whatever you like (including “sandbox”).
- Set full access permissions for the guest role, as follows:
- In the admin portal, click Roles.
- On the Roles page, in the list of roles, click Guest.
- For the Guest role, under Permissions, click Add Permission.
- In the New Permission dialog, enter the following in the Path box:
/**
- Select the following check boxes: get, post, put, and delete.
- Click the Add button.
- If there are other permissions listed, delete them.


The school of computing and design (SCD) educates students in state-of-the-art information technology to solve real world communication problems in a socially responsible way. In additon to mastering the technical knowledge and skills, graduates of SCD programs excel in communication, collaboration, and problem solving.


{{< layout-referee}} {{$propositionHeader}}Renew {{/propositionHeader}} {{$pageTitle}}Check your answers{{/pageTitle}} {{$header}}
It looks like you're not eligible to do this for this applicant. Please confirm your answers.
{{values.applicant-check-friend}}
{{values.applicant-check-address}}
{{values.relationship}}
{{values.knowntime}}


Remote access to the ArchiveManager api follows a conventional token-based security system.
Client developers should log on to receive a secure token which is then included in subsequent calls.
1) The user logs in with a POST request containing his username and password.


EET
Home
About
Resources
Events
Blog
Partners
Get Involved
Join Us
Hello, we are the EETeam
I, we and the Planet
Mission & Values
Read More
Goals
Education
Changes Lifes
Save the Planet


Technical Reflection Numero Dos
What is grid based design?
Mixing words around, it's a type of web page design based upon a grid system of rows and columns. It's common practice to use 12 equal columns as 12 can be divided equally between 2, 3 and 4 allowing multiple different page designs.
Whats all the hype about responsive webpages?
More and more internet users are viewing the web through phones and tablets. Responsive design is all about ensuring a good viewing experience for everyone, regardless of which device or screen size they view it from.
What is semantic structure?
It's the logical structuring of html code, ie: using h1 tags for important headings and img tags for images
It goes hand in hand with good coding practice and ensures clean, SEO orientated code that is logical to read and follow for other developers.


Here you can find or stalk strangers
The Doge Social Network does not take any responsibility for information found


MEDI-SULTING TOPICAL PAIN RELIEF- methyl salicylate, menthol, capsaicin and lidocaine patch
Two Hip Consulting, 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.
CAPSAICIN 0.035%
LIDOCAINE 0.5%
MENTHOL 5%
METHYL SALICYLATE 20%
PURPOSE
TOPICAL ANALGESIC
TOPICAL ANESTHETIC
USES: FOR THE TEMPORARY RELIEF OF MINOR ACHES AND PAINS OF MUSCLES AND JOINTS ASSOCIATED WITH ARTHRITIS, SIMPLE BACKACHE, STRAINS, SPRAINS, MUSCLE SORENESS AND STIFFNESS.
DO NOT USE: ON
WOUNDS OR DAMAGED SKIN. CHILDREN UNDER 12 YEARS OLD, CONSULT A DOCTOR. IF YOU ARE ALLERGIC TO ANY INGREDIENTS IN THIS PRODUCT.
Directions: Use only as directed. Prior to first use, test skin
sensitivity by applying a small amount. Apply and massage directly to
affected area. Do not use more than 4 times a day. Thoroughly wash
hands after application.
Inactive Ingredients: ACRLIC ACID, ALUMINUM HYDROXIDE, CARMELLOSE SODIEM, 2-ETHYLHEXYL ACRYLATE, GLYCERIN, ISOPROPYL MYRISTATE, METHYL ACRYLATE, NONOXYNOL-30, POLYACRYLATE, POLYACRYLIC ACID, POLYSORBATE 80, SORBITAN SESQUIOLEATE, STARCH, TALC, TARTARIC ACID, TITANIUM DIOXIDE, WATER.
OTHER INFORMATION: STORE BELOW 90°F/32°C
IF CONDITION WORSENS, OR IF SYMPTOMS PERSIST FOR MORE THAN 7 DAYS OR CLEAR UP AND OCCUR AGAIN WITHIN A FEW DAYS, DISCONTINUE USE OF THIS PRODUCT AND CONSULT A DOCTOR.
IF PREGNANT OR NURSING ASK A HEALTH PROFESSIONAL BEFORE USE.
KEEP OUT OF REACH OF CHILDREN.
Warnings: For external use only. Use only as directed. Avoid contact with eyes and mucous membranes. Do not use with heating devices or pads. Do not cover or bandage tightly. If swallowed, call poison control. If contact does occur with eyes rinse with cold water and call a doctor.


View Poems
To Catch a Fish
Ostrich and Lark
Lullaby
November
Gift
The late year
Good Bones
February 30th
Thunder raining poison
The Theft Outright
Another Planet
On Imperialism
Name and Place
New Friend
Worry
The Door
Offerings
What We Believed
There and Then
Dog Vertigo
Toy Boat
During the Vietnam War
English
Nobody Knows
Loneliness
Lake Mungo
Nautical Twilight
Nocturnal Tripping
Granite Weaving
Terrarium
Spoon Ode
Prayer 48
The Bridge
On Disappearing
Now I Pray
Yellowtail
Wonders
Mighty Pawns
Art & Craft
Fourth of July
True Myth
Football Weather
Why Is We Americans
Booranga Wire Songs
Chain Gang
The Highland
New York to San Fran
Grunge
Loser Bait
The Millihelen
The Colossus
Coyote Song
Latitudes
Center of the World


|
yaml
0.2.5
|
The document structure. More...
#include <yaml.h>
Data Fields | |
| struct { | |
| yaml_node_t * start | |
| The beginning of the stack. More... | |
| yaml_node_t * end | |
| The end of the stack. More... | |
| yaml_node_t * top | |
| The top of the stack. More... | |
| } | nodes |
| The document nodes. More... | |
| yaml_version_directive_t * | version_directive |
| The version directive. More... | |
| struct { | |
| yaml_tag_directive_t * start | |
| The beginning of the tag directives list. More... | |
| yaml_tag_directive_t * end | |
| The end of the tag directives list. More... | |
| } | tag_directives |
| The list of tag directives. More... | |
| int | start_implicit |
| Is the document start indicator implicit? | |
| int | end_implicit |
| Is the document end indicator implicit? | |
| yaml_mark_t | start_mark |
| The beginning of the document. More... | |
| yaml_mark_t | end_mark |
| The end of the document. More... | |
The document structure.
| yaml_node_t* yaml_document_s::start |
The beginning of the stack.
| yaml_node_t* yaml_document_s::end |
The end of the stack.
| yaml_node_t* yaml_document_s::top |
The top of the stack.
| struct { ... } yaml_document_s::nodes |
The document nodes.
| yaml_version_directive_t* yaml_document_s::version_directive |
The version directive.
| yaml_tag_directive_t* yaml_document_s::start |
The beginning of the tag directives list.
| yaml_tag_directive_t* yaml_document_s::end |
The end of the tag directives list.
| struct { ... } yaml_document_s::tag_directives |
The list of tag directives.
| yaml_mark_t yaml_document_s::start_mark |
The beginning of the document.
| yaml_mark_t yaml_document_s::end_mark |
The end of the document.