This plugin provides the Markdown markup language by John Gruber, using the ("PHP Markdown") port (including the Markdown Extra extension) by Michel Fortin.
Additionally it can provide the "prettyfier" PHP SmartyPants and PHP SmartyPants Typographer.
Markdown is a plain text format for writing structured documents, based on formatting conventions from email and usenet. It allows you to write using an easy-to-read, easy-to-write plain text format, then convert it to structurally valid XHTML (or HTML).
Markdown Extra is an extension to PHP Markdown implementing some features currently not available with the plain Markdown syntax.
SmartyPants is a free web typography prettifyier tool for web writers. It translates plain ASCII punctuation characters into "smart" typographic punctuation HTML entities.
Read more:
Markdown can be parsed in …
serendipity_plugin_html_nugget
)You can choose from the traditional Markdown and Markdown Extra flavours.
Markdown Extra offers some additional features:
Syntax:
All PHP-Markdown configuration
options are set to their default values and can't be changed, with one
exception: using the lib
version, footnotes will get the
Serendipity entry id set as prefix (fn_id_prefix
).
You can choose from the classic
or lib
(library
package) version.
As the classic
version of PHP Markdown and
PHP Markdown Extra is no longer being supported since February 1, 2013,
you should choose the lib
version in any case.
Furthermore, the classic
version doesn't support
SmartyPants or footnote prefixes.
SmartyPants and SmartyPants Typographer translate plain ASCII punctuation characters into "smart" typographic punctuation HTML entities.
You have to choose the lib
version of
PHP-Markdown to activate SmartyPants!
Documentation: PHP SmartyPants
The Markdown plugin should always be placed after the GeSHi-Plugin
(serendipity_event_geshi
), but before all plugins that expect HTML
as their input.
The plugin will add some CSS to style footnotes and footnote markers:
/* Footnotes (generated by serendipity_event_markdown) */ footnote-ref:after { content: ")"; } .footnotes hr { border-top: dashed #ccc; border-width: 1px; } /* mostly taken from http://www.456bereastreet.com/archive/201105/styling_ordered_list_numbers/ */ .footnotes ol { counter-reset: li; margin-top: .2em; margin-left: 1.5em; padding-left: 0; } .footnotes ol > li { list-style: none; position: relative; padding-left: .5em; font-size: 90%; } .footnotes ol > li:before { content: counter(li)")"; counter-increment: li; position: absolute; left: -2em; top: -.1em; width: 2em; text-align: right; font-size: 80%; font-weight: bold; } /* --- end of Footnotes */


News
Our work on mHealth for mental illness covered in Emory Lab Land article
July 2017 - Imagine someone undergoing treatment by a psychiatrist. How do we know the treatment is really working or should be modified? To assess whether the patient’s condition is objectively improving, the doctor could ask him or her to take home a heart rate monitor and wear it continuously for 24 hours. An app connected to the monitor could then track how much the patient’s heart rate varies over time and how much the patient moves. Read the article here.
PhD Student Receives Highest Academic Achievement
November 2016 - Pradyumna Suresha, the newest PhD student in our lab, was awarded the Institutional Gold Medal for securing highest GPA in B.Tech -Electronics and Communication Engineering, batch of 2015-16; as well as 1986 Batch Gold Medal for being the student with best academic record in the department of ECE, NITK Surathkal India. Congratulations!
Now Hiring
October 2016 - We have openings for faculty and research positions in machine learning and signal processing applied to biomedical informatics and engineering.
2016 Cardiology Challenge Winners Announced
14 Sept 2016 - The winners of this year's PhysioNet/CinC Challenge were announced at the CinC Conference. Congratulations to everyone for a tight run race! We enjoyed running this and hope you all submit to the upcoming Physiological Measurement Special Issue.
Emory Exposome
28 May 2016 - In support of the Exposome mission, the Clifford Lab will be offering live interactive demos to demonstrate some of the useful capabilities of the Raspberry Pi, sensor technologies and cloud computing. Event takes place June 12 in the plaza level auditorium of the Claudia Nance Rollins building.
More information can be found at the event's website, located here: Emory Hercules, and Human Exposome Project.
Chair Promotion
April 2016 - Dr. Clifford appointed Interim Chair of Emory's Department of Biomedical Informatics.
PhysioNet / Computing in Cardiology Challenge 2016
7 May 2016 - The Official Phase of the PhysioNet/Computing in Cardiology Challenge 2016 has begun.
February 2016 - The PhysioNet/Computing in Cardiology Challenge 2016, co-organised by the Clifford Lab and the Laboratory for Computational Physiology, is now open.


Through my classes and internship, I have dived into the world of UI/UX design. It has been an enriching experience creating designs that are simple, elegant, and user-friendly. A quote by a friend that I will always keep to heart:"If you have a billion dollar product but it is poorly designed, then it isn't worth anything". I hope to continue improving my design skills and merge them with my programming abilities.
Here are some of my design projects that I have worked on:
Link to the full write-up can be found here.
The User Management Center (UMC) design project is a project I did to explore the field of UX. The UMC’s purpose was to provide an organization with the ability to manage their users and their roles for their organization so that they may control who has access to the products and the information in the platform. My personal goal for the project was to learn and apply UX principles in a professional environment. I used the high fidelity prototyping tool Axure for designing the project.
I used an established design process, which is listed as follows:
Throughout the process, I used the following design concepts:
Simplicity is important. To reduce user frustration, it was important to not overcrowd and over complicate the design. I learned to omit unnecessary words to keep the design clean and easily readable. Next, consistency is key when designing. It lowers the learning curve, which means navigating through the product becomes simpler and more intuitive. I ensured my design was consistent throughout, and with society's norms.
Multiple indications creates a better interactive experience. It is important to provide multiple indications that a design has a function. Indications can include a change in color, size, shape, or text. Moving on, accessibility creates a better overall experience. As designers, we should accommodate to people who are differently abled. To ensure users can navigate the UMC smoothly, I placed a large emphasis on color contrast, size, intuitiveness, and importance of information.
Finally, trade-offs is something every designer will encounter during the design process. Trade-offs in design usually involves the design being either visually complicated and functionally simple, or simple designs that are functionally complicated.
Iterating is very important in UX. By iterating and receiving regular feedback, I continued to improve my design and its functionalities. In the beginning, I researched and designed a huge chunk of the project, and only seeked feedback after a week’s worth of work. After receiving a ton of feedback, I had to change a large portion of my work. It was then that I realized my work style meant a lot of effort was unnecessary because of the sheer amount of changes during the feedback session. Thus, I started asking for feedback regularly. This reduced my workload and improved my design skills.
The process has been tremendous. At every step of the project, I learned something new, either by observing those around me, or through the mistakes I made and feedback I received. Looking back, I am proud that my UX design skills have improved over time. On a personal development note, I am a better communicator of my ideas and work, I pick up information quicker, and work more seamlessly with the team.
Whenever I was curious, I would compile my questions and ask them during my feedback session. Oftentimes it helped clear the issue, and mistakes that were obscure would be clearer. More importantly, sometimes questions led to new ideas and improvements.
The following is an example of iteration of my tab design. For more, check out the full write up available here.
The initial tab design was a thin rectangle underneath the opened tab. This design was bad because it did not show any relation between the opened tab and current view, and was hard to see. Moreover, the view was extremely crowded and complicated, with all the information dislayed as is. After receiving feedback, the second iteration showed more relation with the current view. I also experimented with side tabs, which was well received. With the third iteration, I fixed the colors, accessibility, and further improved the overall simplicity. The final product is simple, obvious, and shows a connection between the opened tab and current view. It showed enough information for the user to make a decision. Additional information can be accessed with a simple click.
First design
Second set of designs
Third set of designs
Final design
The Save Me! design project is my first team design project. It was the inspiration of a friend whom I studied abroad with. Its purpose is to assist people who are lost and are in dire need of assistance. It allows users of the application to find their way home, get help from locals, contact emergency services, among other things. We used the prototyping tool Marvel App.
I used an established design process, which is listed as follows:
In the first step, we observe, engage and immerse ourselves within our user's problems. We conduct interviews and plan for extreme users. Moving on, the define stage helps to unpack and synthesize the information from the previous step. Here, we use design principles, and create journey maps and personas. The next three steps are part of an iterative process where we come up with ideas, prototype, test, and refine our prototype.
Throughout the process, I used the following design thinking concepts:
Teamwork is extremely important. From start to finish, my team and I grew closer as friends and colleagues. Even then, there are times when we had different opinions and ideas. It was vital to us that we could still commit to the work even if we disagreed. It was more important to us that we worked well together, rather than fight for what we think is best for the design.
We never stopped improving our design, even when a deadline was approaching. We would always think of new ideas and approaches to the problems. This chasing perfection mindset helped improve our design over the course of the project. Finally, being observant was key. We ensured we observed our interviewees and testers well, and also observed our work schedule and each other's capabilities. The opinions, body expression and words during the usability testings were pivotal in our design's directions.
Main screen
The main screen went through drastic changes. The first design was very 'old fashioned', crowded, and did not show much meaning. The icons were confusing and unclear as to what they did exactly. After a couple iterations, it was much better! The design was modern and simple, and the clear bright colors meant navigating through the app was easier.
The first and final design
Status Report
The first status report design was shown as is on the main screen. This made the main screen very crowded. On top of that, the pop-up nature of the status report meant no two attributes could be seen at the same time. The second design puts them all in a new page. However, the color and scheme and small texts made it not user-friendly. The final design incorporated the main screen's colors and simplicity. This showed great contrast between the different attributes. Also, the larger texts provided better usability.
First set of designs
Second set of designs
Final design
Lost
The lost function is meant to allow the user to find their way home using a backtrack method. Also, if necessary, the user can see and contact nearby users for help. This is useful for emergencies such as being lost and incapacitated, phone's battery is low, and so on.
The first design had a map and a walked path, but that was it. Nearby users was a click away, but also meant the map would be hidden. This wasn't useful, and added additional layers of complexity. Also, the back button's location was inconsistent. The second design improved by showing current users locations, but did not show additional information as to how long it took to get to them. The final design incorporated various feedbacks. It provided useful information such as bus stops, clinics/hospital locations, distance and time to get to all locations, and the amount of time needed to get back to 'home'.
First set of designs
Second set of designs
Final design


| gather_attrs {rio} | R Documentation |
gather_attrs
moves variable-level attributes to the data frame level and spread_attrs
reverses that operation.
gather_attrs(x) spread_attrs(x)
x |
A data frame. |
import
attempts to standardize the return value from the various import functions to the extent possible, thus providing a uniform data structure regardless of what import package or function is used. It achieves this by storing any optional variable-related attributes at the variable level (i.e., an attribute for mtcars$mpg
is stored in attributes(mtcars$mpg)
rather than attributes(mtcars)
). gather_attrs
moves these to the data frame level (i.e., in attributes(mtcars)
). spread_attrs
moves attributes back to the variable level.
x
, with variable-level attributes stored at the data frame level.
e <- import("http://www.stata-press.com/data/r13/auto.dta") str(e) g <- gather_attrs(e) str(attributes(e)) str(g)


Home
Code-Lab
Conference
Register
$ git commit -m “
Our Team
”
DevFest 2016
render
{
return
{
<
view
>
<
DateTime
>
05
/
11
/
2016 1:00 PM
<
/
DateTime
>
<
location
>
ICBT Auditorium <
/
Location
>
<
/
view
>
};
}
OUR TEAM
And also thanks to all our volunteers
Udaya Gunathilaka
Organizer
Tharaka Devinda
Organizer
Pamuditha Imalka
Organizer
Raveen Harith
Organizer
Milindu Sanoj
Organizer
Sandun Nilanka
Organizer
Pasan Ranathunga
Organizer
Dilini Madhubhashini
Organizer


|
Wyatt
0.0.1
|
Public Member Functions | |
| Command () | |
| virtual | ~Command () |
| void | init () |
| virtual bool | execute ()=0 |
| virtual bool | cleanup (bool canceled)=0 |
| void | cancel () |
| void | stop () |
| bool | isRunning () |
| bool | isInitialized () |
| void | setIsRunning (bool value) |
| bool | isFinished () |
Protected Attributes | |
| std::mutex | m_lock |
| Lock for managing access to member variables in a thread-safe manner. | |
| Command::Command | ( | ) |
Create a new command.
Definition at line 7 of file Command.cpp.
|
virtual |
Destroy the command object.
Definition at line 12 of file Command.cpp.
| void Command::cancel | ( | ) |
This method is called when a command is canceled. Cancellation only comes from the command manager, so this method should never be directly called. You do not necessarily need to override this function in your command - it will call stop() by default. Only override this if you need custom behavior for when the command is stopped prematurely.
Definition at line 23 of file Command.cpp.
|
pure virtual |
This method is called to cleanup the command (whenever the stop method is called).
| canceled | true if command was canceled, false otherwise. |
Implemented in DriveMotorRPM, DriveRobotCommand, SimpleIteratorCommand, DriveDirectionCommand, and DriveForwardSecondsCommand.
|
pure virtual |
This method is called periodically during the command execution. Think of it like the Arduino's loop() function. While the command is executing this will be called repeatedly. Do not include while loops in here.
Implemented in DriveMotorRPM, DriveRobotCommand, SimpleIteratorCommand, DriveDirectionCommand, and DriveForwardSecondsCommand.
| void Command::init | ( | ) |
Initialize the command.
Definition at line 16 of file Command.cpp.
| bool Command::isFinished | ( | ) |
Returns if a command is finished or not.
Definition at line 64 of file Command.cpp.
| bool Command::isInitialized | ( | ) |
Get if the command is initialized.
Definition at line 49 of file Command.cpp.
| bool Command::isRunning | ( | ) |
Get if the command is running or not.
Definition at line 41 of file Command.cpp.
| void Command::setIsRunning | ( | bool | value | ) |
Set the running state of this command.
| value | bool, running or not |
Definition at line 57 of file Command.cpp.
| void Command::stop | ( | ) |
This method is called when a command has completed execution. Use this method to clean up anything that the command needs to clean before it is destroyed.
Definition at line 32 of file Command.cpp.


Cosmic Latte is a space game based on physics simulation.
Cosmic Latte makes it exciting to play in the space environment with simple physics rules.
It is based on Newton's law of universal gravitation and Kepler's laws of planetary motion.
Play with the planets in our solar system and create orbits with celestial bodies.
Can you make enough orbits to progress to the next level?
Solar system : Sun - Mercury - Venus - Earth- Mars - Jupiter - Saturn - Uranus - Neptune - Pluto
And
Various planets & moon & human made communication satellites & solar-panel satellites
Explore space with fun!
The perfect game for introducing astronomy to kids!
Features
• 6 different tutorials
• 9 different planets
• 16 different tasks
• Various celestial bodies
• Various satellites
• Low Poly graphics
• Try infinite times
• Meditation music
• Smooth controls
• Share gifs with friends
• All completely free


Home
About
Contact
Predicting Used Car Prices with Machine Learning
FEATURES :
year Of Registration:
gearbox manual or automatic :
Choose here
manual
automatic
the power of the car:
how many kilometres the car has driven:
FuelType:
Choose here
benzene
diesel
gas
hybrid
electrical
other
Brand:
Choose here
volkswagen
audi
jeep
skoda
bmw
peugeot
ford
mazda
nissan
renault
mercedes_benz
seat
honda
fiat
opel
mini
smart
hyundai
alfa_romeo
subaru
volvo
mitsubishi
kia
lancia
porsche
citroen
sonstige_autos
toyota
chevrolet
dacia
suzuki
daihatsu
chrysler
jaguar
daewoo
rover
saab
land_rover
lada
trabant
the car has a damage repareid :
Choose here
No
Yes
Calculate the Car Price
{{ prediction_text1 }}


{{define "landing-serfr1"}}
Hello ! You have requested the
URL complaints.serfr1.org
, but this has been stale
for years now.
The new URL is stop.jetnoise.net
.
Please update your bookmarks, and any 'add to homescreen' links
you might have, to use stop.jetnoise.net
.
I've kept the old URL alive all this time, but recently discovered that using it was the cause of a pernicious problem for some users, where from time to time "the site makes me login for every complaint".
(The issue ? A cookie that was used during the login
exchange, which was issued for stop.jetnoise.net
,
but in response to a request sent
to complaints.sefr1.or
. Some browsers, notably
Safari, considered this kind of cross-site cookie a possible
privacy violation, and so would drop it. Sometimes.)


Trip Requirements
Hotel
Enter star of Hotel
5 Star
4 Star
3 Star
2 Star
1 Star
Hotel Payment
Enter amount category of Hotel
Below 3000 a day
3,000 - 5,000 a day
5,000 to 8,000 a day
8,000 to 10,000 a day
10,000 to 20,000 a day
Above 20,000 a day
Cab
Enter Cab type
4 Seater
6 Seater
8 Seater


DESIGN AND IMPLEMENTATION OF E-LIBRARY FOR NATIONAL OPEN UNIVERSITY OF NIGERIA
Home
Login
Registration
Username
Email
Password
Confirm Password


Why incorporate their stories in the Bible? If these individuals are not “important” enough to be remembered by name, why are they even included? I believe there are some very significant reasons these stories made it into our Holy Bible, even though the names of the individuals in them did not.
1. They are included to show that every life, no matter how small, has significance to God. Jesus knew the woman in this story, and He cared about her intimately whether or not anyone else there did. That is the case with us as well.
Read Psalm 139:13-14. How long have we had worth in God’s eyes?
2. They are included so that we can learn from the individuals’ struggles and triumphs. This woman’s very public humiliation is part of history for all to read. But so is her very public redemption and the way Jesus loved her and treated her. Our own struggles, when redeemed by Christ, can become great gifts to others who learn from them.
Read 2 Corinthians 1:3-5. According to these verses, what is one reason we go through struggles?
3. They are included to remind us that God is actually the main character in our stories, and it’s His name that should be lifted up, not ours. One of the mistakes we often make is to believe that life is about us. Actually, this mistake is the root of all sin: placing ourselves at the center of the universe, where God belongs. We are all playing supporting roles in God’s story. He is bigger than any of our individual stories.
Read Psalm 8:1-4. How is the main character of the universe described?
4. Maybe their names are left out so that we can put our own names “in the blank,” so to speak, as we read their stories. The anonymous stories of Scripture aren’t meant to be fairy tales for our entertainment; they are each meant to teach us something that we can apply to our own lives.
Read 2 Timothy 3:16. What is God’s Word meant to do?


Export filterAn export filter is evaluated during the export phase.
The column values are replaced by the result of the expression when the export file is written.
${old-value} is a synonym for the filtered column.
With the filter EMPLOYEE.NAME := lower(${old-value})
... the names of the employees are exported with lowercase letters:
Literal filterA literal filter is also evaluated during the export phase.
The result is written literally to the export file.
In the import phase, it is evaluated as an SQL expression.
To define a literal filter, add the prefix "literal:" to the filter expression.
The filter:
replaces employee names with numbers from a sequence in the target
database.
Import filterAn import filter is evaluated during the import phase.
Import filters are especially useful for filtering primary key columns.
Filters on primary key columns are automatically applied to the corresponding foreign key columns.
An import filter ensures that a "null" value remains null and that a foreign key value maps to the same
value as the primary key, even if the filter expression is not a deterministic function.
(More precisely, if the filter expressions and types of any two filters are exactly the same for two different columns,
then both filters will map each value to exactly the same target value.)
This filter on EMPNO uses a sequence to generate new EMPNOs during the
import phase:
Filter templatesTemplates allow defining filters of the same kind for a set of columns that satisfy a given condition.
"null" filter on foreign key columns
If a foreign key of a table is nullable, a "null" filter on it (resp. on all columns of a compound foreign key)
causes the foreign key columns of exactly those rows, whose parent rows are not exported as well, to be populated with null.
Likewise, when deleting, only the foreign key columns of those rows are set to null that are not deleted themselves, but their parent rows are.
The extraction model editor offers the corresponding checkbox "Set foreign key to null ...".
|
|


CSS Grid vs. Flexbox
Amdocs Presentation & Workshop
Presentation on the differences between CSS Grid and Flexbox, how to use them, and when to use each.
Given to Amdocs co-workers.
Part 1 of a 2 part series
Many slides used were taken from Jen Simmons' amazing
CSS Grid Video Tutorial series.


CURRENTLY REDEPLOYING
Oh! You appear to have caught us with our pants down. Please wait a few seconds and then reload the page :)


