how to
Win at Life!
success, fame, power.
sex, ethics, & integrity.
Step 1: Breathe
Step 2: Drink Water
Step 3: Eat Once a Day
If you do not want to be eaten, do not eat things that would not want to be eaten.
Step 4: Babymaking* 😉
Find a willing player.
* This does not always make babies.
Step 5: Make Dance
Moving your body is how you express your thoughts.
What you do with your body is what others will come to know you for. So do well.
You can make art, songs, or stories; You can make science, tools, or discoveries.
Who are you?
Science: Knowing Games
If you must win one game, it should be the game of making games.
If you can make any game, then you will know how to win any game.
Games have goals and play.
Play is a safe space to try new dances.
Goals try to get players to do a type of dance.
The simplest goal is to not "die" in the game.
Oh look, you've fallen into water and cannot breathe.
If you do not push the button to swim to the top, you'll lose the game.
 I told you breathing is important.
You also learned the most basic dance: rapid poking.
The goal of the next game is to make the game you just won.
Bend these Rules if it is more Moral to do so
GAME OVER


Viewing Form Records
How to view records which have been submitted to a form created using the Form and List module.
- Select Show Records from the Form and List module actions menu to view the form records.
- Click the Show Form link to return to the module.


Creating an edition is hard enough, but if one wants to link up people, places and corporates with controlled vocabularies, the task becomes tedious. This application should help people link up the internal vocabularies (identified by a key- or a name-value) with controlled vocabularies from other authorities, e.g. Geonames, Virtual Internet Authority File, or Wikidata. (More authorities may be available soon.)
For this purpose, one needs a link table from the internal key value to the URI provided by these authorities. This table may also be formulated using RDF with the predicate owl:sameAs.
Here are the working steps:
Please insert the query data into an Excel table, using this template.
The Name columns contain the key value (or the name value) of your projects, e.g. "Einstein, Albert".
The Query columns contain the query string, e.g. "Albert Einstein". Please note that the query string will be sent to the different services. So, it may be required to discard accents.
The Authorities columns contain the desired authorities that are queried with this application. Valid values are : "viaf", "geonames" and "wikidata". If this field is left blank, then all services available will be used. If you want to specify more than one service, use " " (space) to delimit the different authorities.
The Type columns specify the types of the vocabularies. Valid values are "Person", "Place" and "Corporate". If you are not sure, you can leave the field blank.
The Info columns contain just additional information that might be used to specify the vocabularies. E.g. one can fill in "Physicist" to announce that the person in query is a physicist; or one can add birth- and deathdates and other valuable information. This column will not be used for query, but it will be displayed in the editing window.


Settings
Permissions
You can:
- sign contracts
- read, print and download information
- submit and save information
- receive email alerts
You cannot:
- add and remove users
- set and change a users' permissions
- display your contact details in the service for others to see
Contact your organisation's 'provider support user' if you want to add these permissions
Account settings
If you want to:
- update your contact information
- change your password
you need to use our security service (Identity Authentication Management Service - Idams)
Manage users
If you want to:
- manage your existing users
- grant new users access
- remove access rights
You need to use Idams


{% load widget_tweaks %}
Enter the lengthy URL you want to shorten.
Choose the service you want to use.


SECTION: 650-JBoss TITLE: JBoss QUESTION: Does Jetty/JBoss support single sign on? Yes, Jetty/JBoss supports single sign on. Single sign on, or "sso" as it is frequently referred to, allows a user who is authenticated by one web application to be automatically accepted as authenticated by others.
To use sso, each participating web application must have a WEB-INF/jetty-web.xml
file. Each file must specify the same name for the shared single sign on realm. The following is an example of the contents of a WEB-INF/jetty-web.xml
file that enables sso:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure 1.2//EN" "http://jetty.mortbay.org/configure_1_2.dtd">
<Configure class="org.mortbay.jetty.servlet.WebApplicationContext">
<Call name="getRealm">
<Set name="SSORealmName">MY-SSO-REALM-NAME</Set>
</Call>
</Configure>


GRX
Dashboard
Project
ƒ
New project
Reopen
Project 1
Project 2
Project 3
Clear list
User Name
Quick settings
Profile
Security
Exit
all items
0
websites
0
IT Server Events
2
Feedback Form
1
SQL Databases
0
Automation
0
all items
0
Feedback
Name
Email
Phone
Select a favorite Pet
Cats
Dogs
Birds
Pet Name: #N
Interests
None
Walking
Running
Swimming
Biking
Other
How many pets do you have?
None
1
2
3
4
5
Comments
I agree to the terms of the site


Width and Height
Some elements attempt to help you control the height and width of items and there are a lot of options for how to accomplish this.
Width
w-(SIZ)
- SIZ
0
0.5
1
1.5
2
2.5
3
3.5
4
5
6
7
8
9
10
11
12
14
16
20
24
28
32
36
40
44
48
52
56
60
64
72
80
96
1/2
1/3
2/3
1/4
2/4
3/4
1/5
2/5
3/5
4/5
1/6
2/6
3/6
4/6
5/6
1/12
2/12
3/12
4/12
5/12
6/12
7/12
8/12
9/12
10/12
11/12
auto
px
full
screen
min
max
- SIZ
The width is probably one of the richest classes in Tailwind with tons of options. You can see that we have the traditional sizes from 1 to 96, but we also have fractional widths.
There's a lot of other intersting parameters that you can use. So, for example auto
will let the browser decide the width of the content, px
will give us the usual 1 pixel width, full
will give us a width of 100%, screen
gives us 100% of the width of the viewport, which is normally the browser width.
Finally, we have a couple of interesting values here. min
gives us the width of the smallest word in our content, while max gives us the size of the largest word.
In the example, you'll note that I left a few values out because they're difficult to visualize on the layout I've designed, but please play around with them.
Height
h-(SIZ)
- SIZ
0
0.5
1
1.5
2
2.5
3
3.5
4
5
6
7
8
9
10
11
12
14
16
20
24
28
32
36
40
44
48
52
56
60
64
72
80
96
1/2
1/3
2/3
1/4
2/4
3/4
1/5
2/5
3/5
4/5
1/6
2/6
3/6
4/6
5/6
1/12
2/12
3/12
4/12
5/12
6/12
7/12
8/12
9/12
10/12
11/12
auto
px
full
screen
- SIZ
Height is pretty similar to width with a lot of the same values, except that it doesn't have the min and max values because they don't make as much sense.
Height is relative so in the example, you'll note that I'm just giving you a simple layout so you can play around with it.
Notice that there is a container with a value of screen for the height. That makes the layout the size of the viewport. The height is usually relative to the size of a container and it won't show up, so without the container height, the other heights won't show up properly.
Min Width
min-w-(SIZ)
- SIZ
0
full
min
max
- SIZ
The min width parameter lets you specify the minimum width an element should have. It has only four options.
0
is meant to reset most elements, full
is meant to make the minimum width the size of the container, min
means that it will try to fit the smallest word possible and max
will try to fit all of the words.
In our example, notice that we've set the width of this element to 10, and if we didn't have these minimum utilities it would end up making our box too small.
Max Width
max-w-(SIZ)
- SIZ
0
none
xs
sm
md
lg
xl
2xl
3xl
4xl
5xl
6xl
7xl
full
min
max
prose
screen-sm
screen-md
screen-lg
screen-xl
screen-2xl
- SIZ
You'd think that the max-width parameters would be similar to the min-width paramaters, but there are lots more options here. In addition to the traditional sizes, you also have the option here of sizing to different viewport sizes.
There's one REAL interesting option here called prose. It tries to set the width of the container so that the text fits nicely. you have to see it to believe so head on over to our example.
Min Height
-
min-h-(SIZ)
- SIZ
0
full
screen
Let's talk about min height. It makes the object attempt to have a size that it doesn't go below.
There's only a few options here, you can set that to 0, which is a reset. full
means that the height of the element will fill the container, finally screen will try to make it fit the height of the viewport; which is usually the height of the browser.
Max Height
max-h-(SIZ)
- SIZ
0
px
full
screen
0.5
1
1.5
2
2.5
3
3.5
4
5
6
7
8
9
10
11
12
14
16
20
24
28
32
36
40
44
48
52
56
60
64
72
80
96
- SIZ
With Max Height, the height of the element will try to be no bigger than the amount specified.
max-height
is one of those parameters that doesn't make any sense unless you see it in context. So in our example, it's important that I'm using a maximum height value together with the overflow classes.


