Q: What is this programme about?
A: We at ILUGD have thought of involving people who can dedicate time during this summer to open source projects so that it can help them hone their skills. We are still in the planning phase of what projects will be in for this summer, but they will be announced very soon. This is a great opportunity for newbies starting out in open-source to get involved and collaborate with amazing people!
Q: Is there any code of conduct?
A: Yes, you are expected to read the Code of Conduct before starting to contribute.
Q: What is the time duration of the project?
A: You will be working on the problems for a prospective duration of 2 months. You will be paired with others interested in working on the project, plus we'll be there to help you out of you get stuck :)
Q: What is the eligibility criteria?
A: You're welcome to work with us even if you're in school! We have working professionals as well as awesome school students collaborating on many projects. [Hop on!]
Q: How much time do I need to dedicate to the project?
A: There's no hard and fast rule for committing a bare minimum number of hours.
You can fix up the number of hours per week according to what suits you.
Q: Can I be a mentor for this programme?
A: Definitely, just select the role accordingly in the google doc and we will set you up.
Q: Is there a stipend for the programme?
A: No, this is just an initiative for promoting open-source culture along with doing a solid project. There's no stipend since this is just to hone your skills.
Q: What are the starting and ending dates of the program?
A: We will announce it very soon, just stay tuned.
Q: How many mentors will be there for each project?
A: This will depend on the number of people who apply for the role of mentor. We will let you know when everything is finalized.
Q: Will the project be done remotely?
A: Yes, this is an open source project and will be accomplished remotely.
Q: How will be the projects and mentors selected?
A: Once the registrations are closed, mentors will be shortlisted by us according to the projects selected.
Q: FAQs did not answer my question. How can I get connected to the community to ask my question?
A: You can get connected to us on mailing list and ping us there:)


{{ reviewer.date_joined }}
{{ reviewer.origin }}
{{ reviewer.location }}
{{ reviewer.fave_restaurant }}
{{ reviewer.bio }}
View all reviews by {{ reviewer.name }}
Connect with {{ reviewer.name }}
Facebook Linkedin


Our Team
| Position | Name | Mobile | Organization | Designation | |
|---|---|---|---|---|---|
| President | Swati Mukul Ringe |<EMAIL_ADDRESS>|<PHONE_NUMBER> | Fr. CRCE, Bandra (West) | Assistant Professor |
| Convener | Dileep Chandra |<EMAIL_ADDRESS>|<PHONE_NUMBER> | Fr. CRCE, Bandra (West) | Assistant Professor |
| Member | Kranti Wagle |<EMAIL_ADDRESS>|<PHONE_NUMBER> | Fr. CRCE, Bandra (West) | Assistant Professor |
| Representative from nearby Incubation Centre | Dr. S.S. Rathod |<EMAIL_ADDRESS>|<PHONE_NUMBER> | S.P.I.T., Andheri | Dean, Academics |
| Bank/Investor | Mr Sanjeev Kumar |<EMAIL_ADDRESS>|<PHONE_NUMBER> | Corporation Bank, Hill road, Bandra (West) | Sr Manager |
| Expert from nearby Industry | Mr Samir Kaji |<EMAIL_ADDRESS>|<PHONE_NUMBER> | Selec Controls Pvt. Ltd | Managing Director |
| Alumni Entrepreneur | Mr Ayush Jain |<EMAIL_ADDRESS>|<PHONE_NUMBER> | Uthopia Tech Private Limited | Co-Founder |
| Patent Expert | Dr. V.S. Jorapur |<EMAIL_ADDRESS>|<PHONE_NUMBER> | Fr. CRCE, Bandra (West) | Associate Professor |


--- layout: archive title: Zulip Chat Archive permalink: /stream/113488-general/topic/overriding.20decidable.20instances.html ---
Can someone point me to an example of overriding a decidable
instance with a faster algorithm?
The implementation of nodup_decidable
is too slow. :-)
You create your own instance and you give it higher priority than nodup_decidable
. Is this for lists? Be sure that the culprit nodup_decidable
and not the fact that comparing objects (e.g. nat
) is slow
One more consideration: is this for a proof or for a program? If it's for a proof, you can write a tactic that does the comparison faster.
decidable_prime
has two implementations
For checking nodup
of big things like those lists of numbers, it helps if you've put them in order. list.chain
is linear time
Oh, wait this doesn't work for cycles, since the order matters. You can still improve on the n^2 performance of the default implementation by utilizing the order. If you sort the list then you can check for duplicates in linear time
{% endraw %}Last updated: Apr 24 2020 at 19:02 UTC


TWindowRequestEvent = procedure(Sender: TObject;
const Target, URL: string) of Object;
The TWindowRequestEvent type is the type for window request events. These events occur when a Target Frame of "_blank" is specified or if the Target name does not match any of the current Frame names.
Generally, the user would want to open a new window to handle the URL when this event occurs.
See also:


WebSocket connection tester
WebSocket address:
Trial address:
New state:
Connect websocket
Change state
Close websocket
Received Messages


--- layout: post title: Jessye Norman date: '2017-07-11T10:31:00+02:00' categories: - Sketchbooks - Sketches picture_url: https://film-Storyboards.tumblr.com/post/162866073257 ---


If you are looking for a Coronavirus visualization map, it has moved. You can find it at
this link
.


Chaos Game
Chaos Game is a mathematical simulation used to generate fractal patterns, it is a subset of the field of study called chaos theory. These patterns exhibit self-similar tendencies where patterns created are often smaller version of the starting shape. The rules to this game are simple.
- N number of large starting points, or vertices, are chosen and placed on the board.
- A small point is then placed anywhere on the board.
- After this setup is complete the game is started. A random vertex is chosen and a new small point is placed half-way in-between this random vertex and the initial small point.
- This new small point is then used in the same way as the initial small point. Another random vertex is chosen and a new small point is placed half-way in-between this random vertex and our new small point.
- This process continues for as long as the player wants.
Different versions of Chaos Game may choose a different ratio of where the small points are placed. Common ratios include 1/2(as shown with this program), 2/5, 3/8, and many others. All of these ratios, coupled with choosing different numbers of starting vertices, will produce different fractal patterns. Using a ratio of 1/2 with 3 starting vertices arranged in an equilateral triangle will produce a fractal pattern known as the Sierpinski triangle. The Sierpinski triangle was first described by Polish mathematician Waclaw Sierpinski in the early 1900's, but examples of similar patterns have been shown much early in a number of churches and cathedrals in Europe. Some of these examples date back to medieval times.


Privacy Statement
Your privacy is important to you – and it is also important to us.
So here’s how our lawyers explain it:
This Privacy Policy does not govern privacy practices associated with offline activities. Dundjinni Enterprises, Inc. reserves the right to change the Privacy Policy from time to time at its sole discretion. Except as set forth in this Privacy Policy or the Terms of Use, your personal information will be deemed to be confidential. Personal information is defined as any information that identifies or can be used to identify, contact, or locate the person to whom such information pertains. Any non-personal information or material sent to Dundjinni Enterprises, Inc. will generally be deemed to not be confidential. You understand and agree that we may disclose information about you if we have a good faith belief that we are required to do so by law or legal process, to respond to claims, or to protect the rights, property, or safety of Dundjinni Enterprises, Inc. or others.
To prevent unauthorized access, maintain data accuracy, and ensure the correct use of information, Dundjinni Enterprises, Inc. has appropriate physical, electronic, and managerial procedures to safeguard and secure the personal information collected online. Protecting the privacy of the very young is especially important. For that reason, Dundjinni Enterprises, Inc. never collects or maintains information at our web site from those we actually know are under 13, and no part of the web site is structured to attract anyone under 13.
If, at the time you provide personal information to Dundjinni Enterprises, Inc., you are given the opportunity to limit how such information will be used to communicate with you, either by Dundjinni Enterprises, Inc. or by third parties, Dundjinni Enterprises, Inc. will not change your preference in this regard without your express consent. However, if Dundjinni Enterprises, Inc. sells assets (or the assets of a division or subsidiary) to another entity, or Dundjinni Enterprises, Inc. (or a division or subsidiary) is acquired by, or merged with, another entity, Dundjinni Enterprises, Inc. may provide to such entity customer information that is related to that part of our business that was sold to or merged with the other entity without your consent.
Dundjinni Enterprises, Inc. collects your personal information in order to record and support your participation in the activities you select. Personal information resides on a secure server. We use the personal information to complete an order.
Dundjinni Enterprises, Inc. uses "cookies" to track your visit. A cookie is a small amount of data that is transferred to your browser by a Internet Web server and can only be read by the server that gave it to you. It functions as your identification card, and enables Dundjinni Enterprises, Inc. to record your passwords, purchases, and other use preferences. Dundjinni Enterprises, Inc. does not generally use the IP/Internet address of your computer to identify you personally unless you expressly provide consent to remember or store your password.
Dundjinni Enterprises, Inc. may also collect information about the use of the Site, such as the types of services used and how many users we receive daily. This information is collected in aggregate form, without identifying any user individually. Dundjinni Enterprises, Inc. may use this aggregate, non-identifying statistical data for statistical analysis, marketing, or similar promotional purposes.
The Dundjinni Enterprises, Inc. Web Site contains links to other Internet sites at which personal information is collected. In such instances, unless expressly provided to the contrary, the collection and use of your personal information will be governed by the privacy policy applicable to that site. Dundjinni Enterprises, Inc. is not responsible for the content or privacy practices of non-Dundjinni Enterprises, Inc. Web sites to which there may be a link so the User should review the privacy policy of such Internet sites before using them.
You can engage in many activities without providing any personal information. Other activities may require you to provide personal information. Dundjinni Enterprises, Inc. or third parties authorized by Dundjinni Enterprises, Inc. may also collect certain technical and routing information about your computer to facilitate your use and track patterns. This may include collecting environmental variable data, such as browser type, operating system, CPU speed, and the Internet Protocol ("IP") address of your computer.
When you submit personal information to Dundjinni Enterprises, Inc., you understand and agree that this information may be transferred across national boundaries and may be stored and processed in any of the countries in which Dundjinni Enterprises, Inc. and its affiliates, subsidiaries, or contractors maintain offices, including, without limitation, the United States. You also acknowledge that in certain countries or with respect to certain activities, the collection, transferring, storage, and processing of your information may be undertaken by trusted vendors of Dundjinni Enterprises, Inc.


Fake News
Fake news is news created to mislead or misinform people through traditional news media or social media. It is a serious issue faced by not just India but around the world. People around the world are sensitive to things like religion, caste and economy. It revolves around these topics and also tries to create fear and hatred in the minds of people.
Fake news is news created to mislead or misinform people through traditional news media or social media. It is a serious issue faced by not just India but around the world. People around the world are sensitive to things like religion, caste and economy. It revolves around these topics and also tries to create fear and hatred in the minds of people.
Fake news creates: Misinformation,Community hatred and Violence
The major platform for the spread of fake news are social media platforms like Whatsapp, Facebook, Twitter etc. Companies around the world, especially social media companies have taken various steps to curb the spread of fake news via social media.
During the time of Covid pandemic the rise in fake news was alarming. Misinformation and fake remedies to cure the disease were on the rise. This situation was used to spread fear, confusion and mistrust among people.
Check for credibility: See if you are getting correct information from the source you are supposed to get. For example, are you getting exam related information from a website dedicated to such information?
Ask questions:Ask the sender where he got the message from.
Do your own research:Cross check facts and read. Even if the news is on major media channels, doing your own research allows you to better insights about the situation.


