"We can’t save the world by playing by the rules, because the rules have to be changed" - Greta Thunberg
By Sohan
Climate change is one of the greatest challenges humankind is to face. It is a challenge that must be overcome to keep Earth functional, as a planet for humans to thrive.
The burning of coal propagated the industrial revolution which brought an immense change – a higher standard of living. People had access to readily available electricity, fuel for transport and efficient machinery resulting in production at scale. Although industrial revolution brought great benefits, a few decades later humans have come to terms with its harrowing effects.
Over the years we notice countries, which are considered to be highly developed, are the prime emitters of carbon dioxide (CO2) and other environmentally damaging gases.
The science has been crystal clear since the late 1900s on the effects that these gases are causing to the planet.
Throughout time there has been a dramatic increase in natural disasters. Flooding and extreme weather seem to be the leading disasters. After 1975, the number of natural disasters has nearly quadrupled. This is not a mere coincidence. It is directly correlated with the increase in emissions.
The emissions create a greenhouse effect, which is why extreme weather is one of the leading natural disasters. This extreme weather has been warming and melting ice caps in the north and south poles causing an increase in water levels. Due to this increase, communities residing on islands and coastlines have become more prone to floods. Even communities residing in the centre of their country experience torrential rains and flash flooding.
Climate change isn’t a local issue, it is a global systemic problem. The devastating effects of climate change has a dual effect.
The first is on the economy in which millions of dollars must be poured into response and recovery efforts, extracting a portion of a nation’s GDP which could have best been used to provide other services to advance its wellbeing of its citizens.
More importantly, the second effect of climate change is the loss of lives. This has been ever growing proportionally to the trend of increasing number of natural disasters. These deaths aren’t mapped to just a single country. Its effects are mapped to every continent in the world.
According to the OECD, Australia has been labelled as the second dirtiest country through electricity generation in the world. Australia is also renowned in the world for its astonishingly slow adoption of renewables. Although Australia is obnoxiously infamous for their slow adoption, they have nevertheless committed to going net-zero by 2050 as per the Paris agreement.
Numerous steps have been taken in Australia’s development of green infrastructure, especially in solar energy. However, this is limited to the eastern coast of Australia. Western Australia which is renowned for its booming mining sector, is slow in its advancements in the adoption of green energy.
As a developed economy, Australia must join its counterparts in advancing the green economy and committing to more aggressive emission targets such as some of the European countries. The point has already been made that the temperature has already risen above one degree Celsius and is continuing to rise rapidly. Unfortunately this means that Australia’s commitment to carbon neutrality by 2050 may not be enough.
Since the 1990s, Australia have not progressed much. The percentage of Australia’s electricity grid which remains on renewables has been for the majority, the same. Some other developed countries, especially in Europe, which had much less of their electricity from renewables, have now advanced to overtake Australia.
Another area of concern is the backward transition to renewables from some of the more developing economies such as India, South Africa and China. Undoubtedly, access to electricity and technologies is needed to develop an economy. These developing countries’ appetite for energy is immensely growing. However, they must be supported to ensure they grow their economies in a sustainable and renewable manner.
 It is the responsibility of the developed countries to ensure that the developing countries are able to advance their economies using renewables and not major polluters such as coal.
This visualisation is created by Sohan Pujar. The datasource is some data repository online.
Copyright (C) 2021 Github


样式一
platform-tag-green
platform-tag-magenta
platform-tag-orange
platform-tag-red
platform-tag-volcano
platform-tag-gold
platform-tag-lime
platform-tag-cyan
platform-tag-blue
platform-tag-geekblue
platform-tag-purple
样式二
.platform-bg-green
platform-bg-magenta
platform-bg-orange
platform-bg-red
platform-bg-volcano
platform-bg-gold
platform-bg-lime
platform-bg-cyan
platform-bg-blue
platform-bg-geekblue
platform-bg-purple


Senegal to host Regional Energy Summit this December
by Guest ContributorUnder the co-patronage of the Ministry of Petroleum and Energy and the Ministry of Economy, Planning and Cooperation, Senegal, the ‘Regional Energy Summit: West Africa’ will be held from 2-3 December 2019 in Dakar.
As the first conference in West Africa to receive the co-patronage, it comes at an important time as Senegal becomes one of Africa’s fastest growing economies and demand for reliable electricity increases significantly.
“The 4th edition of the Regional Energy Summit: West considers the role of energy in industrialising the region, creating jobs, developing local content, and nurturing industrial fabrics and opportunities. We look forward to welcoming our longstanding partners and friends in Dakar for this exciting edition.” Natacha Girard, Programme Manager, EnergyNet.
The Summit has confirmed the participation of seven ministries of energy to join these high-level discussions including:
- H.E. Honourable Mouhamadou Makhtar Cissé, Minister of Petroleum and Energy, Senegal
- H.E Honourable Amadou Hott, Minister of Economy, Planning and Cooperation, Senegal
- H.E. Honourable Saleh Mamman, Minister of Power, Nigeria
- H.E. Honourable Bachir Ismael Ouedraogo, Minister of Energy, Burkina Faso
- H.E Honourable Gesler Murray, Minister of Mines and Energy, Liberia
- H.E Honourable Alexandre Dias Monteiro, Minister of Industry Trade and Energy, Cape Verde
- H.E Honourable Mohammed Ghazali, Secretary General, Ministry of Energy, Mines & Sustainable Development, Morocco
Official endorsing partners of the Summit include APUA, ANER, SENELEC, REA, CRSE alongside Exhibition Sponsor Kaifa, Strategic Partners Fieldstone Africa and DLA Piper, Sponsors Lekela, Power Africa, FONSIS and Scatec Solar, Supporting Partners USTDA, Dii and Themis and Exhibitor EKOS ENERGIE.
For more information about this meeting:
Contact: Fiona Gleeson– Marketing Manager
Event dates: 2-3 December 2019
Event location: King Fahd Hotel, Dakar
Organisers: EnergyNet, Ltd
Email<EMAIL_ADDRESS>Tel: +44 (0)20 7384 8240
Visit: www.res-west.com


The Smart Filter Bar component uses TableDataProvider data source in order to create a Filter Bar.
TableDataProvider
Smart filter bar supports:
Smart filter bar can work with Observables and plain arrays.
Observables
arrays


Header
Login by using your user account
×
Your sign in information was incorrect. Please try again.
Email
Password
Log In
Create user account