| Created: | {{ container.Created }} |
| Path: | {{ container.Path }} |
| Args: | {{ container.Args }} |
| Exposed Ports: |
|
| Environment: |
|
| Publish All: | {{ container.HostConfig.PublishAllPorts }} |
| Visible Ports: |
|
| Hostname: | {{ container.Config.Hostname }} |
| IP-Address: | {{ container.NetworkSettings.IPAddress }} |
| Cmd: | {{ container.Config.Cmd }} |
| Entrypoint: | {{ container.Config.Entrypoint }} |
| Volumes: | {{ container.Volumes }} |
| Image: | {{ container.Image }} |
| State: | {{ container.State|getstatetext }} |


Library: Foundation
Package: Notifications
Header: Poco/NotificationCenter.h
Description
A NotificationCenter is essentially a notification dispatcher. It notifies all observers of notifications meeting specific criteria. This information is encapsulated in Notification objects. Client objects register themselves with the notification center as observers of specific notifications posted by other objects. When an event occurs, an object posts an appropriate notification to the notification center. The notification center invokes the registered method on each matching observer, passing the notification as argument.
The order in which observers receive notifications is undefined. It is possible for the posting object and the observing object to be the same. The NotificationCenter delivers notifications to observers synchronously. In other words the postNotification() method does not return until all observers have received and processed the notification. If an observer throws an exception while handling a notification, the NotificationCenter stops dispatching the notification and postNotification() rethrows the exception.
In a multithreaded scenario, notifications are always delivered in the thread in which the notification was posted, which may not be the same thread in which an observer registered itself.
The NotificationCenter class is basically a C++ implementation of the NSNotificationCenter class found in Apple's Cocoa (or OpenStep).
While handling a notification, an observer can unregister itself from the notification center, or it can register or unregister other observers. Observers added during a dispatch cycle will not receive the current notification.
The method receiving the notification must be implemented as
void handleNotification(MyNotification* pNf);
The handler method gets co-ownership of the Notification object and must release it when done. This is best done with an AutoPtr:
void MyClass::handleNotification(MyNotification* pNf) { AutoPtr<MyNotification> nf(pNf); ... }
Alternatively, the NObserver class template can be used to register a callback method. In this case, the callback method receives the Notification in an AutoPtr and thus does not have to deal with object ownership issues:
void MyClass::handleNotification(const AutoPtr<MyNotification>& pNf) { ... }
Member Summary
Member Functions: addObserver, countObservers, defaultCenter, hasObserver, hasObservers, postNotification, removeObserver
Constructors
NotificationCenter
Creates the NotificationCenter.
Destructor
~NotificationCenter
Destroys the NotificationCenter.
Member Functions
addObserver
void addObserver(
const AbstractObserver & observer
);
Registers an observer with the NotificationCenter. Usage:
Observer<MyClass, MyNotification> obs(*this, &MyClass::handleNotification); notificationCenter.addObserver(obs);
Alternatively, the NObserver template class can be used instead of Observer.
countObservers
std::size_t countObservers() const;
Returns the number of registered observers.
defaultCenter
static NotificationCenter & defaultCenter();
Returns a reference to the default NotificationCenter.
hasObserver
bool hasObserver(
const AbstractObserver & observer
) const;
Returns true if the observer is registered with this NotificationCenter.
hasObservers
bool hasObservers() const;
Returns true if and only if there is at least one registered observer.
Can be used to improve performance if an expensive notification shall only be created and posted if there are any observers.
postNotification
void postNotification(
Notification::Ptr pNotification
);
Posts a notification to the NotificationCenter. The NotificationCenter then delivers the notification to all interested observers. If an observer throws an exception, dispatching terminates and the exception is rethrown to the caller. Ownership of the notification object is claimed and the notification is released before returning. Therefore, a call like
notificationCenter.postNotification(new MyNotification);
does not result in a memory leak.
removeObserver
void removeObserver(
const AbstractObserver & observer
);
Unregisters an observer with the NotificationCenter.


Statistical
Computing
Lec10 IO
Xi (Rossi) LUO
Department of Biostatistics and Data Science
School of Public Health
The University of Texas Health Science Center at Houston
IO
- R provides many IO capabilities
- Versatile function scan for text and internet, but it reads all at once
-
readline read in a single line from keyboard or file
-
cat slightly more customizable than print
Text vs Binary File
- Text file: ASCII characters or other coding, e.g. UTF-8
- Binary: 0/1 with specific formats (e.g. jpeg)
- We will focus on text files
- Reading binary files can be built on other C libraries
Connection
- Reading files starts with opening connections file
- While open, readLines reading one line at a time and move to next line
-
seek rewind to any position of the file
- Remember to close connections
- Writing files is similar, replacing readLines with writeLines
Example
> conn <- file("z1", "r")
> readLines(conn, n=2)
[1] "line 1" "line 2"
> seek(con=conn, where=0)
> readLines(conn, n=1)
[1] "line 1"
TCP/IP
- IP address: unique identifier for your device (intra vs internet)
- DNS: translate addresses to IPs, e.g. google.com
- Port: different applications uses specific ports
- Socket: connection between device A and B
- Client/Server model: servers listening incoming requests from clients on certin port and sending
responses back
Functions
-
readLines, writeLines: receive and send line by line
-
serialize, unserialize: convert R object to chracter string and send
-
readBin, writeBin: sending in binary form
- Other functions: socketConnection, socketSelect


Hi My name is Osborn Del Angel and I am originally from Vancouver, WA but now I currently live in Portland, OR with my wife and my daughter Olive. I've been working blue collar jobs since I've left highschool and I never went to college. I've done almost everything you can think of from construction to manufacturing. I didn't think higher learning was for me until I met Code Fellows. Mostly because I didn't have the means to go to college and I thought going to "shows" was going to be my life, but ever since my daughter was born I felt like I needed more than a paycheck bi-weekly. A career in Software Development is my thing now and I never want to go back. This is something that I genuinely love doing and I can't wait to continue doing for a long time.


Sorting
Use q-grid sorting model to sort single and multiple data-bound columns.
Sort Direction
Use +
and -
symbols to identify the direction of sorting.
<q-grid [sortBy]="['+gender', '-name.last']"></q-grid>
Multiple column sorting
By default multiple sorting order depends on column order, to apply order by click sortTrigger
array should be reset.
myGridModel.sort({
resetTrigger: []
});


Of Stereotypes and Threat
April 4, 2015
Stereotype Threat is a really interesting look into the human psyche, coined by Steele & Aronson in 1995. They found that African American males in college performed more poorly than their White counterparts when their races were emphasized, while they performed equally or better without any emphasis. While I'm not very skilled in examining social behavior myself, I have definitely seen this idea in the real world.
I have definitely experienced this and have seen it myself. One's racial background is made a pretty big deal of when applying to universities from highschool. While touring all of the UC's and other public universities, I kept hearing over and over again how the percentage of Asian students at the university was 40%. It was clear that the number of Asian students the public universities could accept was capped, and that being Asian on its own would put me into a highly competitive field. This alone affected my psyche and attitude going into the applications process, and I believe the effect was negative. Stereotype Threat is very real and is everywhere.


The other day I had some harsh words to say about the out of print pamphleteer Dobson's song-writing skills. “No one with any sense has ever listened to a Dobson song more than once”, I wrote. Well, it seems I was mistaken. I was rummaging in a satchel that I found abandoned on a canal towpath, and I came upon indisputable evidence that at least one sensible person admired a Dobson song so much that they recorded a cover version of it. The song in question is one of the pamphleteer's settings from the Book of Isaiah.
Hooting Yard readers are a wise bunch, and I would not be surprised to be deluged with letters accusing me of making up the whole satchel-rummaging incident in some foolhardy attempt to chivvy up Dobson's reputation. I therefore arranged for a local snapper to take a snapshot of what I found, as proof.
am now going to have to go and lie down in a darkened, cork-panelled room while I mull over what this extraordinary artefact tells us about (a) Dobson, and (b) Tiny Enid.
Thanks, by the way, to boynton.