To: {{letter.byline}}
Thank you for submitting your letter in response to the article:
{{letter.article.title|safe}}.
The title of your letter is:
{{letter.title}}
A GroundUp editor will make a decision whether to publish it or not within two working days.
If we publish the letter, it may be edited for typos, grammar and style. The title may also be changed.
We will communicate with you via this email address: {{letter.email}}.
Here is the text of your letter:
Dear Editor
{{letter.text|linebreaks}}
Sincerely
{{letter.byline}}


In CSS we use things called selectors to target the style rules we write
to particular elements in HTML. We can target HTML tags like

or

directly, but we
often want to only target a subset of elements that use a particular
HTML tag.
In CSS there are two selectors that allow us to specify exactly which HTML elements a ruleset will be applied to. These are the class and id selectors. In HTML classes and ids are defined using the attributes “class” and “id”, like this:

Bio

In CSS a class selector is represented by a full stop “.”, while an id selector is represented by a hashtag “#”, like this:
.sub-section {
font-size: 14px;
}
#bio {
color: red;
}
Classes and ids may seem alike at first, but are not. It is best practice to use classes for rulesets that are (or might be) applied to multiple elements, while ids should be used to apply rulesets that will only ever be applied to a single specific element.
There are a number of reasons for this. In CSS both classes and ids are treated identically, except that id selectors take precedence over class selectors(both take precedence over element selectors). This is because selectors that are more specific take precedence over those that are more general, and as id should only be applied to a single element it is the most specific of all. This allows us to ensure that the rules we write specifically for this element will always override conflicting rules.
In HTML there are restrictions on the use of the id attribute that ensure that a particular id can only be attached to a single element. An element can have as many classes as we like, but it can only have one id. Classes can be used as many times as we like on one page, but each id can only be used once in a particular HTML document. This prevents us from accidentally creating duplicate ids.
One special function of ids is that they can be used in a URL to automatically scroll the page to a particular element when it is loaded. If you have ever seen a URL like: EXAMPLE, this is how they work. Ids also play an important role in javascript, where the function GetElementByID can be used to manipulate a specific element.
And while classes and ids are extremely useful, the best practice of all is to avoid using them if it is possible to without making your HTML confusing, for example instead of:

You should try use an equivelant HTML tag like:


Wheter you have a complaint, want some help managing a safe trip to Amsterdam or anything other, don't hesitate to contact us via the provided form!
Your's truly Mongo Gruppe


Rodenpicula:
Yes! My gender is different from all the others. The Spicula Kamael were created for a specific purpose, so there was no particular need for them to have a female form.
But for me that form was essential to my purpose: the foundation upon which the Metusela Kamael were built.
"Foundation?"


>>
<<
Usr
Pri
JfC
LJ
Phr
Dic
Rel
Voc
!:
Help
User
Jbreak - Interrupt Execution
If J isn't responding you can signal it to interrupt execution. A J task can be signaled by another task called Jbreak. Jconsole is signaled by ctrl+c or Jbreak.
One signal stops execution at the start of the next sentence with an attention interrupt. Two signals stops execution in the middle of a sentence with a break. A signal when a program requests keyboard input (1!:1[1) stops execution with an input interrupt.
Windows install creates JBreak yellow J icon. To signal J, click the JBreak icon.
Mac install creates Jbreak yellow J icon. To signal J, click the Jbreak icon.
Linux install creates jbreak, a shell script, in the J bin folder. Create a shortcut to run jbreak as appropriate for your desktop for easy use. To signal J, run the jbreak shell script.
It is better to use a single signal to get an attention interrupt as the state of execution at the start of a line is clear. In a break it is not clear what has been executed and there is some chance of crash as it is difficult to ensure a clean state in all cases. Wait several seconds before getting impatient and giving the second signal.
Jbreak also signals Jconsole, although it is usually easier to use ctrl+c.
Tech Details
The JE (J Engine) tests a byte in memory for a signal. This byte can be shared with another task with a mapped file. The other task signals J by writing to the mapped byte.
9!:47 sets the name of the break file that is the shared mapping of the byte. 9!:46 returns the name of the break file.
Profile uses break.ijs (open 'break') to set a default break file. JBreak runs Jconsole with sentence break'' to write to all default break files. If you are working with only 1 J task, or if only one task is running then this works fine. However, if you have a running production J task while you are using break with another J task you will break both tasks unless you take specific steps.
If you want a task to not be affected by default break signals then it should use setbreak from break.ijs to give the task a break file with a different suffix. For example: 9!:46''
C:\Users\John\j701-user\temp\jbreak\2748.default
setbreak_j_ 'production'
C:\Users\John\j701-user\jbreak\2820.production
9!:46''
C:\Users\John\j701-user\\jbreak\2820.production
This task will not be affected by the default Jbreak. You can provide an argument to breaker.ijs to signal J tasks with a non default suffix.
>>
<<
Usr
Pri
JfC
LJ
Phr
Dic
Rel
Voc
!:
Help
User


Located just north of Florianopolis, this area is very quiet and beautiful. The Yacht Club however is prohibitively expensive. A good, much more reasonable alternative, is Itajai which is 15 miles north. It is not mentioned in any pilot book.
Yachts must check in with the Capitania Dos Portos in Itajai, about 45 minutes away by car.
There is a yacht club here with good facilities. Take care if asked to tie alongside the outer wall as the pier is tall and the lower freeboards of sailing vessels make this not a good choice. There are slips available to members only inside the pier.
Cruisers have reported to feel very safe walking around the neighboring areas. There is a good mechanic at the yacht club and nearby repair facilities.
Provisioning is fair here.
Last updated August 2010.


OUR PETS
DONATIONS
NEWS
CONTACTS
Not only people
need a house
MAKE A FRIEND
Our pets who are looking for a house
Molly
Peat
Bobby
LEARN MORE
LEARN MORE
LEARN MORE
KNOW THE REST
You can help our shelter
Cups & Bowls
Sleeping area
Shampoos
Toys
Medicines
Food
Transportation
Vitamins
Collars & Lashes


Weary of her storybook, one "without pictures or conversations," the young and imaginative Alice follows a hasty hare underground--to come face-to-face with some of the strangest adventures and most fantastic characters in all of literature.
Alice was beginning to get very tired of sitting by her sister on the bank and of having nothing to do: once or twice she had peeped into the book her sister was reading, but it had no pictures or conversations in it, "and what is the use of a book," though Alice, "without pictures or conversations?"


Monitor interface.
More...
#include <monitor.h>
Monitor constructor.
- Parameters
-
| interval | Number of batches between printing. |
| pattern | A regular expression specifying which tensors to monitor. |
| stat_func | A function that computes statistics of tensors. Defaults to mean absolute value |x|/size(x). |
| static void mxnet::cpp::Monitor::executor_callback |
( |
const char * |
name, |
|
|
NDArrayHandle |
ndarray, |
|
|
void * |
monitor_ptr |
|
) |
| |
|
staticprotected |
| void mxnet::cpp::Monitor::install |
( |
Executor * |
exe, |
|
|
bool |
monitor_all = false |
|
) |
| |
install callback to executor. Supports installing to multiple executors.
- Parameters
-
| exe | The executor to install to. |
| monitor_all | If true, monitor both input and output, otherwise monitor output only. |
| void mxnet::cpp::Monitor::tic |
( |
| ) |
|
Start collecting stats for current batch. Call before calling forward.
| std::vector<Stat> mxnet::cpp::Monitor::toc |
( |
| ) |
|
End collecting for current batch and return results. Call after computation of current batch.
| void mxnet::cpp::Monitor::toc_print |
( |
| ) |
|
End collecting and print results.
| bool mxnet::cpp::Monitor::activated |
|
protected |
| std::vector<Executor*> mxnet::cpp::Monitor::exes |
|
protected |
| int mxnet::cpp::Monitor::interval |
|
protected |
| std::regex mxnet::cpp::Monitor::pattern |
|
protected |
| std::vector<Stat> mxnet::cpp::Monitor::stats |
|
protected |
| int mxnet::cpp::Monitor::step |
|
protected |
The documentation for this class was generated from the following file:


arrow_back
Loading
filter_list
swap_vert
file_download
refresh
public
more_vert
Info
Chapters
Change display mode
Sorting mode
Downloaded
Unread
Remove filter
Download
Mark as unread/read
Filter
Reverse Sort Order
Search
Refresh Chapters
Open In Browser
Download
More
turned_in
Please wait
Please wait while we download the page list for this manga...
Change display mode
Show title
Show chapter number
Close
Sorting mode
By source
By chapter number
Close
Download
Download 1
Download 5
Download 10
Download unread
Download all
Close


|
MatrixBerryCore
|
Namespaces | |
| lib | |
Functions | |
| function | checkcelloffunc (in inpArray, in isEmptyAllowed, in varargin) |
| CHECKCELLOFFUNC checks that input variable is either a function_handle of cell of function_handle (char is converted to a cell), in case validation fails an exception is thrown. More... | |
| function | checkcellofstr (in inpArray, in flagVec, in varargin) |
| CHECKCELLOFSTR checks that input variable is either a char or cell of strings (char is converted to a cell), in case validation fails an exception is thrown. More... | |
| function | checkgen (in x, in typeSpec, in varargin) |
| CHECKGEN checks a generic condition provided by typeSpec string in the following format: 'isnumeric(x)&&isa(x,'int32')||isscalar(x)' etc In case validation fails an exception is thrown. More... | |
| function | checkgenext (in typeSpec, in nPlaceHolders, in varargin) |
| CHECKGENEXT checks a generic condition provided by typeSpec string in the following format: 'isnumeric(x1)&&isa(x2,'int32')||isscalar(x2)' etc In case validation fails an exception is thrown. More... | |
| function mxberry::core::check::checkcelloffunc | ( | in | inpArray, |
| in | isEmptyAllowed, | ||
| in | varargin | ||
| ) |
CHECKCELLOFFUNC checks that input variable is either a function_handle of cell of function_handle (char is converted to a cell), in case validation fails an exception is thrown.
* Input: * regular: * inpArray: anyType[] * optional: * isEmptyAllowed: logical[1,1] - if true, {} passes the check and * causes an exception otherwise, false by default * properties: * nCallerStackStepsUp: numeric[1,1] - number of steps up in the call * stacks for the caller, by which name the full message tag is to * be generated, =1 by default * Output: * inpArray: cell[1,] of char[1,] *
| function mxberry::core::check::checkcellofstr | ( | in | inpArray, |
| in | flagVec, | ||
| in | varargin | ||
| ) |
CHECKCELLOFSTR checks that input variable is either a char or cell of strings (char is converted to a cell), in case validation fails an exception is thrown.
* Input: * regular: * inpArray: anyType[] * optional: * flagVec: logical[1,2] - contains the following flags * isEmptyAllowed: logical[1,1] - if true, {} passes the check and * causes an exception otherwise, false by default * isCheckedForBeingARow: logical[1,1] - if true, in * case inpArray is cell, it is expected to be a row * properties: * nCallerStackStepsUp: numeric[1,1] - number of steps up in the call * stacks for the caller, by which name the full message tag is to * be generated, =1 by default * * Output: * inpArray: cell[1,] of char[1,] *
| function mxberry::core::check::checkgen | ( | in | x, |
| in | typeSpec, | ||
| in | varargin | ||
| ) |
CHECKGEN checks a generic condition provided by typeSpec string in the following format: 'isnumeric(x)&&isa(x,'int32')||isscalar(x)' etc In case validation fails an exception is thrown.
* Input: * regular: * x: anyType[] * typeSpec: char[1,]/function_handle - check string in * the folowing format: 'isnumeric(x)&&ischar(x)' * OR * function_handle[1,1] * * optional: * varName: char[1,] - variable name - used optionally instead of * variable name determined auotmatically via inputname(1) * properties: * * errorTag: char[1,] - tag for MException object thrown * in case of error. If not specified * '<CALLER_NAME>wrongInput' tag is used * * errorMessage: char[1,] - error message for MException object * thrown in case of error. If not specified the message * is generated automatically. * * nCallerStackStepsUp: numeric[1,1] - number of steps up in the call * stacks for the caller, by which name the full message tag is to * be generated, =1 by default *
| function mxberry::core::check::checkgenext | ( | in | typeSpec, |
| in | nPlaceHolders, | ||
| in | varargin | ||
| ) |
CHECKGENEXT checks a generic condition provided by typeSpec string in the following format: 'isnumeric(x1)&&isa(x2,'int32')||isscalar(x2)' etc In case validation fails an exception is thrown.
* Input: * regular: * typeSpec: char[1,]/function_handle - check string in * the folowing format: 'isnumeric(x)&&ischar(x)' * OR * function_handle[1,1] * nPlaceHolders: numberic[1,1] - number of place holders/arguments in * typeSpec * * x1: anyType[] * x2: anyType[] * x3: anyType[] * * optional: * x1VarName: char[1,] - variable name - used optionally instead of * variable name determined auotmatically via inputname * x2VarName: char[1,] - same but for x2 * * Example: * * mxberry.core.check.checkgenext('numel(x1)==numel(x2)',2,a,b,'Alpha') *


SHAME A film review by Jeff Meyer Copyright 1988 Jeff Meyer
Seen at the Seattle Film Festival: SHAME (Australia, 1988) Director: Steve Jodrell Screenwriters: Beverly Blankenship and Michael Brind Cast: Deborra-Lee Furness, Tony Barry, Simone Buchanan
Ever see BILLY JACK, or the incredibly bad TRIAL OF BILLY JACK? I always liked the initial concept, i.e., a violent liberal with Kung-Fu skills; rather than wiping out commies or Mafia gangsters, Billy would wipe up the floor with rednecks who messed with kids, minorities, hippies, peace-loving eccentrics or disabled people. It's rather incongruous to disembowel folk in the name of peace and love, I guess, but as a ten-year-old it did hold a certain logic for me when I saw it at the theater (my dad thought it was hilarious).  As a kid, the slaughter and rape scenes really disturbed me (as they should have, come to think of it); when viewing them at a later date, they disgusted me because their only purpose was to build the audience up to frenzy (rather like atrocities in a Rambo film, but that's usually pretty cardboard all around).
I have that problem with SHAME, a film that appears to be a drive-in exploitation film with trappings of social justice. It opens with a motorcycle rider (Furness) in black leathers crossing the country in Australia.  Major conspiracy city, it seems. She stops at a garage on the outskirts of town, where a dour but decent mechanic lets her sleep in the garage while her extremely fine looking Japanese bike (the kind that promote chase scenes) is being fixed.
That night, the mechanic's daughter (he is a widower) is verbally assaulted by several of the lads from the town. The cycle rider (who is a junior barrister on vacation) discovers that the daughter was gang-raped by a group of the local boys, and that her father has not spoken to her since as he thinks it is "her fault." While waiting for the bike to be fixed, Furness gets the girl to open up and realize it wasn't her fault, and eventually gets it through the mechanic's head that his daughter was raped. A reconciliation of sorts occurs between the two, and the daughter and father go to the police station to swear out a complaint against the rapists. I was beginning to hope that the film was going to avoid the drive-in cliches and do something original, like have Furness get these people legally. Of course not.
The main industry of the town is a cannery that keeps most of the population employed, and one of the rapists is the son of the owner, the Jane Wyman type from Falcon Crest who owns the town and treats the locals like lower class citizens. The women does everything but rub her hands together and order the butler to off the mechanic and his family. After getting her son and his cohorts out of jail, they go on a rampage. The barrister, trapped with the daughter inside the garage, puts on her leathers and revs up the bike. Coincidentally, the mechanic's mom and the mechanic are fighting off the mob of drunken scumbags with a steam machine, so the glowing dials of the motorcycle's instrument panels (somewhat more complicated than the one in BLUE THUNDER) and the rider (now completely obscured in her black leathers and reflective helmet) really look mysterious with the smoke swirling around her and the soundtrack music going "duh-DUH!" in the background.... I think you get the picture. If this followed the buildup it had been given, I expected to find that the cycle was armed with heat-seeking missiles....
No such luck. She puts the kid on the back of the cycle and gets her out of there. Then the "good" townspeople get large sticks and track the sadistic little whooses down and turn them over to the sheriff (who says the Down Under equivalent of "Well gosh-darned if you weren't right, Ma'am."). The ending and the crimes committed in the rest of the film, would have had impact if the kids and rapists weren't such cardboard villains; here, they seem to be waiting to be knocked down by a Hero/Heroine, and when the film tries to spotlight them at the end, as if they were making moral commentary, it's comes off as ludicrous. Against realistic deviants, it would have been acceptable, but the director tries to have an exploitation film and wring his hands over it, too, and it torked me off.
It does have good points: Furness is quite good at times, especially with the daughter, and the middle lulled my misgivings about the film away with some good character development around the mechanic and his family. But in general, rate this a no-go.
Moriarty, aka Jeff Meyer INTERNET<EMAIL_ADDRESS>Manual UUCP: {uw-beaver, sun, microsoft}!fluke!moriarty
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