Before Change
@property
def variables(self):
Returns a tuple of tf variables owned by this normalizer.
return self._count, self._mean_sum, self._var_sum
def _update_ops(self, tensor, outer_dims):
Returns a list of ops which update normalizer variables for tensor.
After Change
Returns a tuple of tf variables owned by this normalizer.
return (tf.nest.pack_sequence_as(self._tensor_spec, self._count),
tf.nest.pack_sequence_as(self._tensor_spec, self._mean_sum),
tf.nest.pack_sequence_as(self._tensor_spec, self._var_sum))
def _update_ops(self, tensor, outer_dims):
Returns a list of ops which update normalizer variables for tensor.


OSDC in brief
The Open Science Data Cloud provides the scientific community with resources for storing, sharing, and analyzing terabyte and petabyte-scale scientific datasets. The OSDC is a data science ecosystem in which researchers can house and share their own scientific data, access complementary public datasets, build and share customized virtual machines with whatever tools necessary to analyze their data, and perform the analysis to answer their research questions. It is a one-stop shop for making scientific research faster and easier.
Why is there a need?
With datasets growing larger and larger, researchers are finding that the bottleneck to discovery is no longer a lack of data but an inability to manage, analyze, and share their large datasets. Individual researchers can no longer download and analyze the important datasets in their scientific fields on their own computers. The goal of the Open Science Data Cloud is to remove the bottleneck to discovery by providing researchers with access to a variety of key datasets across scientific disciplines and the computing infrastructure to allow scientists to easily manage and share their data and analysis.>> read more


|
Finite Geometry Notes
|
| Introduction: |
| This page is my contribution to the growing genre of "art quotes" web sites. It gives the background for some of my mathematical work. - S. H. Cullinane, August 1, 2000 |
|
|
| G. H. Hardy on the Nature of Mathematics: |
| "A
mathematician, like a painter or a poet, is a maker of patterns. If his patterns are more permanent than theirs, it is because they are made with ideas." -Godfrey Harold Hardy, A Mathematician's Apology (1940), reprinted 1969, Cambridge U. Press, p. 84 |
| Reviews and ordering information for A Mathematician's
Apology G. H. Hardy Lecture Hall (Western Canon U.) Hundreds of web sites on G. H. Hardy |
| C. G. Jung on Archetypes and Visible Reality: |
| "All the
most powerful ideas in history go back to archetypes. This is particularly true of religious ideas, but the central concepts of science, philosophy, and ethics are no exception to this rule. In their present form they are variants of archetypal ideas, created by consciously applying and adapting these ideas to reality. For it is the function of consciousness not only to recognize and assimilate the external world through the gateway of the senses, but to translate into visible reality the world within us." - Carl Gustav Jung, "The Structure of the Psyche" (1927), in Collected Works Vol. 8, Structure and Dynamics of the Psyche, P. 342 |
| Other
Jung quotations on archetypes |
| Paul Klee on Visible Reality: |
| "Art does
not reproduce the visible; rather, it makes visible.... My aim is always to get hold of the magic of reality and to transfer this reality into painting - to make the invisible visible through reality. It may sound paradoxical, but it is, in fact, reality which forms the mystery of our existence." - Paul Klee, "Creative Credo" from The Inward Vision: Watercolors, Drawings, Writings. Abrams, not dated; published c. 1958. |
| Recommended
browsing and reading on Paul Klee |
| Wallace Stevens on the Visibility of Archetypes: |
| "These
forms are visible to the eye that needs, Needs out of the whole necessity of sight." - Wallace Stevens, "The Owl in the Sarcophagus," (first publ. 1947) in Collected Poetry and Prose, Library of America, 1997 |
| Wallace Stevens and Painting: A Bibliography |
|
|
| Edward Sapir on Linguistics, Mathematics, and Music: |
| "...linguistics
has also that profoundly serene and satisfying quality which inheres in mathematics and in music and which may be described as the creation out of simple elements of a self-contained universe of forms. Linguistics has neither the sweep nor the instrumental power of mathematics, nor has it the universal aesthetic appeal of music. But under its crabbed, technical, appearance there lies hidden the same classical spirit, the same freedom in restraint, which animates mathematics and music at their purest." - Edward Sapir, "The Grammarian and his Language," American Mercury 1:149-155, 1924 |
| Biography of Edward Sapir |
|
|
| Heisenberg on Symmetria or Consonantia: |
| The
following refers to an essay by Werner Karl Heisenberg in "Across the
Frontier," published by Harper, 1974, p. 183. "Heisenberg crystallizes the notion remarkably when he notes, 'Beauty is the proper conformity of the parts to one another and to the whole.' Like the Sonnets or the Bill of Rights, Heisenberg's 15-word remark smacks of such precision that one could imagine less eloquent thinkers writing entire books without ever arriving at the core truth Heisenberg lighted upon" - Mark K. Anderson, "Beauty and the Paradigm," originally published in the Shakespeare Oxford Newsletter, Summer 1997 and Fall 1997/Winter 1998 |
| Text of
"Beauty and the Paradigm" |
| Roger Scruton on Symmetria or Consonantia: |
| "The
ancient theory of music that we owe to the Pythagoreans, which is endorsed by Plato in the Timaeus and by Plotinus, St Augustine, and Boethius in their treatises on music, and which survives in Al-Farabi, in Aquinas, and even in such Renaissance theorists as Zarlino, is centred on the experience of harmony. Having noticed that the elementary concords - octave, fifth, and fourth - are produced by strings whose lengths are proportioned according to perfect fractions, those writers concluded that our experience of music is an experience of number. Number, and the relations of number, provide the hidden order of the universe; and numbers are known through the intellect, and known with a certainty that pertains to no other thing. When understanding mathematics we have access to the order of creation, and this order is eternal, like the numbers themselves. In music we know through experience, and in time, what is also revealed to the intellect as outside time and change. Just as time is, for Plato and Plotinus, the moving image of eternity, so is the experience of music the revelation in time of the eternal order. The beauty of music is the beauty of the world itself, revealed to the sense of hearing - a 'point of intersection of the timeless with time.'" Roger Scruton, The Aesthetics of Music, Oxford University Press, 1999, pp. 63-64 |
| Vitruvius and Joyce on Symmetria and Consonantia: |
| The
following is an excerpt from Principles of Architecture, by Jorma
Manty (online). Manty is disussing terms used by Vitruvius (De
Architectura) and by St. Thomas Aquinas and James Joyce (Portrait of
the Artist as a Young Man).
TERMS USED BY VITRUVIUS:
TERMS USED BY AQUINAS AND
JOYCE: |
| Manty's
Principles of Architecture Aesthetics Chapter (5) in Joyce's Portrait of the Artist James Joyce Internet Resources The Brazen Head: A James Joyce Public House |
|
|
| Roger Fry on Formalism in Art and Mathematics: |
| "...it is
not impossible to draw a fairly sharp dividing line between our mental disposition in the case of esthetic response and that of the responses of ordinary life. A far more difficult question arises if we try to distinguish it from the responses made by us to certain abstract mental constructions such as those of pure mathematics. Here I conceive the emotional states due to the apprehension of relations may be extremely similar to those aroused by the esthetic apprehension. Perhaps the distinction lies in this, that in the case of works of art the whole end and purpose is found in the exact quality of the emotional state, whereas in the case of mathematics the purpose is the constatation of the universal validity of the relations without regard to the quality of the emotion accompanying apprehension. Still, it would be impossible to deny the close similarity of the orientation of faculties and attention in the two cases." - Roger Fry, Transformations (1926), Doubleday Anchor paperback, 1956, p. 8 |
| Ordering information for Art Made Modern: Roger Fry's
Vision of Art Paul Rand's defense of Roger Fry and formalism |
| Henri Focillon on Formalism in Islamic Art: |
| "These
combinations are produced by mathematical reasoning. They are based upon cold calculation; They are reducible to patterns of the utmost aridity. But deep within them, a sort of fever seems to goad on and to multiply the shapes; some mysterious genius of complication interlocks, enfolds, disorganizes and reorganizes the entire labyrinth. Their very immobility sparkles with metamorphoses. Whether they be read as voids or solids, as vertical axes or as diagonals, each one of them both withholds the secret and exposes the reality of an immense number of possibilities." - Henri Focillon, The Life of Forms in Art (1934), translated by George Kubler. Zone Books, distributed by The MIT Press, 1989, pp. 41-42 |
| Ordering information and reviews for The Life of Forms
in Art |
|
|
| Gerard Manley Hopkins - Beauty is a Relation: |
| "Then the
beauty of the oak and the chestnut-fan and the sky is a mixture of likeness and difference or consistency and variety or symmetry and change.... And if we did not feel the likeness we should not think them so beautiful, or if we did not feel the difference we should not think them so beautiful. The beauty we find is from the comparison we make.... Beauty therefore is a relation, and the apprehension of it a comparison." - Gerard Manley Hopkins, "On the Origin of Beauty: A Platonic Dialogue" (1865). Abridged version in Poems and Prose of Gerard Manley Hopkins, ed. W. H. Gardner (1953), Penguin Classics, 1985, pp. 98 and 103 |
| Gerard
Manley Hopkins' Aesthetic Theory, by Marco Graziosi |
| Wallace Stevens - Poetry is a Resemblance: |
| "Poetry is
a satisfying of the desire for resemblance.... If resemblance is described as a partial similarity between two dissimilar things, it complements and reinforces that which the two dissimilar things have in common. It makes it brilliant." - Wallace Stevens, "Three Academic Pieces," in The Necessary Angel (1951). Page 690 in Stevens' Collected Poetry and Prose, published by The Library of America, 1997. |
| Hartford
Friends and Enemies of Wallace Stevens |
|
|
| Aesthetics of the Diamond Archetype: |
| S. H. Cullinane on
the diamond archetype Combinatorial mathematics of the diamond archetype The Diamond 16 Puzzle Aesthetics of Parallelism Block Designs Affine Geometry of the I Ching hexagrams |
|
|