Skilled in C++, Python and Linux Command Line
A Collection of some of my Recent Photographs
My Resume
My GitHub
A yellow workspace with some scissors, pencils, and other objects.
Feel free to message me
My most recent photographs
DM or follow me


--- comments: true layout: post title: "Voice, Part 2" date: 2011-04-25T00:48:00+10:00 categories: - fb - voice - but but but - mild rant - prayers - poetry ---


COVID-19 Data
Finland
Healthcare Districts
Zero ground
Contact
COVID19
Total patients
Deaths
Recovers
District with most infections
HUS
Time from Zero day


It seens Ultrasphinx plugin for Ruby on Rails doesn’t know how to deal with Decimal data type from MySQL.
You can use a Decimal column for indexing, but when you need to make thecolumn sortable it comes the problem. As you know, faceting is on for numeric and date fields and to add the sortable feature to it, we need to pass a hash with
{:sortable => true}
Ok, then you run rake tasks to rebuild your configuration file and indexes and try to sort the search by the Decimal column and we got an error saying our column isn’t sortable.
You can check isn’t generating the _sortable sufix by looking the ultrasphinx configuration file. All other sortable fields have their _sortable sufix added to ti, except by the decimal field.
I’ll report it as soon as possible to Evan Weaver, the plugin’s owner, or maybe try to fix it by myself.
Updated: June, 16
I fixed by addingÂ ‘decimal’ => ‘float’ in the TYPE_MAP inside the fields.rb file of ultrasphinx plugin.


"SANDALS" Mentioned only in Mark 6:9 and Acts 12:8. The sandal was simply a sole, made of wood or palm-bark, fastened to the foot by leathern straps. Sandals were also made of seal-skin (Ezekiel 16:10; lit. tahash,“leather;” A.V., “badger’s skin;” R.V., “sealskin,” or marg.,“porpoise-skin”). (See SHOE.)
"SANDALS" Mentioned only in Mark 6:9 and Acts 12:8. The sandal was simply a sole, made of wood or palm-bark, fastened to the foot by leathern straps. Sandals were also made of seal-skin (Ezekiel 16:10; lit. tahash,“leather;” A.V., “badger’s skin;” R.V., “sealskin,” or marg.,“porpoise-skin”). (See SHOE.)


I have worked with countless technologies such as:
I'm just a portuguese cool dude, living in London, working at Flubit.com with an enormous passion for web development! I am mainly a PHP and Laravel developer, but I also got plenty of experience working with other tools and frameworks such as Notepad, Office Suite and Paint.
I'm quite social, so if you just want to stalk me just choose one of these.


 Note, too, the hummingbird which is about to become its lunchtime snack.
Taken from The Universe or The Infinitely Great and the Infinitely Little by F A Pouchet M.D. (1882)


Come and check out first service to you. A champion Builder that shows you how your stats are affected by your champion's level, masteries runes and items!
Our services will be updated as Riot launches new patches.
We made this for the community. We will use your feedback to improve our app and shape it to the community needs.
We use RIOT's API to make this platform run. Our content will always be free.
LANDING_GALERY_DESCRIPTION


Score:
Status:
Change the way Tetris is played!
In a traditional Tetris setup, you play as a defender, trying to position blocks correctly and remain alive as long as possible. This version allows you to customize both roles: defending (as a human or AI) and attacking (picking blocks as a human, AI or randomly). You can even change them during the gameplay.
All of these possibilities can be used in a networked multiplayer game as well, resulting in a total of 12 games in 1!
Key Bindings:
Left/Right - Shift Up - Rotate
Down - Drop by a row Space - Drop to bottom
(0~9) - Select attacking block
This configuration is known as .
https://.firebaseio.com/tetris/


Please wait while your query is being executed. It may take up to 3 minutes to finish. The page will be automatically refreshed when it is ready.
Please provide feedback on how interesting the following tweets are to the query.
Note that the order of the results are in random order.
{{ data | json }}


--- title: Computer Vision in Microbiology keywords: fastai sidebar: home_sidebar summary: "Detecting Antimicrobial Disks and Zone of Inhibition with Detectron2" description: "Detecting Antimicrobial Disks and Zone of Inhibition with Detectron2" nb_path: "nbs/index.ipynb" ---
Under construction!!
Detect, measure and classify Antibiogram. A training pipeline with composite images and Mask RCNN.
“In the case of large consumer Internet companies where you have billions of users, you have a lot of data, you don't worry about it. They just take the average and it kind of works. But in a case of other industry settings where we don't have big data, if just a small data, very small, maybe in the level of a hundred defective parts or a hundred examples of a defect. If you have only one hundred examples, these little labeling errors, if 10 of your hundred labels are wrong, that actually is 10% . That has a big impact so how do you clean this up what you're supposed to do? This is an example of the of the types of things that my team in Landing AI are wrestling to deal with, small data which comes up all the time once you're outside consumer internet .”
As machine learning practitioner, moving from online courses to real world projects, my experiences so far has great resemblance with what Andrew Ng shared in Lex Friedman’s podcast.
In a recent project that I participated in the field of microbiology, one of the deliverable consisted in using computer vision to measure the size of “zone of inhibition” in the antibiogram test(please see below for explanation of antibiogram). We had shortage of images to train the model, which initially didn't exceed 50 images. There are several reasons to this which I will discuss more in future blogs. However, my project echos Andrew’s comments and I have heard and read similar viewpoints from other practitioners. Data outside consumer internet is scarce and sometimes hard to come by. A success factor in my project can be accredited to help from team members with domain knowledge in the field. This has led the creation of composite images of antibiograms with very similar features and characteristics available in real images.
Antibiogram Test, is a widely used tool in microbiology to find the level of antimicrobial susceptibility. Part of this process consists of measuring "zone of inhibition", which is currently performed by clinicians manually using a "ruler" or "digital calliper". In some way this is impractical and prone to error. For example, the tiny ruler number could lead to misreading.
This repo contains the code to train a model to detect zone of inhibition and measure its size using Mask RCNN(Detectron2). For more information on how to automate composite image creation please visit this page.
Antibiogram profiles antibiotic resistance, it tests if a specific type or sub-types of pathogens is vulnerable to antibiotics. Antibiotics eliminates pathogens, different pathogens requires different antibiotics. Bacteria, viruses, fungi and parasites are pathogens that cause diseases. These microorganisms can also mutate in ways that will render antibiotics uased to cure the infections they cause ineffective. Antibiogram report helps doctors to choose the correct antimicrobial treatment for the patient. And in the event of urgent public health threat, antibiogram enable pathogen researchers in identifying and combating the spread of drug-resistant organisms.
The following image depicts a simplified antibiogram testing process for quick illustration(for additional information see reference below):
"At the patient level, a drug susceptibility report can be provided to the doctor to help choose the correct antibiotic. A sample from the patient is sent to the lab, where a technician tests it against a panel of antibiotics at various levels of concentration (to see how much of the drug is needed to kill the pathogen). Finally, the samples are observed for visible growth of the pathogen. They are looking for the Minimum Inhibitory Concentration (MIC), the lowest concentration of the drug that shows no pathogen growth."
"Depending on the pathogen/antibiotic combination, there are predetermined levels of concentration (think of this as a "dose") required to have the pathogen labeled as "susceptible". These are called breakpoints and serve as a boundary between the four possible labels: Susceptible, Susceptible - Dose Dependent, Intermediate, and Resistant. The final report will give the healthcare team vital information to help them choose the best antibiotic for their patient."
This repo was built using the mighty "fastai nbdev". I strongly recommend everyone to try it out!
For additional information please see below reference.