{% extends "base.html" %} {% block title %}
Medieval catalogues > HENRY DE KIRKESTEDE > Catalogus, c. 1360
{% endif %}54 identified entries found.
All data was derived from the List of Identifications by Professor Richard Sharpe.
{% if not printing %}
A key to codes used in the List is available (opens in new tab).{% endif %}


This PWG face-to-face meeting will be held on February 8-9, 2022, only via Webex teleconference (Virtual F2F).
There is no registration fee or RSVP survey for this meeting.
Note: All times are Eastern Standard Time (EST) (UTC−05:00).Discussions at PWG face-to-face meetings are covered by the PWG Policy on Intellectual Property and Confidentiality and the PWG Anti-Trust Policy.
| Date | Times | Description |
|---|---|---|
| February 8 | 10:00 AM to 10:45 AM | PWG Plenary |
| 10:45 AM to 11:00 AM | IPP WG : Status | |
| 11:00 AM to 12:00 PM | IPP WG : Prototype Ready: IPP Finishings v3.0 · IPP Encrypted Jobs and Documents v1.0 · IPP Production Printing Extensions v2.0 · IPP Enterprise Printing Extensions v2.0 · IPP Driverless Printing Extensions v2.0 | |
| 12:00 PM to 12:45 PM | Break / Lunch | |
| 12:45 PM to 2:00 PM | IPP WG : Evolution of IPP/2.0 and IPP Everywhere v2.0 | |
| February 9 | 10:00 AM to 12:00 PM | IDS WG : Status and Discussion · PWG Hardcopy Device Security Guidelines v1.0 |
| 12:00 PM to 12:45 PM | Break / Lunch | |
| 12:45 PM to 1:45 PM | IPP WG : 3D Printing Liaisons: Status & Guidance | |
| 1:45 PM to 2:00 PM | IPP WG : Next Steps |