Gibberish waffle potato muffin man the muffinest muffin man who ever can
the muffin man did the can and then the man got the pan oh lord praise the
muffin man he who muffins the mightiest of men and when he muffins he sure
as pan can do the stand on the man with the land


HEAD OVER HEELS A film review by Steve Rhodes Copyright 2001 Steve Rhodes RATING (0 TO ****): ** 1/2
HEAD OVER HEELS, a romantic comedy twist on REAR WINDOW, stars Monica Potter as amateur sleuth Amanda Pierce and Freddie Prinze Jr. as Jim Winston, a fashion exec who may or may not have murdered a woman in his apartment. Amanda, a Renaissance painting restorer by trade, thinks she saw the murder through the window of her Manhattan apartment. If you can't figure out whether Jim is actually a murderer, consider your inability as prima facie evidence that you need a break, since you are clearly below your minimum movie quota.
"There are four million men in New York," Amanda complains soon after we meet her. "Why can't I find just one. Just one!" Well, when she lays eyes on the poster-boy-handsome Jim, it is love at first sight, at least for her. They meet inauspiciously when the monster-sized dog he is walking knocks her down and starts trying to hump her. Like much of the movie, it sounds funnier that it is.
Soon, Amanda goes from being weak-kneed over her art to swooning at the sight of a flesh-and-blood man. Breaking off their conversation on the street, she tells Jim, "I've got the runs. I mean I've got to run." The script by Ron Burch and David Kidd sporadically comes up with such cute dialog, but, too often, it falls back on the old clichés of everyone literally falling head over heels. Falling as a laughter-inducing stunt gets old after about the second fall. Okay, maybe the third. Given that director Mark S. Waters's first and only other film is the wonderfully edgy, black comedy, THE HOUSE OF YES, also featuring Prinze, one might reasonably assume that HEAD OVER HEELS would take risks. Instead, it plays it as safe as a TV movie remake of a Doris Day comedy.
Amanda rents a closet in an apartment owned by four models, Jade (Shalom Harlow), Roxana (Ivana Milicevic), Candi (Sarah O'Hare) and Holly (Tomiko Fraser), whose weights and IQs hover around 100. Amanda's room is literally a closet, since they have turned the closet's bedroom into a storage area large enough to hold their bulging wardrobe. Every night outside the models' door, a horde of hunks assembles, wanting to be the models' salivating slaves for the evening. The models treat the men like dirt while squandering their money.
The movie never gets the proper comedic payoff from the models because it never ratchets up the sleaze factor enough. Still, some easy jabs at their desire to destroy their bodies for the sake of their profession do come across as funny. One model, for example, is in the process of having her earlobes fixed so that they will be perfectly symmetric.
As Amanda tries to find out if Jim is a dreamboat or a killer, she falls hopelessly in love with him. The movie's fatal flaw is that theirs is a one-way romance. We believe that Amanda loves Jim. We never believe that the feeling is genuinely reciprocated, and their chemistry together has as many sparks as a California blackout. A romantic comedy requires not only laugher, but love. And love has to be a two-way street.
HEAD OVER HEELS runs 1:31. It is rated PG-13 for sexual content, crude humor and language and would be acceptable for kids around 11 or 12 and up.
My son Jeffrey, age 11, gave the movie ** 1/2. Although he thought the movie was funny in parts, especially those involving the models, he thought the plot was flat and needed improvement.
Email<EMAIL_ADDRESS>Web: http://www.InternetReviews.com
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


Firefox Users can get the extension here.
Sometimes the extension is stuck in a reload loop. Please try this if that happens: log out on crunchyroll, clear the login data in the extension and then try to login again.
Most issues seem to be errors getting new sessions. I think this is largely related to the reload loop. To improve on this I implemented a timer to only reload once a minute - if the session can not be obtained, it is unlikely to work a few seconds after.
Good news: unblocking while logged in is back!
Some of you have hinted me a way but I could not replicate it for some reason. Thanks for telling me, and sorry for not getting this working sooner :)
This is just a small update, sorry still no solution for logged in users :(
But I removed the unblock servers that do not work anymore, this should make switching faster.
Also, region switching won't happen while logged in. This way you can login/logout depending on the anime you want to watch. Still inconvenient, but better than nothing!
Hi everyone! Maintainer from the Firefox extension here.
Looks like the original creator (who is hosting the unblock server) of this project has no interest in keeping this up. This is why I'm taking over from here on.
He said in his "farewell" message to just torrent anime. Please do not do that. Support the anime you love to watch, even more in these challenging times. I'll add some servers to the unblocker pool to "fix" the current problems of session IDs getting issued. Please keep in mind, my resources are limited. If anyone wants to help running unblock servers get in touch with me.
Greetings from Germany. Stay safe and healthy!!!


Action System
Actions provide a declarative mechanism for expressing reactive functionality directly in HTML, reducing the need to write and test JavaScript.
Declarative Actions
Actions could be thought of as commands, that are pre-configured to execute in response to a declared event. Once activated, the action becomes a command for the listener to execute.
The topic routes the action to the listener. The command is a function on the listener. The listener executes the command using the action-data as function parameters.
Actions provide a script-less way to enact functionality in response to a user's actions. They can be used to update data in a store, call an API, or set a cookie. See action listeners below to see what actions you can perform or how to install your own listeners.
Action Properties:
-
- topic
- The listener's topic (usually the subsystem).
-
- command
- The task or function to perform.
-
- data
- The arguments for the command, in a name-value format.
nent components use a command/event messaging system for inter-element communication. Actions are commands declared with HTML.
Declarative Activation
Actions can also be expressed using the <x-action> element. They should be wrapped within an Action Activator <x-action-activator> element to define how and when the actions within are activated.
Advanced Activations
There are more ways to activate actions declaratively. Read more about them here.
Script Activation
Actions can be sent to the action messaging system using a standard HTML CustomEvent with the properties above, using the event name: x:actions
Mixed Activation
You can also activate an action directly with JavaScript, using the x-action element's activateAction() function.
Action Listeners
Listeners execute functions or perform tasks based on the action commands. Check out the built-in actions for each of the systems.


Restart
Pause
Easy
Normal
Hard
EXTREME
SCOREBOARD
ERROR LOADING
←
Move left -
Space
Shoot -
→
Move right
R
Restart -
P
Pause
L
Make invaders shoot -
1-3
Difficulty


type of the audioNode
property, could be any AudioNode
that implements WamNode
The AudioContext
where the plugin's node lives in
The AudioNode
that handles audio in the plugin where the host can connect to/from
The values from descriptor.json
This will return true after calling initialize()
.
The unique identifier of the current WAM instance.
should return true
The identifier of the current WAM, composed of vender + name
The WAM's name
The WAM Vendor's name
This async method must be redefined to get AudioNode
that
will connected to the host.
It can be any object that extends AudioNode
and implements WamNode
Redefine this method to get the WAM's GUI as an HTML Element
.
Clean up an element previously returned by createGui
The host will call this method to initialize the WAM with an initial state.
In this method, WAM devs should call createAudioNode()
and store its return AudioNode
to this.audioNode
,
then set initialized
to true
to ensure that
the audioNode
property is available after initialized.
These two behaviors are implemented by default in the SDK.
The WAM devs can also fetch and preload the GUI Element in while initializing.
Generated using TypeDoc
Main
WebAudioModule
interface, its constructor should be theexport default
of the ESM of each WAM.


Because Tailwind is a framework for building bespoke user interfaces, it has been designed from the ground up with customization in mind.
By default, Tailwind will look for an optional tailwind.config.js
file at the root of your project where you can define any customizations.
// Example `tailwind.config.js` file
module.exports = {
important: true,
theme: {
fontFamily: {
display: ['Gilroy', 'sans-serif'],
body: ['Graphik', 'sans-serif'],
},
extend: {
colors: {
cyan: '#9cdbff',
},
margin: {
'96': '24rem',
'128': '32rem',
},
}
},
variants: {
opacity: ['responsive', 'hover']
}
}
Every section of the config file is optional, so you only have to specify what you'd like to change. Any missing sections will fall back to Tailwind's default configuration.
Creating your configuration file
Generate a Tailwind config file for your project using the Tailwind CLI utility included when you install the tailwindcss
npm package:
npx tailwindcss init
This will create a minimal tailwind.config.js
file at the root of your project:
// tailwind.config.js
module.exports = {
theme: {},
variants: {},
plugins: [],
}
Using a different file name
To use a name other than tailwind.config.js
, pass it as an argument on the command-line:
npx tailwindcss init tailwindcss-config.js
If you use a custom file name, you will need to specify it when including Tailwind as a plugin in your PostCSS configuration as well:
// postcss.config.js
module.exports = {
plugins: [
require('tailwindcss')('./tailwindcss-config.js'),
],
}
Scaffolding the entire default configuration
For most users we encourage you to keep your config file as minimal as possible, and only specify the things you want to customize.
If you'd rather scaffold a complete configuration file that includes all of Tailwind's default configuration, use the --full
option:
npx tailwindcss init --full
You'll get a file that matches the default configuration file Tailwind uses internally.
Theme
The theme
section is where you define your color palette, font stacks, type scale, border sizes, breakpoints — anything related to the visual design of your site.
// tailwind.config.js
module.exports = {
theme: {
screens: {
sm: '640px',
md: '768px',
lg: '1024px',
xl: '1280px',
},
fontFamily: {
display: ['Gilroy', 'sans-serif'],
body: ['Graphik', 'sans-serif'],
},
borderWidth: {
default: '1px',
'0': '0',
'2': '2px',
'4': '4px',
},
extend: {
colors: {
cyan: '#9cdbff',
},
spacing: {
'96': '24rem',
'128': '32rem',
}
}
}
}
Learn more about the default theme and how to customize it in the theme configuration guide.
Variants
The variants
section lets you control which variants are generated for each core utility plugin.
// tailwind.config.js
module.exports = {
variants: {
appearance: ['responsive'],
backgroundColor: ['responsive', 'hover', 'focus'],
fill: [],
},
}
Learn more in the variants configuration guide.
Plugins
The plugins
section allows you to register third-party plugins with Tailwind that can be used to generate extra utilities, components, base styles, or custom variants.
// tailwind.config.js
module.exports = {
plugins: [
require('tailwindcss-transforms'),
require('tailwindcss-transitions'),
require('tailwindcss-border-gradients'),
],
}
Learn more about writing your own plugins in the plugin authoring guide.
Prefix
The prefix
option allows you to add a custom prefix to all of Tailwind's generated utility classes. This can be really useful when layering Tailwind on top of existing CSS where there might be naming conflicts.
For example, you could add a tw-
prefix by setting the prefix
option like so:
// tailwind.config.js
module.exports = {
prefix: 'tw-',
}
Now every utility will be generated with the configured prefix:
.tw-text-left {
text-align: left;
}
.tw-text-center {
text-align: center;
}
.tw-text-right {
text-align: right;
}
/* etc. */
It's important to understand that this prefix is added to the beginning of each utility name, not to the entire class name.
That means that classes with responsive or state prefixes like sm:
or hover:
will still have the responsive or state prefix first, with your custom prefix appearing after the colon:

Prefixes are only added to classes generated by Tailwind; no prefix will be added to your own custom classes.
That means if you add your own responsive utility like this:
@responsive {
.bg-brand-gradient { /* ... */ }
}
...the generated responsive classes will not have your configured prefix:
.bg-brand-gradient { /* ... */ }
@media (min-width: 640px) {
.sm\:bg-brand-gradient { /* ... */ }
}
@media (min-width: 768px) {
.md\:bg-brand-gradient { /* ... */ }
}
@media (min-width: 992) {
.lg\:bg-brand-gradient { /* ... */ }
}
@media (min-width: 1280px) {
.xl\:bg-brand-gradient { /* ... */ }
}
If you'd like to prefix your own utilities as well, just add the prefix to the class definition:
@responsive {
.tw-bg-brand-gradient { /* ... */ }
}
Important
The important
option lets you control whether or not Tailwind's utilities should be marked with !important
. This can be really useful when using Tailwind with existing CSS that has high specificity selectors.
To generate utilities as !important
, set the important
key in your configuration options to true
:
// tailwind.config.js
module.exports = {
important: true,
}
Now all of Tailwind's utility classes will be generated as !important
:
.leading-none {
line-height: 1 !important;
}
.leading-tight {
line-height: 1.25 !important;
}
.leading-snug {
line-height: 1.375 !important;
}
/* etc. */
Note that any of your own custom utilities will not automatically be marked as !important
by enabling this option.
If you'd like to make your own utilities !important
, just add !important
to the end of each declaration yourself:
@responsive {
.bg-brand-gradient {
background-image: linear-gradient(#3490dc, #6574cd) !important;
}
}
Setting important
to true
is useful, but can introduce some issues when incorporating third-party JS libraries that add inline styles to your elements—in those cases, Tailwind's !important
utilities defeat the inline styles. This is really common with animation libraries, for example.
If you're not facing that issue, feel free to skip to the next section! But if you are facing that issue, you can make utilities "important" in a less aggressive manner by providing a CSS selector instead of a boolean to the important
option:
// tailwind.config.js
module.exports = {
important: '#app',
}
This configuration will prefix all of your utilities with the given selector, effectively increasing their specificity without actually making them !important
.
After you specifify the important
selector, you'll need to ensure that the root element of your site matches it. Using the example above, we would need to set our root element's id
attribute to app
in order for styles to work properly.
After your configuration is all set up and your root element matches the selector in your Tailwind config, all of Tailwind's utilities will have a high enough specificity to defeat other classes used in your project, without interfering with inline styles:

Separator
The separator
option lets you customize what character or string should be used to separate variant prefixes (screen sizes, hover
, focus
, etc.) from utility names (text-center
, items-end
, etc.).
We use a colon by default (:
), but it can be useful to change this if you're using a templating language like Pug that doesn't support special characters in class names.
// tailwind.config.js
module.exports = {
separator: '_',
}
Core Plugins
The corePlugins
section lets you completely disable classes that Tailwind would normally generate by default if you don't need them for your project.
If you don't provide any corePlugins
configuration, all core plugins will be enabled by default:
// tailwind.config.js
module.exports = {}
If you'd like to disable specific core plugins, provide an object for corePlugins
that sets those plugins to false
:
// tailwind.config.js
module.exports = {
corePlugins: {
float: false,
objectFit: false,
objectPosition: false,
}
}
If you'd like to whitelist which core plugins should be enabled, provide an array that includes a list of the core plugins you'd like to use:
// tailwind.config.js
module.exports = {
corePlugins: [
'margin',
'padding',
'backgroundColor',
// ...
]
}
If you'd like to disable all of Tailwind's core plugins and simply use Tailwind as a tool for processing your own custom plugins, provide an empty array:
// tailwind.config.js
module.exports = {
corePlugins: []
}
Here's a list of every core plugin for reference:
| Core Plugin | Description |
|---|---|
preflight |
Tailwind's base/reset styles |
container |
The container component |
accessibility |
The sr-only and not-sr-only utilities |
alignContent |
The align-content utilities like content-between |
alignItems |
The align-items utilities like items-start |
alignSelf |
The align-self utilities like self-end |
appearance |
The appearance utilities like appearance-none |
backgroundAttachment |
The background-attachment utilities like bg-fixed |
backgroundColor |
The background-color utilities like bg-gray-200 |
backgroundOpacity |
The background-color opacity utilities like bg-opacity-25 |
backgroundPosition |
The background-position utilities like bg-center |
backgroundRepeat |
The background-repeat utilities like bg-no-repeat |
backgroundSize |
The background-size utilities like bg-cover |
borderCollapse |
The border-collapse utilities like border-separate |
borderColor |
The border-color utilities like border-gray-300 |
borderOpacity |
The border-color opacity utilities like border-opacity-25 |
borderRadius |
The border-radius utilities like rounded-lg |
borderStyle |
The border-style utilities like border-dashed |
borderWidth |
The border-width utilities like border-2 |
boxSizing |
The box-sizing utilities like box-border |
boxShadow |
The box-shadow utilities like shadow-xl |
clear |
The clear utilities like clear-left |
cursor |
The cursor utilities like cursor-pointer |
display |
The display utilities like block |
divideColor |
The between elements border-color utilities like divide-gray-500 |
divideWidth |
The between elements border-width utilities like divide-x-2 |
fill |
The fill utilities like fill-current |
flex |
The flex utilities like flex-1 |
flexDirection |
The flex-direction utilities like flex-col |
flexGrow |
The flex-grow utilities like flex-grow-0 |
flexShrink |
The flex-shrink utilities like flex-shrink-0 |
flexWrap |
The flex-wrap utilities like flex-no-wrap |
float |
The float utilities like float-left |
gap |
The gap utilities like gap-4 |
gridAutoFlow |
The grid-auto-flow utilities like grid-flow-col |
gridColumn |
The grid-column utilities like col-span-6 |
gridColumnStart |
The grid-column-start utilities like col-start-1 |
gridColumnEnd |
The grid-column-end utilities like col-end-4 |
gridRow |
The grid-row utilities like row-span-6 |
gridRowStart |
The grid-row-start utilities like row-start-1 |
gridRowEnd |
The grid-row-end utilities like row-end-4 |
gridTemplateColumns |
The grid-template-columns utilities like grid-cols-4 |
gridTemplateRows |
The grid-template-rows utilities like grid-rows-4 |
fontFamily |
The font-family utilities like font-sans |
fontSize |
The font-size utilities like text-xl |
fontSmoothing |
The font-smoothing utilities like antialiased |
fontStyle |
The font-style utilities like italic |
fontWeight |
The font-weight utilities like font-bold |
height |
The height utilities like h-8 |
inset |
The inset utilities like top-0 |
justifyContent |
The justify-content utilities like justify-between |
letterSpacing |
The letter-spacing utilities like tracking-tight |
lineHeight |
The line-height utilities like leading-normal |
listStylePosition |
The list-style-position utilities like list-inside |
listStyleType |
The list-style-type utilities like list-disc |
margin |
The margin utilities like mt-4 |
maxHeight |
The max-height utilities like max-h-screen |
maxWidth |
The max-width utilities like max-w-full |
minHeight |
The min-height utilities like min-h-screen |
minWidth |
The min-width utilities like min-w-0 |
objectFit |
The object-fit utilities like object-cover |
objectPosition |
The object-position utilities like object-center |
opacity |
The opacity utilities like opacity-50 |
order |
The flexbox order utilities like order-last |
outline |
The outline utilities like outline-none |
overflow |
The overflow utilities like overflow-hidden |
padding |
The padding utilities like py-12 |
placeholderColor |
The placeholder color utilities like placeholder-red-600 |
placeholderOpacity |
The placeholder color opacity utilities like placeholder-opacity-25 |
pointerEvents |
The pointer-events utilities like pointer-events-none |
position |
The position utilities like absolute |
resize |
The resize utilities like resize-y |
rotate |
The rotate utilities like rotate-90 |
scale |
The scale utilities like scale-150 |
skew |
The skew utilities like skew-y-3 |
space |
The "space-between" utilities like space-x-4 |
stroke |
The stroke utilities like stroke-current |
strokeWidth |
The stroke-width utilities like stroke-2 |
tableLayout |
The table-layout utilities like table-fixed |
textAlign |
The text-align utilities like text-center |
textColor |
The text-color utilities like text-red-600 |
textOpacity |
The text-color opacity utilities like text-opacity-25 |
textDecoration |
The text-decoration utilities like underline |
textTransform |
The text-transform utilities like uppercase |
transform |
The transform utility (for enabling transform features) |
transitionDuration |
The transition-duration utilities like duration-100 |
transitionProperty |
The transition-property utilities like transition-colors |
transitionTimingFunction |
The transition-timing-function utilities like ease-in-out |
translate |
The translate utilities like translate-y-6 |
userSelect |
The user-select utilities like user-select-none |
verticalAlign |
The vertical-align utilities like align-middle |
visibility |
The visibility utilities like invisible |
whitespace |
The whitespace utilities like whitespace-no-wrap |
width |
The width utilities like w-1/2 |
wordBreak |
The word-break utilities like break-all |
zIndex |
The z-index utilities like z-50 |
Referencing in JavaScript
It can often be useful to reference your configuration values in your own client-side JavaScript — for example to access some of your theme values when dynamically applying inline styles in a React or Vue component.
To make this easy, Tailwind provides a resolveConfig
helper you can use to generate a fully merged version of your configuration object:
import resolveConfig from 'tailwindcss/resolveConfig'
import tailwindConfig from './tailwind.config.js'
const fullConfig = resolveConfig(tailwindConfig)
fullConfig.theme.width[4]
// => '1rem'
fullConfig.theme.screens.md
// => '768px'
fullConfig.theme.boxShadow['2xl']
// => '0 25px 50px -12px rgba(0, 0, 0, 0.25)'


What is this?
This is a pomodoro timer, a pretty common productivity tool. This one was inspired by a post by Rachel Andrews about using the pomodoro method to refine how well you estimate time.
What's next?
The plan is to add on more features, such as:
- Local Storage so you can keep a history
- Stats page to view that history with nice charts
- An integrated todo list that takes in estimates (in numbers of pomodoros)
- Increased stats to see how well your estimates match up with how long you actually took, as well as whether or not you're improving.


WITNESS LIST Education Committee March 11, 2003 - 8:30A SB 35 Registering, but not testifying: For: King, Daniel (Hidalgo ISD/South Texas Association of Schools), Hidalgo, TX Pena, Martin (South Texas Association of Schools), Laguna Vista, TX On: Bugen, Claire (Texas School for the Deaf), Austin, TX Hatlen, Phil (Texas School for the Blind and V.I.), Austin, TX Miller, Kenneth (Texas School for the Blind & Visually Impaired), Austin, TX Smith, Jim (Texas School for the Deaf), Austin, TX SB 112 FOR: Clark, Jeffrey (National Federation of Independent Business/Texas), Austin, TX Lara, Rene (Texas Federation of Teachers), Austin, TX AGAINST: Gerstenschlager, Merry Lynn (Texas Eagle Forum), Dallas, TX Registering, but not testifying: For: Fickel, Ann (Texas Classroom Teachers Association), Austin, TX Hammond, Bill (Texas Association of Business), Austin, TX Whelan, Lauren (Association of Texas Professional Educators), Austin, TX SB 448 FOR: Brown, Gloria (Internet Child Safety Alliance), Austin, TX Brown, John (Internet Child Safety Alliance), Austin, TX Clickman, Charles (Child Watch of North America), Spring, TX Douglass, Cathy (Texas Association of School Boards/Texas Association of School Administrators), Austin, TX Registering, but not testifying: For: Lara, Rene (Texas Federation of Teachers), Austin, TX SB 547 Registering, but not testifying: For: King, Daniel (Hidalgo ISD/South Texas Association of Schools), Hidalgo, TX Pena, Martin (South Texas Association of Schools), Laguna Vista, TX On: Bugen, Claire (Texas School for the Deaf), Austin, TX Hatlen, Phil (Texas School for the Blind and V.I.), Austin, TX Smith, Jim (Texas School for the Deaf), Austin, TX SB 589 Registering, but not testifying: For: King, Daniel (Hidalgo ISD/South Texas Association of Schools), Hidalgo, TX Pena, Martin (South Texas Association of Schools), Laguna Vista, TX On: Bugen, Claire (Texas School for the Deaf), Austin, TX Hatlen, Phil (Texas School for the Blind and VI), Austin, TX Smith, Jim (Texas School for the Deaf), Austin, TX SB 590 Registering, but not testifying: For: King, Daniel (Hidalgo ISD/South Texas Association of Schools), Hidalgo, TX Pena, Martin (South Texas Association of Schools), Laguna Vista, TX On: Bugen, Claire (Texas School for the Deaf), Austin, TX Smith, Jim (Texas School for the Deaf), Austin, TX SB 618 ON: Lara, Rene (Texas Federation of Teachers), Austin, TX Whelan, Lauren (Association of Texas Professional Educators), Austin, TX Registering, but not testifying: On: Cox, Cathy (Texas State Comptroller), Austin, TX


Textures¶
In the previous tutorial (Hello cube) we made a pretty cube. But we know, solid colors is not enough. In this step, we try to add windows and doors.
Our cube should be like as:
In this step, we need code from previous tutorial (Hello cube), but instead solid colors, we need to change walls.
wall.wall {
texture: tex.brick; /* background of wall will be brick */
middle: floor.windows; /* floors will have windows */
bottom: floor.doors-and-windows; /* zero floor will have doors and windows */
padding: 10;
}
wall.roof {
texture: tex.roof; /* just only roof texture */
}
Ok, so we add floor-objects, so we need to add rules with floors:
floor.windows {
middle: tex.window; /* texture of object */
align: center; /* all windows will be aligned to center */
height: 12; /* height of the floor */
padding: 10; /* padding between windows */
}
floor.doors-and-windows {
texture: tex.roof; /* floor can have a background too */
middle: choice(tex.window, tex.window, tex.door); /* this function randomly chooses window, window or door. */
padding: 10; /* padding between objects on the floor */
}
And we need to describe textures:
tex.window { texture: "textures/wall-objs/window.png"; }
tex.door { texture: "textures/wall-objs/door.png"; }
tex.brick { texture: "textures/wall/brick.png"; }
tex.roof { texture: "textures/wall/red-tile.png"; }
And is enough to show better cube. The final code should be like this:
world {
width: 400;
height: 400;
body: my-little-cube;
}
my-little-cube {
display: cube;
wall: wall.wall;
roof: wall.roof;
width: 100;
depth: 100;
height: 100;
}
wall.wall {
texture: tex.brick;
middle: floor.windows;
bottom: floor.doors-and-windows;
padding: 10;
}
wall.roof {
texture: tex.roof;
}
floor.windows {
middle: tex.window;
align: center;
height: 12;
padding: 10;
}
floor.doors-and-windows {
texture: tex.roof;
middle: choice(tex.window, tex.window, tex.door);
padding: 10;
}
tex.window { texture: "textures/wall-objs/window.png"; }
tex.door { texture: "textures/wall-objs/door.png"; }
tex.brick { texture: "textures/wall/brick.png"; }
tex.roof { texture: "textures/wall/red-tile.png"; }
You can try it online: https://pixelopolis.herokuapp.com/examples/Tutorial/Textures
On the next tutorial, I will describe about containers: (Containers)


VERY BAD THINGS Review by Victory A. Marasigan http://www.gl.umbc.edu/~vmaras1/reviewsidx.html
I have to hand it to director Peter Berg. With his first feature Very Bad Things, he's delivered a story so alternatingly hilarious and repulsive that by the time it's over, you don't know whether you actually liked the movie or not. Indeed, I don't think any film in recent memory has caused such large groups of moviegoers to get up and walk out of the theater at regular intervals. It's not that the film is poorly made; it's that Very Bad Things grabs a hold of you and squeezes until you literally can't take it any more.
At its outset, Berg fools us into thinking we'll be watching a City Slickers-type weekend adventure, as five young-and-up-and-coming 30-somethings (wild guys Jeremy Piven, Daniel Stern, Christian Slater, Leland Orser, and John Favreau) pack into a minivan and head off to Vegas. Their mission: to celebrate that time-honored night of controlled chaos - the bachelor party. Groom Favreau is excited but understandably tense, as his bride-to-be (Cameron Diaz) has voiced quite clearly her disapproval of the ritual.
Once in their Vegas hotel suite, the boys really let loose, absorbing drugs and booze like sponges. Their raw ebullience turns to abject horror when, in a coital frenzy, one of the guys accidentally kills the prostitute they hired to entertain them. In the first of a series of panic-induced bad decisions, the guys decide to take the body out to the desert and bury it. Not just bury it, but chop it up with a store-bought electric turkey carver and bury it. Thank God for the 24-hour Target, huh?
Their hideous deed done, the sullied boys head home so the groom can prepare for his wedding. Of course, things are not as easy to sweep under the rug as they'd like. As in Poe's "The Tell-Tale Heart," echoes of their crime haunt the boys as soon as they set foot back on home turf. In one particularly well-played scene, family-man Stern lets his paranoia engulf him to the point of hysteria while trying to buy snacks at a gas station/convenience store. His behavior doesn't go unnoticed, and it isn't long before the boys' need for damage control leads to an even larger body count.
Though it seems inconceivable that humor could be mined out of the deadly serious premise I've just described, this film is a comedy. It is in some ways a variation on There's Something About Mary, with the macabre substituted for just plain gross. The proceedings are made all the more shocking by the fact that these are normal guys-next-door doing...well, very bad things.
Though the five leads seem more suited to the demands of wacky comedy, some (especially Ellen regular Jeremy Piven) are able pull off unhinged grief and mania quite effectively. The reserved Favreau, the film's moral anchor, makes good as the tense groom who just wishes the madness would all just go away. Slater's aphasic Robert is a look at what his Heathers character might have become if he'd survived that film and gone into real estate. Diaz, as Favreau's future bride, turns out to be the film's most eccentric personality, a woman so hell-bent on having her wedding she will stoop to new lows to make sure it isn't ruined. And Jeanne Tripplehorn, as Stern's seemingly homey wife, elicits some cheers when she explodes and goes ballistic on an intruding baddie.
Uneven but engrossing, Very Bad Things is able to generate some palpable crackling tension, a merit on which I can easily recommend it. Whether the carnage is too much is totally a matter of personal taste (which is so significant you can either add or subtract a whole letter grade from my own rating.)
Like the rest of the movie, Very Bad Things' final act cadenza is either laugh-out-loud hilarious or downright offensive. You can almost hear the Farelly brothers offering their approval. Whatever it's effect on you, you have to walk out of the theater after that.
GRADE: B
Reviewed October 15, 1998 at General Cinema Towson Commons, Towson, MD.
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


| SYMBOL | LETTER |
|---|---|
| ✪ | V |
| ❖ | I |
| ◉ | Y |
| ❥ | O |
| ⑄ | C |
| ␦ | P |
| ⎖ | E |
| ⏚ | Z |
| ⍦ | K |
| ▲ | S |
| ↓ | T |
| ☡ | B |
| ◘ | F |
| ⌄ | A |
Robin:
Good! You made it here. When you’ve deciphered the code, it spells the name of a website facilitating researchers who wish to share their research. Go to the website, and go look for the repository for this escape room. A hint: use the keyword “NORMENT”
Take the letters of the clue, append .io
and it becomes the link to a website (something like <code>.io
). Go have a look at the website and see if you can find the clue in the repository for this puzzle!
Are you stuck? Need a hint?
Still stuck? Need an even bigger hint?
Click here to get a bigger hint
Once you’ve found the clue, click here to continue:


A PdxInstance
is a light-weight wrapper around PDX serialized bytes. It provides applications with run-time access to fields of a PDX serialized object.
You can configure your cache to return a PdxInstance
when a PDX serialized object is deserialized instead of deserializing the object to a domain class. You can then program your application code that reads your entries to handle PdxInstance
s fetched from the cache.
Note:
This applies only to entry retrieval that you explicitly code using methods like EntryEvent.getNewValue
and Region.get
, as you do inside functions or in cache listener code. This does not apply to querying because the query engine retrieves the entries and handles object access for you.
If you configure your cache to allow PDX serialized reads, a fetch from the cache returns the data in the form it is found. If the object is not serialized, the fetch returns the domain object. If the object is serialized, the fetch returns the PdxInstance
for the object.
Note:
If you are using PdxInstance
s, you cannot use delta propagation to apply changes to PDX serialized objects.
For example, in client/server applications that are programmed and configured to handle all data activity from the client, PDX serialized reads done on the server side will always return a PdxInstance
. This is because all of data is serialized for transfer from the client, and you are not performing any server-side activities that would deserialize the objects in the server cache.
In mixed situations, such as where a server cache is populated from client operations and also from data loads done on the server side, fetches done on the server can return a mix of PdxInstance
s and domain objects.
When fetching data in a cache with PDX serialized reads enabled, the safest approach is to code to handle both types, receiving an Object
from the fetch operation, checking the type and casting as appropriate. However, if you know that the class is not available in the JVM, then you can avoid performing the type check.
PdxInstance
overrides any custom implementation you might have coded for your object’s equals
and hashcode
methods. Make sure you have marked at least one identity field when writing PDX serialized objects. If you do not set as least one identity field, then the PdxInstanceequals
and hashCode
methods will use all PDX fields to compare objects and consequently, will not perform as well.
Prerequisites
- Understand generally how to configure the Geode cache. See Basic Configuration and Programming.
Procedure
In your application where you fetch data from the cache, provide the following configuration and code as appropriate:
In the cache.xml file of the member where entry fetches are run, set the
<pdx>
read-serialized
attribute to true. Data is not necessarily accessed on the member that you have coded for it. For example, if a client application runs a function on a server, the actual data access is done on the server, so you setread-serialized
to true on the server.For example:
// Cache configuration setting PDX read behavior <cache> <pdx read-serialized="true" /> ... </cache>
Write the application code that fetches data from the cache to handle a
PdxInstance
. If you are sure you will only retrievePdxInstance
s from the cache, you can code only for that. In many cases, aPdxInstance
or a domain object may be returned from your cache entry retrieval operation, so you should check the object type and handle each possible type.For example:
// put/get code with serialized read behavior // put is done as normal myRegion.put(myKey, myPdxSerializableObject); // get checks Object type and handles each appropriately Object myObject = myRegion.get(myKey); if (myObject instanceof PdxInstance) { // get returned PdxInstance instead of domain object PdxInstance myPdxInstance = (PdxInstance)myObject; // PdxInstance.getField deserializes the field, but not the object String fieldValue = myPdxInstance.getField("stringFieldName"); // Update a field and put it back into the cache // without deserializing the entire object WritablePdxInstance myWritablePdxI = myPdxInstance.createWriter(); myWritablePdxI.setField("fieldName", fieldValue); region.put(key, myWritablePdxI); // Deserialize the entire object if needed, from the PdxInstance DomainClass myPdxObject = (DomainClass)myPdxInstance.getObject(); } else if (myObject instanceof DomainClass) { // get returned instance of domain object // code to handle domain object instance ... } ...
Note: Due to a limitation with PDX, if your PDX-enabled cache contains TreeSet domain objects, you should implement a Comparator that can handle both your domain objects and PdxInstance objects. You will also need to make the domain classes available on the server.