Tutorial 6 - Page Editor Basics (1)
When going through Maqetta's tutorials, it is suggested that you have two side-by-side
browser windows open, one showing the tutorial, and the other where you run the application
and perform the steps listed in the tutorial.
This tutorial covers the following topics:
- Undo/Redo
- Using the widget filter
- Adding HTML elements to the page
- Add an image to the page
- Selecting widgets
- Data entry popup (available for many widgets)
- Cut/Copy/Paste/Delete
- Context menus
- Resizing widgets
- Moving widgets
- Alt/Option key for copying widgets
- Save and Save As
Undo/Redo
- ⇒
Issue a Create Desktop Application... command. In the Create Desktop Application dialog,
click the Create button to create a new file with the default filename.
A new blank HTML file is opened in the page editor
- ⇒
In the Palette, click on the Controls section to open that section, then
click on the the subsection labelled TextBox.
- ⇒
Drag a TextBox widget onto the canvas.
- ⇒
Click on the Undo icon on the toolbar. This will undo the previous
operation, causing the TextBox widget to disappear. Now click on the Redo icon .
The TextBox widget will re-appear.
Maqetta supports multiple undo. Operations can be undone
back to the last Open or Save operation.
- ⇒
Click on the file tab's close button -
- to close the page editor. (Click Discard on the Save/Discard/Cancel alert that appears.)
Using the widget filter
Sometimes its faster to search for a widget by typing text into the filter box at the top of the palette.
- ⇒
Issue a Create Desktop Application... command. In the Create Desktop Application dialog,
click the Create button to create a new file with the default filename.
- ⇒
Find the widget filter box at the top of the Palette:
- ⇒
Start typing the word "calendar" into the filter textbox.
As you type, you should see a filtered list of widgets until (most likely)
only a single Calendar widget appears in the Palette.
- ⇒
Drag a Calendar widget onto the canvas.
- ⇒
Repeat this operation for ColorPalette and ComboBox:
Start to type "ColorPalette" into the filter textbox until you see a ColorPalette widget.
Then drag a ColorPalette widget onto the canvas.
Start to type "ComboBox" into the filter textbox until you see a ComboBox widget.
Then drag a ComboBox widget onto the canvas.
- ⇒
Remove all text from the filter textbox, so that the filter textbox is empty.
The full set of widgets should reappear.
If you use the filter textbox, be sure to remember to remove the text content
when done so that the full list of widgets will reappear.
- ⇒
Click on the file tab's close button -
- to close the page editor. (Click Discard on the Save/Discard/Cancel alert that appears.)
Adding HTML elements to the page
- ⇒
Issue a Create Desktop Application... command. In the Create Desktop Application dialog,
click the Create button to create a new file with the default filename.
- ⇒
In the Palette, click on the HTML section to open that section, then
click on the the subsection labelled Common.
- ⇒
Drag a
 widget onto the canvas.
- ⇒
Drag a  widget onto the
 on the canvas. This will put the  inside the
.
- ⇒
Enter some text for the  and hit Return.
- ⇒
Click on the HTML section title to close the section.
Maqetta supports both widget libraries (such as Dojo) and
raw HTML elements such as
, ,
,
,
, <input>, <select> and <button>.
You can richly style raw HTML element using CSS using Maqetta's
various CSS-focused property palettes (Layout, Margins, Padding, Background, Borders, Fonts/Text).
Add an image to the page
- ⇒
Go to the Files palette is in the lower-left section of the Maqetta workspace.
Click on the "+" icon to the left of the word "samples" to open up the samples folder,
making sure that you can see file "SampleBanner.jpg".
If the samples folder is scrolled out of view, you can either adjust the scrollbar
on the Files palette to bring the samples folder into view, or drag on the
horizontal splitter that is just above the Files palette to give more vertical space
to the Files palette.
- ⇒
Put the mouse over file "SampleBanner.jpg" and then drag it from the
Files palette and drop onto the page canvas.
To add your own images to a composition, you first have to upload
your images into your Maqetta cloud workspace, possibly using
the Upload files... command found on the context menu when the mouse
is over one of the files listed in the Files palette.
- ⇒
Click on the file tab's close button -
- to close the page editor. (Click Discard on the Save/Discard/Cancel alert that appears.)
Selecting widgets
- ⇒
Issue a Create Desktop Application... command. In the Create Desktop Application dialog,
click the Create button to create a new file with the default filename.
- ⇒
Drag/drop an HTML
 element, then drag/drop a TextBox and Button widget,
and finally a Calendar widget.
(You learned how to add these widgets earlier in the tutorial.)
You can select a widget in multiple ways, some of which you will try out in the following steps:
- ⇒
Click on the TextBox widget. You should a blue rectangular selection box around the TextBox.
- ⇒
Go into the Outline palette and click on the Button widget's entry in the Outline palette.
On the canvas, you should see that the Button now has the blue selection box.
- ⇒
Maqetta provides an area select feature, where you can drag out a rectangle,
and all widgets that are fully inside that rectangle get selected.
To try this out, put the mouse on the canvas in the white part of the canvas
to the right and below
the Button widget. Then drag out a selection rectangle from bottom-right to top-left
that totally surrounds
the Button, and then let up the mouse. The Button should be selected.
The current release of Maqetta has a shortcoming where the area select feature
has difficulty if the selection rectangle extends to the edge of the canvas.
This problem is on the list of issue to address in future releases.
- ⇒
On the page editor's toolbar, press and hold on the down arrow just to the right of
the "Source" button (which might say "Split-H" or "Split-V") and choose the "Split Vertically" command.
Your screen will now show side-by-side view, with the visual design canvas on the left,
and the document's HTML source code on the right. In the HTML source code view,
click on the line of HTML that looks like this:
<input type="text" data-dojo-type="dijit.form.TextBox"></input>
You should see a blue selection box around the TextBox to show that it is selected.
On the canvas, you can use
Ctrl key (Command key on Mac) to add additional widgets to the selection.
Data entry popup (available for many widgets)
- ⇒
In the Palette, click on the Controls section to open that section, then
click on the the subsection labelled Buttons.
- ⇒
Drag a Button widget onto the HTML page canvas to add a button to the page.
Notice that Maqetta automatically pops up the widget's data entry popup so that you
can immediately define the text for the button's label.
Maqetta automatically prompts the user for initial data for a number of widgets,
such as Button, ComboBox, DataGrid, Tree, ,  and
 -
.
- ⇒
Enter some text (e.g., "Press me") and hit Return. You will see a button with the label you provided.
For some widgets, you can close the data entry by simply hitting Return.
For widgets that accept multi-line text, however, you have to click the OK button.
- ⇒
Double-click on the Button widget. Notice that Maqetta re-opens the data entry popup.
- ⇒
Change the text to say "Click me" and then click somewhere outside of the data entry popup.
For some widgets, you can close the data entry by simply clicking
away from the popup.
- ⇒
In the Palette, click on the Containers section to open that section.
- ⇒
Drag a TabContainer widget onto the HTML page canvas.
Click on the "?" icon in the lower-left corner of the data popup dialog.
You should see a short explanation of the expected format of the
data for the TabContainer widget.
For each widget that includes a data entry popup,
the "?" icon will explain the required format for the widget's data.
- ⇒
In the data entry popup for TabContainer, enter this text:
North, South, East, West
Then click OK to accept the values. Notice that the TabContainer has four sections
labelled North, South, East and West.
- ⇒
In the Palette, click on the HTML section to open that section, then
click on the the subsection labelled Common.
- ⇒
Drag an  widget onto the HTML page canvas.
Enter the following text:
Birth date (YYYY/MM/DD)
- ⇒
Notice that two radio buttons appear: Plain text and HTML markup.
Click on the radio button for HTML markup, then click on the OK
button for the data entry popup. On the canvas, the parenthetical
text "(YYYY/MM/DD)" should be italicized.
Many widgets allow their content to be rich HTML content.
You can tell Maqetta to treat the widget's data as rich HTML content
by clicking on the "HTML markup" radio button.
- ⇒
Click on the file tab's close button -
- to close the page editor. (Click Discard on the Save/Discard/Cancel alert that appears.)
Cut/Copy/Paste/Delete
- ⇒
Issue a Create Desktop Application... command. In the Create Desktop Application dialog,
click the Create button to create a new file with the default filename.
- ⇒
Drag a TextBox and a Button widget onto the canvas.
When the data popup appears for the Button widget,
enter "New", then click OK or click away from the data popup to close it.
- ⇒
Drag a second Button widget onto the canvas. When the data popup appears,
enter "Edit" as the value for the widget, then click OK or click away from the data popup to close it.
- ⇒
With the second Button selected, find the copy icon on the page editor toolbar
.
Click on the copy icon to put the second Button onto the clipboard.
- ⇒
Find the paste icon on the page editor toolbar
.
Click on the paste icon, then move the mouse over the canvas and position it
just to the right of the second Button. Then click on the canvas.
Note that the second Button has been duplicated.
 This is because Maqetta needs to know where in your