Signing Kubica for 2020 'would be great' - Szafnauer
Team boss Otmar Szafnauer has confirmed that Racing Point is also pushing to sign up Robert Kubica for 2020.
by GMM F1At the end of a fraught return to the grid for the Pole this year, Kubica admitted that he is looking forward to the season finale in Abu Dhabi.
"Very good," he said in Brazil when asked about his late-season mood.
"Good because it's the last race. I have to be honest, it was a very long season."
Kubica's sponsor PKN Orlen will also leave Williams after Abu Dhabi, and it is believed the Polish oil company is in talks with Haas and Racing Point.
Kubica looks set to become a test and reserve driver, and combine that role with a race seat in another series like DTM.
Haas boss Gunther Steiner has said openly that he wants to sign the 34-year-old.
"I hope that in the coming days we will be able to announce something," he said in Brazil.
But Racing Point also wants to secure Kubica and his backing.
"It would be great if we had Robert on the team," boss Otmar Szafnauer told Poland's Eleven Sports.
"We respect him a lot, so it would be great if he could help us as a team."
body check tags ::


This is a Node.js module available through the
npm registry. Installation is done using the
npm install
command:
$ npm install serve-static
var serveStatic = require('serve-static')
Create a new middleware function to serve files from within a given root
directory. The file to serve will be determined by combining req.url
with the provided root directory. When a file is not found, instead of
sending a 404 response, this module will instead call next()
to move on
to the next middleware, allowing for stacking and fall-backs.
Enable or disable accepting ranged requests, defaults to true.
Disabling this will not send Accept-Ranges
and ignore the contents
of the Range
request header.
Enable or disable setting Cache-Control
response header, defaults to
true. Disabling this will ignore the immutable
and maxAge
options.
Set how "dotfiles" are treated when encountered. A dotfile is a file
or directory that begins with a dot ("."). Note this check is done on
the path itself without checking if the path actually exists on the
disk. If root
is specified, only the dotfiles above the root are
checked (i.e. the root itself can be within a dotfile when set
to "deny").
'allow'
No special treatment for dotfiles.'deny'
Deny a request for a dotfile and 403/next()
.'ignore'
Pretend like the dotfile does not exist and 404/next()
.The default value is similar to 'ignore'
, with the exception that this
default will not ignore the files within a directory that begins with a dot.
Enable or disable etag generation, defaults to true.
Set file extension fallbacks. When set, if a file is not found, the given
extensions will be added to the file name and search for. The first that
exists will be served. Example: ['html', 'htm']
.
The default value is false
.
Set the middleware to have client errors fall-through as just unhandled
requests, otherwise forward a client error. The difference is that client
errors like a bad request or a request to a non-existent file will cause
this middleware to simply next()
to your next middleware when this value
is true
. When this value is false
, these errors (even 404s), will invoke
next(err)
.
Typically true
is desired such that multiple physical directories can be
mapped to the same web address or for routes to fill in non-existent files.
The value false
can be used if this middleware is mounted at a path that
is designed to be strictly a single file system directory, which allows for
short-circuiting 404s for less overhead. This middleware will also reply to
all methods.
The default value is true
.
Enable or disable the immutable
directive in the Cache-Control
response
header, defaults to false
. If set to true
, the maxAge
option should
also be specified to enable caching. The immutable
directive will prevent
supported clients from making conditional requests during the life of the
maxAge
option to check if the file has changed.
By default this module will send "index.html" files in response to a request
on a directory. To disable this set false
or to supply a new index pass a
string or an array in preferred order.
Enable or disable Last-Modified
header, defaults to true. Uses the file
system's last modified value.
Provide a max-age in milliseconds for http caching, defaults to 0. This can also be a string accepted by the ms module.
Redirect to trailing "/" when the pathname is a dir. Defaults to true
.
Function to set custom headers on response. Alterations to the headers need to
occur synchronously. The function is called as fn(res, path, stat)
, where
the arguments are:
res
the response objectpath
the file path that is being sentstat
the stat object of the file that is being sentvar finalhandler = require('finalhandler')
var http = require('http')
var serveStatic = require('serve-static')
// Serve up public/ftp folder
var serve = serveStatic('public/ftp', {'index': ['index.html', 'index.htm']})
// Create server
var server = http.createServer(function onRequest (req, res) {
serve(req, res, finalhandler(req, res))
})
// Listen
server.listen(3000)
var contentDisposition = require('content-disposition')
var finalhandler = require('finalhandler')
var http = require('http')
var serveStatic = require('serve-static')
// Serve up public/ftp folder
var serve = serveStatic('public/ftp', {
'index': false,
'setHeaders': setHeaders
})
// Set header to force download
function setHeaders (res, path) {
res.setHeader('Content-Disposition', contentDisposition(path))
}
// Create server
var server = http.createServer(function onRequest (req, res) {
serve(req, res, finalhandler(req, res))
})
// Listen
server.listen(3000)
This is a simple example of using Express.
var express = require('express')
var serveStatic = require('serve-static')
var app = express()
app.use(serveStatic('public/ftp', {'index': ['default.html', 'default.htm']}))
app.listen(3000)
This example shows a simple way to search through multiple directories.
Files are look for in public-optimized/
first, then public/
second as
a fallback.
var express = require('express')
var path = require('path')
var serveStatic = require('serve-static')
var app = express()
app.use(serveStatic(path.join(__dirname, 'public-optimized')))
app.use(serveStatic(path.join(__dirname, 'public')))
app.listen(3000)
This example shows how to set a different max age depending on the served file type. In this example, HTML files are not cached, while everything else is for 1 day.
var express = require('express')
var path = require('path')
var serveStatic = require('serve-static')
var app = express()
app.use(serveStatic(path.join(__dirname, 'public'), {
maxAge: '1d',
setHeaders: setCustomCacheControl
}))
app.listen(3000)
function setCustomCacheControl (res, path) {
if (serveStatic.mime.lookup(path) === 'text/html') {
// Custom Cache-Control for HTML files
res.setHeader('Cache-Control', 'public, max-age=0')
}
}


