- Installing on Google Compute Engine
- Appendix
- Appliance Console Command-Line Interface (CLI)
Installing on Google Compute Engine
Installing ManageIQ
Installing ManageIQ consists of the following steps:
-
Downloading the appliance for your environment as a virtual machine image template.
-
Setting up a virtual machine based on the appliance.
-
Configuring the ManageIQ appliance.
After you have completed all the procedures in this guide, you will have a working environment on which additional customizations and configurations can be performed.
Obtaining the Appliance
Uploading the Appliance on Google Compute Engine
When the ManageIQ Google Compute Engine appliance has finished downloading to your system, upload the appliance to Google Compute Engine.
To upload the ManageIQ Google Compute Engine appliance file you will need: * 44 GB of storage space. * 12 GB RAM. * 4 vCPUs.
You can upload the appliance with the following steps:
-
Log in to the Google Cloud Platform dashboard.
-
Click Home in the top left of the screen.
-
Click to show the Products and Services menu. Click Storage.
-
Create a bucket by clicking Create Bucket, and configure the following details:
-
Enter a unique Name for the bucket using lower case alphanumeric characters, hyphens, and/or underscores.
-
Configure your location from the dropdown list.
-
Click Create.
-
-
Click Upload Files and browse to the location of the ManageIQ Google Compute Engine appliance you downloaded. Select the
tar.gz
file on your local machine, and click Open to begin the upload. -
When the upload is complete, click menu:Products & services[Compute Engine] on the left menu.
-
Create an image by clicking Images from the left menu, then Create Image. Fill in the following details about the image:
-
Enter a unique Name for the image using lower case alphanumeric characters and/or hyphens.
-
Add a Description if desired.
-
Configure Encryption if desired. This defaults to
Automatic (recommended)
. -
In Source, use the dropdown to select
Cloud Storage file
. This shows the Cloud Storage file field. -
In Cloud Storage file, click Browse to bring up the Select object window. Select the bucket containing the image you uploaded and click the > symbol to locate the
tar.gz
image inside the bucket. Select the image and click Select. -
Click Create. Creating the image will take a few minutes. When the image is created, the screen will refresh and the new image will appear in the Images list.
-
-
Create a virtual machine instance by navigating to menu:VM instances[Create Instance], and configure the following fields:
-
Enter a unique Name for the virtual machine instance using lower case alphanumeric characters and/or hyphens.
-
Select the Zone closest to your location.
-
Under Boot disk, click Change to bring up the Boot disk window. Click the Your Image tab and select the disk you previously created. Click Select.
-
Under Firewall, select the check box for Allow HTTPS traffic.
-
Click Management, disk, networking, SSH keys. Then, click the SSH Keys tab, add your entire SSH public key data in the Username box.
-
Configure any other fields as desired, and click Create.
-
Your new virtual machine instance, as well as the external IP address for accessing the ManageIQ interface, appears under VM instances.
Configuring ManageIQ
After installing ManageIQ and running it for the first time, you must perform some basic configuration. To configure ManageIQ, you must at a minimum:
-
Add a disk to the infrastructure hosting your appliance.
-
Configure the database.
Configure the ManageIQ appliance using the internal appliance console.
Accessing the Appliance Console
-
Start the appliance and open a terminal console.
-
Enter the
appliance_console
command. The ManageIQ appliance summary screen displays. -
Press
Enter
to manually configure settings. -
Press the number for the item you want to change, and press
Enter
. The options for your selection are displayed. -
Follow the prompts to make the changes.
-
Press
Enter
to accept a setting where applicable.
Configuring a Database
ManageIQ uses a database to store information about the environment. Before using ManageIQ, configure the database options for it; ManageIQ provides the following two options for database configuration:
-
Install an internal PostgreSQL database to the appliance
-
Configure the appliance to use an external PostgreSQL database
Configuring an Internal Database
-
Start the appliance and open a terminal console.
-
Enter the
appliance_console
command. The ManageIQ appliance summary screen displays. -
Press Enter to manually configure settings.
-
Select Configure Database from the menu.
-
You are prompted to create or fetch an encryption key.
-
If this is the first ManageIQ appliance, choose Create key.
-
If this is not the first ManageIQ appliance, choose Fetch key from remote machine to fetch the key from the first appliance. For worker and multi-region setups, use this option to copy key from another appliance.
All ManageIQ appliances in a multi-region deployment must use the same key.
-
-
Choose Create Internal Database for the database location.
-
Choose a disk for the database. This can be either a disk you attached previously, or a partition on the current disk.
Red Hat recommends using a separate disk for the database.If there is an unpartitioned disk attached to the virtual machine, the dialog will show options similar to the following:
1) /dev/vdb: 20480 2) Don't partition the disk
-
Enter 1 to choose
/dev/vdb
for the database location. This option creates a logical volume using this device and mounts the volume to the appliance in a location appropriate for storing the database. The default location is/var/lib/pgsql
, which can be found in the environment variable$APPLIANCE_PG_MOUNT_POINT
. -
Enter 2 to continue without partitioning the disk. A second prompt will confirm this choice. Selecting this option results in using the root filesystem for the data directory (not advised in most cases).
-
-
Enter Y or N for Should this appliance run as a standalone database server?
-
Select Y to configure the appliance as a database-only appliance. As a result, the appliance is configured as a basic PostgreSQL server, without a user interface.
-
Select N to configure the appliance with the full administrative user interface.
-
-
When prompted, enter a unique number to create a new region.
Creating a new region destroys any existing data on the chosen database. -
Create and confirm a password for the database.
ManageIQ then configures the internal database. This takes a few minutes. After the database is created and initialized, you can log in to ManageIQ.
Configuring an External Database
Based on your setup, you will choose to configure the appliance to use an external PostgreSQL database. For example, we can only have one database in a single region. However, a region can be segmented into multiple zones, such as database zone, user interface zone, and reporting zone, where each zone provides a specific function. The appliances in these zones must be configured to use an external database.
The postgresql.conf
file used with ManageIQ databases requires
specific settings for correct operation. For example, it must correctly
reclaim table space, control session timeouts, and format the PostgreSQL
server log for improved system support. Due to these requirements, Red
Hat recommends that external ManageIQ databases use a
postgresql.conf
file based on the standard file used by the
ManageIQ appliance.
Ensure you configure the settings in the postgresql.conf
to suit your
system. For example, customize the shared_buffers
setting according to
the amount of real storage available in the external system hosting the
PostgreSQL instance. In addition, depending on the aggregate number of
appliances expected to connect to the PostgreSQL instance, it may be
necessary to alter the max_connections
setting.
-
Start the appliance and open a terminal console.
-
Enter the
appliance_console
command. The ManageIQ appliance summary screen displays. -
Press Enter to manually configure settings.
-
Select Configure Database from the menu.
-
You are prompted to create or fetch a security key.
-
If this is the first ManageIQ appliance, choose Create key.
-
If this is not the first ManageIQ appliance, choose Fetch key from remote machine to fetch the key from the first appliance.
All ManageIQ appliances in a multi-region deployment must use the same key.
-
-
Choose Create Region in External Database for the database location.
-
Enter the database hostname or IP address when prompted.
-
Enter the database name or leave blank for the default (
vmdb_production
). -
Enter the database username or leave blank for the default (
root
). -
Enter the chosen database user’s password.
-
Confirm the configuration if prompted.
ManageIQ will then configure the external database.
Configuring a Worker Appliance
You can use multiple appliances to facilitate horizontal scaling, as well as for dividing up work by roles. Accordingly, configure an appliance to handle work for one or many roles, with workers within the appliance carrying out the duties for which they are configured. You can configure a worker appliance through the terminal. The following steps demonstrate how to join a worker appliance to an appliance that already has a region configured with a database.
-
Start the appliance and open a terminal console.
-
Enter the
appliance_console
command. The ManageIQ appliance summary screen displays. -
Press Enter to manually configure settings.
-
Select Configure Database from the menu.
-
You are prompted to create or fetch a security key. Since this is not the first ManageIQ appliance, choose 2) Fetch key from remote machine. For worker and multi-region setups, use this option to copy the security key from another appliance.
All ManageIQ appliances in a multi-region deployment must use the same key. -
Choose Join Region in External Database for the database location.
-
Enter the database hostname or IP address when prompted.
-
Enter the port number or leave blank for the default (
5432
). -
Enter the database name or leave blank for the default (
vmdb_production
). -
Enter the database username or leave blank for the default (
root
). -
Enter the chosen database user’s password.
-
Confirm the configuration if prompted.
Logging In After Installing ManageIQ
Once ManageIQ is installed, you can log in and perform administration tasks.
Log in to ManageIQ for the first time after installing by:
-
Navigate to the URL for the login screen. (https://xx.xx.xx.xx on the virtual machine instance)
-
Enter the default credentials (Username: admin | Password: smartvm) for the initial login.
-
Click Login.
Changing the Default Login Password
Change your password to ensure more private and secure access to ManageIQ.
-
Navigate to the URL for the login screen. (https://xx.xx.xx.xx on the virtual machine instance)
-
Click Update Password beneath the Username and Password text fields.
-
Enter your current Username and Password in the text fields.
-
Input a new password in the New Password field.
-
Repeat your new password in the Verify Password field.
-
Click Login.
Appendix
Appliance Console Command-Line Interface (CLI)
Currently, the appliance_console_cli
feature is a subset of the full functionality of the appliance_console
itself, and covers functions most likely to be scripted by using the command-line interface (CLI).
-
After starting the ManageIQ appliance, log in with a user name of
root
and the default password ofsmartvm
. This displays the Bash prompt for the root user. -
Enter the
appliance_console_cli
orappliance_console_cli --help
command to see a list of options available with the command, or simply enterappliance_console_cli --option <argument>
directly to use a specific option.
Database Configuration Options
| Option | Description |
| –region (-r) | region number (create a new region in the database - requires database credentials passed) |
| –internal (-i) | internal database (create a database on the current appliance) |
| –dbdisk | database disk device path (for configuring an internal database) |
| –hostname (-h) | database hostname |
| –port | database port (defaults to 5432 ) |
| –username (-U) | database username (defaults to root ) |
| –password (-p) | database password |
| –dbname (-d) | database name (defaults to vmdb_production ) |
v2_key Options
| Option | Description |
| –key (-k) | create a new v2_key |
| –fetch-key (-K) | fetch the v2_key from the given host |
| –force-key (-f) | create or fetch the key even if one exists |
| –sshlogin | ssh username for fetching the v2_key (defaults to root ) |
| –sshpassword | ssh password for fetching the v2_key |
IPA Server Options
| Option | Description |
| –host (-H) | set the appliance hostname to the given name |
| –ipaserver (-e) | IPA server FQDN |
| –ipaprincipal (-n) | IPA server principal (default: admin ) |
| –ipapassword (-w) | IPA server password |
| –ipadomain (-o) | IPA server domain (optional). Will be based on the appliance domain name if not specified. |
| –iparealm (-l) | IPA server realm (optional). Will be based on the domain name of the ipaserver if not specified. |
| –uninstall-ipa (-u) | uninstall IPA client |
Note:
-
In order to configure authentication through an IPA server, in addition to using Configure External Authentication (httpd) in the
appliance_console
, external authentication can be optionally configured via theappliance_console_cli
(command-line interface). -
Specifying –host will update the hostname of the appliance. If this step was already performed via the
appliance_console
and the necessary updates that are made to/etc/hosts
if DNS is not properly configured, the –host option can be omitted.
Certificate Options
| Option | Description |
| –ca (-c) | CA name used for certmonger (default: ipa ) |
| –postgres-client-cert (-g) | install certs for postgres client |
| –postgres-server-cert | install certs for postgres server |
| –http-cert | install certs for http server (to create certs/httpd* values for a unique key) |
| –extauth-opts (-x) | external authentication options |
Note: The certificate options augment the functionality of the certmonger
tool and enable creating a certificate signing request (CSR), and specifying certmonger
the directories to store the keys.
Other Options
| Option | Description |
| –logdisk (-l) | log disk path |
| –tmpdisk | initialize the given device for temp storage (volume mounted at /var/www/miq_tmp ) |
| –verbose (-v) | print more debugging info |
Example Usage.
$ ssh<EMAIL_ADDRESS>To create a new database locally on the server by using /dev/sdb
:
# appliance_console_cli --internal --dbdisk /dev/sdb --region 0 --password smartvm
To copy the v2_key from a host some.example.com to local machine:
# appliance_console_cli --fetch-key some.example.com --sshlogin root --sshpassword smartvm
You could combine the two to join a region where db.example.com is the appliance hosting the database:
# appliance_console_cli --fetch-key db.example.com --sshlogin root --sshpassword smartvm --hostname db.example.com --password mydatabasepassword
To configure external authentication:
# appliance_console_cli --host appliance.test.company.com
--ipaserver ipaserver.test.company.com
--ipadomain test.company.com
--iparealm TEST.COMPANY.COM
--ipaprincipal admin
--ipapassword smartvm1
To uninstall external authentication:
# appliance_console_cli --uninstall-ipa


I am a Computer Engineer with 25 years experience designing and developing software systems.
I have worked on projects at all scales, from tiny IoT sensors to handheld medical devices to networked processes running on mainframes, PCs, laptops, etc. I've designed GUIs for the Navy, built websites for the state of Maine, and earned my masters degree teaching robots to play Go over the web.
See my LinkedIn profile for more career details.
My personal interests include:


Joe Biden, Terry McAuliffe rally Virginia Democrats ahead of state ele
STERLING, Va. — Joe Biden is working on a national campaign of his own, but he made time for a trip to Virginia to rally party activists two days before a pivotal state election.
On Sunday, the Democratic presidential hopeful and former vice president joined former Virginia Gov. Terry McAuliffe, local Democratic officeholders and party leaders on an outdoor stage in an office park in Sterling.
The Washington Post reports that Biden spoke of the importance of Virginia’s election as a predictor of the 2020 presidential contest. He said: “As Virginia goes, so goes the nation.”
Virginia Democrats are hoping to take majorities in the General Assembly. Republicans hold thin majorities of 51-48 in the House of Delegates and 20-19 in the Senate.
All 140 seats are on the ballot Tuesday.
Sign up for Daily Newsletters
Copyright © 2019 The Washington Times, LLC.
Please read our comment policy before commenting.


--- author: Jesse categories: app date: '2009-04-17 02:44:55' link: http://blogs.nitobi.com/jesse/2009/04/17/the-race-to-the-megatweet/ permalink: /2009/04/17/the-race-to-the-megatweet/ slug: the-race-to-the-megatweet status: publish title: The race to the MegaTweet type: post format: html ---
The day started like any other day, sitting tired on SkyTrain on my way to work, when I happen to catch the headline on the newspaper of the commuter in front of me. Â "Kutcher's race to a million twitter followers." Â With peaked intrest I pulled out my iPhone and read some more about it. Â
Ashton Kutcher had some 9 hundred something thousand followers on Twitter, and was close behind CNN in the number one position. Â Both were approaching 1 million so I guess it seemed to be the likely target. Â After watching Ashton's YouTube video ( BTW: I love my iPhone 3G ) I was a little perturbed by Ashton's claim that his reaching 1 million followers would somehow signal a new age because (heavy paraphrasing here) "… an everday person has a greater reach than the media conglomerate … ". Â My problem was with the claim that Ashton was somehow representive of 'everone', not that I have anything against him, but he has a great deal more celebrity than most will ever achieve, so he hasn't lived in the 'everyman' world for quite awhile. Â My immediate reaction was simple: "Fuck him, I'll do it first! I'll beat 'em both, because I AM everyman!".
When I got to work, I ran the idea past a couple co-workers, and they were supportive, so I went to Twitter and created a new account http://twitter.com/Power2TheTweepl ( Ashton had used the term 'Power to the people" in his YouTube video ). Next I proceeded to follow everyone I was really following in my other 'real' account, careful not to follow myself first and give away my real identity.
I then sent an email to the team @nitobi and told them what I had started, and giving them a call to action to get the word out. Â I got some great recommendations for profile images (#1, #2) from Brian, but in the end chose to go a different way. Â I immediately got some follows from the team, and some retweets of my initial messages, and I was off to the races.
I spent some time following people, strangers really, hoping they would follow me back … and alot did. Â I chose people to follow by going after twitter users who had large numbers of followers, jumping to their 'followers' page and haphazardly clicking follow ( I love Ajax! ) Â I didn't spend a lot of time on this, as I also have a job to do, but did learn some stuff, which I'll get to.
Ashton eclipsed CNN at about 7:00 PM and around 11:00 PM PST, Ashton reached a million followers. This isn't a news report, so if you want the details of what happened, check it out here. Â I was able to get 130 followers, including @NitobiMouse.
Okay, the lessons.
Â
if you follow a stranger they will usually follow you back, at least for a little while.
if you follow someone who has no followers, you might scare them, and they might send you a message saying something like 'Why are you following me?' Â ( Oprah's followers are heavy in this category )
twitter is still new to A LOT of people.
twitter is pretty amazing when you think about how vast the system is. (I only saw ~8 fail whales)
does this matter? Who cares!
I'm not as popular as Ashton Kutcher ( yet… )Â
Ashton is donating Mosquito nets to Africa, so some good is coming from all this.
Â
While writing this I got 8 new follows, so I may still keep the account active, we'll see. Â Also, I was not the only person to have this reaction, @TotalNobody had the same idea …
My final thought. Â Tomorrow, Oprah will be posting her first tweet live on her show, so Twitter is becoming less social and more of a platform everyday. Â Not sure if this is a good thing, a bad thing, or if it is even a thing.
Thoughts?
Jesse
Â
Â
Â


Tests the Timeline instrumentation does not crash the renderer upon encountering an anonymous image render object


Displays table based on a Object configuration and an Array of Data
Use as common component to display a simple list of data or you can set up dynamic templates per column
Once we add a list of data, It will show a pagination of 10 items per each page


Digital Ocean (here is an referral link, claim your $100 credit) were introduced floating IP in the 2015, but I never use it with VoIP. Time to fix it.
(Dear hackers, at the moment of publishing all the IP addresses releases and data vanished)
Droplet and floating IP
Floating IP <IP_ADDRESS> pointed in the Digital Ocean console to the newly created droplet with Debian linux. IP addresses of test droplet:
root@test:~# /sbin/ifconfig | grep -B 1 'inet '
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet <IP_ADDRESS> netmask <IP_ADDRESS> broadcast <IP_ADDRESS>
--
eth0:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet <IP_ADDRESS> netmask <IP_ADDRESS> broadcast <IP_ADDRESS>
SIP configuration
For test purpose I’ve installed Asterisk from the OS repository (apt-get install -yqq asterisk
) and configured SIP client to register on <IP_ADDRESS>. No luck as expected, SIP packets does not flowing properly:
Okay, lets try to update sip.conf with following. It’s typical setup for asterisk behind NAT (there is description notes in default sip.conf about externip, externhost and externaddr)
externip=<IP_ADDRESS>
nat=force_rport,comedia
And get random results, but in most of cases SIP registration did not worked.
After quick investigation (why there is 3rd IP in the SIP dump), I decided to change SIP bind address to the private IP:
udpbindaddr=<IP_ADDRESS>
tcpenable=yes
tcpbindaddr=<IP_ADDRESS>
; ...
externip=<IP_ADDRESS>
nat=force_rport,comedia
Now all right
Calls also working
Docker setup
Let’s try to get the same result with docker.
It works if asterisk can bind to the same private IP address where floating IP points, but requires to run container with --net=host
option:
docker run -ti --rm \
--net=host \
--name asterisk \
-v /etc/asterisk/sip.conf:/etc/asterisk/sip.conf \
andrius/asterisk \
asterisk -vvvddddc
Technically that’s enough for most of use cases, but such Asterisk won’t fit well into development environment with docker-compose; other containers won’t “see” it. I’ll be digging this little bit more. Perhaps if I would pass NET_ADMIN capability or will start container in privileged mode, I would be able to do necessary trick with iptables.


Snowbording Styles
My favorite one :)
Freestyle snowboarding is any riding that includes performing tricks. In freestyle, the rider utilizes natural and man-made features such as rails, jumps, boxes, and innumerable others to perform tricks. It is a popular all-inclusive concept that distinguishes the creative aspects of snowboarding, in contrast to a style like alpine snowboarding.


North West farmer found murdered in his sheep kraal, wife assaulted
by Jenna EtheridgeA farmer was murdered and his wife assaulted by five people who pretended to buy sheep from their farm near Wolmaransstad in the North West, police said on Monday.
Colonel Adele Myburgh said three men and two women visited the farm at around 17:30 on Sunday.
"The farmer sells sheep directly to the public and they pretended that they wanted to buy. The farmer and his wife went to the kraal. The people were picking out the sheep they want, catching the sheep and tying them," she said.
The group then suddenly overpowered the farmer, 67, and his 66-year-old wife.
The women took the wife to the farmhouse and demanded the safe keys, which she gave to them.
The armed group assaulted both of them.
Myburgh said that during the ordeal, the couple's son, 43, came from another kraal and saw people running in different directions.
"He came upon the body of the farmer in the sheep kraal. He had allegedly been stabbed with a sharp instrument and also tied up."
The son called for help and his mother was admitted to hospital.
Myburgh told News24 that no one had been arrested.


Zoe Lyons's panel show appearances
Zoe Lyons (born 1971-10-03[ref]) has appeared in 66 episodes between 2008-2019. Zoe Lyons on Wikipedia.
- 2019-11-01 / Have I Got News For You
- 2019-08-16 / Breaking The News
- 2019-04-26 / Have I Got News For You
- 2019-03-18 / Just A Minute
- 2019-02-25 / Just A Minute
- 2019-01-28 / The Unbelievable Truth
- 2019-01-14 / The Unbelievable Truth
- 2019-01-04 / The News Quiz
- 2018-12-21 / Mock The Week
- 2018-10-05 / Mock The Week
- 2018-09-17 / Just A Minute
- 2018-08-20 / Just A Minute
- 2018-08-18 / Breaking The News
- 2018-08-06 / Just A Minute
- 2018-06-07 / Mock The Week
- 2018-05-18 / The News Quiz
- 2018-05-04 / The Blame Game
- 2018-04-13 / The News Quiz
- 2018-02-09 / The News Quiz
- 2018-01-05 / The News Quiz
- 2017-10-27 / The News Quiz
- 2017-09-22 / Mock The Week
- 2017-09-11 / Just A Minute
- 2017-09-08 / The News Quiz
- 2017-08-12 / Breaking The News
- 2017-07-06 / Mock The Week
- 2017-06-15 / Mock The Week
- 2017-06-12 / Just A Minute
- 2017-05-22 / Just A Minute
- 2017-05-22 / Go 8 Bit
- 2017-05-12 / The News Quiz
- 2017-04-24 / The Unbelievable Truth
- 2017-04-17 / The Unbelievable Truth
- 2017-03-13 / Just A Minute
- 2017-02-20 / Just A Minute
- 2017-01-27 / The News Quiz
- 2017-01-13 / The News Quiz
- 2016-12-14 / Mock The Week
- 2016-11-18 / Breaking The News
- 2016-11-11 / The Blame Game
- 2016-10-21 / The News Quiz
- 2016-10-07 / It's Not What You Know
- 2016-09-30 / Mock The Week
- 2016-09-23 / The News Quiz
- 2016-09-12 / Just A Minute
- 2016-08-15 / Just A Minute
- 2016-08-12 / Breaking The News
- 2016-07-01 / Mock The Week
- 2016-05-13 / The News Quiz
- 2016-04-29 / The News Quiz
- 2016-04-18 / Eureka! The Big Bang Query
- 2016-02-05 / The News Quiz
- 2016-01-08 / The News Quiz
- 2015-10-30 / The News Quiz
- 2015-09-24 / Mock The Week
- 2015-07-09 / Mock The Week
- 2015-01-20 / Alan Davies: As Yet Untitled
- 2014-10-09 / Mock The Week
- 2014-07-17 / Mock The Week
- 2012-07-01 / Mock The Week
- 2011-12-18 / Dilemma
- 2011-06-30 / Mock The Week
- 2010-07-15 / Mock The Week
- 2009-09-27 / The Christian O'Connell Solution
- 2009-08-06 / Mock The Week
- 2008-08-07 / Mock The Week


Goal
To start a new career path and new LIFE!
Education
- Code Fellows Code 201, May 2016
- BBA at 007 CAMPUS
Work Experience
- Hello Kitty Bank, VP
- New York Capital Real Estate Management, GM
- Riverstone Wealth Management, Officer
Contact Info
Hello Kitty.Address, WA
Phone<PHONE_NUMBER>


China condemns U.S. Senate measure on Hong Kong rights
BEIJING (Reuters) - China on Wednesday condemned a U.S. Senate measure on Hong Kong, vowing to take the steps necessary to safeguard its sovereignty and security.
In a statement, the foreign ministry said the United States should stop interfering in Hong Kong and Chinese affairs and move to stop the latest bills on Hong Kong from becoming law.
The U.S. Senate on Tuesday unanimously passed legislation aimed at protecting human rights in Hong Kong, amid clashes between pro-democracy protesters and police.


Index
present: [4.] ā́ryanti
verbal: āritá
Is perhaps a form of ā + √ṛ, 'resort to, have recourse to'; ā́ryanti in both occurrences is accented as if it contained a preposition.


Behavior
Haunter - In the hands of a persistent and patient trainer, he can be a very dangerous Pokemon, even if he is not caught. If you feel someone's gaze on you, but you can't see anyone around, there is reason to think that Haunter is following you, as Pokedex says.  And at the same time, very vulnerable, if you offend him, he can cry. Well, trainers need to know that Haunter is not a very unreliable Pokemon, but at the same time touchy, he can sometimes let him down, but once he will make him proud.


| 1 | /* | |
| 2 | * Licensed to the Apache Software Foundation (ASF) under one or more | |
| 3 | * contributor license agreements. See the NOTICE file distributed with | |
| 4 | * this work for additional information regarding copyright ownership. | |
| 5 | * The ASF licenses this file to You under the Apache License, Version 2.0 | |
| 6 | * (the "License"); you may not use this file except in compliance with | |
| 7 | * the License. You may obtain a copy of the License at | |
| 8 | * | |
| 9 | * http://www.apache.org/licenses/LICENSE-2.0 | |
| 10 | * | |
| 11 | * Unless required by applicable law or agreed to in writing, software | |
| 12 | * distributed under the License is distributed on an "AS IS" BASIS, | |
| 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| 14 | * See the License for the specific language governing permissions and | |
| 15 | * limitations under the License. | |
| 16 | */ | |
| 17 | package org.apache.commons.io.input; | |
| 18 | ||
| 19 | import java.io.InputStream; | |
| 20 | ||
| 21 | /** | |
| 22 | * | |
| 23 | * An {@link InputStream} that infinitely repeats provided bytes. | |
| 24 | * <p> | |
| 25 | * Closing a <tt>InfiniteCircularInputStream</tt> has no effect. The methods in | |
| 26 | * this class can be called after the stream has been closed without generating | |
| 27 | * an <tt>IOException</tt>. | |
| 28 | * | |
| 29 | */ | |
| 30 | public class InfiniteCircularInputStream extends InputStream { | |
| 31 | ||
| 32 | final private byte[] repeatedContent; | |
| 33 | private int position = -1; | |
| 34 | ||
| 35 | /** | |
| 36 | * Creates a InfiniteCircularStream from the specified array of chars. | |
| 37 | * | |
| 38 | * @param repeatedContent | |
| 39 | * Input buffer to be repeated (not copied) | |
| 40 | */ | |
| 41 | public InfiniteCircularInputStream(final byte[] repeatedContent) { | |
| 42 | this.repeatedContent = repeatedContent; | |
| 43 | } | |
| 44 | ||
| 45 | @Override | |
| 46 | public int read() { | |
| 47 |
2
1. read : Replaced integer addition with subtraction → KILLED 2. read : Replaced integer modulus with multiplication → KILLED |
position = (position + 1) % repeatedContent.length; |
| 48 |
2
1. read : Replaced bitwise AND with OR → KILLED 2. read : replaced return of integer sized value with (x == 0 ? 1 : 0) → KILLED |
return repeatedContent[position] & 0xff; // copied from |
| 49 | // java.io.ByteArrayInputStream.read() | |
| 50 | } | |
| 51 | ||
| 52 | } | |
Mutations | ||
| 47 |
1.1 2.2 |
|
| 48 |
1.1 2.2 |


Music from the 90's
This is a selection of hits from Shawn's early years as a busker and musician. The best you can find from an old 4-track Tascam recorder and a $200 guitar.
Songs
These are songs that I wrote when I was playing music full-time.
Dirty Little Secret
Anne
Bridges and Ghosts
In the Night
I Am Not Well


Telephony Connection Card
Previous
Top
Next
(
Route
:
Settings menu
,
Communications command
,
Connections tab
,
New button
)
Choose the modem you wish to use from the drop-down list.
The modems available are those defined in the Modems applet in Control Panel.


Sally fell passionately in love with food in her mother’s cozy kitchen. Now she has her own kitchen – a friendly place to enjoy delicious, traditional recipes and good company around the table.
Sally’s food is fresh, flavourful and made with love. Using seasonal produce, her eclectic menu features anything and everything that takes her fancy. Simple dishes are created with care, integrity and quality ingredients. This is feel good food, just like Sally’s mother made.
You’ll find Sally in the kitchen or chatting to guests most days. Take the time to sit and sample what’s cooking. It’s that type of local – where the people love cooking and know just how you like your coffee.
Always fresh and local, here’s a selection of a few things we are dishing out at the moment. Come in and check out the full menu.
Menus
Breakfast Menu
Lunch Menu
Sally's Kitchen is perfect for CBD functions with the option of sit down meals or canapés matched with carefully selected local and international wines.
Stop by, feel welcome, eat well.
Have your next function at Sally's Kitchen.
Sally’s Kitchen is a friendly and relaxed place to enjoy great food.
Find Sally talking up a storm and serving delicious food at Shop one 295 Exhibition St Melbourne, 3000
If you’d like to make a booking or talk about putting together a fabulous function, please call Sally and her team.
7:00am - 4:00pm Monday to Wednesday
7:00 am - 10:00pm Thursday & Friday


Inputs of types submit, reset, button, <button>
s, and links with attribute [data-role=button]
will be styled as buttons. For example a usual input[type=submit]
will look like this:
A button
Buttons can be of several types: normal, special and alert. They differ only in appearance.
A special button is displayed in an accented color, blue by default, generally needed to highlight the most important button among several. To make a button special add data-special=true attribute to it.
The following code:

A special button

Will produce the following button:
data-appearance="button" href="#">
A special button
An alert button is red by default and is recommended to be used for actions that may cause data loss, e.g. for a delete button. Add data-alert=true attribute to get such a button:
<button data-alert="true">An alert button</button>
Will produce the following button:
You may need to use smaller buttons in your app. To make them, add a [data-small=true] attribute to the necessary controls.
To make a common back button use a [data-back=true] attribute. It will go back in browser history by default.
A small button
 Back button


Internationalization¶
Pluralize¶
Pluralize is a Python library for Internationalization (i18n) and Pluralization (p10n).
The library assumes a folder (for exaple “translations”) that contains files like:
it.json
it-IT.json
fr.json
fr-FR.json
(etc)
Each file has the following structure, for example for Italian (it.json):
{"dog": {"0": "no cane", "1": "un cane", "2": "{n} cani", "10": "tantissimi cani"}}
The top level keys are the expressions to be translated and the associated value/dictionary maps a number to a translation. Different translations correspond to different plural forms of the expression,
Here is another example for the word “bed” in Czech
{"bed": {"0": "no postel", "1": "postel", "2": "postele", "5": "postelí"}}
To translate and pluralize a string “dog” one simply warps the string in the T operator as follows:
>>> from pluralize import Translator
>>> T = Translator('translations')
>>> dog = T("dog")
>>> print(dog)
dog
>>> T.select('it')
>>> print(dog)
un cane
>>> print(dog.format(n=0))
no cane
>>> print(dog.format(n=1))
un cane
>>> print(dog.format(n=5))
5 cani
>>> print(dog.format(n=20))
tantissimi cani
The string can contain multiple placeholders but the {n} placeholder is special because the variable called “n” is used to determine the pluralization by best match (max dict key <= n).
T(…) objects can be added together with each other and with string, like regular strings.
T.select(s) can parse a string s following the HTTP accept language format.
Update the translation files¶
Find all strings wrapped in T(…) in .py, .html, and .js files:
matches = T.find_matches('path/to/app/folder')
Add newly discovered entries in all supported languages
T.update_languages(matches)
Add a new supported language (for example german, “de”)
T.languages['de'] = {}
Make sure all languages contain the same origin expressions
known_expressions = set()
for language in T.languages.values():
for expression in language:
known_expressions.add(expression)
T.update_languages(known_expressions))
Finally save the changes:
T.save('translations')


Chinatown
New York City, USA
- Neighborhood in Southern Manhattan
(next to Little Italy & SOHO)
- One of the oldest Chinatowns
in America
- Long history of immigrants from
Hong Kong, Guangdong, and Fuzhou
- One of nine total Chinatowns
in New York City


Your program is saved to the Pengines Scratchpad server for a period of at least one month. A link to it is given below. Copy the link, send it around, do what you want with it. Anyone in possession of the link will be able to access Pengines Scratchpad with your document loaded and ready to run.
Link:
As a way to learn how to program the interaction between JavaScript and Prolog, and for the purpose of quickly prototyping small Pengines applications, Pengines Scratchpad allows you to write an HTML document in the editor to the left and click the Run button in order to render it in the panel to the right.
Apart from the usual <style>
and <script type="text/javascript">
tags, Pengines Scratchpad also supports a <script type="text/x-prolog">
tag where you can write your Prolog code. You can program against the browser in the same way as you would write your Prolog program in an editor, consult the file, and ask queries in the Prolog REPL. For I/O you must however use pengine_input/2
instead of read/1
and pengine_output/1
instead of write/1
in order to read user's input and write the output from a program.
Note that code supplied by the client cannot be given unrestricted access to Prolog because Prolog gives unrestricted access to the operating system. Therefore, the server examines each goal on safety before execution. For more details, see Help>Help.
As a way to learn how to program the interaction between JavaScript and Prolog, and for the purpose of quickly prototyping small Pengines applications, Pengines Scratchpad allows you to write an HTML document in the editor to the left and click the Run button in order to render it in the panel to the right.
Apart from the usual <style>
and <script type="text/javascript">
tags, Pengines Scratchpad also supports a <script type="text/x-prolog">
tag where you can write your Prolog code. You can program against the browser in the same way as you would write your Prolog program in an editor, consult the file, and ask queries in the Prolog REPL. For I/O you must however use pengine_input/2
instead of read/1
and pengine_output/1
instead of write/1
in order to read user's input and write the output from a program.
Pengines Scratchpad is inspired by web-based tools such as JSFIDDLE in that it allows you to develop a program and then share it with others on the Web. The relevant menu entry is File>Share.
Pengines Scratchpad cannot provide unrestricted access to Prolog because Prolog gives unrestricted access to the operating system of the server. Therefore, the Pengines server examines each goal on safety before execution. This process unfolds the call-tree and verifies all called predicates against a whitelist. It fails on three occasions:
?- pengine_input('>',X), call(X).
Such errors are raised as instantiation errors.
If any of the above happens, the error is printed, along with a chain of intermediate goals that should help finding the culprit. Note that the whitelist is incomplete, i.e., there are many predicates that can be considered safe that are not on the list. Please report such omissions as bugs.
Pengines Scratchpad is implemented in a combination of Prolog, HTML, CSS and JavaScript. The only framework used is Bootstrap and the choice of editor landed on the very capable ACE editor.
Powered by SWI-Prolog and the Pengines package.


<%
var first_name = first_name ? first_name : ""
var last_name = last_name ? last_name : ""
var address = address ? address : ""
var city = city ? city : ""
var state = state ? state : ""
var zip = zip ? zip : ""
var country = country ? country : ""
var email = email ? email : ""
var phone = phone ? phone : ""
%>


I'm a Sift!
Hello
Paste this command to a terminal, substituting YOURNAME
curl -X POST -H "Content-Type: application/json" -d '{"key":"YOURNAME"}'


Settings to customize the appearance of the provided user interfaces (web and build-in).
Use this sensor as reference for the temperature compensation of the pH value measurement.


The purpose of this document is to provide some necessary background for anybody who might do work on EASTL. Writing
generic templated systems like EASTL can be surprisingly tricky. There are numerous details of the C++ language that
you need to understand which don't usually come into play during the day-to-day C++ coding that many people do. It is
easy to make a change to some function that seems proper and works for your test case but either violates the design
expectations or simply breaks under other circumstances.
It may be useful to start with an example. Here we provide an implementation of the count algorithm which is seems
simple enough. Except it is wrong and while it will compile in some cases it won't compile in others:
template <class InputIterator, class T> int count(InputIterator first, InputIterator last, const T& value) { int result = 0; for(; first < last; ++first){ if(*first == value) ++result; } return result; }
The problem is with the comparison 'first < last'. The count algorithm takes an InputIterator and operator< is not guaranteed to exist for any given InputIterator (and indeed while operator< exists for vector::iterator, it doesn't exist for list::iterator). The comparison in the above algorithm must instead be implemented as 'first != last'. If we were working with a RandomAccessIterator then 'first < last' would be valid.
In the following sections we cover various topics of interest regarding the development and maintentance of EASTL. Unfortunately, this document can't cover every aspect of EASTL maintenance issues, but at least it should give you a sense of the kinds of issues.
First and foremost, you need to be familiar with the C++ standard. In particular, the sections of the standard related to containers, algorithms, and iterators are of prime significance. We'll talk about some of this in more detail below. Similarly, a strong understanding of the basic data types is required. What is the difference between ptrdiff_t and intptr_t; unsigned int and size_t; char and signed char?
In addition to the C++ language standard, you'll want to be familiar with the C++ Defect Report. This is a continuously updated document which lists flaws in the original C++ language specification and the current thinking as the resolutions of those flaws. You will notice various references to the Defect Report in EASTL source code.
Additionally, you will want to be familiar with the C++ Technical Report 1 (as of this writing there is only one). This document is the evolving addendum to the C++ standard based on both the Defect Report and based on desired additions to the C++ language and standard library.
Additionally, you will probably want to have some familiarity with Boost. It also helps to keep an eye on comp.std.c++ Usenet discussions. However, watch out for what people say on Usenet. They tend to defend GCC, Unix, std STL, and C++ to a sometimes unreasonable degree. Many discussions ignore performance implications and concentrate only on correctness and sometimes academic correctness above usability.
Macros are (almost) not allowed in EASTL. A prime directive of EASTL is to be easier to read by users and most of the time macros are an impedence to this. So we avoid macros at all costs, even if it ends up making our development and maintenance more difficult. That being said, you will notice that the EASTL config.h file uses macros to control various options. This is an exception to the rule; when we talk about not using macros, we mean with the EASTL implementation itself.
EASTL assumes a compliant and intelligent C++ compiler, and thus all language facilities are usable. However, we nevertheless choose to stay away from some language functionality. The primary language features we avoid are:
Use of per-platform or per-compiler code should be avoided when possible but where there is a significant advantage to be gained it can and indeed should be used. An example of this is the GCC __builtin_expect feature, which allows the user to give the compiler a hint about whether an expression is true or false. This allows for the generation of code that executes faster due to more intelligent branch prediction.
The implementation of EASTL is guided foremost by the following directives which are listed in order of importance.
Note that unlike commercial STL implementations which must put correctness above all, we put a higher value on efficiency. As a result, some functionality may have some usage limitation that is not present in other similar systems but which allows for more efficient operation, especially on the platforms of significance to us.
Portability is significant, but not critical. Yes, EASTL must compile and run on all platforms that we will ship games for. But we don't take that to mean under all compilers that could be conceivably used for such platforms. For example, Microsoft VC6 can be used to compile Windows programs, but VC6's C++ support is too weak for EASTL and so you simply cannot use EASTL under VC6.
Readability is something that EASTL achieves better than many other templated libraries, particularly Microsoft STL and STLPort. We make every attempt to make EASTL code clean and sensible. Sometimes our need to provide optimizations (particularly related to type_traits and iterator types) results in less simple code, but efficiency happens to be our prime directive and so it overrides all other considerations.
Here we provide a list of coding conventions to follow when maintaining or adding to EASTL, starting with the three language use items from above:
Historically, templates are the feature of C++ that has given C++ compilers the most fits. We are still working with compilers that don't completely and properly support templates. Luckily, most compilers are now good enough to handle what EASTL requires. Nevertheless, there are precautions we must take.
It turns out that the biggest problem in writing portable EASTL code is that VC++ allows you to make illegal statements which are not allowed by other compilers. For example, VC++ will allow you to neglect using the typename keyword in template references, whereas GCC (especially 3.4+) requires it.
In order to feel comfortable that your EASTL code is C++ correct and is portable, you must do at least these two things:
The two biggest issues to watch out for are 'typename' and a concept called "dependent names". In both cases VC++ will accept non-conforming syntax whereas most other compilers will not. Whenever you reference a templated type (and not a templated value) in a template, you need to prefix it by 'typename'. Whenever your class function refers to a base class member (data or function), you need to refer to it by "this->", "base_type::", or by placing a "using" statement in your class to declare that you will be referencing the given base class member.
The most important thing to understand about iterators is the concept of iterator types and their designated properties. In particular, we need to understand the difference between InputIterator, ForwardIterator, BidirectionalIterator, RandomAccessIterator, and OutputIterator. These differences dictate both how we implement our algorithms and how we implement our optimizations. Please read the C++ standard for a reasonably well-implemented description of these iterator types.
Here's an example from EASTL/algorithm.h which demonstrates how we use iterator types to optimize the reverse algorithm based on the kind of iterator passed to it:
template <class BidirectionalIterator> inline void reverse_impl(BidirectionalIterator first, BidirectionalIterator last, bidirectional_iterator_tag)
{ for(; (first != last) && (first != --last); ++first) // We are not allowed to use operator <, <=, >, >= with iter_swap(first, last); // a generic (bidirectional or otherwise) iterator. }
template <typename RandomAccessIterator> inline void reverse_impl(RandomAccessIterator first, RandomAccessIterator last, random_access_iterator_tag) { for(; first < --last; ++first) // With a random access iterator, we can use operator < to more efficiently implement iter_swap(first, last); // this algorithm. A generic iterator doesn't necessarily have an operator < defined. }
template <class BidirectionalIterator> inline void reverse(BidirectionalIterator first, BidirectionalIterator last) { typedef typename iterator_traits<BidirectionalIterator>::iterator_category IC; reverse_impl(first, last, IC()); }
You will notice that EASTL uses try/catch in some places (particularly in containers) and uses the EASTL_EXCEPTIONS_ENABLED define. For starters, any EASTL code that uses try/catch should always be wrapped within #if EASTL_EXCEPTIONS_ENABLED (note: #if, not #ifdef).
This is simple enough, but what you may be wondering is how it is that EASTL decides to use try/catch for some sections of code and not for others. EASTL follows the C++ standard library conventions with respect to exception handling, and you will see similar exception handling in standard STL. The code that you need to wrap in try/catch is code that can throw a C++ exception (not to be confused with CPU exception) and needs to have something unwound (or fixed) as a result. The important thing is that the container be in a valid state after encountering such exceptions. In general the kinds of things that require such try/catch are:
Take a look at the cases in EASTL where try/catch is used and see what it is doing.
EASTL provides a facility called type_traits which is very similar to the type_traits being proposed by the C++ TR1 (see above). type_traits are useful because they tell you about properties of types at compile time. This allows you to do things such as assert that a data type is scalar or that a data type is const. The way we put them to use in EASTL is to take advantage of them to implement different pathways for functions based on types. For example, we can copy a contiguous array of scalars much faster via memcpy than we can via a for loop, though we could not safely employ the for loop for a non-trivial C++ class.
As mentioned in the GeneralOptimizations section below, EASTL should take advantage of type_traits information to the extent possible to achive maximum effiiciency.
One of the primary goals of EASTL is to achieve the highest possible efficiency. In cases where EASTL functionality overlaps standard C++ STL functionality, standard STL implementations provided by compiler vendors are a benchmark upon which EASTL strives to beat. Indeed EASTL is more efficient than all other current STL implementations (with some exception in the case of some Metrowerks STL facilities). Here we list some of the things to look for when considering optimization of EASTL code These items can be considered general optimization suggestions for any code, but this particular list applies to EASTL:
Writing robust templated containers and algorithms is difficult or impossible without a heavy unit test suite in place. EASTL has a pretty extensive set of unit tests for all containers and algorithms. While the successful automated unit testing of shipping application programs may be a difficult thing to pull off, unit testing of libraries such as this is of huge importance and cannot be understated.


{{_("Hello")}} {{ first_name }}{% if last_name %} {{ last_name}}{% endif %},
{{_("A new account has been created for you at JJSB Data Center Support helpdesk at {0}").format(site_url)}}.
{{_("Your login id is")}}: {{ user }}
{{_("Click on the link below to ")}}{{_("Complete Registration ")}}{{_("and set a new password and gain access to helpdesk ticketing system for generating your new ticket and provide complete archives and history of all your support requests.")}}
{{_("Thank you")}},
{{"JJSB Helpdesk Ticketing System"}}
{{_("You can also copy-paste this link in your browser")}} {{ link }}


 Read ROGUE WARRIOR instead.
Demi Moore has never been terribly compelling, if you ask me, but she's the best thing in G.I. JANE, a dismal and off-kilter piece of work from the once-notable director Ridley Scott. What's to be said about a movie where the best scene is the one where she shaves her own head?
The biggest problems with G.I. JANE are a) plausibility and b) deployment. The broad outlines of the story are compelling -- the very concept of women in the military has always caused a stir in many quarters -- but the movie hasn't got the faintest idea how to put across its conceits. Plus, it suffers from a grafted-on Hollywood plot that one can hear squeaking and grinding blocks away.
Moore plays O'Neil, a career military woman with enough endurance for any three soldiers. She gets involved in a pilot program to allow women in the SEAL training program, which is being coordinated by a brassy female senator (Anne Bancroft, utterly wasted). A good example of the movie's basic airheadedness -- or maybe indecisiveness -- is an early scene with Moore's beau, also a military man. "I wasn't ready to decide the rest of my life today," he bleats at her while scrubbing her toes in the bathroom. The whole speech was glaringly upstaged by the fact that for a military office, O'Neil -- sorry, Demi -- has amazingly good-looking feet.
O'Neil's trouble begins before she even enters SEAL training proper. A whole bevy of preferential treatments have been set up to provide women with a slightly easier road into the military, and apparently all of those protocols have been preserved in the SEAL program as well. This gets O'Neil hopping mad, since that's the last thing she wants. There are several tongue-tied speeches about whether or not her very presence there "makes a statement", but the movie simply doesn't have the capacity to make us care; it's too busy hustling us through one manufactured conflict after another.
The details of the SEAL training are ridiculous and overblown. In Richard Marcienko's eye-opening book ROGUE WARRIOR, there are a great many details about the brutality of the program (60 percent of the enlistees don't make it). In G.I. JANE, we're treated to the unbelievable sight of the drill seargeants using live ammo on the recruits in one exercise.  Physical abuse is commonplace (another total boner). Even THE HILL didn't go this far.
As the movie plodded onwards, I kept asking myself: Isn't there some basis in fact for a better, more compelling story about this subject? A story that wasn't beholden to Hollywood conventions about the military, for one? The movie also shoots itself in the foot by injecting gratuitous pop-song snatches onto the soundtrack ("Mama Told Me Not To Come" is used to disastrous effect at one point), which only makes the movie seem that much more contrived and manipulative.
Demi is, interestingly enough, fine in the picture. There was never a moment when I doubted her competence or her physical presence. It was the rest of the movie I had my reservations about. Big ones.
<EMAIL_ADDRESS>The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


CodeFor
All
About
Become a Mentor
Become a Mentee
Connect
Contact Us
My Profile
About
Become a Mentor
Become a Mentee
Connect
Contact Us
My Profile
menu
About
Us
Jared Winoker
Strategy Lead,
Quality Assurance
Madison, WI
Profile
Tyler Brown
Design Lead,
Solutions Architect
Madison, WI
Profile
James Earley
Principal Form Engineer,
Public Relations
Madison, WI
Profile


1. You need to install JDK since this is the compiler that will convert JAVA programs in machine language so your computer/machine can understand them.
2. The Java Development Kit (JDK) is a software development environment used for developing Java applications. It includes the Java Runtime Environment (JRE), an interpreter/loader (java), a compiler (javac), an archiver (jar), a documentation generator (javadoc) and other tools needed in Java development.
3. I would recommend you installing latest JDK version from the following link.
WINDOWS USERS: READ CAREFULLY:
If you have a Mac or a Linux machine, the command prompt/terminal already comes ready to be used. However, if you use a windows machine, please continue reading:
java -version
This command lists all the java version installed in your machine.
If there are multiple versions of JDK installed in your windows computer, you might encounter difficulty compiling and executing your program. In that case, you might need to set your JAVA_HOME environment variable to the newest JDK so the IDE knows which version of JDK to use.
The following video will give you some idea on how to set the java_home environment variable: https://www.youtube.com/watch?v=kzfBT294GXY


Remove this scheme?
123/AB12345
The ACME Training Ltd levy account will stop receiving funds through this PAYE scheme.
Yes, remove scheme No, don't removeThe ACME Training Ltd levy account will stop receiving funds through this PAYE scheme.
Yes, remove scheme No, don't remove


[project-name] Style Documents
Home
CUTI
Brand Guidelines
Performance
Style Tile
Style Guide
Pattern Library
Grid
Prototype


{% extends "tardis_portal/portal_template.html" %} {% load static from staticfiles %} {% block content %}
The MyTardis project (including the Monash ANDS-funded EIF019 project and the Synchrotron/ANSTO MeCAT project) is being actively developed and documented on GitHub.
Please cite the following when referring to MyTardis:
Androulakis S, Schmidberger J, Bate MA, Degori R, Beitz A, Keong C, Cameron B, McGowan S, Porter CJ, Harrison A, Hunter J, Martin JL, Kobe B, Dobson RC, Parker MW, Whisstock JC, Gray J, Treloar A, Groenewegen D, Dickson N, Buckle AM. (2008) Federated repositories of X-ray diffraction images. Acta Crystallogr D Biol Crystallogr. Jul;64(Pt 7):810-4. [PubMed]
For more information on the MyTardis project please refer to the MyTardis.Org Contact page at http://www.mytardis.org/contact/.


We exchange infrastructure!
- reintermediate granular convergence
- recontextualize 24/7 initiatives
- optimize open-source eyeballs
- reintermediate cross-platform eyeballs
- enhance interactive systems
- empower world-class markets
- incubate plug-and-play ROI
- reinvent efficient e-services
- seize integrated supply-chains
- embrace dynamic interfaces
- strategize customized vortals
- enable vertical convergence
- aggregate e-business infrastructures
- recontextualize granular methodologies
- e-enable open-source e-tailers


It’s all about clues and conundrums. Yes, it is Chakravyuha, the online hunt for cryptic clues. It consists of multiple levels, each testing your ability to put your mind to finding and cracking clues. With each right answer, you get one step deeper into the problem solving maze, and ultimately reach the destiny!
SHAGUN UPPAL  |   SARTHAK BHAGAT  |   ANUSHIKA VERMA
<EMAIL_ADDRESS>|<EMAIL_ADDRESS>|<EMAIL_ADDRESS>NATIONAL BANK


The Halo CE PC beta will start “after the holiday”
by Dustin BaileyWe know finally know when Halo: Reach lands on PC, so now we have to ask: when is the next piece of the Master Chief Collection going to come out? It seems like 343 Industries plans to continue its measured process of extensive beta testing – or flighting, in the Microsoft parlance – and start bringing PC players into Halo: Combat Evolved early next year.
“Once Reach comes out next month, after the holiday, we will start to reset, and we’ll start to flight Halo CE,” community director Brian Jarrard tells us. “We’re just going to keep going down the road until we fill out the rest of the collection.”
Halo CE is a bit less notable as a PC release, since it was already ported to the platform years ago, though the new version will obviously bring the Anniversary enhancements and modernised multiplayer to the table. While it might seem like a straightforward process porting these games now, Jarrard says there’s a lot more nuance to the PC releases than you’d think.
“We’re taking a game that’s very old, and we’re trying to update it for this platform – making it run at 60 fps, 4K – but also trying to account for all the requirements that PC gamers expect nowadays. That’s things like uncapped frame rates, an FOV slider, and support for different aspect ratios.”
Jarrard says “it’s been more challenging than we initially thought, and it’s taken longer than we expected. But it is important that we don’t cut corners.”
The Halo: Reach PC launch date is set for December 3, which will finally see the console-defining FPS games start their big return to computers.


Simply fill in the online form in seconds and sign & submit it.
We will do a detailed review of your tax within 2 weeks.

"This is fantastic! Thanks so much guys!"
"Really good service, shocked that I had €350 owed to me by Revenue"
"Quick and simple, I was paying the wrong tax all along and got nearly €500 euro back."
Simply fill out the form below.It only takes a few minutes and once done just hit submit.


## Installing from source The preferred way to install mitmproxy - whether you're installing the latest release or from source - is to use [pip](http://www.pip-installer.org/). If you don't already have pip on your system, you can find installation instructions [here](http://www.pip-installer.org/en/latest/installing.html).
pip install mitmproxyIf you also want to install the optional packages AMF, protobuf and CSS content views, do this:
pip install "mitmproxy[contentviews]"## OSX The easiest way to get up and running on OSX is to download the pre-built binary packages from [mitmproxy.org](http://mitmproxy.org). If you still want to install using pip, there are a few things to keep in mind: - If you're running a Python interpreter installed with homebrew (or similar), you may have to install some dependencies by hand. - Make sure that XCode is installed from the App Store, and that the command-line tools have been downloaded (XCode/Preferences/Downloads). There are a few bits of customization you might want to do to make mitmproxy comfortable to use on OSX. The default color scheme is optimized for a dark background terminal, but you can select a palette for a light terminal background with the --palette option. You can use the OSX open program to create a simple and effective ~/.mailcap file to view request and response bodies:
application/*; /usr/bin/open -Wn %s audio/*; /usr/bin/open -Wn %s image/*; /usr/bin/open -Wn %s video/*; /usr/bin/open -Wn %s## Ubuntu On Ubuntu, you will need the following native packages to install mitmproxy from source: - build-essential - python-dev - libffi-dev - libssl-dev - libxml2-dev - libxslt1-dev


My statement of purpose
Research interests
- Operating systems, their design and implementation
- Multicore systems
- NUMA systems
- Verifiably correct concurrency
- Low-level performance engineering
On-going projects
- Re-Pintos: Revitalizing an instructional operating system (To appear at SOSP'17 Student Research Competition)
- kDuck: Duck-typed kernel modules for Linux
- NUMA-aware, lockless, transactional kernel communication method
- NUMA-aware kernel module scheduling and inter-CPU/RAM moving
- A Lisp implementation specifically designed for low-level engineering
Lower priority projects
- Getting QR codes to display when the Linux kernel crashes
- Together with two engineers from Intel
Hobby projects that may lead to new research
- UNIX-like, hobby operating system kernel written in C and x86 assembly
- Monolithic preemptive kernel with paging. Userspace in Ring 3.
- Runs gcc, binutils, dash, and getty
- Simple TCP/UDP/ICMP/ARP/IP stack over Ethernet
- Berkeley socket interface
- POSIX compatibility
- ANSI video terminal


Day 1
Went touring some local wine “rutas” which are beautiful and well marked. Got up close to a lot of Parellada, Macabeu, and Xarel-lo vines which are the principal grapes used in Cava. However, there is a lot of Tempranillo, Cabernet Sauvignon and Chardonnay as well.
As you see can these vines live in tortuous calcerous clay and limestone soils. Most of the vines are bush-trained like this one, however the red grapes seem to be more present on wire.
Unfortunately, today is Sunday and this is Spain. Everything, including the wineries, are closed. Tasting will have to wait until tomorrow.


Comet parameter: use_sparse_matrix
- Controls whether or not internal sparse matrix data representation is used.
- The sparse matrix data representation will use a significantly smaller amount
of memory/RAM for small fragment_bin_tol settings such
as 0.05 or 0.01. We're talking going from tens of GB (gigabytes) down to a few hundred
megabytes (MB)!
- In this release, the sparse matrix searches will always be slower than the classical
data representation (i.e. use_sparse_matrix = 0). So it should be used only when
memory is an issue. Alternately, the spectrum_batch_size
parameter can also be used to mitigate memory issues.
- Valid values are 0 and 1.
- To not use sparse matrix, set the value to 0.
- To use sparse matrix, set the value to 1.
- The default value is "0" if this parameter is missing.
Example:
use_sparse_matrix = 0
use_sparse_matrix = 1


| CAPSH(1) | User Commands | CAPSH(1) |
CapInh:<PHONE_NUMBER>000000 CapPrm: ffffffffffffffff CapEff: fffffffffffffeff CapBnd: ffffffffffffffff
This option provides a quick way to decode a capability vector represented in this form. For example, the missing capability from this effective set is 0x0100. By running:
capsh --decode=0x0100
we observe that the missing capability is: cap_setpcap.
| 2020-01-07 | libcap 2 |


When a jail is cloned, iocage creates a ZFS clone filesystem. In a nutshell clones are cheap lightweight writable snapshots.
A clone depends on its source snapshot and filesystem. If you’d like to destroy the source jail and preserve its clones you need to promote the clone first, otherwise the source jail cannot be destroyed.
To promote a cloned jail, simply run:
iocage promote UUID | TAG
The above step will reverse the clone and source jail relationship. Basically the clone will become the source and the source jail will be demoted to a clone.
Now you can remove the demoted jail with:
iocage destroy UUID | TAG
Updates are handled with the freebsd-update(8) utility. Jails can be updated while they are stopped or running.
To update a jail to latest patch level run:
iocage update UUID | TAG
This will create a back-out snapshot of the jail automatically.
When finished with updating and the jail is working OK, simply remove the snapshot:
iocage snapremove UUID|TAG@snapshotname
In case the update breaks the jail, simply revert back to the snapshot:
iocage rollback UUID|TAG@snapshotname
If you’d like to test updating without affecting a jail, create a clone and update the clone the same way as outlined above.
To clone run:
iocage clone UUID|TAG tag=testupdate
Upgrades are handled with the freebsd-update(8) utility. By default the upgrade command will try to upgrade the jail to the hosts RELEASE version (uname -r).
Based on the jail “type” property, upgrades are handled differently for basejails and non basejails.
To upgrade a normal jail (non basejail) to the hosts RELEASE run:
iocage upgrade UUID | TAG
This will upgrade the jail to the same RELEASE as the host.
To upgrade to a specific release run:
iocage upgrade UUID|TAG release=10.1-RELEASE
To upgrade a basejail:
Verify whether the jail is a basejail:
iocage get type UUID|TAG
Should return type “basejail”.
iocage set release=10.1-RELEASE UUID|TAG
This will cause the jail to re-clone its filesystems from 10.1-RELEASE on next jail start. This will not update the jails /etc files with changes from the next RELEASE.
Also the upgrade can be forced while the jail is online with executing:
iocage upgrade UUID|TAG
This will forcibly re-clone the basejail filesystems while the jail is running (no downtime) and update the jails /etc with the changes from the new RELEASE.
Make sure iocage_enable="YES" is set in /etc/rc.conf.
To enable a jail to auto-boot during a boot, simply run:
iocage set boot=on UUID|TAG
Boot order can be specified by setting the priority value:
iocage set priority=20 UUID|TAG
Lower value means higher boot priority.
iocage supports transparent ZFS snapshot management out of the box. Snapshots are point-in-time copies of data, a safety point to which a jail can be reverted at any time. Initially snapshots take up almost no space as only changing data is recorded.
List snapshots for a jail with:
iocage snaplist UUID|TAG
To create a new snapshot run:
iocage snapshot UUID|TAG
This will create a snapshot based on current time.
If you’d like to create a snapshot with custom naming run:
iocage snapshot UUID|TAG@mysnapshotname
iocage can enable optional resource limits for a jail. The outlined procedure should provide enough for a decent starting point.
Limit a jail to a single thread or core number 1:
iocage set cpuset=1 UUID|TAG iocage start UUID|TAG
Limit a jail to 4G DRAM memory use (limit RSS memory use can be done on-the-fly):
iocage set memoryuse=4G:deny UUID|TAG
Limit CPU execution to 20%:
iocage set pcpu=20:deny UUID|TAG iocage cap UUID|TAG
Check limits:
iocage limits UUID | TAG


In my previous post I described how to visualise simple Bézier curves. I chose Clojure
as implementation language. Unfortunately I had to ask you to jump through a couple of hoops in order to code along: installing leiningen, installing and configuring the lein-try plugin and maybe even installing the JVM.
This post will be easier for you - at least in terms of setup. You won’t have to leave your browser and can experiment with Clojure(Script)
right here on this page!
In this post we’re going to use the very useful klipse plugin. Klipse is a client-side code evaluator pluggable on any web page. It can evaluate Clojure
, ClojureScript
, ruby, javascript, python, scheme, es2017, jsx, brainfuck, c++, reagent and probably much more languages in the near future. It’s like jsfiddle on steroids, right here in the 040code blog.
Let’s start with a very simple Klipse demonstration. I’m going to map
the inc
(rement) function over the numbers 1, 2 and 3. The result will not surprise you:
(map inc [1 2 3])
What might surprise you though, is that you can change the code in the klipse evaluator and see the results immediately in your browser. So for instance change (map inc [1 2 3])
into (map inc [41 999 2])
and be amazed. Or change it into something completely different like (filter even? (range 10))
.
Defining functions and calling them? No problem:
(defn factorial [n]
(if (= 1 n)
n
(* n (factorial (- n 1)))))
(factorial 4)
Now call the factorial function with some other natural number (whole number > 0) and see the results.
For those of you who don’t know Clojure(Script)
, this function basically says:
factorial
n
be its argumentn
equals 1, return n
n
with the factorial
of (n - 1)Lisp in the browser. Embedded in this blog. No setup required. Excellent!
But hang on, better things will follow soon.
 Clojure
is designed to be a hosted language. It runs on:
Clojurescript
- a compiler for Clojure
that emits javascript - will be the tool we use in this blog to visualise Bézier curves. We are going to manipulate a html canvas right from a klipse plugin.
In my previous post I tried to explain how (simple) Bézier curves ‘work’. You might want to go there or scan the Wikipedia page on Bézier curves if you have no clue what I’m talking about. Otherwise, let’s dive right in and try to play with Bézier curves directly on this page.
;; Get a grip on the html canvas element I inserted on this page
(def canvas (.getElementById js/document "canvas-2d"))
(def ctx (.getContext canvas "2d"))
;; Draws a blue circle with radius `r` on the canvas on point [x y]
(defn draw-point [x y]
(let [r 5] ;; radius
(set! (.-fillStyle ctx) "blue")
(.beginPath ctx)
(.arc ctx x y r 0 (* 2 Math/PI))
(.fill ctx)))
;; Draws a red Bézier curve and its blue control points on the canvas
(defn draw-bezier-curve [[x1 y1] [x2 y2] [x3 y3]]
;; draw curve
(set! (.-strokeStyle ctx) "red")
(set! (.-lineWidth ctx) 2)
(.beginPath ctx)
(.moveTo ctx x1 y1)
(.quadraticCurveTo ctx x2 y2 x3 y3)
(.stroke ctx)
(.closePath ctx)
;; draw control points
(draw-point x1 y1)
(draw-point x2 y2)
(draw-point x3 y3))
;; Center the *drawing* canvas within the *html* canvas and draw the curves
;;
;; Reason for centering: keep the coordinates simple AND
;; see the complete shapes (not cropped at the edge of the html canvas)
;; make the ratio 1 to see what I mean with 'cropped at the edge'
;;
(let [wc (.-width canvas) ;; width of *html* canvas
hc (.-height canvas) ;; height of *html* canvas
ratio 0.9 ;; ratio of *html* canvas to use as *drawing* canvas
t (/ (- 1 ratio) 2) ;; translation constant
w (* ratio wc) ;; width of *drawing* canvas
h (* ratio hc) ;; height of *drawing* canvas
x (* 1/2 w) ;; x val in the middle of 0 and w
y (* 1/2 h)] ;; y val in the middle of 0 and h
;; clear *html* canvas
(.clearRect ctx 0 0 wc hc)
;; Center the *drawing* canvas in the *html* canvas
(.save ctx)
(.translate ctx (* t wc) (* t hc))
;; Draw a grey border around the *drawing* canvas
(set! (.-lineWidth ctx) 1)
(set! (.-strokeStyle ctx) "grey")
(.strokeRect ctx 0 0 w h)
;; Draw main 'anchor' points
;; This is what I meant with 'simple coordinates':
;; (draw-point 0 0)
;; (draw-point x y)
;; (draw-point w h)
;; Increasing ascending curve
(draw-bezier-curve [0 h] [w h] [w 0])
;; Swoosh
;; (draw-bezier-curve [0 y] [0 h] [w 0])
;; normal curve
;; (draw-bezier-curve [0 h] [x 0] [w h])
;; my pulse after a useless meeting
;; (draw-bezier-curve [0 y] [x y] [w y])
(.restore ctx))
Before reading further you might want to experiment a bit by (un)commenting code and seeing the results. (Un)comment the different Bézier curves and different control points in the Klipse evaluator and see what happens.
Scanning the code quickly without going into detail, this is what happens:
Since Clojure
is a hosted language, it must be able to access its host platform and libraries. Clojure
and ClojureScript
have good interop documentation so I won’t go into detail here, but we’re basically using these forms in this blog:
js/document
=> the global document object(.beginPath ctx)
=> ctx.beginPath()
Math/PI
=> 3.141592653589793(.-lineWidth ctx)
=> ctx.lineWidth
The last form is used for instance in (set! (.-lineWidth ctx) 1)
and translates to ctx.lineWidth = 1
. The more general syntax is (set! var-symbol expr)
.
The second form (.beginPath ctx)
can also have arguments. The general syntax is (.instanceMember instance args*)
in that case.
Other than that it’s basic Clojure
and HTML Canvas functionality
Thanks to the klipse plugin and a bit of preparation from my side, you can now play around with Bézier Curves in ClojureScript
directly in this blog. I do realise this post is probably not a compelling case for using ClojureScript
:
ClojureScript
shines, especially when the largest part of that small program is javascript interopClojureScript
fits large browser applications better, where you need sane state management, immutable datastructures, lazy sequences, and a fast, stable and robust languageI’m not interested in ‘religious’ discussions about technology A versus technology B. Clojure
and ClojureScript
are THE sane way forward for me, in my context. I hope to share the fun I’m experiencing with it. Goethe said it best:
It is always better to say right out what you think without trying to prove anything much: for all our proofs are only variations of our opinions, and the contrary-minded listen neither to one nor the other.
But with all this talk about language, we’re almost forgetting what it’s all about: building useful stuff and having a great time doing it.
I hope you enjoyed experimenting with Bézier curves. The Klipse Blog has several great examples of using Klipse for ‘interactive programming’, for instance to write data driven documents.
Thanks Niek for sharing the 040code repo with me. Please share your comments, suggestions and thoughts about this blog post on twitter.com/mmz_. Thanks for reading and Happy Coding!


My Favorite Places
Puerto Rico, USA
- Warm!
- Great food.
- Beautiful beaches.
- Bioluminescent Bays.
Hydra, Greece
- Lots of donkeys to ride!
- Food is amazing.
- Salty water is great for bouancy.
- People are warm and kind.
- Historic housing.
Gabrovo, Bulgaria
- Humor capital of the world.
- Winters will make you strong!
- Historical architecture.
- Post communist charm.
Busan, South Korea
- High tech and modern.
- Easy public transportation.
- Beautiful beaches and ocean views.
- Lots of ancient and preserved temples.


|
Robot
The embedded systems for UTRA's autonomous humanoid soccer-playing robot
|
This is the documentation for the embedded software for UTRA's soccerbot. This page contains some high-level descriptions of how this software works. More details for each module can be found by browsing the Modules and Data Structures sections. To return to UTRA's website, click here.
Our robot consists of 2 main computing solutions: a NVidia Jetson TX2 which runs the high-level software for controls and AI, and a STMicroelectronics 32-bit microcontroller. At a glance, the microcontroller software is responsible for:
It is important to note that all of these tasks must be accomplished with high efficiency and reliability.
A STM32F446RE microcontroller on a custom PCB designed by the electrical team was chosen as the platform for the embedded systems. The software runs ontop of FreeRTOS, a real-time OS with a priority-based preemptive scheduler. All IO is DMA-based where possible, and interrupt-based otherwise. The peripherals involved are:
The software consists of 10 threads (note: priority = 6 is the highest priority while priority = 0 is the lowest priority):
The image below shows some of the possible interactions between the components of the system once the scheduler has started. Note how the program flow is largely sequential—not much happens until a command packet is received from the PC. This is an area we are working on improving in our next design iteration.
All actuation begins once a command packet has been received from the PC (handled by the RX thread). Only 1 type of packet is supported, with a rigid format consisting of goal angles for each joint. Once an entire packet has been received, the Command thread is woken up. The Command thread has 3 duties:
Once a UART thread has received a command from the Command thread, it is woken up so that it can initiate the DMA-based information transfer to the actuator. Once the transfer has been initiated, the Command thread runs again and either (1) enqueues a command to the same UART, which it will process after its last transfer has completed, or (2) enqueues a command to a different UART, which will run immediately to begin an asynchronous transfer. This is repeated for all UARTs until all actuators goal positions have been updated, and until all positions have been read from the legs. It was decided to only use feedback from the legs on this iteration of the robot.
Orientation sensing is performed on a deterministic, time-triggered basis. This enables the design and use of digital filters since samples are fed in at a specific rate. For orientation, the MPU6050 is used to provide measurements of the acceleration (m/s^2) along the x-, y-, and z-axes of the sensor, and the angular velocity (deg/s) about these axes. Note that the coordinate system used by the sensor is different from the coordinate system used by the controls team—presently the controls team is performing these conversions in their software (Simulink and MATLAB). The controls software feeds these readings into a complementary filter to estimate orientation.
As for actuator position sensing, the process for sending commands to the motors was described above in the Actuation section. It turns out that the Command thread initiates write commands for all motors (setting the goal position for each actuator), and initiates read commands for only the motors in the legs. Thus, the current position for each motor is read directly after commanding it to go somewhere—an example of coupling we are working on breaking in the future.
After all sensors (we can generalize the smart servos as a sensor for this discussion) have been read from—or we have attempted to read from them—the TX thread will run, which sends a packet back to the PC with the sensor data.
Our plans for the future are focussed on modularizing the system to reduce coupling between system components and generally improve flexibility. One major point of discussion has been a more flexible PC interface, and a faster PC interface too since latency measurements proved 230,400 symbol/s UART was accounting for nearly 80% of the PC-MCU control cycle latency. Recent rests with Ethernet have proven the potential to reduce this number to about 5% (wow!). We are currently re-writing our code base in C++ and are using Google Test/Mock to ensure code quality and make it easier for us to develop our software with limited hardware resources (we only have 1 robot, after all!). It is our belief that if we can test all the parts of our code which do not depend on hardware or the OS from the comfort of our PCs, it will speed up our development process.
Part of the reason for these changes is self-evident while another part is more internal to our organization. Each team has to work together to make sure each others' needs are met, and these needs often evolve after development begins. Examples of this are that the controls team has indicated a desired to add pressure sensors, the electrical team is working on creating custom servo motors to reduce costs, and the reinforcement learning team has indicated a need to control the actuators via velocity control. Although these are all features we will be working on developing in the future, they also have cemented our convictions that a modular program structure will be essential to our future success.
At a high-level, our future design looks something like what's shown below. For more details, please see Issue 36 on our GitHub page.


Limit which environment variables are passed to a build step.
Environment variables passed to the build step are filtered, unless listed below.
The behavior of this filter depends on whether the environment variable is originally defined outside Jenkins:
JOB_URL
,
it will not be passed to the build step unless specified here.PATH
,
the behavior depends on the option Process environment variables handling:
If that option is set to Retain, the original value will be passed to the build step, discarding any modifications inside Jenkins.
If that option is set to Remove, the variable will not be passed to the build step.
The following table shows the effect of filtering on an environment variable:
| Behavior | Originally defined outside Jenkins | Originally defined inside Jenkins |
|---|---|---|
| Process environment variables handling: reset | Variable is reset to original value | Variable is removed |
| Process environment variables handling: removed | Variable is removed | Variable is removed |


<EMAIL_ADDRESS>Mobile Phone：86 138 1690 3400
Tel：+86 21 6598 6866-304+86 21 6598 3188-304
Address：1-5F, creative center building, No.2, 1147 Lane, Siping Road, Yangpu District, Sha


Table of contents
Introduction
Part 1: Server to Client Updates
Chapter 1: Whole Database Synchronization
Chapter 2: Delta-based Synchronization
Chapter 3: Handling Deletions
Chapter 4: Access Rights


GPIO Words¶
A GPIO API is provided for STM32 microcontrollers, with slight variations between individual microcontrollers (primarily in the number of supported GPIO’s, along with internal differences in the registers used by the API). It provides a thin layer over the hardware registers that control GPIO’s, so as to make them more user-friendly while not limiting the programmer’s capabilities.
A GPIO API is also provided for the RP2040; note that this API differs considerably from the GPIO API for STM32 microcontrollers and has no compatiblity with it. It exposes registers for manipulating GPIO input and output and for controlling GPIO interrupts.
These words are in gpio
.
STM32 Words¶
gpio
¶
GPIOA
through GPIOK
¶
These are the memory addresses of the spaces for each of the the GPIO’s, from GPIOA to GPIOI on the STM32F407 and STM32L476, from GPIOA to GPIOK on the STM32F746, and from GPIOA to GPIOE as well as GPIOH on the STM32F411.
MODER
¶
( gpio-addr – addr )
This takes a base GPIOx address and outputs a GPIOx_MODER address.
OTYPER
¶
( gpio-addr – addr )
This takes a base GPIOx address and outputs a GPIOx_OTYPER address.
OSPEEDR
¶
( gpio-addr – addr )
This takes a base GPIOx address and outputs a GPIOx_OSPEEDR address.
PUPDR
¶
( gpio-addr – addr )
This takes a base GPIOx address and outputs a GPIOx_PUPDR address.
IDR
¶
( gpio-addr – addr )
This takes a base GPIOx address and outputs a GPIOx_IDR address.
ODR
¶
( gpio-addr – addr )
This takes a base GPIOx address and outputs a GPIOx_ODR address.
BSRR
¶
( gpio-addr – addr )
This takes a base GPIOx address and outputs a GPIOx_BSRR address.
LCKR
¶
( gpio-addr – addr )
This takes a base GPIOx address and outputs a GPIOx_LCKR address.
AFRL
¶
( gpio-addr – addr )
This takes a base GPIOx address and outputs a GPIOx_AFRL address.
AFRH
¶
( gpio-addr – addr )
This takes a base GPIOx address and outputs a GPIOx_AFRH address.
INPUT_MODE
¶
This is the input port mode.
OUTPUT_MODE
¶
This is the output port mode.
ALTERNATE_MODE
¶
This is the alternate function port mode.
ANALOG_MODE
¶
This is the analog port mode.
PUSH_PULL
¶
This is the push-pull output type.
OPEN_DRAIN
¶
This is the open drain output type.
LOW_SPEED
¶
This is the low speed output speed.
MEDIUM_SPEED
¶
This is the medium speed output speed.
HIGH_SPEED
¶
This is the high speed output speed.
VERY_HIGH_SPEED
¶
This is the very high speed output speed.
NO_PULL_UP_PULL_DOWN
¶
This is the no pull up/pull down setting.
PULL_UP
¶
This is the pull up setting.
PULL_DOWN
¶
This is the pull down setting.
gpio-clock-enable
¶
( gpio-addr – )
Enable the clock for the specified GPIO.
gpio-lp-clock-enable
¶
( gpio-addr – )
Enable the low-power clock for the specified GPIO.
gpio-clock-disable
¶
( gpio-addr – )
Disable the clock for the specified GPIO.
gpio-lp-clock-disable
¶
( gpio-addr – )
Disable the low-power clock for the specified GPIO.
gpio-clock-enable?
¶
( gpio-addr – enable )
Get whether the clock for the specified GPIO is enabled.
gpio-lp-clock-enable?
¶
( gpio-addr – enable )
Get whether the low-power clock for the specified GPIO is enabled.
MODER!
¶
( mode pin gpio-addr – )
Set the specified mode for the specified pin (from 0 to 15) on the specified GPIO.
OTYPER!
¶
( otype pin gpio-addr – )
Set the specified output type for the specified pin (from 0 to 15) on the specified GPIO.
OSPEEDR!
¶
( ospeed pin gpio-addr – )
Set the specified output speed for the specified pin (from 0 to 15) on the specified GPIO.
PUPDR!
¶
( pupd pin gpio-addr – )
Set the specified pull up/pull down setting for the specified pin (from 0 to 15) on the specified GPIO.
AFRL!
¶
( af pin gpio-addr – )
Set the specified alternate function for the specified pin (from 0 to 7) on the specified GPIO.
AFRH!
¶
( af pin gpio-addr – )
Set the specified alternate function for the specified pin (from 8 to 15) on the specified GPIO.
AFR!
¶
( af pin gpio-addr – )
Set the specified alternate function for the specified pin (from 0 to 15) on the specified GPIO.
BS!
¶
( pin gpio-addr – )
Set the output for the specified pin (from 0 to 15) on the specified GPIO to on.
BR!
¶
( pin gpio-addr – )
Set the output for the specified pin (from 0 to 15) on the specified GPIO to off.
BSRR!
¶
( output pin gpio-addr – )
Set the output for the specified pin (from 0 to 15) on the specified GPIO to on or off.
MODER@
¶
( pin gpio-addr – mode )
Get the mode of the specified pin (from 0 to 15) on the specified GPIO.
OTYPER@
¶
( pin gpio-addr – otype )
Get the output type of the specified pin (from 0 to 15) on the specified GPIO.
OSPEEDR@
¶
( pin gpio-addr – ospeed )
Get the output speed of the specified pin (from 0 to 15) on the specified GPIO.
PUPDR@
¶
( pin gpio-addr – pupd )
Get the pull up/pull down setting of the specified pin (from 0 to 15) on the specified GPIO.
AFRL@
¶
( pin gpio-addr – af )
Get the alternate function for the specified pin (from 0 to 7) on the specified GPIO.
AFRH@
¶
( pin gpio-addr – af )
Get the alternate function for the specified pin (from 8 to 15) on the specified GPIO.
AFR@
¶
( pin gpio-addr – af )
Get the alternate function for the specified pin (from 0 to 15) on the specified GPIO.
IDR@
¶
( pin gpio-addr – input )
Get the input for the specified pin (from 0 to 15) on the specified GPIO.
RP2040 Words¶
gpio
¶
CTRL_NORMAL
¶
Normal control state for GPIO control
CTRL_INVERT
¶
Inverse control state for GPIO control
CTRL_FORCE_LOW
¶
Force low / disable control state for GPIO control
CTRL_FORCE_HIGH
¶
Force high / enable control state for GPIO control
VOLTAGE_3.3V
¶
Voltage set to 3.3V
VOLTAGE_1.8V
¶
Voltage set to 1.8V
DRIVE_2MA
¶
Drive strength set to 2mA
DRIVE_4MA
¶
Drive strength set to 4mA
DRIVE_8MA
¶
Drive strength set to 8mA
DRIVE_12MA
¶
Drive strength set to 12mA
PAD_SWCLK
¶
Pad index for SWCLK
PAD_SWD
¶
Pad index for SWD
GPIO_IN
¶
GPIO input register; each bit corresponds to the GPIO with an index equal to its position
GPIO_OUT
¶
GPIO output register; each bit corresponds to the GPIO with an index equal to its position
GPIO_OUT_SET
¶
GPIO output atomic bit-set register; each bit corresponds to the GPIO with an index equal to its position
GPIO_OUT_CLR
¶
GPIO output atomic bit-clear register; each bit corresponds to the GPIO with an index equal to its position
GPIO_OUT_XOR
¶
GPIO output atomic bit-xor register; each bit corresponds to the GPIO with an index equal to its position
GPIO_OE
¶
GPIO output enable register; each bit corresponds to the GPIO with an index equal to its position
GPIO_OE_SET
¶
GPIO output enable atomic bit-set register; each bit corresponds to the GPIO with an index equal to its position
GPIO_OE_CLR
¶
GPIO output enable atomic bit-clear register; each bit corresponds to the GPIO with an index equal to its position
GPIO_OE_XOR
¶
GPIO output enable atomic bit-xor register; each bit corresponds to the GPIO with an index equal to its position
GPIO_STATUS_IRQTOPROC@
¶
( index – flag )
Get interrupt to processors, after override is applied
GPIO_STATUS_IRQFROMPAD@
¶
( index – flag )
Get interrupt from pad, before override is applied
GPIO_STATUS_INTOPERI@
¶
( index – flag )
Get input signal to peripheral, after override is applied
GPIO_STATUS_INFROMPAD@
¶
( index – flag )
Get input signal from pad, before override is applied
GPIO_STATUS_OETOPAD@
¶
( index – flag )
Get output enable to pad, after register override is applied
\ applied
GPIO_STATUS_OEFROMPERI@
¶
( index – flag )
Get output enable from selected peripheral, before register override is
GPIO_STATUS_OUTTOPAD@
¶
( index – flag )
Get output signal to pad, after register override is applied
\ applied
GPIO_STATUS_OUTFROMPERI@
¶
( index – flag )
Get output signal from selected peripheral, before register override is
GPIO_CTRL_IRQOVER!
¶
( control index – )
Set interrupt state for GPIO
GPIO_CTRL_INOVER!
¶
( control index – )
Set peripheral input state for GPIO
GPIO_CTRL_OEOVER!
¶
( control index – )
Set output enable state for GPIO
GPIO_CTRL_OUTOVER!
¶
( control index – )
Set output state for GPIO
GPIO_CTRL_FUNCSEL!
¶
( function index – )
Set the function select for GPIO
GPIO_CTRL_IRQOVER@
¶
( index – control )
Get interrupt state for GPIO
GPIO_CTRL_INOVER@
¶
( index – control )
Get peripheral input state for GPIO
GPIO_CTRL_OEOVER@
¶
( index – control )
Get output enable state for GPIO
GPIO_CTRL_OUTOVER@
¶
( index – control )
Get output state for GPIO
GPIO_CTRL_FUNCSEL@
¶
( index – function )
Set the function select for GPIO
INTR_GPIO_EDGE_LOW!
¶
( index – )
Clear a raw edge low interrupt
INTR_GPIO_EDGE_HIGH!
¶
( index – )
Clear a raw edge high interrupt
INTR_GPIO_LEVEL_LOW@
¶
( index – state )
Get a level low raw interrupt state
INTR_GPIO_LEVEL_HIGH@
¶
( index – state )
Get a level high raw interrupt state
INTR_GPIO_EDGE_LOW@
¶
( index – state )
Get an edge low raw interrupt state
INTR_GPIO_EDGE_HIGH@
¶
( index – state )
Get an edge high raw interrupt state
PROC0_INTE_GPIO_LEVEL_LOW!
¶
( enable index – )
Set a level low interrupt enable for processor 0
PROC0_INTE_GPIO_LEVEL_HIGH!
¶
( enable index – )
Set a level high interrupt enable for processor 0
PROC0_INTE_GPIO_EDGE_LOW!
¶
( enable index – )
Set an edge low interrupt enable for processor 0
PROC0_INTE_GPIO_EDGE_HIGH!
¶
( enable index – )
Set an edge high interrupt enable for processor 0
PROC0_INTE_GPIO_LEVEL_LOW@
¶
( index – enable )
Get a level low interrupt enable for processor 0
PROC0_INTE_GPIO_LEVEL_HIGH@
¶
( index – enable )
Get a level high interrupt enable for processor 0
PROC0_INTE_GPIO_EDGE_LOW@
¶
( index – enable )
Get an edge low interrupt enable for processor 0
PROC0_INTE_GPIO_EDGE_HIGH@
¶
( index – enable )
Get an edge high interrupt enable for processor 0
PROC0_INTF_GPIO_LEVEL_LOW!
¶
( force index – )
Set a level low interrupt force for processor 0
PROC0_INTF_GPIO_LEVEL_HIGH!
¶
( force index – )
Set a level high interrupt force for processor 0
PROC0_INTF_GPIO_EDGE_LOW!
¶
( force index – )
Set an edge low interrupt force for processor 0
PROC0_INTF_GPIO_EDGE_HIGH!
¶
( force index – )
Set an edge high interrupt force for processor 0
PROC0_INTF_GPIO_LEVEL_LOW@
¶
( index – force )
Get a level low interrupt force for processor 0
PROC0_INTF_GPIO_LEVEL_HIGH@
¶
( index – force )
Get a level high interrupt force for processor 0
PROC0_INTF_GPIO_EDGE_LOW@
¶
( index – force )
Get an edge low interrupt force for processor 0
PROC0_INTF_GPIO_EDGE_HIGH@
¶
( index – force )
Get an edge high interrupt force for processor 0
PROC0_INTS_GPIO_LEVEL_LOW@
¶
( index – enable )
Get a level low interrupt status for processor 0
PROC0_INTS_GPIO_LEVEL_HIGH@
¶
( index – enable )
Get a level high interrupt status for processor 0
PROC0_INTS_GPIO_EDGE_LOW@
¶
( index – enable )
Get an edge low interrupt status for processor 0
PROC0_INTS_GPIO_EDGE_HIGH@
¶
( index – enable )
Get an edge high interrupt status for processor 0
PROC1_INTE_GPIO_LEVEL_LOW!
¶
( enable index – )
Set a level low interrupt enable for processor 1
PROC1_INTE_GPIO_LEVEL_HIGH!
¶
( enable index – )
Set a level high interrupt enable for processor 1
PROC1_INTE_GPIO_EDGE_LOW!
¶
( enable index – )
Set an edge low interrupt enable for processor 1
PROC1_INTE_GPIO_EDGE_HIGH!
¶
( enable index – )
Set an edge high interrupt enable for processor 1
PROC1_INTE_GPIO_LEVEL_LOW@
¶
( index – enable )
Get a level low interrupt enable for processor 1
PROC1_INTE_GPIO_LEVEL_HIGH@
¶
( index – enable )
Get a level high interrupt enable for processor 1
PROC1_INTE_GPIO_EDGE_LOW@
¶
( index – enable )
Get an edge low interrupt enable for processor 1
PROC1_INTE_GPIO_EDGE_HIGH@
¶
( index – enable )
Get an edge high interrupt enable for processor 1
PROC1_INTF_GPIO_LEVEL_LOW!
¶
( force index – )
Set a level low interrupt force for processor 1
PROC1_INTF_GPIO_LEVEL_HIGH!
¶
( force index – )
Set a level high interrupt force for processor 1
PROC1_INTF_GPIO_EDGE_LOW!
¶
( force index – )
Set an edge low interrupt force for processor 1
PROC1_INTF_GPIO_EDGE_HIGH!
¶
( force index – )
Set an edge high interrupt force for processor 1
PROC1_INTF_GPIO_LEVEL_LOW@
¶
( index – force )
Get a level low interrupt force for processor 1
PROC1_INTF_GPIO_LEVEL_HIGH@
¶
( index – force )
Get a level high interrupt force for processor 1
PROC1_INTF_GPIO_EDGE_LOW@
¶
( index – force )
Get an edge low interrupt force for processor 1
PROC1_INTF_GPIO_EDGE_HIGH@
¶
( index – force )
Get an edge high interrupt force for processor 1
PROC1_INTS_GPIO_LEVEL_LOW@
¶
( index – enable )
Get a level low interrupt status for processor 1
PROC1_INTS_GPIO_LEVEL_HIGH@
¶
( index – enable )
Get a level high interrupt status for processor 1
PROC1_INTS_GPIO_EDGE_LOW@
¶
( index – enable )
Get an edge low interrupt status for processor 1
PROC1_INTS_GPIO_EDGE_HIGH@
¶
( index – enable )
Get an edge high interrupt status for processor 1
PADS_BANK0_VOLTAGE_SELECT!
¶
( voltage – )
Select voltage for pads
PADS_BANK0_VOLTAGE_SELECT@
¶
( – voltage )
Get voltage for pads
PADS_BANK0_OD!
¶
( disable index – )
Set output disable
PADS_BANK0_IE!
¶
( enable index – )
Set input enable
PADS_BANK0_DRIVE!
¶
( strength index – )
Set drive strength
PADS_BANK0_PUE!
¶
( enable index – )
Set pull up enable
PADS_BANK0_PDE!
¶
( enable index – )
Set pull down enable
PADS_BANK0_SCHMITT!
¶
( enable index – )
Set schmitt trigger
PADS_BANK0_SLEWFAST!
¶
( fast index – )
Set slew rate control


We have three positive integers $a$, $b$ and $c$. You don't know their values, but you know some information about them. Consider all three pairwise sums, i.e. the numbers $a+b$, $a+c$ and $b+c$. You know exactly two (any) of three pairwise sums.
Your task is to find such three positive integers $a$, $b$ and $c$ which match the given information. It means that if you consider $a+b$, $a+c$ and $b+c$, two out of all three of them are given in the input. Among all such triples, you must choose one with the minimum possible sum $a+b+c$, and among all triples with the minimum sum, you can print any.
You have to process $q$ independent queries.
The first line of the input contains one integer $q$ ($1 \le q \le 1000$) — the number of queries.
The next $q$ lines contain queries. Each query is given as two integers $x$ and $y$ ($2 \le x, y \le 2 \cdot 10^9$), where $x$ and $y$ are any two out of the three numbers $a+b$, $a+c$ and $b+c$.
For each query print the answer to it: three positive integers $a$, $b$ and $c$ consistent with the given information. Among all such triples, you have to choose one with the minimum possible sum $a+b+c$. Among all triples with the minimum sum, you can print any.
3 123 13 2 2<PHONE_NUMBER><PHONE_NUMBER>
111 1 12 1 1 1<PHONE_NUMBER> 1 1


Your session is locked
Due to inactivity your session has timed out, please enter your password to continue.
Email
Password
Not Mike Jones?
Unlock