document to perform the paste. Maqetta uses the (x,y) location of the mouse click
to decide where to insert the copied widget(s).
- ⇒
Double-click on the third Button.
When the data popup appears for the Button widget,
enter "Delete", then click OK or click away from the data popup to close it.
Maqetta also offers a Cut icon, which removes the selected widget(s) from the document
and adds the widget(s) to the clipboard, and a Delete icon, which removes the selected widget(s)
without adding the widgets to the clipboard.
Context menus
- ⇒
(Continuing from previous exercise)
With the third Button still selected, bring up the context menu
(perhaps using right-mouse-click or Ctrl-click on a Mac).
You'll see a list of context menu commands, starting with Cut, Copy, Paste and Delete.
- ⇒
With the third Button still selected, go to the Outline palette.
Put the mouse over the entry for the third Button (it should be highlighted
in the Outline palette). Bring up the context menu
(perhaps using right-mouse-click or Ctrl-click on a Mac).
You'll see the same list of context menu commands as on the page editor.
- ⇒
Click on the file tab's close button -
- to close the page editor. (Click Discard on the Save/Discard/Cancel alert that appears.)
Resizing widgets
- ⇒
Issue a Create Desktop Application... command. In the Create Desktop Application dialog,
click the Create button to create a new file with the default filename.
Drag/drop the following widgets onto the page: TextBox, Button, Calendar, HTML
.
- ⇒
Alternatively, click-select each of the widgets. Notice the blue selection chrome
that appears around each widget, along with the resize handles (the blue circular nobs):
- The TextBox shows two resize handles on the left- and right-side edges.
This is because the TextBox can only be resized horizontally.
- The Button shows no resize handles. This is because a Button widget
is auto-sized based on the size of its label.
- The Calendar shows four resize handles, one on each corner. This is because a Calendar widget
can be resized in both directions.
- The
 shows four resize handles, one on each corner. This is because a

can be resized in both directions.
- ⇒
Resize the TextBox, Calendar and
 widgets by first click-selecting the given widget
and then dragging on the widget's selection nobs.
Notice that the widgets resize.
- ⇒
Select the Calendar widget. Put the mouse over the right edge of the selection chrome.
Drag the right edge of the selection chrome to change the width of the Calendar.
- ⇒
Select the Calendar widget (if not already selected).
- ⇒
Look at the right/top of the application where you will see the various
property palettes (Widget, Events, Layout, etc.). Click on the large button
with the label Layout to show various CSS layout properties.
Click on the "+" icon for the 'width' property several times. Notice
that the Calendar's width grows by 1 pixel each time you click on "+".
- ⇒
Type '400px' into the textbox for the 'width' property, then either
press the Return key or click away from the textbox for 'width'.
Notice that the Calendar's width is now '400px'.
As has been mentioned previously, Maqetta creates actual running HTML5 applications,
which are styled by CSS. The 'width' property is a CSS property, and CSS requires
a unit specification, in this case the px
unit (px=pixels).
You can't just enter "400" because browsers will not accept that value, and instead
have to say "400px".
Moving widgets
In flow layout, you can move widgets in two ways, which we will try out in the following steps:
- ⇒
On the canvas, select the Button widget, then place the mouse over the interior of the widget and then drag it to a different location
within the existing "flow" of widgets.
You should see a drop-point vertical line appear to show you where the Button widget
will get dropped when you let up with the mouse.
- ⇒
On the Outline palette, find the Button
widget. Click-select it on the Outline palette.
Then Drag the item corresponding to the Button to a new location within the Outline palette.
(The Outline palette allows widgets to be moved into any position in the widget hierarchy.)
This exercise demonstrates how to move widgets when all of the widgets use flow layout.
If a widget is positioned absolutely on the page, then you will not see
a drop-point as you drag the widget around; instead, you may see snap lines.
(Absolute layout is covered in the Quick UI Sketching tutorial.)
Alt/Option key for copying widgets
If you hold down the Alt key (on Windows) or Option key (on Mac) while dragging
a widget, Maqetta will perform a copy operation rather than a move operation.
- ⇒
On the canvas, select the Button widget, then place the mouse over the interior of the widget
and then drag it to a different location
within the existing "flow" of widgets.
While dragging, hold down the Alt key (on Windows) or Option key (on Mac).
You should see a "+" cursor appear. If you are pressing the
Alt or Option key at the time of the mouse-up action,
then the selected widget(s) will be copied rather than moved.
Save and Save As
Click on the Save button on the page editor toolbar to save the current HTML file.
Use Save as to save the file under a different file name:
- Click on the arrow to the right of the Save button to show the Save menu, and then choose the Save as command.
- A dialog window will pop up with the directory list from your user workspace folder (which is also displayed in the Files palette).
- File name: - enter a new file name or select an existing file from the list (using an existng filename will overwrite the existing file).
- Where: - the current folder into which the file can be saved. To the right of the Where dropdown menu is a right-pointing arrow that, when clicked,
shows a list of files in your workspace where you can select any folder from the workspace or create a New Folder.
Do not use the themes folder since this is reserved for Maqetta theme files.
- The file will be saved with the new file name, and will also remain open on the canvas with the new file name.
Previous / Next


Cinque Pi
This is a nice simple dish made up of five ingredients: panna, pomodori, parmigiano, pepe, e prezzemolo
- ⏲ Prep time: 15 min
- 🍳 Cook time: 15 min
- 🍽 Servings: 4
Ingredients
- pasta: 800g | 1 ½ lb
- Cream: 4dl | 1 ½ cups
- Tomato purée
- Parmigiano (grated)
- Parsley
Directions
- Start cooking the pasta.
- Mix the cream with the purée and bring to a boil.
- Turn the heat down to medium and add the grated parmigiano.
- Let it cook on medium to low heat until the pasta are done.
- Add chopped up parsley and pepper.
- You can either add the sauce to the pasta ore serve separately.
- Serve with some additional parmigiano and a leaf of parsley.
Contribution
Recipe tags:
italian
pasta
quick


Line to Greymouth re-opens
by KiwiRailKiwiRail has re-opened the section of line at Omoto near Greymouth allowing the TranzAlpine to resume full operations.
"A locomotive travelled over the section of line yesterday, and we have scheduled the TranzAlpine to run through to Greymouth today," South Island General Manager Operations Jeanine Benson says.
The line at Omoto had been closed since October because of a slip.
"We now have the line open for trains again. We will continue working to provide a long-term solution to prevent this type of slip happening again.
"The situation has been frustrating for all those involved, and we appreciate the impact it has had.
"Staff have worked hard to get both the rail and the road open again as quickly as possible, but the fix was a complex one.
"We needed to come up with a way of removing water from the slip site."
Since the slip the TranzAlpine has been running between Christchurch and Arthur's Pass, with passengers bussed between there and Greymouth.
KiwiRail Head of Tourism and Marketing Ah-Leen Rayner says "this is a spectacular journey, and the TranzAlpine is a highlight for many travellers both from New Zealand and from overseas.
"I am delighted that we are now able to travel all the way from Christchurch to Greymouth, and once again offer our passengers the full experience."
The same slip had also closed the road, but it has now re-opened as well.
Waka Kotahi NZ Transport Agency reopened the section of state highway east of Greymouth through Omoto on Monday around 6 pm.
"Road users no longer need to take the Taylorville detour route," says Transport Agency Maintenance Contract Manager Moira Whinham. "But they should expect short delays as the highway through Omoto is just one lane with traffic signal management and that will be the case for some time."


There isn't much to talk about here right now, check out the Github repo at: https://github.com/AlyxMoon/Simple-Github-Deployment-Server


Albums
Add Album
Songs
Add Song
Song Title:
Length is:
seconds
Songs Track Number is:
Album is:
Edit
Delete
Save Edits