ONCE A THIEF A film review by Christopher E. Meadows Copyright 1996 Christopher E. Meadows
Written & Directed by John Woo Starring Chow Yun Fat, Leslie Cheung, Cherie Chung
My Rating: 8/10 (**** of *****)
I first discovered John Woo through this film--or, more correctly, through a couple of excerpts from this film, shown in a film criticism course I was taking at Southwest Missouri State University. The instructor, Dr. Dave Daly, is a big Hong Kong movie fan...and he made me into one as well, for which I am eternally grateful.
I don't think that many people who enjoy movies these days could possibly not have heard of John Woo; his two entries into the field of Hollywood cinema ("Hard Target," "Broken Arrow") have both done quite well in American theaters. However, they may not be aware of his earier works.
Starting with "A Better Tomorrow" in the mid-1980s, a seminal film which marked the beginning of the so-called "hero film" genre in Hong Kong, John Woo has made about a dozen action-packed adventure films, the most notable of which include "The Killer," "Bullet to the Head," and "Hard-Boiled."
These films contain action sequences the like of which most American movies no longer see; incredible feats of gunplay and acrobatics, accentuated by the inimitable Woo directorial style which makes use of slow-motion, camera angles and movement, perfect pacing, and incredible choreography that turns gunplay into a kind of bloody ballet.
Woo protagonists often clutch a gun in each hand and fire constantly, often apparently immune to the necessity of reloading. They have incredible coordination, deftly tossing and catching guns or other implements, often while performing a backflip or some other acrobatic feat at the same time. They make use of what they find in their environment in ways that would make MacGyver jealous. Getting shot once or twice barely slows them down.
Admittedly, these are largely characteristics of all Hong Kong action cinema, or even the action genre in general to some extent. Still, they're never used quite so agilely as in a John Woo film.
Sadly, Woo's style has been muted somewhat by the Hollywood environment in which he's made his latest films. Still, John Woo's first two Hollywood films have been remarkably well-received by the moviegoing public; perhaps as he becomes more comfortable with the Hollywood studio system, he will begin to exert more creative control. One can only hope.
"Once a Thief" stars two veteran actors from other John Woo films: Chow Yun Fat, who also starred in "A Better Tomorrow," "A Better Tomorrow 2," "The Killer," and "Hard-Boiled" plays Joe, and Leslie Cheung, who co-starred with Chow Yun Fat in "A Better Tomorrow," plays his foster brother, Jim. Together with foster sister Cherie (Cherie Chung), they make up a trio of expert art thieves, who specialize in stealing paintings from museums.
Over the course of the film, the threesome decides to retire from thievery and start a family of their own. However, before they can do this, they are manipulated by their cruel foster father, who raised them to become thieves, into stealing a painting for him. This they do, under duress...but they have no intention of actually giving it to him...
Fans of John Woo's ultraviolent bulletfests such as "The Killer" or "Hard-Boiled" may be disappointed by "Once a Thief". This film is a marked departure from the shoot-em-up style of other recent Woo films, a kind of return to the light-hearted comedies he directed prior to "A Better Tomorrow". There is action involved, and plenty of it, but the gunfights are neither as intense or elaborate as "Hard-Boiled" (though it _does_ have the best vehicular chase sequence since James Bond).
Of course, this does not detract from the movie at all; where Woo shoot-em-ups are ponderous dramas with weighty philosophical and moral considerations, "Once a Thief" is simply pure, unadulterated _fun_. It's a thrill a minute to watch the thieves get themselves into and out of one improbable situation after another, and the acrobatic feats and a remarkable dance scene make it plain that Woo's wonderful talent for choreography is not limited to gunplay.
What else does "Once a Thief" have to recommend it?
The acting. Chow Yun Fat is an experienced actor, with two decades and dozens of movies, television series, and other productions under his belt. As in all his films, he is smooth, believable, and his style, his charisma, his lopsided grin at times put me in mind of Sean Connery. Unlike in "The Killer" or "Hard-Boiled," here he gets to display his talent for comedy...and he certainly has that. I wish I could see him in such roles more often. Cheung, Chung, and the other members of the cast aren't bad either, but Chow Yun Fat generally steals almost every scene he's in.
The scenery. "Once a Thief" is set partially in Paris and elsewhere in France, and is filmed on-location. Paris, Notre Dame, the villa from which they must steal the painting...it's beautiful, and it really adds to the ambience of the film. And unlike in many American films, there is no reluctance to have conversations be held entirely or mostly in other languages than Cantonese--excellently- spoken French and English are both heard at various points in the film. I suppose since they're subtitling it in Chinese anyway, it's no hassle for them to leave it be.
The comedy. This film has some wonderful comic moments, starting with the very first few scenes. I won't give any of them away, as they're funnier when you go into them unprepared, but I will say that there are a couple of hilarious moments involving classical music that shouldn't be missed.
The music, the visuals, the dialogue...all the elements in this film click and click often, and the plot moves along like a finely-tuned clock. All in all, the only problems "Once a Thief" has are a couple of scenes where the editing is slightly jarring--the parachute landing where Chow Yun Fat abruptly changes direction between cuts, and the dance sequence where Cherie's hands change positions from cut to cut several times. Of course, these are only minor problems, and anyone who was able to forgive the "mysterious vanishing robot arm" and other inconsistancies in "Jurassic Park" should have no trouble here.
Another slight problem, though not with the film itself, is its availability. Sadly, "Once a Thief" has not, to my knowledge, been released to the American video market save on laserdisc. Unfortunately, not everyone has an LD player, or is willing to buy the expensive foreign-import disc, or lives in an area where Asian theaters regularly show these films, so the only way many people can see "Once a Thief" is through pirating a copy of the LD from someone. Also, the subtitling is standard Hong Kong, in Chinese characters with English below them. Sometimes it's a little hard to read, and the translation isn't always the best. (At a couple of points in the film, someone is saying something in English, while the English subtitles at the bottom of the screen say something different!)
In conclusion, if you have a chance to watch this movie, see it, by all means. Once again, John Woo proves that he could teach American cinema a great deal.
This review is copyright 1996 by Christopher E. Meadows. Permission granted for distribution through rec.arts.movies.reviews and all associated archival. Permission granted for free redistribution via cyberspace as long as this message remains attached. All other rights reserved to the author. -- Chris Meadows aka | Author, Team M.E.C.H.A., Crapshoot & Co. Robotech_Master | on the Superguy Listserv (bit.listserv.superguy<EMAIL_ADDRESS>| **TAKE NOTE!** My homepage has changed to<EMAIL_ADDRESS>| http://www.jurai.net/~robotech/index.html
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


XISBI Login
Please Login
Wrong username or password.


Tanner Johnson
[contact information withheld]
Education
B.S. degree candidate, Information Technology, Brigham Young University
· Computer Science, Minor
· Expected graduation date: April 2016
· Cumulative GPA: 3.61/4.0
Experience
Developer/Systems Admin, Slab Pizza, Provo, Utah, June 2013-Present
· Developed custom POS and pizza managing software
· Improved pizza-make time by 30%
· Decreased customer wait time by 2 minutes
· Increased slabpizza.com page visit amount by 80%
Volunteer Representative, Honduras, May 2010-May 2012
· Directed and trained over 100 volunteer representatives
· Worked 10-12 hour days for two years
Skills
Computer Languages/Frameworks:
· HTML, CSS, JavaScript, jQuery
· PHP, SQL, C++, Java, Python, Racket
Computer:
· Database design, web application development, web design
· Search engine optimization, online marketing, WordPress
· Linux, Windows, computer networking
· Apache, Linux servers
Language:
· Spanish, conversational oral and written
Strengths:
· hard-working, quick learner, detail oriented
Affiliations/ Awards/ Activities
Boy Scouts of America
· Achieved the rank of Eagle Scout
· Volunteered in multiple summer camps as a leader for 6 years


{%extends 'base.html'%} {% load staticfiles%} {% load bootstrap3 %} {%block content%}
Here you can change your bio and profile picture


[gecode-users] SetVar::init private?
Denys Duchier
denys.duchier at univ-orleans.fr
Tue May 25 20:19:39 CEST 2010
Guido Tack <tack at gecode.org> writes:
> No, I just didn't see why it's necessary to have the methods since you can do
>
> SetVarArray x(home,n);
> for (int i=n; i--;)
> x[i] = SetVar(home,...)
(lightbulb appears over my head) damn... I didn't realize you could do
that! thanks!
but, regardless, I think the APIs ought to be as uniform as possible
(principle of least surprise). thanks for adding this in trunk.
--Denys
More information about the users
mailing list


{% extends 'base.html' %} {% comment "License" %} % Copyright (c) 2018 ISP RAS (http://www.ispras.ru) % Ivannikov Institute for System Programming of the Russian Academy of Sciences % % Licensed under the Apache License, Version 2.0 (the "License"); % you may not use this file except in compliance with the License. % You may obtain a copy of the License at % % http://www.apache.org/licenses/LICENSE-2.0 % % Unless required by applicable law or agreed to in writing, software % distributed under the License is distributed on an "AS IS" BASIS, % WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. % See the License for the specific language governing permissions and % limitations under the License. {% endcomment %} {% load staticfiles %} {% block title %}Testing{% endblock %} {% block head_block %} {% endblock %} {% block body_block %}


Currency {{currency.name}}
Name: {{ currency.name }}
Symbol: {{ currency.symbol }}
Incomes:
0}">{{currency.incomes_balance > 0 ? '+' + currency.incomes_balance : '0.0'}}
Expenses:
{{currency.expenses_balance ? currency.expenses_balance : '0.0'}}
Balance:
0, 'text-danger': currency.balance < 0}">{{currency.balance ? (currency.balance > 0 ? '+' + currency.balance : currency.balance) : '0.0'}}
Budgets:
Accounts:


Watch: Johor Family Bravely Beats Up & Chases 2 Robbers Wielding Axes From Their Home
by Chee KinTap to listen to this article instead: 🔊 Listen to Post
Home break-ins tend to be pretty violent affairs, and the victims are usually left in a hopeless position as they are held against their will while their possessions are stolen from them. After all, what are you going to do when a burglar with weapons breaks into your home?
Well, if you ask this Johor family who became victims of a burglary, the answer is: you beat them into submission. Don’t believe us? Then keep reading this story as reported by Sin Chew Daily!
Occurring in Kulai, Johor, a pair of burglars had probably thought they had a literal upper hand when they broke into a terrace home in the late hours of the night on 19th November 2019. As they were wielding axes, it’s probably hard to imagine the innocent, sleeping homeowners would dare to even consider putting up a struggle.
But unfortunately for them, the family’s 27-year-old son who had been playing video games in the living room discovered both burglars as they entered into the home.
Instead of trying to run for his life, the young man immediately broke into a scuffle with the burglars, trying to snatch their axes from them. Probably not expecting that he would try something so dangerous, one of the burglars tried to defend his accomplice by attacking the 27-year-old man with whatever he could reach in the house.
The commotion was enough to wake up members of the household, and they immediately rushed to their son’s defence, trying to save him from the assailants.
In a desperate effort, one of the robbers even grabbed a children’s scooter to whack the family with!
The family was relentless though, and managed to chase the robbers out of their home, who ran towards their own car before escaping! Wow!
Thankfully, none of the family members who were involved in the attack were seriously injured, despite the robbers making their hasty exit. The Facebook video has since gone viral over social media.
We hope that the assailants who committed the crime are held accountable for their actions, and applaud the entire family for being this brave!
Also read: Beware: M’sian Thieves Are Now Breaking Into Parked Cars To Steal Child Safety Seats