Academy Admirers
रेकमेंडेड भवः
Home
Report Error
Fill the details in here and we will resolve it quickly.
Question Number
Issue Found
E-mail Address
*We never share your details with anyone
Submit


The Core Image library for PlotDevice adds image manipulation to PlotDevice. It’s like having control over Photoshop through simple Python programming commands. Core Image is a Mac OS X specific framework available from Mac OS X 1.4 (Tiger) and up (Leopard, ...). Core Image uses hardware acceleration whenever possible. You can apply filters and transformations to images with a real-time and interactive response. And, since all of the image manipulations are stored in a script, the process is non-destructive. The source images remain unchanged. The script is a recipe you can reuse on different source images.
| coreimage.zip
(1.4MB) Last updated for NodeBox 1.9.5 Licensed under GPL Author: Tom De Smedt |
Put the coreimage library folder in the same folder as your script so PlotDevice can find the library. It takes some time to load the library the first time.
coreimage = ximport("coreimage")
The canvas() command returns a new, empty canvas. It takes two parameters: the width and height of the canvas. You can set an optional quality parameter to ‘high’ to use 128-bit pixel depth but this is unnecessary in most cases.
canvas = coreimage.canvas(150, 150)
A canvas is a container of many layers which you can position, scale , rotate, blend, filter, etc. You can create layers from image files, fill colors, linear or radial gradients, paths (ovals, text, ...), lists of pixels colors, another layer or canvas (i.e. a group of layers), or Quicktime movie frames.
canvas.append()
The canvas.append() method adds a new layer to the top of the canvas. It is placed at the center of the canvas by default.
canvas.append(filename)
canvas.append(clr)
canvas.append(clr1, clr2, type="linear", spread=0.0)
canvas.append(path, background=None, fill=None, stroke=None, strokewidth=None)
canvas.append([clr1, clr2, clr3, ...], w, h)
canvas.append(layer)
canvas.append(canvas)
canvas.append(layer.render())
canvas.append(canvas.flatten())
canvas.append(open(filename).read())
canvas.append(movieframe)
Examples
Consider we have the following images, leaf.jpg and lily.tif.
leaf.jpg | lily.tif |
Core Image can use JPEG, GIF, PNG and TIFF images. If you are using images with an alpha channel the best way to import them is as transparent TIFF and not as a PNG (which can have jagged edges in Core Image).
A canvas with two layers from image files is easy enough:
l = canvas.append("leaf.jpg") l = canvas.append("lily.tif") canvas.draw()The canvas.append() method has four ptional parameters: the x and y position in pixels and w and h dimensions in pixels. The command returns the layer object. | |
Opaque fill layers are created from a standard PlotDevice color(). The layer will fill the entire canvas by
default.
l = canvas.append(color(1.0, 0.0, 0.5)) | |
Paths from PlotDevice can be transformed to a pixel layers
as well. The canvas.append() method has optional path parameters: fill,
background, stroke (black, transparent and transparent colors by default)
and strokewidth.
l = canvas.append(color(1.0, 0.0, 0.5))font(’Georgia-Italic’, 40) p = textpath(’text’, 0, 0) l = canvas.append(p, fill=color(1)) | |
Linear gradients can be defined as two colors:l = canvas.append(color(1), color(0)) | |
Both linear and radial gradients are defined by two colors. If you also define the
optional type parameter as ‘radial’ you get a radial gradient. You control the
range of the gradient center with the optional spread parameter (between 0.0 and
1.0).
l = canvas.append(color(1), color(0), type="radial") | |
You can also pass another canvas as a new layer. This way you have a subgroup of layers
that stick together.
l = canvas.append(color(0)) group = coreimage.canvas(100, 100) group.append("leaf.jpg") group.append("lily.tif") l = canvas.appebd(group) l.rotate(45) | |
If you have some byte data, for example image data downloaded from a site with the
Web library:
web = ximport("web") url = "http://nodebox.net/code/g/header.jpg" image_data = web.download(url) canvas = coreimage.canvas(150, 150) canvas.append(image_data, x=-190) | |
A layer from individual pixels can be created by supplying a list of colors and a width
and a height (thanks to Duane Bailey):
def fractal(x, y, depth=64): z = complex(x, y) o = complex(0, 0) for i in range(depth): if abs(o) <= 2: o = o*o + z else: return i return 0 #default, black pixels = [] w = h = 150 for i in range(w): for j in range(h): v = fractal(float(i)/w, float(j)/h) pixels.append(color(v/10.0, v/20.0, v/10.0)) l = canvas.append(pixels, w, h) |
If you think canvas.append() is too generic, there are various aliases that make it more understandable what kind of layer you’re creating (all return a new layer): canvas.fill(), canvas.path(), canvas.gradient(), canvas.group(), canvas.bytes(), canvas.pixels().
Layer copies
Existing layers in a canvas can be duplicated. The copy appears right above the duplicated layer:
l = canvas.append("leaf.jpg") dupl = l.duplicate()
You can copy layers from one canvas and append them to another canvas:
offscreen = coreimage.canvas(150,150) l = offscreen.append("leaf.jpg").copy() canvas.append(l)
You can pre-render layers with layer.render() (or a canvas with canvas.flatten()) once and then use them as new layers or in another canvas. The advantage is that all the transformations and filters are calculated only once instead of individually for each copy. You can think of this as ‘flattening’ a layer. See also the chapter on dynamics and caching.
Layer type
You can check what type of layer you are working with using the following properties:
l = canvas.append("leaf.jpg") print l.is_file >>> True
A canvas object acts as a list of layers. With a for-loop you can address each layer it contains:
for i in range(20): canvas.append("lily.tif") for layer in canvas: layer.x = random(canvas.w) layer.y = random(canvas.h) |
Layers can be named and easily retrieved later on. The canvas.append() method has an optional name parameter. You can then search the canvas for layer names with the recursive canvas.find() command or address layers as canvas properties:
canvas.append("leaf.jpg", name="bg") l = canvas.find("bg") print l.name, l.x, l.y >>> bg, 75, 75
canvas.append("leaf.jpg", name="bg") l = canvas.bg
Layer order
Each new layer is added to the top of the canvas. You can change the ordering of a layer with the following commands:
back = canvas.append("leaf.jpg") front = canvas.append("lily.tif") back.to_front() |
The layer.index property contains the layer’s position in the canvas. Like any list in PlotDevice the indices start from zero:
canvas.append("leaf.jpg") l = canvas.append("lily.tif") print l.index >>> 1
The layer.hide() method excludes the layer from the output:
canvas.append("leaf.jpg") l = canvas.append("lily.tif") l.hide()
Individual layers in the canvas can be moved, scaled, rotated, flipped, distorted and cropped.
You can use a layer’s x and y properties to move it around. These
properties store the layer’s position measured in pixels from the top-left of the
canvas.
canvas.append("leaf.jpg") l = canvas.append("lily.tif") l.x = 0 l.y = 0 | |
The same can be achieved using the layer.translate() method. This command
accepts two parameters, either absolute pixel values or relative positions between 0.0
and 1.0.
canvas.append("leaf.jpg") l = canvas.append("lily.tif") l.translate(1.0, 1.0) | |
You can scale images using pixel size or relative size. By supplying two parameters you
can scale width and height individually.
canvas.append("leaf.jpg") for i in range(10): l = canvas.append("lily.tif") l.x = i*20 l.scale(1.0 - i*0.1) | |
Rotating layers is just as easy:canvas.append("leaf.jpg") for i in range(10): l = canvas.append("lily.tif") l.rotate(i*10) | |
There’s also the layer.flip_vertical() and layer.flip_horizontal()
methods of course.
canvas.append("leaf.jpg") canvas.append("lily.tif").flip_vertical() | |
The layer.distort() method has optional dx0, dy0, dx1,
dy1, dx2, dy2, dx3, dy3 parameters setting the
displacement of the left top, right top, right bottom and left bottom corners of the
layer (in pixels or between 0.0 and 1.0).
canvas.append("leaf.jpg") l = canvas.append("lily.tif") l.distort(dy0=-500, dx2=-100) | |
The layer.crop() cuts a box from the image, starting from the top left position,
with the given width and height. Images are always cropped before they are rotated,
scaled and distorted.
canvas.append("leaf.jpg") l = canvas.append("lily.tif") l.crop(0, 0, 80, 80) |
Origin point
By default, all layer transformations originate from the layer’s center. However, you can change the layer’s origin point, have the layer rotate from the bottom right corner for example. Let’s turn on some of the visual aids in the Core Image library for a minute:
canvas.draw(helper=True)
We can clearly see the layer’s bounding box and how it is positioned around the central origin point. The layer rotates from the center. When we call layer.origin_bottom_left() to change the layer’s origin point to the bottom left, rotations will originate from over there. Also, now the layer’s bottom left is at the center of the canvas instead of the layer’s center. Think of the origin point as the layer’s anchor/pivot/orbit.
The following commands set the origin point:
Or you can just use layer.origin() to set it yourself:
print l.origin(0.23, 1.07) >>> (0.23, 1.07)
Layer bounds
To get the bounding box coordinates of layer, use layer.bounds():
print l.bounds() >>> (200.0, 78.647456721610681,<PHONE_NUMBER>0627165,<PHONE_NUMBER>43871)
To get the width and height of a transformed layer, use layer.size() or the width and height properties. Note that when you manipulate the layer with filters the actual rendered pixels may fall beyond the given bounds.
w, h = l.size() print w, h >>><PHONE_NUMBER>0627165,<PHONE_NUMBER>222603)
print l.width print l.height
You can easily position a layer at the center of the canvas with the layer.center() method:
l.center()
Aside from placing and transforming multiple layers in a canvas, we can also modify the color information in each layer.
The layer’s brightness property ranges between -1.0 and 1.0:
canvas.append("leaf.jpg") l = canvas.append("lily.tif") l.brightness = 0.25 | |
The layer’s contrast property ranges between 0.25 and 4.0:
canvas.append("leaf.jpg") l = canvas.append("lily.tif") l.contrast = 1.5 | |
The layer’s saturation property ranges between 0.0 and 2.0:
canvas.append("leaf.jpg") l = canvas.append("lily.tif") l.saturation = 2.0 | |
The layer.desaturate() method removes all color information:canvas.append("leaf.jpg") l = canvas.append("lily.tif") l.desaturate() print l.saturation >>> 0.0 | |
The layer.invert() method inverts all colors in the layer:
l = canvas.append("leaf.jpg") l.invert() l = canvas.append("lily.tif") l.invert() |
You can set a combination of brightness, contrast and saturation with the layer.adjust() method, which has three optional parameters brightness, contrast and saturation.
Layers can be composited by adjusting their individual transparency or by applying blend modes to create all sorts of effects.
The layer.blend() command takes one parameter ranging between 0 and 100 or
between 0.0 and 1.0:
canvas.append("leaf.jpg") l = canvas.append("lily.tif") l.blend(25) print l.opacity >>> 0.25 | |
canvas.append("leaf.jpg") for i in range(10): l = canvas.append("lily.tif") l.scale(0.5) l.x = random(canvas.w) l.y = random(canvas.h) l.blend(random()) | |
Screen blend displays pixels that are lighter than those underneath.
canvas.append("leaf.jpg") canvas.append("lily.tif", x=50) l = canvas.append("lily.tif", x=100) l.blend_screen() A similar effect is layer.blend_lighten(). | |
Multiply blend displays pixels that are darker than those underneath.
canvas.append("leaf.jpg") canvas.append("lily.tif", x=50) l = canvas.append("lily.tif", x=100) l.blend_multiply() A similar effect is layer.blend_darken(). | |
Overlay uses a combination of screen and multiply.
canvas.append("leaf.jpg") canvas.append("lily.tif", x=50) l = canvas.append("lily.tif", x=100) l.blend_overlay() | |
Soft light uses a combination of darken and lighten.
canvas.append("leaf.jpg") canvas.append("lily.tif", x=50) l = canvas.append("lily.tif", x=100) l.blend_softlight() | |
Hard light uses a combination of screen and multiply.
canvas.append("leaf.jpg") canvas.append("lily.tif", x=50) l = canvas.append("lily.tif", x=100) l.blend_hardlight() | |
Applying the hue of the blend layer to layers underneath:
canvas.append("leaf.jpg") canvas.append("lily.tif") l = canvas.append(color(1.0,0.0,0.5)) l.blend_hue(50) | |
Applying the hue and saturation of the blend layer to layers underneath:
canvas.append("leaf.jpg") canvas.append("lily.tif") l = canvas.append(color(1.0,0.0,0.5)) l.blend_color(50) |
Use the layer.blendmode property to check what blending mode the layer is using.
print l.blendmode >>> multiply
You can set the opacity and blend mode together with the layer.blend() command:
l.blend(25, mode="multiply") print l.opacity, l.blendmode >>> 0.25, color
l.blend("multiply")
The layer.blend_normal() command removes any blend mode from the layer.
The layer’s alpha mask stores information where the layer shines through and where it is opaque. Since the layer.mask property is a canvas object, it’s just as easy to work with alpha layers than it is with normal layers. You can position, transform, adjust, blend and filter them just as any other layer.
Applying a linear gradient alpha mask to the lily:
canvas.append("leaf.jpg") l = canvas.append("lily.tif") m = l.mask.gradient() m.rotate(45) | |
Using a PlotDevice path as a mask:
canvas.append("leaf.jpg") l = canvas.append("lily.tif") font("Georgia-Italic", 50) p = textpath("text", 0, 0) m = l.mask.append(p) m.y += 25 | |
Using the lily as a mask for a gradient layer:
canvas.append(color(0.4,0.0,0.2)) pink = color(1.0,0.0,0.5) white = color(1.0,1.0,1.0) l = canvas.gradient(pink, white) l.mask.append("lily.tif") | |
Complex mask made up of multiple layers:
l = c.gradient(pink, white) for i in range(3): m = l.mask.append("lily.tif") m.scale(1-i*0.4) m.rotate(20*i) m.blend("softlight") m.filter("zoomblur", amount=i*25) |
The Core Image library supports a number of filters that manipulate the pixels in a layer. Blur and sharpen are standard so you can set these as properties:
The layer.blur takes one parameter ranging between 0.0 and 100.0:
canvas.append("leaf.jpg") l = canvas.append("lily.tif") l.blur = 2 | |
Sharpening the layer:
canvas.append("leaf.jpg") l = canvas.append("lily.tif") l.sharpen = 10 | |
Other filters use the layer.filter() method:
canvas.append("leaf.jpg") l = canvas.append("lily.tif") l.filter("zoomblur", dx=25) |
Filter reference
There are many other filters like the zoom blur above. Each layer.filter() command
takes its own optional parameters to tweak. Scroll down for visual examples.
Zoom blur
Simulates the effect of zooming the camera while capturing the layer. Parameters are dx,
dy and amount ranging between 0.0 and 200.0.
layer.filter("zoomblur", amount=20, dx=0, dy=0)
Motion blur
Simulates a directional blur. Parameters are radius between 0.0 and 100.0 and
angle.
layer.filter("motionblur", radius=20, angle=0)
Noise reduction
Edges in the layer below a threshold are blurred, edges above are sharpened. Parameters are
noise between 0.0 and0.1 and sharpness between 0.0 and 2.0.
layer.filter("noisereduction", noise=0.02, sharpness=0.4
Bump distortion
Creates a bump or pinch from a point in the layer. Parameters are dx, dy,
radius between 0.0 and 600.0 and scale between -1.0 and 1.0.
layer.filter("bumpdistortion", dx=0, dy=0, radius=300, scale=0.5)
Bump distortion linear | stretch (Mac OS X 10.5 and up)
Creates a bump or pinch from a line in the layer. Parameters are dx, dy,
radius between 0.0 and 600.0, scale between -1.0 and 1.0 and angle.
layer.filter("stretch", dx=0, dy=0, radius=300, scale=0.5, angle=0)
Hole distortion
Pushes the layer’s pixels outwards. Parameters are dx, dy, and a radius
between 0.0 and 1000.0.
layer.filter("holedistortion", dx=0, dy=0, radius=300)
Circle splash distortion
Pushes the layer’s pixels outwards on a circle. Parameters are dx, dy,
radius between 0.0 and 1000.0 .
layer.filter("circlesplash", dx=0, dy=0, radius=150)
Twirl distortion
Generates a wave motion in the layer. Parameters are dx,
dy, radius between 0.0 and 500.0 and angle.
layer.filter("twirl", dx=0, dy=0, radius=150, angle=100)
Circular wrap
Wraps the layer around a transparent circle. Parameters are radius between 0.0 and 500.0
and angle.
layer.filter("circularwrap", radius=150, angle=100)
Kaleidoscope
Generates fractal-like output. Parameters are dx, dy and count between 0
and 100.
layer.filter("kaleidoscope", dx=0, dy=0, count=10)
Triangle tile
Generates fractal-like output. Parameters are dx, dy and angle and
width.
layer.filter("triangletile", dx=0, dy=0, angle=10, width=100)
Parallelogram tile (Mac OS X 10.5 and up)
Generates fractal-like output. Parameters are dx, dy and angle,
width and tilt angle.
layer.filter("parallelogramtile", dx=0, dy=0, angle=10, width=100, tilt=90)
Perspective tile
Distorts the base layer and copies that on a plane. Parameters are dx0, dy0,
dx1, dy1, dx2, dy2, dx3, dy3 representing the corners
of the layer to distort.
layer.filter("perspectivetile", dx0=0, dy0=0, dx1=0, dy1=0, dx2=0, dy2=0, dx3=0, dy3=0)
Starshine generator
A generator that creates stars and sunbursts on the layer (which is usually a transparent
color). Parameters are dx, dy, radius between 0.0 and 300.0,
x_scale between 0.0 and 100.0, x_angle, x_width and epsilon between
-8.0 and 8.0.
layer.filter("starshine", dx=0, dy=0, radius=25, x_scale=10, x_angle=0, x_width=0.5, epsilon=-5.0)
Checkerboard generator
A generator that creates a checkerboard pattern on the layer (which is usually a transparent
color). Parameters are clr1 and clr2 (black and white by default), width between 0.0 and 800.0,
and sharpness between 0.0 and 1.0.
layer.filter("checkerboard", clr1=color(0), clr2=color(1), width=80, sharpness=1.0)
Bloom
Adds a hazy glow to the layer by softening the edges. Parameters are radius between 0.0
and 100.0 and intensity between 0.0 and 1.0.
layer.filter("bloom", radius=10, intensity=1.0)
Pixelate
Divides the image into rectangular cells. It takes one optional parameter scale between
1.0 and 100.0
layer.filter("pixelate", scale=8)
Crystallize
Divides the image into polygonal cells. It takes one optional parameter radius between
1.0 and 100.0
layer.filter("crystallize", radius=20)
Dotscreen
Simulates the dot patterns of a halftone screen. Parameters are dx, dy,
angle between 0 and 360, width between 1 and 50, and sharpness between 0.0
and 1.0.
layer.filter("dotscreen", dx=0, dy=0, angle=0, width=6, sharpness=0.7)
Lighting
Adds a light source to the layer. Parameters are dx0, dy0, dz0 between 0
and 1000 represting the height of the light source, dx1 and dy1 representing
where the light is shining, brightness between 0.0 and 10.0, concentration
between 0.0 and 1.0 representing the cone of the light beam and color.
layer.filter("lighting", dx0=100, dy0=100, dz0=300, dx1=0, dy1=0, brightness=3.0, concentration=0.3, color=None, helper=False)
Shading
Adds texturing to the layer. You can pass it a canvas object to apply as a texture. Parameters
are dx, dy, radius between 0.0 and 300.0 and texture which is a
canvas object.
layer.filter("shading", radius=20, texture=None, dx=0, dy=0)
Line overlay (Mac OS X 10.5 and up)
Simulates a sketch of the layer by outlining the edges in black, after performing noise
reduction. Parameters are noise between 0.0 and 0.01, sharpness between 0.0 and
2.0, intensity between 0 and 200 and contrast between 25 and 200.
layer.filter("lineoverlay", noise=0.07, sharpness=0.71 intensity=1.0, threshold=0.1, contrast=50)
Page curl
Curls a corner of the layer. You can pass the back parameter a canvas object to use as
backside. By default the backside is a mirrored version of the layer. It can also be a color or
‘pattern’, in which case the backside is a triangle-tiled pattern. Parameters are time
between 0.0 and 1.0, radius between 0 and 200 and angle between 0 and 360.
layer.filter("pagecurl", time=0.4, radius=75, angle=45, back=None)
Levels
Provides control over each RGBA color channel in the layer.  Take a look at:
print canvas.renderer.aliases.keys() >>> ['starshine', 'shading', 'bumpdistortion', 'zoomblur', 'motionblur', >>> 'levels', 'twirl', 'perspectivetile', 'lighting', >>> 'bloom', 'kaleidoscope'] print canvas.renderer.aliases["levels"] >>> CIColorMatrix print canvas.renderer.filters["CIColorMatrix"] >>> {'a': 1.0, 'interface': False, 'r': 1.0, 'b': 1.0, 'g': 1.0}
You can add a shadow to each layer in the canvas, in the same way as you can add a shadow to PlotDevice primitives with the Colors library:
layer.shadow(dx=10, dy=10, alpha=0.75, blur=8)
Default dropshadow:l = canvas.append("leaf.jpg") l = canvas.append("lily.tif") l.shadow() |
To create a canvas layer from a list of pixel colors, use canvas.append() as explained in the section on adding layers.
You can access individual pixels in a layer or retrieve information about the minimum, maximum and average pixel values. The layer.pixels() gives you a pixels object that is a list of colors with some extra methods: pixels.min(), pixels.max(), pixels.average(), and pixels.get_pixel(), pixels.set_pixel() and pixels.get_range(). These return a color.
l = canvas.append("leaf.jpg") p = l.pixels()
print p.is_rgb() >>> True
print p.has_alpha() >>> False
print "min:", p.min() print "max:", p.max() print "avg:", p.average() >>> min: color(0.02, 0.03, 0.00) >>> max: color(0.44, 0.54, 0.49) >>> avg: color(0.18, 0.31, 0.19)
print p.get_pixel(100, 100) >>> color(0.09, 0.11, 0.03)
print p.w, p.h >>> 150, 150
There’s also a pixels.set_pixel(). It takes an x and y position
and a color as parameters. When you modify pixels in this way, changes will not
automatically be committed to the layer. You need to explicitly call
pixels.update() on the pixels object when you’re done modifying. Also, remember
that pixel operations can be time and memory intensive.
p = l.pixels() p.set_pixel(100, 100, color(0,1,0)) p.update()
The pixels.get_range() method returns a list of colors. It takes x and y and w and h parameters. This way you can select a rectangular box of pixels from the layer.
As a fun experiment we can transform the pixels to PlotDevice vector rectangles. We measure the RGB values in every tenth pixels and apply those colors to a grid of 10 x 10 rectangles:
Pixel histogram
The pixels.histogram() extracts a histogram from the layer’s pixel data. The return value is a list with either three (R, G and B) or four (R, G, B, A) elements. Each element is a list of 254 elements ranging between 0.0 and 1.0. For example: if pixels.histogram()[0][100] would be 0.0, this means that the layer has no pixels where the red is 100. If pixels.histogram()[1][10] would be 1.0, this means that the layer’s pixels usually have a green value of 10.
Let’s have a look at the pixel values of the leaf image using another one of the visual aids in the Core Image library:
It’s easy to export the canvas as an compressed image for the web or a TIFF with CMYK colors. If your image has few different colors (e.g. opaque color planes with text) you can use export a lossless GIF for the web. If your image contains photos, use a JPEG with compression. When you are going to paper print your image, use a CMYK TIFF.
A JPEG for the web with 40% compression:
canvas = coreimage.canvas(150, 150) l = canvas.append("leaf.jpg") l = canvas.append("lily.tif") canvas.export("flower.jpg", compression=0.6) | |
A TIFF in CMYK with LZW-compression:
canvas = coreimage.canvas(150, 150) l = canvas.append("leaf.jpg") l = canvas.append("lily.tif") canvas.export("flower.tif", cmyk=True, compression=True) | |
A PNG image with a transparent background:
canvas = coreimage.canvas(150, 150) l = canvas.append("lily.tif") canvas.export("flower.png") | |
A GIF image file:
canvas = coreimage.canvas(150, 150) l = canvas.append(color(1.0, 0.0, 0.5)) font("Georgia-Italic", 40) p = textpath("text", 0, 0) l = canvas.append(p, fill=color(1)) canvas.export("flower.gif") |
Some important things to know:
A generic CMYK profile is used. This means that the canvas renderer makes no attempt to correctly remap colors that are outside the CMYK scope: pure RGB red and other high intensity colors may contain pixel errors. This is especially true for layers created from paths. It is your responsibility to create paths in CMYK-safe colors. Usually everything is OK so long as you use paths created with PlotDevice color() colors.
Merging all the layers in a canvas and drawing the result in PlotDevice is easy:
canvas = coreimage.canvas(150, 150) l = canvas.append("leaf.jpg") l = canvas.append("lily.tif") canvas.draw(0, 0)
The canvas.draw() command takes two optional parameters: the x and y position.
Note that when you export a PDF that contains a canvas with a transparent background it
might have pixel errors.
Some things in the Core Image library are a little hard to do or grasp without visual feedback. That’s why the library has a few helpers and interfaces. There’s a helper for the canvas.draw() command that displays rulers and a bounding box for each of the layers. It’s already shown in the documentation on transforming layers. There’s also a helper for the pixels histogram shown in the documentation on working with pixels.
Furthermore, there’s a helper for the lighting filter. The helper makes it a bit easier to determine where the light source is positioned and what parameters like dz0 and concentration do.
With each filter you can use the interface parameter to get PlotDevice sliders that control the options for the filter. It’s a convenient way to get to know how each filter works.
Notice how each parameter you normally define in code is now replaced by a handy slider.
The Core Image library includes a tool to download images from MorgueFile. MorgueFile is an online archive of freely contributed photographs. To use MorgueFile images in PlotDevice, you need to add the morguefile.py library to the folder where your script is located. You can then query MorgueFile and download images to a specified folder.
The morguefile.search() command returns a list of images on MorgueFile on the given query, It has an optional parameter max specifying the maximum number of images to return.
from coreimage import morguefile images = morguefile.search("leaf", max=10)
Each item in the returned list has a number of properties:
for img in images: print img.name, img.views >>> DSCN6707.JPG 8 >>> keegan_2006_1015random0106.JPG 10 >>> Img2006-10-08-132310.jpg 611 >>> climb_a_tree_2006_1015random0086.JPG 17 >>> missyredboots111.jpg 14 >>> IMG_6852.jpg 403 >>> Fallen_Star.JPG 25 >>> JGS_mF_FloatingInDarkness.jpg 30 >>> leaf_n.JPG 18 >>> drift_away__.jpg 103
You can use the img.download() method with any of these image objects. This command takes two optional parameters: path specifying in what folder to put the image (if the folder doesn’t exist it will be created) and thumbnail, which when True downloads a small thumbnail instead of the image itself.
The command returns the pathname of the image, which is the specified path + the name of the author + the name of the image.
print images[0].download("images") >>> images/dineshtilva_DSCN6707.JPG
You can then start using the image as a canvas layer.
There’s also the morguefile.search_by_author() command which looks for images by author name.
You can create a cached screenshot from a layer or a canvas. This means Core Image will render the layer or canvas with all its transformations, masks, adjustments and filters and return it as an object stored in memory instead of drawing it to the screen. You can then reuse that object as a layer in a canvas. This way you can incrementally stack effects in a fast animation.
The layer.render() and canvas.flatten() methods return a cached screenshot.
You can pass this screenshot to the canvas.append() command. Then you can stack new
effects on the transformed layer, take a screenshot of it, apply more filters to it, and so
on.
|
|
speed(30) def setup(): global cache cache = None def draw(): canvas = coreimage.canvas(WIDTH, HEIGHT) global cache if not cache: cache = canvas.append("leaf.jpg") else: cache = cache.render() cache = canvas.append(cache) cache.filter("twirl", radius=random(30,40), dx=random(-40,40), dy=random(-40,40)) canvas.draw() |
Try out some other examples bundled in the library download. You may notice that incrementally applying filters and effects to layers makes them blurry.
The library is currently in alpha stage and has some known issues and limitations:
Exporting a PDF with a canvas that has a transparent background might contain pixel errors.
Exporting a CMYK TIFF uses a Generic CMYK profile. This means that the canvas renderer makes no attempt to correctly remap colors that are outside the CMYK scope: pure RGB red and other high intensity colors may contain pixel errors. This is especially true for layers created from paths. It is your responsibility to create paths in CMYK-safe colors. Usually everything is OK so long as you use paths created with PlotDevice color() colors.
Using the layer.distort() command in combination with layer filters displaces the layer from the origin, because the bounding box of a layer does not take filters into account. This means that the layer will no longer correctly display at the position you specified. An easy way to overcome this is to call layer.filters_first(False) to first render the distort and then apply the filter.
Combining different filters might sometimes produce no output or crash PlotDevice. If you are experiencing strange behaviour, try quitting and reopening PlotDevice so the Core Image library has a chance to reload itself.
Some filters are kinda quirky, especially the motion blur filter and perspective tile.
If you rotate a canvas drawn in PlotDevice using transform(CORNER) it rotates from the bottom left corner instead of the top left corner.


This is Words and Buttons Online — a collection of interactive #tutorials, #demos, and #quizzes about #mathematics, #algorithms and #programming.
In 2013 I was working in nuclear power plant automation. Can't talk much since I still haven't figured out which part of it was classified. But I probably wouldn't get arrested for mentioning that the job required reading a lot of assembly code.
Reading assembly is not as hard as it might occur to an untrained person. In fact, everyone can read a bit of assembly. But in large quantities, it's not too easy either. The mnemonics like RCR, SHRD, WBINVD, and CMPXCHG8B are fun to write, but hell to read.
What's worse, the standard approach to syntax highlighting doesn't help at all. It's fine that mov doesn't look like eax, but I'd rather prefer pmulhw and pmulhuw to be shown as differently as possible.
So I employed another kind of highlighting. It's not sytnax but lexical differential highlighting. “Lexical” since it doesn't need true syntax analysis, primitive tokenization and filtering are enough. And it's “differential” because it aims to highlight the difference between lexemes. Ideally, the smaller the lexical difference, the greater the color difference should be.
It works like this.
movq %rax, %r14 .align 16, 0x90 .LBB0_6: # =>This Inner Loop Header: Depth=1 movl -12(%r12,%rbx,4), %eax addl $-1, %eax imull %eax, %eax movl -8(%r12,%rbx,4), %ecx addl $-1, %ecx imull %ecx, %ecx addl %eax, %ecx movl -4(%r12,%rbx,4), %eax addl $-1, %eax imull %eax, %eax addl %ecx, %eax movl (%r12,%rbx,4), %ecx movl $1, %edx subl %ecx, %edx addl $-1, %ecx imull %edx, %ecx cmpl %ecx, %eax jne .LBB0_7 # BB#17: # in Loop: Header=BB0_6 Depth=1 incl 4(%rsp) .LBB0_7: # %.backedge # in Loop: Header=BB0_6 Depth=1 addq $1, %rbx cmpq $160000000, %rbx jne .LBB0_6 |
It's 2019, and I'm getting back to this idea. I'm using lexical differential highlighting not only for assembly but for most of the code published on Words and Buttons. There are two reasons to do so. First, it works with other languages too. And second, it saves your traffic. Yes, including right now.
Even considering quotes and comments, the tokenizer itself can be implemented in about 30 lines of code. And the painting function is even smaller. So instead of doing syntax highlighting statically or dragging a third-party library as a dependency, I simply rewrite the coloring code specifically for every page.
This way I can highlight code for any assembly dialect or any language including the most obscure and outdated ones. And it only takes a few KB per instance.
But, of course, rewriting the highlighter by hand would be extravagant, so I made this generator to do it for me.
... here will be the highlighter code... |
Feel free to use it however you like. Just as every other piece of code on Words and Buttons, it's properly unlicensed.
After a very fruitful discussion on Reddit, I've tried to emulate a bit of syntax highlighting to work together with the lexical highlighting. And it worked! Here's a quasi-sytnax-differential highlighter for JavaScript. It's highlighterd by itself.
function colorized_with_js_highlighter(text) { const separators = ['function ', ' if(', 'return ', 'var ', 'const ', ' for(', '\n', ' ', '\t', '.', ',', ':', ';', '+', '-', '/', '*', '(', ')', '<', '>', '[', ']', '{', '}']; const quotes = ['\'', '"']; const comments = [['//', '\n'], ['/*', '*/']]; function painted_in(line, color) { return line.length == 0 ? "" : "" + line + ""; } function colorized(token) { var code_sum = 0; for(var i = 0; i < token.length; ++i) code_sum += ([1, 7, 11, 13][i % 4] * token.charCodeAt(i)); var zero_channel = code_sum % 3; var color = '' + (zero_channel == 0 ? '3' : '') + (1 + (code_sum % 5) * 2) + (zero_channel == 1 ? '3' : '') + (4 + (code_sum % 2) * 5) + (zero_channel == 2 ? '3' : ''); return painted_in(token, color); } function separated(line, i) { if(i == separators.length) return colorized(line); return line.split(separators[i]).map(function(subline) { return separated(subline, i + 1);}).join(separators[i]); } function unquoted(line, i) { if(i == quotes.length) return separated(line, 0); var chunk_no = 0; return line.split('\\' + quotes[i]).join('\0').split(quotes[i]).map(function (chunk) { return chunk.split('\0').join('\\' + quotes[i]);}).map(function (chunk) { return ++chunk_no % 2 == 1 ? unquoted(chunk, i + 1) : painted_in(quotes[i] + chunk + quotes[i], "555");}).join(''); } function uncommented(line, i) { if(i == comments.length) return unquoted(line, 0); var chunks = line.split(comments[i][0]); return uncommented(chunks[0], i + 1) + chunks.slice(1).map( function(chunk) { var in_out_comment = chunk.split(comments[i][1]); return painted_in(comments[i][0] + in_out_comment[0] + (in_out_comment.length > 1 ? comments[i][1] : ''), "555") + uncommented(in_out_comment.slice(1).join(comments[i][1]), i + 1);}).join(''); } return uncommented(text, 0); } |
| Index #programming #demos | ← there's more. |
+
So You Think You Know C (free book) + Geometry for Programmers (paid book) + Github & RSS |


ECSignature
public class ECSignature
ECSignature instances contain an ECDSA signature which consists of two byte arrays named r and s
-
Creates a signature from its ASN1 representation
Throws
An exception if the ASN1 structure is wrongDeclaration
Swift
public convenience init(asn1: ASN1, domain: Domain) throws
Parameters
asn1
The ASN1 representation of the signature
domain
The domain of the signature
-
The ASN1 encoding of the signature
Declaration
Swift
public var asn1: ASN1 { get }
-
Textual description of self
Declaration
Swift
public var description: String { get }


Edappadi reviews Public Works Department schemes
The Chief Minister emphasised a need to focus on water management in the State, an official release said
by Special CorrespondentChief Minister Edappadi K. Palaniswami chaired a meeting at the Secretariat on Friday to review various schemes being implemented by the Public Works Department (PWD) across the State.
Addressing the meeting, Mr. Palaniswami emphasised the need for a focus on water management in the State, an official release quoting him said. The meeting was to ensure the proper implementation of the various schemes.
The CM laid stress on the Kudimaramathu scheme, which has been receiving good support from the general public. The scheme was being implemented at a cost of ₹500 crore and a total of 1,829 works were being taken up under the scheme, he said.
The status of Athikadavu-Avinasi scheme, being implemented in the western districts of the State, was also reviewed.
PWD Secretary K. Manivasan and other senior officials attended.


Unity’s lights can cast Shadows from a GameObject onto other parts of itself or onto other nearby GameObjects. Shadows add a degree of depth and realism to a Scene, because they bring out the scale and position of GameObjects that can otherwise look flat.
Consider a simple Scene with a single light source. Light rays travel in straight lines from that source, and may eventually hit GameObjects in the Scene. Once a ray has hit a GameObject, it can’t travel any further to illuminate anything else (that is, it “bounces” off the first GameObject and doesn’t pass through). The shadows cast by the GameObject are simply the areas that are not illuminated because the light couldn’t reach them.
Another way to look at this is to imagine a Camera at the same position as the light. The areas of the Scene that are in shadow are precisely those areas that the Camera can’t see.
In fact, this is exactly how Unity determines the positions of shadows from a light. The light uses the same principle as a Camera to “render” the Scene internally from its point of view. A depth buffer system, as used by Scene Cameras, keeps track of the surfaces that are closest to the light; surfaces in a direct line of sight receive illumination but all the others are in shadow. The depth map in this case is known as a Shadow Map (you may find the Wikipedia Page on shadow mapping useful for further information).
Use the Shadow Type property in the Inspector to enable and define shadows for an individual light.
| Property: | Function: |
|---|---|
| Shadow Type | The Hard Shadows setting produces shadows with a sharp edge. Hard shadows are not particularly realistic compared to Soft Shadows but they involve less processing, and are acceptable for many purposes. Soft shadows also tend to reduce the “blocky” aliasing effect from the shadow map. |
| Strength | This determines how dark the shadows are. In general, some light is scattered by the atmosphere and reflected off other GameObjects, so you usually don’t want shadows to be set to maximum strength. |
| Resolution | This sets the rendering resolution for the shadow map’s “Camera” mentioned above. If your shadows have very visible edges, then you might want to increase this value. |
| Bias | Use this to fine-tune the position and definition of your shadow. See Shadow mapping and the Bias property, below, for more information. |
| Normal Bias | Use this to fine-tune the position and definition of your shadow. See Shadow mapping and the Bias property, below, for more information. |
| Shadow Near Plane | This allows you to choose the value for the near plane when rendering shadows. GameObjects closer than this distance to the light do not cast any shadows. |
Each Mesh Renderer in the Scene also has a Cast Shadows and a Receive Shadows property, which must be enabled as appropriate.
Enable Cast Shadows by selecting On from the drop-down menu to enable or disable shadow casting for the mesh. Alternatively, select Two Sided to allow shadows to be cast by either side of the surface (so backface culling is ignored for shadow casting purposes), or Shadows Only to allow shadows to be cast by an invisible GameObject.
The shadows for a given Light are determined during the final Scene rendering. When the Scene is rendered to the main Camera view, each pixel position in the view is transformed into the coordinate system of the Light. The distance of a pixel from the Light is then compared to the corresponding pixel in the shadow map. If the pixel is more distant than the shadow map pixel, then it is presumably obscured from the Light by another GameObject and it obtains no illumination.
A surface directly illuminated by a Light sometimes appears to be partly in shadow. This is because pixels that should be exactly at the distance specified in the shadow map are sometimes calculated as being further away (this is a consequence of using shadow filtering, or a low-resolution image for the shadow map). The result is arbitrary patterns of pixels in shadow when they should really be lit, giving a visual effect known as “shadow acne”.
To prevent shadow acne, a Bias value can be added to the distance in the shadow map to ensure that pixels on the borderline definitely pass the comparison as they should, or to ensure that while rendering into the shadow map, GameObjects can be inset a little bit along their normals. These values are set by the Bias and Normal Bias properties in the Light Inspector window when shadows are enabled.
Do not set the Bias value too high, because areas around a shadow near the GameObject casting it are sometimes falsely illuminated. This results in a disconnected shadow, making the GameObject look as if it is flying above the ground.
Likewise, setting the Normal Bias value too high makes the shadow appear too narrow for the GameObject:
In some situations, Normal Bias can cause an unwanted effect called “light bleeding”, where light bleeds through from nearby geometry into areas that should be shadowed. A potential solution is to open the GameObject’s Mesh Renderer and change the Cast Shadows property to Two Sided. This can sometimes help, although it can be more resource-instensive and increase performance overhead when rendering the Scene.
The bias values for a Light may need tweaking to make sure that unwanted effects occur. It is generally easier to gauge the right value by eye rather than attempting to calculate it.
To further prevent shadow acne we are using a technique known as Shadow pancaking (see Directional light shadows: Shadow pancaking). This generally works well, but can create visual artifacts for very large triangles.
Tweak the Shadow Near Plane Offset property to troubleshoot this problem. Setting this value too high introduces shadow acne.


Just did this. closing ticket.
closed
by Kim Leaman at 2020-06-12 13:21:11.Depends on #3950
Yes, we have final go-ahead to stop making JP2s. Now that we have more than a month of data, it would be good to update the doc estimating sizes/costs, but we can go ahead and migrate all of our image server content to the AWS Lambda.
BnF Document: https://drive.google.com/file/d/1LMy60Dou9uD8LPxXX1UaPyYXaP1Mw1z_/view?usp=sharing
mentioned
by None at 2020-06-12 17:12:29.subscribed
by None at 2020-06-12 17:12:29.referenced
by Kevin Reiss at 2020-06-12 20:38:17.merged
by Kevin Reiss at 2020-06-12 20:38:17.closed
by Kevin Reiss at 2020-06-12 20:38:17.head_ref_deleted
by Kevin Reiss at 2020-06-12 20:38:21.renamed
by None at 2020-06-12 13:19:45.renamed
by None at 2020-06-12 16:00:53.assigned
by None at 2020-06-12 16:17:21.referenced
by None at 2020-06-12 16:18:13.closed
by Christina Chortaria at 2020-06-12 20:41:53.referenced
by Christina Chortaria at 2020-06-12 20:41:52.merged
by Christina Chortaria at 2020-06-12 20:41:52.closed
by Christina Chortaria at 2020-06-12 20:41:53.referenced
by Kevin Reiss at 2020-06-12 21:10:46.merged
by Kevin Reiss at 2020-06-12 21:10:46.closed
by Kevin Reiss at 2020-06-12 21:10:46.head_ref_deleted
by Kevin Reiss at 2020-06-12 21:10:50.This is a select all button.
There is not a 'select all' button for the 'Requested items' section.
Oh, sorry. Yes it should be removed.
unassigned
by None at 2020-06-12 14:42:58.Based on conversation with @kelea99:
This can be implemented globally with one (optional) custom sort order per collection.
The user does not need to be able to make the custom sort order the default for search.
In order to create the desired browse category, submit an empty search, select the custom sort order, and save the search. Then turn it on as a browse category.
assigned
by None at 2020-06-12 17:01:33.unassigned
by None at 2020-06-12 19:31:39.mentioned
by Kim Leaman at 2020-06-12 19:43:05.subscribed
by Kim Leaman at 2020-06-12 19:43:05.thank you, @escowles ! @hackmastera can we do this next week for Eric real quick? it sounds small and like an easy ticket to close?
mentioned
by None at 2020-06-12 22:30:36.subscribed
by None at 2020-06-12 22:30:36.mentioned
by Esmé Cowles at 2020-06-12 22:30:36.subscribed
by Esmé Cowles at 2020-06-12 22:30:36.closed
by Francis Kayiwa at 2020-06-12 15:32:46.ready_for_review
by Eliot Jordan at 2020-06-12 15:10:41.referenced
by Francis Kayiwa at 2020-06-12 15:32:46.merged
by Francis Kayiwa at 2020-06-12 15:32:46.closed
by Francis Kayiwa at 2020-06-12 15:32:46.head_ref_deleted
by Francis Kayiwa at 2020-06-12 15:32:51.closed
by Francis Kayiwa at 2020-06-12 15:36:00.referenced
by Francis Kayiwa at 2020-06-12 15:35:59.merged
by Francis Kayiwa at 2020-06-12 15:35:59.closed
by Francis Kayiwa at 2020-06-12 15:36:00.head_ref_deleted
by Francis Kayiwa at 2020-06-12 15:36:04.assigned
by Eliot Jordan at 2020-06-12 15:56:51.head_ref_force_pushed
by Francis Kayiwa at 2020-06-12 15:52:40.closed
by None at 2020-06-12 13:23:19.assigned
by Axa Mei Liauw at 2020-06-12 12:48:02.closed
by None at 2020-06-12 13:35:34.review_requested
by Axa Mei Liauw at 2020-06-12 12:52:28.review_requested
by Axa Mei Liauw at 2020-06-12 12:52:34.referenced
by None at 2020-06-12 13:35:33.merged
by None at 2020-06-12 13:35:33.closed
by None at 2020-06-12 13:35:34.head_ref_deleted
by None at 2020-06-12 13:35:37.head_ref_force_pushed
by Christina Chortaria at 2020-06-12 15:08:42.head_ref_force_pushed
by Christina Chortaria at 2020-06-12 15:23:19.head_ref_force_pushed
by None at 2020-06-12 13:29:07.review_requested
by None at 2020-06-12 15:41:03.head_ref_force_pushed
by None at 2020-06-12 15:52:40.referenced
by Axa Mei Liauw at 2020-06-12 16:10:20.merged
by Axa Mei Liauw at 2020-06-12 16:10:21.closed
by Axa Mei Liauw at 2020-06-12 16:10:21.head_ref_deleted
by Axa Mei Liauw at 2020-06-12 16:10:25.It should be doing this already. If it isn't something is broken.
I think it would be helpful to have a cancellation email sent to circ staff. Christina cancelled a request earlier, but circ staff manually re-created the hold later.
This email would be sent to circ if someone decides to cancel a hold request from the /account screen?
yes, this would make sure that the user wants to cancel a request.
referenced
by Kevin Reiss at 2020-06-12 20:32:46.merged
by Kevin Reiss at 2020-06-12 20:32:46.closed
by Kevin Reiss at 2020-06-12 20:32:46.head_ref_deleted
by Kevin Reiss at 2020-06-12 20:32:54.convert_to_draft
by Kevin Reiss at 2020-06-12 16:47:22.head_ref_force_pushed
by None at 2020-06-12 18:03:23.head_ref_force_pushed
by None at 2020-06-12 18:19:25.head_ref_force_pushed
by None at 2020-06-12 19:13:20.head_ref_force_pushed
by None at 2020-06-12 19:15:56.head_ref_force_pushed
by None at 2020-06-12 19:42:38.head_ref_force_pushed
by None at 2020-06-12 19:49:31.ready_for_review
by None at 2020-06-12 20:32:54.referenced
by None at 2020-06-12 20:33:21.merged
by None at 2020-06-12 20:33:21.closed
by None at 2020-06-12 20:33:22.closed
by Kevin Reiss at 2020-06-12 21:26:03.This has been fixed.
closed
by Kevin Reiss at 2020-06-12 21:28:08.The item type for this is "Closed" so it's returning true on this method https://github.com/pulibrary/requests/blob/b64e832d8992a84d21b6b9e87386b84a75cb5741/app/models/requests/requestable.rb#L41. The non circulating item types can be eligible for digitization.
assigned
by Kevin Reiss at 2020-06-12 15:03:27.closed
by Kevin Reiss at 2020-06-12 21:41:36.referenced
by Francis Kayiwa at 2020-06-12 10:59:05.merged
by Francis Kayiwa at 2020-06-12 10:59:05.closed
by Francis Kayiwa at 2020-06-12 10:59:06.referenced
by Francis Kayiwa at 2020-06-12 10:58:06.referenced
by Francis Kayiwa at 2020-06-12 10:59:07.closed
by Francis Kayiwa at 2020-06-12 11:09:17.


Its performance is the envy of executives and engineers around the world … For techno-evangelists, Google is a marvel of Web brilliance … For Wall Street, it may be the IPO that changes everything (again) … But Google is also a case study in savvy management — a company filled with cutting-edge ideas, rigorous accountability, and relentless attention to detail … Here’s a search for the growth secrets of one of the world’s most exciting young companies — a company from which every company can learn.
Google was initially funded by an August 1998 contribution of $100,000 from Andy Bechtolsheim, co-founder of Sun Microsystems; the money was given before Google was incorporated. Google received money from three other angel investors in 1998: Amazon.com founder Jeff Bezos, Stanford University computer science professor David Cheriton,and entrepreneur Ram Shriram.After some additional, small investments through the end of 1998 to early 1999, a new $25 million round of funding was announced on June 7, 1999, with major investors including the venture capital firms Kleiner Perkins Caufield & Byers and Sequoia Capital
Google announced the launch of a new company, called Calico, on September 19, 2013, to be led by Apple, Inc. chairman Arthur Levinson. In the official public statement, Page explained that the "health and well-being" company would focus on "the challenge of ageing and associated diseases". Google celebrated its 15-year anniversary on September 27, 2013, and in 2016 it celebrated its 18th birthday with an animated Doodle shown on web browsers around the world. although it has used other dates for its official birthday. The reason for the choice of September 27 remains unclear, and a dispute with rival search engine Yahoo! Search in 2005 has been suggested as the cause.The Alliance for Affordable Internet (A4AI) was launched in October 2013; Google is part of the coalition of public and private organizations that also includes Facebook, Intel, and Microsoft. Led by Sir Tim Berners-Lee, the A4AI seeks to make Internet access more affordable so that access is broadened in the developing world, where only 31% of people are online. Google will help to decrease Internet access prices so they fall below the UN Broadband Commission's worldwide target of 5% of monthly income. The corporation's consolidated revenue for the third quarter of 2013 was reported in mid-October 2013 as $14.89 billion, a 12 percent increase compared to the previous quarter. Google's Internet business was responsible for $10.8 billion of this total, with an increase in the number of users' clicks on advertisements.According to Interbrand's annual Best Global Brands report, Google has been the second most valuable brand in the world (behind Apple Inc.) in 2013, 2014, 2015, and 2016, with a valuation of $133 billion.


Good To Go
Haroonote Unobtrusive Writing Platform
or Log out
{% else %}{% endif %}
Haroonote Unobtrusive Writing Platform
or Log out
{% else %}{% endif %}
You can author professional-looking documents of various formats: blog posts, slides, presentations, reports, email and more.
Not only supports Markdown, but also has ability to build extensions for making your own features.
Just write down anywhere with haroonote, Stay your document in cloud on sync.
We support (Ubuntu, 32/64 bit) Windows 7/8, Mac OS X, of Linux. and working on IOS, Android.
Supports modern themes in editing area, skins for transformed documents.
Simply write a text for your report or homework, daily review or blog post. Simply write a text for your report or homework, daily review or blog post. Simply write a text for your report or homework, daily review or blog post.
Easily make own blog system, no more wordpress Easily make own blog system, no more wordpress Easily make own blog system, no more wordpress
Co-working solution for small business team Co-working solution for small business team Co-working solution for small business team


| bcast-method {pbdMPI} | R Documentation |
This method lets a rank broadcast an object to every rank in the same communicator. The default return is the object.
bcast(x, rank.source = .pbd_env$SPMD.CT$rank.source, comm = .pbd_env$SPMD.CT$comm)
x |
an object to be broadcast from all ranks. |
rank.source |
a rank of source where |
comm |
a communicator number. |
The same copy of x
is sent to all ranks.
Every rank has x
returned.
For calling spmd.bcast.*
:
signature(x = "ANY")
signature(x = "integer")
signature(x = "numeric")
signature(x = "raw")
Wei-Chen Chen<EMAIL_ADDRESS>George Ostrouchov, Drew Schmidt, Pragneshkumar Patel, and Hao Yu.
Programming with Big Data in R Website: http://r-pbd.org/
scatter()
.
## Not run: ### Save code in a file "demo.r" and run with 2 processors by ### SHELL> mpiexec -np 2 Rscript demo.r ### Initial. suppressMessages(library(pbdMPI, quietly = TRUE)) init() ### Examples. x <- matrix(1:5, nrow = 1) y <- bcast(x) comm.print(y) ### Finish. finalize() ## End(Not run)


Project Name
Trip 'n' Talk Client Side App
Authors:
Tia Rose, Jeff Lawrence, Felipe Delatorre
Links and Resources
Documentation
Modules
Setup
.env
requirements - see env-sample or look below
SERVER
- deployed server urlTOKEN
- secret key/token
Running the app
npm start
Tests
npm test


An AudioContext is used for managing and playing all sounds. In most cases a single AudioContext is created for a page which wants to play one or more sounds.
Here are a few more details about the AudioContext and AudioNodes.
Before working with any sounds, we need to create the context:
window.onload = init; var context; function init() { context = new webkitAudioContext(); }
Many of the interesting Web Audio API methods are based on the AudioContext, such as creating AudioNodes and decoding audio file data.
Note: for the WebKit implementation, the "webkit" prefix is used when creating the AudioContext.


{% for post in posts%}
{% endfor %}
Our Stories. {% for post in posts %}
{% endfor %}{% extends "base.html" %} {% block content%}
Our Stories. {% for post in posts %}
{% endfor %}


Looks at expected and actual expression being of Guava Optional type and whether the statement effectively tries to assert the
presence, absence or content and then replaces the statement by isPresent(), isAbsent(), or contains().
Requires AssertJ-Guava to be in classpath.


@* * This template takes a single argument, a String containing a * message to display. *@ @(question: Question, answers: Seq[Answer]) @* * Call the `main` template with two arguments. The first * argument is a `String` with the title of the page, the second * argument is an `Html` object containing the body of the page. *@ @main("Question View") {
@question.Description


Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed euismod eros vitae iaculis consectetur. Donec pulvinar ante eu tincidunt efficitur. Sed ut feugiat nisi.
Try nowWe are young and innovative team, who wants to change the way we interact with maps.
Once created route can be saved for future reuse.
Share your routes with family, friends and co-workers.


Fields Enumerated Type
Definition
Line
49
of
ls/ls.cm
Underlying Type
int
Enumeration Constants
none
0
fs
1 << 0
inode
1 << 1
access
1 << 2
nlinks
1 << 3
user
1 << 4
uid
1 << 5
group
1 << 6
gid
1 << 7
size
1 << 8
ctime
1 << 9
mtime
1 << 10
atime
1 << 11
name
1 << 12


Spinners enables you to tell the users that the app is currently processing. See a basic example below:
@@include('includes/code-examples/layout/spinner/spinner-basic.html')
Add .spinner-sm
for smaller spinners or .spinner-lg
for larger.
@@include('includes/code-examples/layout/spinner/spinner-sizes.html')
You can block user interaction to the app by using a blocker spinner.
How it works:
.spinner-block
to .spinner
.
.show
to .spinner
and to hide you just need to remove this class.
.spinner-text
.
@@include('includes/code-examples/layout/spinner/spinner-block.html')
@@include('includes/code-examples/layout/spinner/spinner-block.js')