PySCIPOpt requires a working installation of the SCIP Optimization Suite. If SCIP is not installed in the global path you need to specify the install location using the environment variable SCIPOPTDIR
:
export SCIPOPTDIR=<path_to_install_dir>
set SCIPOPTDIR=<path_to_install_dir>
SCIPOPTDIR
needs to have a subdirectory lib
that contains the library, e.g. libscip.so
(for Linux) and a subdirectory include
that contains the corresponding header files:
SCIPOPTDIR > lib > libscip.so ... > include > scip > lpi > nlpi > ...
If you are not using the installer packages, you need to install the SCIP Optimization Suite using CMake. The Makefile system is not compatible with PySCIPOpt!
On Windows it is highly recommended to use the Anaconda Python Platform.
pip install pyscipopt
On Windows you may need to ensure that the scip
library can be found at runtime by adjusting your PATH
environment variable:
set PATH=PATH%;SCIPOPTDIR%\bin
On Linux and OS X this is encoded in the generated PySCIPOpt library and therefore not necessary.
PySCIPOpt requires Cython, at least version 0.21 (pip install cython
). Furthermore, you need to have the Python development files installed on your system (error message "Python.h not
found"):
sudo apt-get install python-dev # for Python 2, on Linux sudo apt-get install python3-dev # for Python 3, on Linux
After setting up SCIPOPTDIR
as specified above, please run
python setup.py install
You may use the additional options --user
or --prefix=<custom-python-path>
, to build the interface locally.
To use debug information in PySCIPOpt you need to build it like this:
python setup.py install --debug
Be aware that you will need the debug library of the SCIP Optimization Suite for this to work (cmake .. -DCMAKE_BUILD_TYPE=Debug
).
To test your brand-new installation of PySCIPOpt you need pytest on your system. Here is the installation procedure.
Tests can be run in the PySCIPOpt
directory with: :
py.test # all the available tests py.test tests/test_name.py # a specific tests/test_name.py (Unix)
Ideally, the status of your tests must be passed or skipped. Running tests with pytest creates the __pycache__
directory in tests
and, occasionally, a model
file in the working directory. They can be removed harmlessly.
libreadline.so.6: undefined symbol: PC
This is a readline/ncurses compatibility issue that can be fixed like this (when using conda
): conda install -c conda-forge readline=6.2


Discover Feeds
Aggressiveness:
None
Low
High
Add
Close
Properties
Title:
Location:
Update title from feed
Open in Feed Preview
Ignore updates; always marked 'Read'
Create inside selected folder
Save
Cancel
Sign in
User Name:
Password:
Sign in
Cancel
OK
Yes
No
O
pen
O
Open in New
T
ab
T
Open in New
W
indow
W
Open in New Pri
v
ate Window
V
Open
A
ll Unread in Tabs
A
Sign in...

N
New
F
older...
F
C
opy Link
C
Pa
s
te Link
S
D
elete...
D
P
roperties...
P
Sw
i
tch View Direction
O
pen
O
Open in New
T
ab
T
Open in New
W
indow
W
Open in New Pri
v
ate Window
V
Open
A
ll Unread in Tabs
A
To
g
gle Read/Unread
G
Mark All as
R
ead
R
Mark All as
U
nread
U
C
opy
C
Sw
i
tch View Direction


--- layout: post title: "LOL" --- Taken from San Diego Dreaming:
27/07/07 TXT 22:18: They say the Eisners are the Oscars of comics. That's true. They make me feel like the muppet that lives in the trash and hates everything.


Affirmations REST API allows developers to access and integrate the functionality of Affirmations with other applications. The API retrieves a list of affirmations to motivate all those who read them.
Affirmations is for a developer who wants an API that provides a list of positive affirmations, and the ability to randomize the output of this list, to motivate users who use their applications.
GET: https://affirmationsapi.herokuapp.com
Retrieves a list of positive affirmations for developers to integrate into their applications.
Generates a random affirmation for the developer to utilize.
Follow examples are to receive a random affirmation
curl -X GET \ 'https://affirmationsapi.herokuapp.com/api/random-affirmation'
var request = require('request'); var options = { url: 'https://affirmationsapi.herokuapp.com/api/random-affirmation', method: 'GET' }; function callback(error, response, body) { if (!error && response.statusCode == 200) { console.log(body); } } request(options, callback);
"Affirmations API" was created by ReneeJoy Valentine . Please feel free to use and contribute to this small API.


about us
Mhs Computer Club
Welcome to the club
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Magni, dicta praesentium accusantium esse nostrum quidem reiciendis iure harum nemo deserunt officia quis officiis delectus tempore pariatur blanditiis, consequatur vero. Eius!
Detailswhat we offers
Lorem ipsum dolor sit amet consectetur, adipisicing elit. Aspernatur beatae odio ullam perspiciatis earum maiores?
Why join us
We offers many features for students to learn and using those skills for their future.
Teach by students
Solving problems as a team
Increase your communication
Learn more skills
Schedule
Every wednesday at 2:30 PM
At Malden High School, room H404
Policy
Upcoming
Events
contact us
Reach out to join our club or just say hi.
Send us a message:
Contact info:
Where to Find Us
Malden High School in room H404
What Time
Every wednesday at 2:30 PM
Email Us At
<EMAIL_ADDRESS>Info: If you are student in Malden High School and wanted to join the club, please click the sign up button below
Sign Up


Z-modal is a little javascript plugin that allows you create stylish modals. You will be able to put texts or html in the modals content and customize the title and the buttons.
It is written in vanillaJs, so that you don't need any third party libraries or frameworks.
Without any options, here is the default behaviour of the plugin:
var btnTest = document.getElementById('demo1');
var demo;
btnTest.addEventListener('click', function() {
demo = new ZMODAL();
})
The plugin's options are written in a javascript object, they will overwrite the default settings.
I have exposed 2 methodes:
var btndemo2 = document.getElementById('demo2');
var demo2;
var options2 = {
title : "Demo 2",
content : 'You can close the modal by clicking the overlay...',
closeBtn : false,
buttons : []
};
btndemo2.addEventListener('click', function() {
demo = new ZMODAL(options2);
});
var btndemo3 = document.getElementById('demo3');
var htmlContent = document.createElement('p');
htmlContent.innerHTML = "This content is an HTML node!";
var demo2;
var options3 = {
title : "Demo 3",
content : htmlContent,
buttons : [
{
label: "Cancel",
half: true
},
{
label: "Ok",
half: true,
callback: function() {
alert("you are awesome!");
}
}
]
};
btndemo3.addEventListener('click', function(){
demo = new ZMODAL(options3);
});
var btndemo4 = document.getElementById("demo4");
var demo4;
var options4 = {
title: "Demo 4",
content: "This works too ;-)",
buttons: [
{
label: "Yeah!",
half: false
}
],
autoload: false
}
btndemo4.addEventListener('click', function(){
demo4 = new ZMODAL(options4);
demo4.open();
});
I developed this javascript plugin for me and wanted to share it with you because I think it can be usefull.
I don't guarantee that it is perfect but I tried to do my best with only vanilla javascript and basic css
Contributions, forks, pull requests, comments... are welcome!


public class GraphicContext
extends java.lang.Object
implements java.lang.Cloneable
| Modifier and Type | Field and Description |
|---|---|
protected java.awt.Color |
background
Current background color.
|
protected java.awt.Shape |
clip
Current clip
|
protected java.awt.Composite |
composite
Current Composite
|
protected java.awt.geom.AffineTransform |
defaultTransform
Default Transform to be used for creating FontRenderContext.
|
protected java.awt.Font |
font
Current Font
|
protected java.awt.Color |
foreground
Current foreground color
|
protected java.awt.RenderingHints |
hints
Current set of RenderingHints
|
protected java.awt.Paint |
paint
Current Paint
|
protected java.awt.Stroke |
stroke
Current Stroke
|
protected java.awt.geom.AffineTransform |
transform
Current AffineTransform.
|
protected java.util.List |
transformStack
Transform stack
|
protected boolean |
transformStackValid
Defines whether the transform stack is valide or not.
|
| Constructor and Description |
|---|
GraphicContext()
Default constructor
|
GraphicContext(java.awt.geom.AffineTransform defaultDeviceTransform) |
| Modifier and Type | Method and Description |
|---|---|
void |
addRenderingHints(java.util.Map hints)
Sets the values of an arbitrary number of preferences for the
rendering algorithms.
|
void |
clip(java.awt.Shape s)
Intersects the current
Clip with the interior of the
specified Shape and sets the Clip to the
resulting intersection. |
void |
clipRect(int x,
int y,
int width,
int height)
Intersects the current clip with the specified rectangle.
|
java.lang.Object |
clone() |
java.awt.Color |
getBackground()
Returns the background color used for clearing a region.
|
java.awt.Shape |
getClip()
Gets the current clipping area.
|
java.awt.Rectangle |
getClipBounds()
Returns the bounding rectangle of the current clipping area.
|
java.awt.Color |
getColor()
Gets this graphics context's current color.
|
java.awt.Composite |
getComposite()
Returns the current
Composite in the
Graphics2D context. |
java.awt.Font |
getFont()
Gets the current font.
|
java.awt.font.FontRenderContext |
getFontRenderContext()
Get the rendering context of the
Font within this
Graphics2D context. |
java.awt.Paint |
getPaint()
Returns the current
Paint of the
Graphics2D context. |
java.lang.Object |
getRenderingHint(java.awt.RenderingHints.Key hintKey)
Returns the value of a single preference for the rendering algorithms.
|
java.awt.RenderingHints |
getRenderingHints()
Gets the preferences for the rendering algorithms.
|
java.awt.Stroke |
getStroke()
Returns the current
Stroke in the
Graphics2D context. |
java.awt.geom.AffineTransform |
getTransform()
Returns a copy of the current
Transform in the
Graphics2D context. |
TransformStackElement[] |
getTransformStack() |
protected void |
invalidateTransformStack()
Marks the GraphicContext's isNewTransformStack to true
as a memento that the current transform stack was reset
since it was last read.
|
boolean |
isTransformStackValid()
Checks the status of the transform stack
|
void |
rotate(double theta)
Concatenates the current
Graphics2D
Transform with a rotation transform. |
void |
rotate(double theta,
double x,
double y)
Concatenates the current
Graphics2D
Transform with a translated rotation
transform. |
void |
scale(double sx,
double sy)
Concatenates the current
Graphics2D
Transform with a scaling transformation
Subsequent rendering is resized according to the specified scaling
factors relative to the previous scaling. |
void |
setBackground(java.awt.Color color)
Sets the background color for the
Graphics2D context. |
void |
setClip(int x,
int y,
int width,
int height)
Sets the current clip to the rectangle specified by the given
coordinates.
|
void |
setClip(java.awt.Shape clip)
Sets the current clipping area to an arbitrary clip shape.
|
void |
setColor(java.awt.Color c)
Sets this graphics context's current color to the specified
color.
|
void |
setComposite(java.awt.Composite comp)
Sets the
Composite for the Graphics2D context. |
void |
setFont(java.awt.Font font)
Sets this graphics context's font to the specified font.
|
void |
setPaint(java.awt.Paint paint)
Sets the
Paint attribute for the
Graphics2D context. |
void |
setRenderingHint(java.awt.RenderingHints.Key hintKey,
java.lang.Object hintValue)
Sets the value of a single preference for the rendering algorithms.
|
void |
setRenderingHints(java.util.Map hints)
Replaces the values of all preferences for the rendering
algorithms with the specified
hints . |
void |
setStroke(java.awt.Stroke s)
Sets the
Stroke for the Graphics2D context. |
void |
setTransform(java.awt.geom.AffineTransform Tx)
Sets the
Transform in the Graphics2D
context. |
void |
shear(double shx,
double shy)
Concatenates the current
Graphics2D
Transform with a shearing transform. |
void |
transform(java.awt.geom.AffineTransform Tx)
Composes an
AffineTransform object with the
Transform in this Graphics2D according
to the rule last-specified-first-applied. |
void |
translate(double tx,
double ty)
Concatenates the current
Graphics2D Transform
with a translation transform. |
void |
translate(int x,
int y)
Translates the origin of the graphics context to the point
(x, y) in the current coordinate system.
|
void |
validateTransformStack()
Marks the GraphicContext's isNewTransformStack to false
as a memento that the current transform stack was read and
has not been reset.
|
protected java.awt.geom.AffineTransform defaultTransform
protected java.awt.geom.AffineTransform transform
protected java.util.List transformStack
protected boolean transformStackValid
protected java.awt.Paint paint
protected java.awt.Stroke stroke
protected java.awt.Composite composite
protected java.awt.Shape clip
protected java.awt.RenderingHints hints
protected java.awt.Font font
protected java.awt.Color background
protected java.awt.Color foreground
public GraphicContext()
public GraphicContext(java.awt.geom.AffineTransform defaultDeviceTransform)
defaultDeviceTransform
- Default affine transform applied to map the user space to the
user space.public java.lang.Object clone()
clone
in class java.lang.Object
public java.awt.Color getColor()
Color
,
Graphics.setColor(java.awt.Color)
public void setColor(java.awt.Color c)
c
- the new rendering color.Color
,
Graphics.getColor()
public java.awt.Font getFont()
Font
,
Graphics.setFont(java.awt.Font)
public void setFont(java.awt.Font font)
font
- the font.Graphics.getFont()
public java.awt.Rectangle getClipBounds()
setClip(null)
, this method returns
null
.
The coordinates in the rectangle are relative to the coordinate
system origin of this graphics context.null
if no clip is set.Graphics.getClip()
,
Graphics.clipRect(int, int, int, int)
,
Graphics.setClip(int, int, int, int)
,
Graphics.setClip(Shape)
public void clipRect(int x, int y, int width, int height)
setClip(null)
,
the specified rectangle becomes the new clip.
This method sets the user clip, which is independent of the
clipping associated with device bounds and window visibility.
This method can only be used to make the current clip smaller.
To set the current clip larger, use any of the setClip methods.
Rendering operations have no effect outside of the clipping area.x
- the x coordinate of the rectangle to intersect the clip withy
- the y coordinate of the rectangle to intersect the clip withwidth
- the width of the rectangle to intersect the clip withheight
- the height of the rectangle to intersect the clip withsetClip(int, int, int, int)
,
setClip(Shape)
public void setClip(int x, int y, int width, int height)
x
- the x coordinate of the new clip rectangle.y
- the y coordinate of the new clip rectangle.width
- the width of the new clip rectangle.height
- the height of the new clip rectangle.Graphics.clipRect(int, int, int, int)
,
Graphics.setClip(Shape)
public java.awt.Shape getClip()
setClip(null)
, this method returns
null
.Shape
object representing the
current clipping area, or null
if
no clip is set.Graphics.getClipBounds()
,
Graphics.clipRect(int, int, int, int)
,
Graphics.setClip(int, int, int, int)
,
Graphics.setClip(Shape)
public void setClip(java.awt.Shape clip)
Shape
interface can be used to set the clip. The only
Shape
objects that are guaranteed to be
supported are Shape
objects that are
obtained via the getClip
method and via
Rectangle
objects. This method sets the
user clip, which is independent of the clipping associated
with device bounds and window visibility.clip
- the Shape
to use to set the clipGraphics.getClip()
,
Graphics.clipRect(int, int, int, int)
,
Graphics.setClip(int, int, int, int)
public void setComposite(java.awt.Composite comp)
Composite
for the Graphics2D
context.
The Composite
is used in all drawing methods such as
drawImage
, drawString
, draw
,
and fill
. It specifies how new pixels are to be combined
with the existing pixels on the graphics device during the rendering
process.
If this Graphics2D
context is drawing to a
Component
on the display screen and the
Composite
is a custom object rather than an
instance of the AlphaComposite
class, and if
there is a security manager, its checkPermission
method is called with an AWTPermission("readDisplayPixels")
permission.
comp
- the Composite
object to be used for renderingjava.lang.SecurityException
- if a custom Composite
object is being
used to render to the screen and a security manager
is set and its checkPermission
method
does not allow the operation.Graphics.setXORMode(java.awt.Color)
,
Graphics.setPaintMode()
,
AlphaComposite
public void setPaint(java.awt.Paint paint)
Paint
attribute for the
Graphics2D
context. Calling this method
with a null
Paint
object does
not have any effect on the current Paint
attribute
of this Graphics2D
.paint
- the Paint
object to be used to generate
color during the rendering process, or null
Graphics.setColor(java.awt.Color)
,
GradientPaint
,
TexturePaint
public void setStroke(java.awt.Stroke s)
Stroke
for the Graphics2D
context.s
- the Stroke
object to be used to stroke a
Shape
during the rendering processBasicStroke
public void setRenderingHint(java.awt.RenderingHints.Key hintKey, java.lang.Object hintValue)
RenderingHints
class for definitions of some common
keys and values.hintKey
- the key of the hint to be set.hintValue
- the value indicating preferences for the specified
hint category.RenderingHints
public java.lang.Object getRenderingHint(java.awt.RenderingHints.Key hintKey)
RenderingHints
class for definitions of some common
keys and values.hintKey
- the key corresponding to the hint to get.RenderingHints
class.RenderingHints
public void setRenderingHints(java.util.Map hints)
hints
.
The existing values for all rendering hints are discarded and
the new set of known hints and values are initialized from the
specified Map
object.
Hint categories include controls for rendering quality and
overall time/quality trade-off in the rendering process.
Refer to the RenderingHints
class for definitions of
some common keys and values.hints
- the rendering hints to be setRenderingHints
public void addRenderingHints(java.util.Map hints)
Map
object are modified.
All other preferences not present in the specified
object are left unmodified.
Hint categories include controls for rendering quality and
overall time/quality trade-off in the rendering process.
Refer to the RenderingHints
class for definitions of
some common keys and values.hints
- the rendering hints to be setRenderingHints
public java.awt.RenderingHints getRenderingHints()
RenderingHints
class for definitions of some common
keys and values.RenderingHints
that contains the current preferences.RenderingHints
public void translate(int x, int y)
x
- the x coordinate.y
- the y coordinate.public void translate(double tx, double ty)
Graphics2D
Transform
with a translation transform.
Subsequent rendering is translated by the specified
distance relative to the previous position.
This is equivalent to calling transform(T), where T is an
AffineTransform
represented by the following matrix:
[ 1 0 tx ] [ 0 1 ty ] [ 0 0 1 ]
tx
- the distance to translate along the x-axisty
- the distance to translate along the y-axispublic void rotate(double theta)
Graphics2D
Transform
with a rotation transform.
Subsequent rendering is rotated by the specified radians relative
to the previous origin.
This is equivalent to calling transform(R)
, where R is an
AffineTransform
represented by the following matrix:
[ cos(theta) -sin(theta) 0 ] [ sin(theta) cos(theta) 0 ] [ 0 0 1 ]Rotating with a positive angle theta rotates points on the positive x axis toward the positive y axis.
theta
- the angle of rotation in radianspublic void rotate(double theta, double x, double y)
Graphics2D
Transform
with a translated rotation
transform. Subsequent rendering is transformed by a transform
which is constructed by translating to the specified location,
rotating by the specified radians, and translating back by the same
amount as the original translation. This is equivalent to the
following sequence of calls:
translate(x, y); rotate(theta); translate(-x, -y);Rotating with a positive angle theta rotates points on the positive x axis toward the positive y axis.
theta
- the angle of rotation in radiansx
- x coordinate of the origin of the rotationy
- y coordinate of the origin of the rotationpublic void scale(double sx, double sy)
Graphics2D
Transform
with a scaling transformation
Subsequent rendering is resized according to the specified scaling
factors relative to the previous scaling.
This is equivalent to calling transform(S)
, where S is an
AffineTransform
represented by the following matrix:
[ sx 0 0 ] [ 0 sy 0 ] [ 0 0 1 ]
sx
- the amount by which X coordinates in subsequent
rendering operations are multiplied relative to previous
rendering operations.sy
- the amount by which Y coordinates in subsequent
rendering operations are multiplied relative to previous
rendering operations.public void shear(double shx, double shy)
Graphics2D
Transform
with a shearing transform.
Subsequent renderings are sheared by the specified
multiplier relative to the previous position.
This is equivalent to calling transform(SH)
, where SH
is an AffineTransform
represented by the following
matrix:
[ 1 shx 0 ] [ shy 1 0 ] [ 0 0 1 ]
shx
- the multiplier by which coordinates are shifted in
the positive X axis direction as a function of their Y coordinateshy
- the multiplier by which coordinates are shifted in
the positive Y axis direction as a function of their X coordinatepublic void transform(java.awt.geom.AffineTransform Tx)
AffineTransform
object with the
Transform
in this Graphics2D
according
to the rule last-specified-first-applied. If the current
Transform
is Cx, the result of composition
with Tx is a new Transform
Cx'. Cx' becomes the
current Transform
for this Graphics2D
.
Transforming a point p by the updated Transform
Cx' is
equivalent to first transforming p by Tx and then transforming
the result by the original Transform
Cx. In other
words, Cx'(p) = Cx(Tx(p)). A copy of the Tx is made, if necessary,
so further modifications to Tx do not affect rendering.Tx
- the AffineTransform
object to be composed with
the current Transform
setTransform(java.awt.geom.AffineTransform)
,
AffineTransform
public void setTransform(java.awt.geom.AffineTransform Tx)
Transform
in the Graphics2D
context.Tx
- the AffineTransform
object to be used in the
rendering processtransform
,
AffineTransform
public void validateTransformStack()
public boolean isTransformStackValid()
public TransformStackElement[] getTransformStack()
protected void invalidateTransformStack()
public java.awt.geom.AffineTransform getTransform()
Transform
in the
Graphics2D
context.AffineTransform
in the
Graphics2D
context.transform
,
setTransform(java.awt.geom.AffineTransform)
public java.awt.Paint getPaint()
Paint
of the
Graphics2D
context.Graphics2D
Paint
,
which defines a color or pattern.setPaint(java.awt.Paint)
,
Graphics.setColor(java.awt.Color)
public java.awt.Composite getComposite()
Composite
in the
Graphics2D
context.Graphics2D
Composite
,
which defines a compositing style.setComposite(java.awt.Composite)
public void setBackground(java.awt.Color color)
Graphics2D
context.
The background color is used for clearing a region.
When a Graphics2D
is constructed for a
Component
, the background color is
inherited from the Component
. Setting the background color
in the Graphics2D
context only affects the subsequent
clearRect
calls and not the background color of the
Component
. To change the background
of the Component
, use appropriate methods of
the Component
.color
- the background color that isused in
subsequent calls to clearRect
getBackground()
,
Graphics.clearRect(int, int, int, int)
public java.awt.Color getBackground()
Graphics2D
Color
,
which defines the background color.setBackground(java.awt.Color)
public java.awt.Stroke getStroke()
Stroke
in the
Graphics2D
context.Graphics2D
Stroke
,
which defines the line style.setStroke(java.awt.Stroke)
public void clip(java.awt.Shape s)
Clip
with the interior of the
specified Shape
and sets the Clip
to the
resulting intersection. The specified Shape
is
transformed with the current Graphics2D
Transform
before being intersected with the current
Clip
. This method is used to make the current
Clip
smaller.
To make the Clip
larger, use setClip
.
The user clip modified by this method is independent of the
clipping associated with device bounds and visibility. If no clip has
previously been set, or if the clip has been cleared using
setClip
with a
null
argument, the specified Shape
becomes
the new user clip.s
- the Shape
to be intersected with the current
Clip
. If s
is null
,
this method clears the current Clip
.public java.awt.font.FontRenderContext getFontRenderContext()
Font
within this
Graphics2D
context.
The FontRenderContext
encapsulates application hints such as anti-aliasing and
fractional metrics, as well as target device specific information
such as dots-per-inch. This information should be provided by the
application when using objects that perform typographical
formatting, such as Font
and
TextLayout
. This information should also be provided
by applications that perform their own layout and need accurate
measurements of various characteristics of glyphs such as advance
and line height when various rendering hints have been applied to
the text rendering.FontRenderContext
,
Font.createGlyphVector(FontRenderContext,char[])
,
TextLayout
Copyright © 2022 Apache Software Foundation. All Rights Reserved.


--- date: 2014-11-20 09:00:02 author: Jen Gray title: "PhoneGap Day US 2014: Enterprise - Not Just a Dirty Word Anymore" format: html tags: - PhoneGap Day - Event - Community ---
A big thanks to everyone who was able to make it to PhoneGap Day US. We'll be posting more videos from the conference so check back on our blog or Youtube channel.
First up, we have Bruce Lefebvre, Computer Scientist at Adobe, introducing the Adobe Experience Manager and PhoneGap integration.
Imagine being able to manage your application's lifecycle as well as understand how your app is performing from one single user interface? PhoneGap Enterprise gives you better insight into how users are getting through your app, where they're getting stuck, and what areas are getting overlooked. It also allows you to empower your content authors and other non-technical users to easily create and update app content over-the-air. Back and forth trips to the platform's app store are a thing of the past.
Learn more about the AEM Apps Feature Pack in Bruce's post