seo-core
Rated:
5
/ 5 based on
10000
customer reviews
0
In stock
Product description:
seo-core is a PHP library


Duration
15 minutes
Goals
The primary goal of this lab is to use the platform-specific theming options in iOS, Android and Windows to customize the appearance of a Xamarin.Forms application.
Required assets
The provided Part 01 Resources folder contains a subfolder named Start that contains the Xamarin.Forms solution you will use for this exercise. The Completed folder contains a solution you can use to check your work. Please make sure you have these folders before you begin.
Challenge
We'll be customizing a simple Xamarin.Forms project that already contains several controls.
- In the iOS head-project, use the appearance API to customize the colors of the switch and the slider.
- In the Android head-project, create a custom theme and change the highlight color.
- In the Windows head-project, create an implicit style to change the background and foreground color of the slider.
Steps
Use the iOS Appearance API
- Build and run the iOS head-project and inspect the UI.
- Open AppDelegate.cs in the iOS project and go to the FinishedLaunching method.
- Change the color of the switch in the iOS app by setting the static
UISwitch.Appearance.OnTintColor
property. - Change the color of the slider's bar by setting the static
UISlider.Appearance.MinimumTrackTintColor
andUISlider.Appearance.MaximumTrackTintColor
properties. - Run the application on iOS and inspect the color changes.
Create a custom Android Theme
In this exercise, we'll be using the new material design themes. These are supported in Android 5.0 and above. To see the theme changes, you'll need an emulator or device running Android 5.0 (Lollipop) or newer.
- Build and run the Android head-project and inspect the UI.
- Open MainActivity.cs in the Android project.
- Change the theme to Material.Light in the activity attribute.
- Run the Android head-project and observe the visual changes, the background should be light or white.
- Add a new subfolder in the Android project under the Resources folder named values-v21.
- Add a new xml file to the folder named styles.xml.
- Add the contents below to create a theme that derives from Material.Light and customizes the accent color.
<?xml version="1.0" encoding="utf-8" ?> <resources> <style name="MyCustomTheme" parent="android:Theme.Material.Light"> <item name="android:colorAccent">#FF9900</item> </style> </resources>
- Update the activity attribute in MainActivity.cs to load your custom theme and run the application.
[Activity(Label = "ControlExplorer", Icon = "@drawable/icon", Theme = "@android:style/Theme.Material.Light", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
[Activity(Label = "ControlExplorer", Icon = "@drawable/icon", Theme = "@style/MyCustomTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
Use Implicit Styles in Windows
- If you're using Visual Studio for Windows, build and run the Windows head-project and inspect the UI.
- Open App.xaml.
- Add an
Application.Resources
section. - Add an implicit
Style
targetingSlider
. - Add two setters to the
Style
- one with aProperty
for Background and the other for Foreground. Select colors for each. - Run the application.
Summary
In this exercise you used the platform-specific themes to customize the appearance of controls defined in Xamarin.Forms.


Across: 1,4. Running times be cut by her? (5 8) 9. I mail club about connecting to 22 (9) 10. Tokyo's a karate-gripped city (5) 11,13. Child's stink rarely awful, this 22's running rarely awesome (7 10) 12. Free lectures offered - accept for another term (7) 13. see 11 15. Traitors turned for spot in heaven (4) 17. see 17dn 19. Hurdle time? Men dip out! (10) 23. Sugar eating to crazy scale (7) 24. Bits of venom in the review (it's often laced) (7) 25. Broken heart here at home (5) 26. 28 where 1ac 4ac starred or blue men danced (9) 27. Push away, take off... start of a home run (8) 28. Crucifying a messiah limited competition (5) Down: 1. Primarily blood ruptures - tissue injury time removes (7) 2. Ship out king - biker carrying more convincing spare tyre (7) 3. Device using local key variations (4 4) 4. Crotch key, oddly, for such fellow? (5) 5. Leeway given to new cleaner (9) 6,18. Reds? Cor, they just go on and on! (6 7) 7. Leader captures a player in reaction (7) 8. She had a hunger perhaps to be quicker (6) 14. Make awkward move on fellow logger (9) 16. Coveting beaten but proud force (4 4) 17,17ac. Ginger doll? Not exactly (6 4) 18. see 6 20. Mrs Simpson returns carrying detective's terse words (7) 21. Ones that turn grass, i.e. switch cultivators (7) 22. Bug monarch for family member (6) 24. Going around the bend? Farewell, for what it's worth! (5)


Create a new card and save it on Trello.
# File lib/trello/card.rb, line 19 def create(options) new('name' => options[:name], 'idList' => options[:list_id], 'desc' => options[:description]).save end
Find a specific card by its id.
# File lib/trello/card.rb, line 14 def find(id) super(:cards, id) end
Add a checklist to this card
# File lib/trello/card.rb, line 107 def add_checklist(checklist) Client.post("/cards/#{id}/checklists", { :value => checklist.id }) end
Add a comment with the supplied text.
# File lib/trello/card.rb, line 102 def add_comment(text) Client.post("/cards/#{id}/actions/comments", :text => text) end
Add a label
# File lib/trello/card.rb, line 120 def add_label(colour) unless %w{green yellow orange red purple blue}.include? colour errors.add(:label, "colour '#{colour}' does not exist") return Trello.logger.warn "The label colour '#{colour}' does not exist." end Client.post("/cards/#{id}/labels", { :value => colour }) end
Retrieve a list of labels
# File lib/trello/card.rb, line 114 def labels labels = Client.get("/cards/#{id}/labels").json_into(Label) MultiAssociation.new(self, labels).proxy end
Returns a list of members who are assigned to this card.
# File lib/trello/card.rb, line 58 def members members = member_ids.map do |member_id| Client.get("/members/#{member_id}").json_into(Member) end MultiAssociation.new(self, members).proxy end
Remove a label
# File lib/trello/card.rb, line 129 def remove_label(colour) unless %w{green yellow orange red purple blue}.include? colour errors.add(:label, "colour '#{colour}' does not exist") return Trello.logger.warn "The label colour '#{colour}' does not exist." unless %w{green yellow orange red purple blue}.include? colour end Client.delete("/cards/#{id}/labels/#{colour}") end
Saves a record.
# File lib/trello/card.rb, line 66 def save # If we have an id, just update our fields. return update! if id Client.post("/cards", { :name => name, :desc => description, :idList => list_id }).json_into(self) end
Update an existing record. Warning, this updates all fields using values already in memory. If an external resource has updated these fields, you should refresh! this object before making your changes, and before updating the record.
# File lib/trello/card.rb, line 81 def update! @previously_changed = changes @changed_attributes.clear Client.put("/cards/#{id}", { :name => name, :desc => description, :due => due && due.utc.iso8601, :closed => closed, :idList => list_id, :idBoard => board_id, :idMembers => member_ids }) end
Update the fields of a card.
Supply a hash of string keyed data retrieved from the Trello API representing a card.
# File lib/trello/card.rb, line 30 def update_fields(fields) attributes[:id] = fields['id'] attributes[:short_id] = fields['idShort'] attributes[:name] = fields['name'] attributes[:description] = fields['desc'] attributes[:due] = Time.iso8601(fields['due']) rescue nil attributes[:closed] = fields['closed'] attributes[:url] = fields['url'] attributes[:board_id] = fields['idBoard'] attributes[:member_ids] = fields['idMembers'] attributes[:list_id] = fields['idList'] self end
Is the record valid?
# File lib/trello/card.rb, line 97 def valid? name && list_id end


{% extends "base.html" %} {% block body %}
Thanks for registering. Please check your email to continue. If it's not in your inbox, please check your spam folder.


Sales Forcasting for Cookies
Add New Store Here
Name of New Store
Minimum Expected Customers per hour
Maximum Expected Customers per Hour
Average Amount of Cookies Expected to be Purchased by Each Customer
Submit
Return To Home


The daily news mostly talk about absolute numbers of confirmed Covid-19 infections, which does not tell you anything about the current situation in the different countries. Ok. 500k infections in the United States would be as bad as 500k infections in Luxembourg. But if you're planning to visit Luxembourg, it'd be much more likely that you get infected than in the US, because 500k infections would mean, that almost every citizen of Luxembourg would be infected. It's about population or even population density, isn't it?
In addition, the reported infections of a country must always be considered in relation to the number of tests performed. If a country has very few confirmed cases but does apply only very few tests as well, than you can expect that a lot more people are infected than confirmed.
I think you can kind of assess the Corona situation in your own country. In relation to that you can then judge the situation in other countries. But that presupposes that the figures are comparable. You should avoid comparing apples with oranges. So let's try to get to something comparable!
The following charts are based on live data from https://github.com/owid/covid-19-data and https://github.com/pomber/covid19, which in turn sources jhu.edu.


Nginx Example Configurations¶
This page covers example Nginx configurations to use with running an Nextcloud server. Note that Nginx is not officially supported, and this page is community-maintained. (Thank you, contributors!)
- You need to insert the following code into your Nginx configuration file.
- The configuration assumes that Nextcloud is installed in
/var/www/nextcloud
and that it is accessed viahttp(s)://cloud.example.com
. - Adjust server_name, root, ssl_certificate and ssl_certificate_key to suit your needs.
- Make sure your SSL certificates are readable by the server (see nginx HTTP SSL Module documentation).
add_header
statements are only taken from the current level and are not cascaded from or to a different level. All necessaryadd_header
statements must be defined in each level needed. For better readability it is possible to move common add header statements into a separate file and include that file wherever necessary. However, eachadd_header
statement must be written in a single line to prevent connection problems with sync clients.
Example Configurations¶
You can use Nextcloud over plain http, but we strongly encourage you to use SSL/TLS to encrypt all of your server traffic, and to protect user’s logins and data in transit.
- Remove the server block containing the redirect
- Change listen 443 ssl to listen 80;
- Remove ssl_certificate and ssl_certificate_key.
- Remove fastcgi_params HTTPS on;
Suppressing Log Messages¶
If you’re seeing meaningless messages in your logfile, for example client denied by server configuration: /var/www/data/htaccesstest.txt, add this section to your nginx configuration to suppress them:
location = /data/htaccesstest.txt {
allow all;
log_not_found off;
access_log off;
}
JavaScript (.js) or CSS (.css) files not served properly¶
A common issue with custom nginx configs is that JavaScript (.js) or CSS (.css) files are not served properly leading to a 404 (File not found) error on those files and a broken webinterface.
This could be caused by the:
location ~* \.(?:css|js)$ {
block shown above not located below the:
location ~ \.php(?:$|/) {
block. Other custom configurations like caching JavaScript (.js) or CSS (.css) files via gzip could also cause such issues.
Performance Tuning¶
To use http_v2 for nginx you have to check two things:
1.) be aware that this module is not built in by default due to a dependency
to the openssl version used on your system. It will be enabled with the
--with-http_v2_module
configuration parameter during compilation. The
dependency should be checked automatically. You can check the presence of
http_v2 with nginx -V 2>&1 | grep http_v2 -o
. An example of how to
compile nginx can be found in section “Configure nginx with the
nginx-cache-purge
module” below.
2.) When you have used SPDY before, the nginx config has to be changed from
listen 443 ssl spdy;
to listen 443 ssl http2;
nginx: caching Nextcloud gallery thumbnails¶
One of the optimizations for Nextcloud when using nginx as the Web server is to combine FastCGI caching with “Cache Purge”, a 3rdparty nginx module that adds the ability to purge content from FastCGI, proxy, SCGI and uWSGI caches. This mechanism speeds up thumbnail presentation as it shifts requests to nginx and minimizes php invocations which otherwise would take place for every thumbnail presented every time.
The following procedure is based on an Ubuntu 14.04 system. You may need to adapt it according your OS type and release.
Note
Unlike Apache, nginx does not dynamically load modules. All modules needed must be compiled into nginx. This is one of the reasons for nginx´s performance. It is expected to have an already running nginx installation with a working configuration set up as described in the Nextcloud documentation.
nginx module check¶
As a first step, it is necessary to check if your nginx installation has the
nginx cache purge
module compiled in:
nginx -V 2>&1 | grep ngx_cache_purge -o
If your output contains ngx_cache_purge
, you can continue with the
configuration, otherwise you need to manually compile nginx with the module
needed.
Compile nginx with the nginx-cache-purge
module¶
- Preparation:
cd /opt
wget http://nginx.org/keys/nginx_signing.key
sudo apt-key add nginx_signing.key
sudo vi /etc/apt/sources.list.d/nginx.list
Add the following lines (if different, replace {trusty}
by your
distribution name):
deb http://nginx.org/packages/mainline/ubuntu/ trusty nginx
deb -src http://nginx.org/packages/mainline/ubuntu/ trusty nginx
Then run sudo apt-get update
Note
If you’re not overly cautious and wish to install the latest and
greatest nginx packages and features, you may have to install nginx from its
mainline repository. From the nginx homepage: “In general, you should
deploy nginx from its mainline branch at all times.” If you would like to
use standard nginx from the latest mainline branch but without compiling in
any additional modules, just run sudo apt-get install nginx
.
- Download the nginx source from the ppa repository
cd /opt
sudo apt-get build-dep nginx
sudo apt-get source nginx
- Download module(s) to be compiled in and configure compiler arguments
ls -la
Please replace {release}
with the release downloaded:
cd /opt/nginx-{release}/debian
If folder “modules” is not present, do:
sudo mkdir modules
cd modules
sudo git clone https://github.com/FRiCKLE/ngx_cache_purge.git
sudo vi /opt/nginx-{release}/debian/rules
If not present, add the following line at the top under:
#export DH_VERBOSE=1:
MODULESDIR = $(CURDIR)/debian/modules
And at the end of every configure
command add:
--add-module=$(MODULESDIR)/ngx_cache_purge
Don’t forget to escape preceding lines with a backslash \
.
The parameters may now look like:
--with-cc-opt="$(CFLAGS)" \
--with-ld-opt="$(LDFLAGS)" \
--with-ipv6 \
--add-module=$(MODULESDIR)/ngx_cache_purge
- Compile and install nginx
cd /opt/nginx-{release}
sudo dpkg-buildpackage -uc -b
ls -la /opt
sudo dpkg --install /opt/nginx_{release}~{distribution}_amd64.deb
- Check if the compilation and installation of the ngx_cache_purge module was successful
nginx -V 2>&1 | grep ngx_cache_purge -o
It should now show: ngx_cache_purge
Show nginx version including all features compiled and installed:
nginx -V 2>&1 | sed s/" --"/"\n\t--"/g
- Mark nginx to be blocked from further updates via apt-get
sudo dpkg --get-selections | grep nginx
For every nginx component listed run sudo apt-mark hold <component>
- Regular checks for nginx updates
Do a regular visit on the nginx news page and proceed in case of updates with items 2 to 5.
Configure nginx with the nginx-cache-purge
module¶
- Preparation
Create a directory where nginx will save the cached thumbnails. Use any
path that fits to your environment. Replace
{path}
in this example with your path created:
sudo mkdir -p /usr/local/tmp/cache
- Configuration
sudo vi /etc/nginx/sites-enabled/{your-nextcloud-nginx-config-file}
Add at the beginning, but outside the server{}
block:
# cache_purge
fastcgi_cache_path {path} levels=1:2 keys_zone=NEXTCLOUD:100m inactive=60m;
map $request_uri $skip_cache {
default 1;
~*/thumbnail.php 0;
~*/apps/galleryplus/ 0;
~*/apps/gallery/ 0;
}
Note
Please adopt or delete any regex line in the map
block according
your needs and the Nextcloud version used.
As an alternative to mapping, you can use as many if
statements in
your server block as necessary:
set $skip_cache 1;
if ($request_uri ~* "thumbnail.php") { set $skip_cache 0; }
if ($request_uri ~* "/apps/galleryplus/") { set $skip_cache 0; }
if ($request_uri ~* "/apps/gallery/") { set $skip_cache 0; }
Add inside the server{}
block, as an example of a configuration:
# cache_purge (with $http_cookies we have unique keys for the user)
fastcgi_cache_key $http_cookie$request_method$host$request_uri;
fastcgi_cache_use_stale error timeout invalid_header http_500;
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
location ~ \.php(?:$/) {
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param HTTPS on;
fastcgi_pass php-handler;
# cache_purge
fastcgi_cache_bypass $skip_cache;
fastcgi_no_cache $skip_cache;
fastcgi_cache NEXTCLOUD;
fastcgi_cache_valid 60m;
fastcgi_cache_methods GET HEAD;
}
Note
Note regarding the fastcgi_pass
parameter:
Use whatever fits your configuration. In the example above, an upstream
was defined in an nginx global configuration file.
This may look like:
upstream php-handler {
server unix:/var/run/php5-fpm.sock;
# or
# server <IP_ADDRESS>:9000;
}
- Test the configuration
sudo nginx -s reload
- Open your browser and clear your cache.
- Logon to your Nextcloud instance, open the gallery app, move through your folders and watch while the thumbnails are generated for the first time.
- You may also watch with eg.
htop
your system load while the thumbnails are processed. - Go to another app or logout and relogon.
- Open the gallery app again and browse to the folders you accessed before. Your thumbnails should appear more or less immediately.
htop
will not show up additional load while processing, compared to the high load before.


About The Source Café
The Source joyfully embraces the true essence of thoughtful food. Believing that food should be vibrant, beautiful, sexy, and prepared with love, each item on the menu is created with intention to heal and nourish your mind, body, and soul.


Introduction to Spark
rpi.analyticsdojo.com
Adopted from work by Steve Phelps: https://github.com/phelps-sg/python-bigdata This work is licensed under the Creative Commons Attribution 4.0 International license agreement.
Reference¶
conda install -c conda-forge pyspark
Overview¶
History
Data Structures
Using Apache Spark with Python
History¶
Apache Spark was first released in 2014.
It was originally developed by Matei Zaharia as a class project, and later a PhD dissertation, at University of California, Berkeley.
In contrast to Hadoop, Apache Spark:
is easy to install and configure.
provides a much more natural iterative workflow
Resilient Distributed Datasets (RDD)¶
The fundamental abstraction of Apache Spark is a read-only, parallel, distributed, fault-tolerent collection called a resilient distributed datasets (RDD).
When working with Apache Spark we iteratively apply functions to every elelement of these collections in parallel to produce new RDDs.
For the most part, you can think/use RDDs like distributed dataframes.
Resilient Distributed Datasets (RDD)¶
Properties resilient distributed datasets (RDDs):
The data is distributed across nodes in a cluster of computers.
No data is lost if a single node fails.
Data is typically stored in HBase tables, or HDFS files.
The
map
andreduce
functions can work in parallel across different keys, or different elements of the collection.
The underlying framework (e.g. Hadoop or Apache Spark) allocates data and processing to different nodes, without any intervention from the programmer.
Word Count Example¶
In this simple example, the input is a set of URLs, each record is a document.
Problem: Compute how many times each word has occurred across data set.
Word Count: Map¶
The input to \(\operatorname{map}\) is a mapping:
Key: URL
Value: Contents of document
\(\left< document1, to \; be \; or \; not \; to \; be \right>\)In this example, our \(\operatorname{map}\) function will process a given URL, and produces a mapping:
So our original data-set will be transformed to:
\(\left< to, 1 \right>\) \(\left< be, 1 \right>\) \(\left< or, 1 \right>\) \(\left< not, 1 \right>\) \(\left< to, 1 \right>\) \(\left< be, 1 \right>\)
Word Count: Reduce¶
The reduce operation groups values according to their key, and then performs areduce on each key.
The collections are partitioned across different storage units, therefore.
Map-Reduce will fold the data in such a way that it minimises data-copying across the cluster.
Data in different partitions are reduced separately in parallel.
The final result is a reduce of the reduced data in each partition.
Therefore it is very important that our operator is both commutative and associative.
In our case the function is the
+
operator\(\left< be, 2 \right>\)
\(\left< not, 1 \right>\)
\(\left< or, 1 \right>\)
\(\left< to, 2 \right>\)
Map-Reduce on a Cluster of Computers¶
The code we have written so far will not allow us to exploit parallelism from multiple computers in a cluster.
Developing such a framework would be a very large software engineering project.
There are existing frameworks we can use:
This notebook covers Apache Spark.
Apache Spark¶
Apache Spark provides an object-oriented library for processing data on the cluster.
It provides objects which represent resilient distributed datasets (RDDs).
RDDs behave a bit like Python collections (e.g. lists).
However:
the underlying data is distributed across the nodes in the cluster, and
the collections are immutable.
Apache Spark and Map-Reduce¶
We process the data by using higher-order functions to map RDDs onto new RDDs.
Each instance of an RDD has at least two methods corresponding to the Map-Reduce workflow:
map
reduceByKey
These methods work in the same way as the corresponding functions we defined earlier to work with the standard Python collections.
There are also additional RDD methods in the Apache Spark API including ones for SQL.
Word-count in Apache Spark¶
words = "to be or not to be".split()
words
['to', 'be', 'or', 'not', 'to', 'be']
The SparkContext
class¶
When working with Apache Spark we invoke methods on an object which is an instance of the
pyspark.context.SparkContext
context.Typically, (such as when running on DataBricks) an instance of this object will be created automatically for you and assigned to the variable
sc
.The
parallelize
method inSparkContext
can be used to turn any ordinary Python collection into an RDD;
#Don't Execute this on Databricks
#To be used if executing via docker
import pyspark
#sc = pyspark.SparkContext('local[*]')
words_rdd = sc.parallelize(words)
words_rdd
ParallelCollectionRDD[0] at parallelize at PythonRDD.scala:175
Mapping an RDD¶
Now when we invoke the
map
orreduceByKey
methods onmy_rdd
we can set up a parallel processing computation across the cluster.
word_tuples_rdd = words_rdd.map(lambda x: (x, 1))
word_tuples_rdd
PythonRDD[1] at RDD at PythonRDD.scala:48
Collecting the RDD¶
Notice that we do not have a result yet.
The computation is not performed until we request the final result to be collected.
We do this by invoking the
collect()
method.Be careful with the
collect
method, as all data you are collecting must fit in memory.The
take
method is similar tocollect
, but only returns the first \(n\) elements.
word_tuples_rdd.collect()
[('to', 1), ('be', 1), ('or', 1), ('not', 1), ('to', 1), ('be', 1)]
word_tuples_rdd.take(4)
[('to', 1), ('be', 1), ('or', 1), ('not', 1)]
Reducing an RDD¶
However, we require additional processing to reduce the data using the word key.
word_counts_rdd = word_tuples_rdd.reduceByKey(lambda x, y: x + y)
word_counts_rdd
PythonRDD[8] at RDD at PythonRDD.scala:48
Now we request the final result:
word_counts = word_counts_rdd.collect()
word_counts
[('to', 2), ('be', 2), ('or', 1), ('not', 1)]
Lazy evaluation¶
It is only when we invoke
collect()
that the processing is performed on the cluster.Invoking
collect()
will cause both themap
andreduceByKey
operations to be performed.If the resulting collection is very large then this can be an expensive operation.
word_counts_rdd.take(2)
[('to', 2), ('be', 2)]
Connecting MapReduce in Single Command¶
Can string together
map
andreduce
commands.Not executed until it is collected.
text = "to be or not to be".split()
rdd = sc.parallelize(text)
counts = rdd.map(lambda word: (word, 1)).reduceByKey(lambda x, y: x + y)
counts.collect()
[('to', 2), ('be', 2), ('or', 1), ('not', 1)]
Additional RDD transformations¶
Apache Spark offers many more methods for operating on collections of tuples over and above the standard Map-Reduce framework:
Sorting:
sortByKey
,sortBy
,takeOrdered
Mapping:
flatMap
Filtering:
filter
Counting:
count
Set-theoretic:
intersection
,union
Many others: see the Transformations section of the programming guide
Creating an RDD from a text file¶
In the previous example, we created an RDD from a Python collection.
This is not typically how we would work with big data.
More commonly we would create an RDD corresponding to data in an HBase table, or an HDFS file.
The following example creates an RDD from a text file on the native filesystem (ext4);
With bigger data, you would use an HDFS file, but the principle is the same.
Each element of the RDD corresponds to a single line of text.
genome = sc.textFile('../input/iris.csv')
Calculating \(\pi\) using Spark¶
We can estimate an approximate value for \(\pi\) using the following Monte-Carlo method:
Inscribe a circle in a square
Randomly generate points in the square
Determine the number of points in the square that are also in the circle
Let \(r\) be the number of points in the circle divided by the number of points in the square, then \(\pi \approx 4 r\).
Note that the more points generated, the better the approximation
See this tutorial.
import numpy as np
def sample(p):
#here x,y are the x,y coordinate
x, y = np.random.random(), np.random.random()
#Because the circle is of
return 1 if x*x + y*y < 1 else 0
NUM_SAMPLES = 1000000
count = sc.parallelize(range(0, NUM_SAMPLES)).map(sample) \
.reduce(lambda a, b: a + b)
#Area = 4*PI*r
r = float(count) / float(NUM_SAMPLES)
r
print ("Pi is approximately %f" % (4.0 * r))
Pi is approximately 3.141616


build
add_box
cancel
Colour every
nd
number
starting at
slow_motion_video
play_arrow
fast_forward
skip_next
close
Create a new grid
Numbers start at
and go up by
, on a grid that is
by
add
close


Web Wallet
Home
Account
(current)
Account Details
Your current balances and details
Username:
N/A
Balance:
0.0
Deposit
Depositing Into your Account
Address:
N/A
Generate Address
Be Aware!
Generating a new Wallet Address means
ALL
deposits you haven't confirmed will be lost.
Confirm
Cancel
Deposit Confirmation
Confirm Deposit Into your Account
An Error Has Occurred
Confirm
Withdrawal
Withdrawing From your Account
Oh Shucks!
Be Aware!
Any incurred transaction fees will be subtracted from your withdrawal amount. Remember to
Check Your Address
, miss-directed payments will be lost.
Confirm
Cancel
Withdraw
Transaction Id:


targets OpenUrl NHC chemical known drugs protein nucleoside CLARITY Figure molecule CrossRef similarity antiviral neighborhood new uridine using metabolite molecules receptor target triphosphate Download adenosine drug Abstract NHC. SEA Table View affinity list multiple potent predicted ;Structures FREE Open Science Structures Text Web active activity bind confidence data-hide-link-title=""> data-icon-position="" descriptors figure given lethal likely namely, potential prodrug tab (GS-) (SLCA), (such Chem. Drug Finally, Med. Mestres PHRAG Structural analysis coronavirus data defined efforts identified identify landscape metabolic mutagenesis prediction recent remdesivir small structures transformations transporter virus vitro


ELECTRODELESS CONDUCTANCE MEASUREMENTS USING TOROIDAL INDUCTORS
~
by Robert A\ Martin, Jr.
B. S., Dickinson College, 1965
Submitted to the Graduate Faculty of Arts and Sciences in partial fulfillment of the requirements for the degree of
Doctor of Philosophy
University of Pittsburgh
1971
Reproduced with permission of the copyright owner. Further reproduction prohibited without permission.