MISSION: IMPOSSIBLE A film review by Andrew Hicks Copyright 1996 Andrew Hicks / Fatboy Productions
(1996) ** (out of four)
Your mission, should you choose to accept it, is to spend nearly two hours of your life on the umpteenth TV-show remake of the past few years, featuring over-the-top dramatic acting, an intrusive musical score, a slow and incoherent plot, generic espionage retreads and few-and-far-between action sequences that pale in comparison with more recent, better movies. I accepted the mission but found it impossible to enjoy.
Tom Cruise makes his foray into action films in MISSION: IMPOSSIBLE, a foray he shouldn't have made. He plays Ethan Hunt, a spy for IMF (Impossible Missions Force, not I'm an MF), who is disavowed from the organization toward the beginning of the film, after his team of agents (including Emilio Estevez) is killed in action. You'll soon wish Cruise went down with his ship, though, because what follows the opening action sequences is over half-an-hour of bad drama, most of which involves Cruise coming across French spy Claire, played by Emmanuelle Beart. She may be famous in France but not America.
Cruise adds her to his new team, which also includes Marsellus Wallace and The Professional (Ving Rhames and Jean Reno), for his independent mission of rescuing a computerized list containing the names of all the major secret agents of the world. (I'll trade you a James Bond rookie card for two Hunts and a Professional.) There's more to the plot, of course, but to tell you the truth, I didn't know what the hell was going on half the time. MISSION: IMPOSSIBLE is apparently too plot-driven to stop and explain the plot. And no, I won't stop to explain that last sentence.
MISSION: IMPOSSIBLE is a failure as far as action films go. The most successful ones in the past few years (the DIE HARD and LETHAL WEAPON trilogies, for starters) have had a sense of humor about the fact that the stunts are so far-fetched, but MISSION: IMPOSSIBLE begs to be taken seriously. There is no comic relief to the film at all except scenes that play in an inadvertently funny way because they're so serious.
 So I guess it's a good thing Cruise yells all the time. And Elfman, I love you man, your music is great, but it's best left with grandiose, Gothic films like BATMAN and EDWARD SCISSORHANDS. To Elfman's credit, though, without his score, the only thing left would be the eight reprises of the overplayed "Mission: Impossible" theme. Might as well have thrown Mancini's "Peter Gunn" theme in there too. I don't think I've heard that enough million times in movies.
Ultimately, it boils down to the fact that we've seen all this before. The only two action scenes (out of five) of any interest are ones that seem like they were outtakes from other movies. The scene in which Cruise and Reno break into an office using state-of-the-art technology was exciting, yes, but it might as well have been Robert Redford and the whole SNEAKERS crew. And the overly far-fetched climax on a train might as well have come from a James Bond movie... or any of the others from Indiana Jones to UNDER SEIGE 2 to feature people climbing on moving trains. If you're remaking a TV show, you've already got one foot in the originality grave, but when you steal action sequences too, your movie ends up six feet under.
This movie review will self-destruct in five seconds.
--
Visit the Movie Critic at LARGE homepage at http://www.missouri.edu/~c667778/movies.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


Created by David Padbury / @davidpadbury
Presented at Lab49 DC Tech Breakfast
April 4, 2013
Synchronous code can be relatively easy to understand.
function login(username, password) {
var user = User.findOne({ username: username });
if (!user) {
return false;
}
var passwordsMatch = bcrypt.compare(user.passwordHash, password);
if (passwordsMatch) {
user.lastLoggedIn = Date.now();
user.save();
}
return passwordsMatch;
}
But JavaScript doesn't work that way.
(And that's typically a good thing...)
function login(username, password, callback) {
User.findOne({ username: username }, function(err, user) {
if (!user) {
callback(null, false);
return;
}
bcrypt.compare(user.passwordHash, password, function(err, passwordsMatch) {
if (passwordsMatch) {
user.lastLoggedIn = Date.now();
user.save(function(err) {
callback(null, true);
});
} else {
callback(null, false);
}
});
});
}
As you have to control flow of both results and errors, the code becomes increasingly noisy.
function login(username, password, callback) {
User.findOne({ username: username }, function(err, user) {
if (err) {
callback(err, null);
return;
}
if (!user) {
callback(null, false);
return;
}
bcrypt.compare(user.passwordHash, password, function(err, passwordsMatch) {
if (err) {
callback(err, null);
return;
}
if (passwordsMatch) {
user.lastLoggedIn = Date.now();
user.save(function(err) {
if (err) {
callback(err, null);
return;
}
callback(null, true);
});
} else {
callback(null, false);
}
});
});
}
Traditionally, flow control is determined by return
and throw
.
Async makes that utterly useless.
There are already popular conventions of how to represent a function result or error.
function callback(err, value) { ... }
Promises are a slightly different approach.
A promise is an object that represents the return value or the thrown exception that the function may eventually provide.
var promise = waitForPromise('My First Promise');
A promise is pending until it is either fulfilled with a value or rejected with a reason.
Promises in JS conventionally have a then
function that allows you to attach callbacks which will receive the intended return value or thrown exception.
promise.then(onFulfilled, onRejected)
var promise = waitForPromise('My First Promise');
promise.then(
function(value) { alert('fulfilled'); },
function(reason) { alert('rejected'); }
);
then
may be called multiple times on the same promise.
var promise = waitForPromise('Another Promise');
promise.then(
function(value) { alert('fulfilled 1'); },
function(reason) { alert('rejected 1'); }
);
promise.then(
function(value) { alert('fulfilled 2'); },
function(reason) { alert('rejected 2'); }
);
BothonFulfilled
andonRejected
are optional arguments
var promise = waitForPromise('Another Promise');
promise.then(function(value) { alert('fulfilled'); });
promise.then(null, function(reason) { alert('rejected'); });
then
must return a promise
promise2 = promise1.then(onFulfilled, onRejected);
This allows us to chain multiple then
calls.
var promise = waitForPromise('Another Promise');
promise
.then(function(value) { alert('fulfilled'); })
.then(null, function(reason) { alert('rejected'); });
Returning a promise makes composing multiple asynchronous calls possible.
If eitheronFulfilled
oronRejected
returns a value that is not a promise, promise2 must be fulfilled with that value.
var promise = waitForPromise('My Promise');
promise
.then(function(value) { return 42; })
.then(function(value) { alert(value); });
If eitheronFulfilled
oronRejected
throws an exception, promise2 must be rejected with the thrown exception as the reason.
var promise = waitForPromise('My Promise');
promise
.then(function(value) { throw new Error('ARGGG!'); })
.then(
function(value) { alert('Fulfilled: ' + value); },
function(reason) { alert('Rejected: ' + reason)});
If eitheronFulfilled
oronRejected
returns a promise (call it returnedPromise), promise2 must assume the state of returnedPromise
var promise = waitForPromise('Promise 1');
promise
.then(function() { return waitForPromise('Promise 2'); })
.then(function() { return waitForPromise('Promise 3'); })
.then(
function(value) { alert('Fulfilled: ' + value); },
function(reason) { alert('Rejected: ' + reason); }
);
Returning a promise makes exception handling from any of these calls easy.
try {
waitForPromise('Promise 1');
waitForPromise('Promise 2');
waitForPromies('Promise 3');
}
catch (e) {
alert('That didnt go to plan');
}
waitForPromise('Promise 1')
.then(function() { return waitForPromise('Promise 2'); })
.then(function() { return waitForPromise('Promise 3'); })
.then(
null,
function(e) { alert('That didnt go to plan'); }
);
We can then use normal flow control to flow asynchronous calls.
waitForPromise('Click to start')
.then(function() {
if (Date.now() % 2 === 0) {
return waitForPromise('Even time promise');
} else {
return waitForPromise('Odd time promise');
}
})
.then(
function(value) { alert('Done with ' + value); }
);
So how do I use promises?
jQuery is by far the most available library that provides promises.
$.get("test.php").then(
function(){ alert("$.get succeeded"); },
function(){ alert("$.get failed!"); }
);
However its then
behavior misses a number of elements from the Promises/A specification that can help with error handling.*
It's also challenging to reuse outside of a jQuery environment (such as node).
There are a number of Promises/A+ implementations
These libraries fulfill the Promises/A+ specification for then
Q.all([
waitForPromise('Promise 1'),
waitForPromise('Promise 2'),
waitForPromise('Promise 3')
]).then(function() { alert('done'); })
.fail(function() { alert('one failed!'); });
The idea is that if these Promise libraries can depend on a consistent behavior of then
, you'll be able to happily convert between different implementations.
As Promises/A+ only specifies how to consume promises, most libraries have different methods of creating them.
Many use the concept of a deferred
—
effectively an object that will produce and control a promise.
function waitAWhile(duration) {
var defer = Q.defer();
setTimeout(defer.resolve, duration);
return defer.promise;
}
waitForPromise('Click me please...')
.then(function() {
return waitAWhile(2500);
})
.then(function() { alert('done'); });
To come back to our original example...
function login(username, password) {
var user = User.findOne({ username: username });
if (!user) {
return false;
}
var passwordsMatch = bcrypt.compare(user.passwordHash, password);
if (passwordsMatch) {
user.lastLoggedIn = Date.now();
user.save();
}
return passwordsMatch;
}
becomes...
function login(username, password) {
return User.findOne({ username: username })
.then(function(user) {
if (!user) {
return false;
}
return bcrypt.compare(user.passwordHash, password)
.then(function(passwordsMatch) {
if (passwordsMatch) {
user.lastLoggedIn = Date.now();
return user.save().then(function() {
return passwordsMatch;
});
}
return passwordsMatch;
});
});
}
Admittedly still not as great as the ideal, but not too far off and relatively readable.
Like most things in JavaScript that involve a choice, Promises are hotly debated.
I've found them particularly well-suited to UI work and less-than-straightforward asynchronous workflows.
But your experiences and aesthetics will likely vary.
talk.resolve('Cheers');


Overview
Package
Class
Use
Tree
Deprecated
Index
Help
PREV LETTER
NEXT LETTER
FRAMES
NO FRAMES
All Classes
A
B
C
D
E
F
G
H
I
J
L
M
N
O
P
R
S
T
U
V
X
Y
Z
G
gameAlarms
- Static variable in class android.gameengine.icadroids.engine.
GameEngine
A vectorlist that holds all the active alarms.
gameEngine
- Variable in class android.gameengine.icadroids.dashboard.
DashboardImageView
gameEngine
- Variable in class android.gameengine.icadroids.dashboard.
DashboardTextView
GameEngine
- Class in
android.gameengine.icadroids.engine
GameEngine is the core of the game.
GameEngine()
- Constructor for class android.gameengine.icadroids.engine.
GameEngine
The GameEngine forms the core of the game by controlling the gameloop and the render operations.
GameForm
- Class in
android.gameengine.icadroids.forms
With GameForm you can create (and delete) views on top of the current view.
GameForm(String, IFormInput, GameEngine)
- Constructor for class android.gameengine.icadroids.forms.
GameForm
Make a GameForm and show immediately the given Layout
GameForm(GameEngine)
- Constructor for class android.gameengine.icadroids.forms.
GameForm
Make a GameForm without adding a new layout.
GameFPSCounter
- Class in
android.gameengine.icadroids.engine
Utility to log the FPS (frames per second) of the Game.
GameFPSCounter()
- Constructor for class android.gameengine.icadroids.engine.
GameFPSCounter
GameObject
- Class in
android.gameengine.icadroids.objects
GameObject is a (not moving) object with a lot of useful methods in it.
GameObject()
- Constructor for class android.gameengine.icadroids.objects.
GameObject
GamePersistence
- Class in
android.gameengine.icadroids.persistence
Class for user persistence.
GamePersistence(String)
- Constructor for class android.gameengine.icadroids.persistence.
GamePersistence
The constructor allows you to specify the filename the internal storage will use.
GameSound
- Class in
android.gameengine.icadroids.sound
This class features a number of static methods that can be used to add sound to your game.
GameSound()
- Constructor for class android.gameengine.icadroids.sound.
GameSound
Constructs an instance of this class.
GameThread
- Class in
android.gameengine.icadroids.engine
GameLoop is the Thread that handles the timing of the GameLogic and the drawing.
GameThread(GameEngine, GameView)
- Constructor for class android.gameengine.icadroids.engine.
GameThread
Intialize the Gameloop
gameTiles
- Static variable in class android.gameengine.icadroids.engine.
GameEngine
GameTiles
- Class in
android.gameengine.icadroids.tiles
Gametiles are especially useful if you want to quickly build a level/map (walls, floor, etc) for a platform- or boardgame.
GameTiles(String[], int[][], int)
- Constructor for class android.gameengine.icadroids.tiles.
GameTiles
Make a new tilemap object with the given tile resources, the tilemap and the tile size
GameTiles(int)
- Constructor for class android.gameengine.icadroids.tiles.
GameTiles
This overloaded constructor will make an GameTile object with an
empty
tilemap.
GameView
- Class in
android.gameengine.icadroids.engine
Class that correctly renders the game on the screen.
GameView(GameEngine)
- Constructor for class android.gameengine.icadroids.engine.
GameView
Constructs a new view
getAngle(GameObject)
- Method in class android.gameengine.icadroids.objects.
GameObject
Use this function to get the angle between you and another object.
getAnimationSpeed()
- Method in class android.gameengine.icadroids.objects.graphics.
AnimatedSprite
Get the animation speed
getAppContext()
- Static method in class android.gameengine.icadroids.engine.
GameEngine
Get Interface to global information about an application environment.
getAppView()
- Static method in class android.gameengine.icadroids.engine.
GameEngine
DO NOT CALL THIS METHOD
getCenterX()
- Method in class android.gameengine.icadroids.objects.
GameObject
Get the center x of the GameObject
getCenterY()
- Method in class android.gameengine.icadroids.objects.
GameObject
Get the center y of the GameObject
getCollidedObjects()
- Method in class android.gameengine.icadroids.objects.
MoveableGameObject
Checks wether or not this gameObject has collided with one or multiple GameObjects or MovableGameObjects.
getCollidingObject()
- Method in class android.gameengine.icadroids.objects.
MoveableGameObject
Get the colliding object if you want to make use of the methods that are in there
getCurrentFrameNumber()
- Method in class android.gameengine.icadroids.objects.graphics.
AnimatedSprite
Get the current frame number of the animation
getCurrentFrameRectangle()
- Method in class android.gameengine.icadroids.objects.graphics.
AnimatedSprite
Get the current frame size as rectangle
getCurrentSystemTime()
- Method in class android.gameengine.icadroids.engine.
GameThread
Get the current system time in milliseconds
getDepth()
- Method in class android.gameengine.icadroids.objects.
GameObject
Get the depth of the object in rendering.
getDirection()
- Method in class android.gameengine.icadroids.objects.
MoveableGameObject
Gets the direction of the objects movement in degrees.
getDirectionRadians()
- Method in class android.gameengine.icadroids.objects.
MoveableGameObject
Gets the direction of the objects movement in radians.
getElementName(View)
- Method in class android.gameengine.icadroids.forms.
GameForm
Get the ID name of an view element, like a button or textbox.
getFrameHeight()
- Method in class android.gameengine.icadroids.objects.
GameObject
Get the frame height of the object's sprite, this will be also the height of the object in the game.
getFrameHeight()
- Method in class android.gameengine.icadroids.objects.graphics.
Sprite
Get the height of the sprite
getFrameWidth()
- Method in class android.gameengine.icadroids.objects.
GameObject
Get the frame width of the object's sprite, this will be also the width of the object in the game.
getFrameWidth()
- Method in class android.gameengine.icadroids.objects.graphics.
AnimatedSprite
Get the frame width of this AnimatedSprite
getFrameWidth()
- Method in class android.gameengine.icadroids.objects.graphics.
Sprite
Get the width of the sprite
getFriction()
- Method in class android.gameengine.icadroids.objects.
MoveableGameObject
Gets the friction of this object
getFullX()
- Method in class android.gameengine.icadroids.objects.
GameObject
Get the exact x position of the GameObject
getFullY()
- Method in class android.gameengine.icadroids.objects.
GameObject
Get the exact y position of the GameObject
getGameObjectAtTouchPosition(int)
- Method in class android.gameengine.icadroids.engine.
GameEngine
Get the first (rendered) object that is touched.
getGameTiles()
- Method in class android.gameengine.icadroids.tiles.
Tile
Get the instance of gameTiles where this Tile is a instance from
getInstance()
- Static method in class android.gameengine.icadroids.engine.
Viewport
Returns an instance of the private Viewport class.
getItemsOfType(Class<T>)
- Method in class android.gameengine.icadroids.engine.
GameEngine
Get all instances of the specified type that are currently in the game
getMapHeight()
- Method in class android.gameengine.icadroids.engine.
GameEngine
Get the height of the game world
getMapHeigth()
- Method in class android.gameengine.icadroids.tiles.
GameTiles
Get the height of the map
getMapWidth()
- Method in class android.gameengine.icadroids.engine.
GameEngine
Get the width of the game world
getMapWidth()
- Method in class android.gameengine.icadroids.tiles.
GameTiles
Get the width of the map
getNumberOfFrames()
- Method in class android.gameengine.icadroids.objects.graphics.
AnimatedSprite
Get the number of frames of the sprite
getPlayer()
- Method in class android.gameengine.icadroids.engine.
GameEngine
Return the player instance.
getPosition()
- Method in class android.gameengine.icadroids.objects.
GameObject
Get the sprite position as rectangle
getPrevCenterX()
- Method in class android.gameengine.icadroids.objects.
MoveableGameObject
Gets the previous centerX position of this object, which is saved every loop.
getPrevCenterY()
- Method in class android.gameengine.icadroids.objects.
MoveableGameObject
Gets the previous centerY position of this object, which is saved every loop.
getPrevX()
- Method in class android.gameengine.icadroids.objects.
MoveableGameObject
Gets the previous X position of this object, which is saved every loop.
getPrevY()
- Method in class android.gameengine.icadroids.objects.
MoveableGameObject
Gets the previous Y position of this object, which is saved every loop.
getRandomX(int)
- Method in class android.gameengine.icadroids.engine.
GameEngine
Get random x between left edge of world and right edge minus the specified width.
getRandomY(int)
- Method in class android.gameengine.icadroids.engine.
GameEngine
Get random y between top edge of world and bottom edge minus the specified height.
getScreenHeight()
- Static method in class android.gameengine.icadroids.engine.
GameEngine
Gets the screen height of the telephone this value may change when flipping the telephone.
getScreenWidth()
- Static method in class android.gameengine.icadroids.engine.
GameEngine
Gets the screen Width of the telephone this value may change when flipping the telephone.
getSpeed()
- Method in class android.gameengine.icadroids.objects.
MoveableGameObject
Gets the speed of this object.
getSprite()
- Method in class android.gameengine.icadroids.objects.
GameObject
Get the sprite Object of the GameObject
getSprite()
- Method in class android.gameengine.icadroids.objects.graphics.
Sprite
Get the sprite in Bitmap.
getSpriteCenterX()
- Method in class android.gameengine.icadroids.objects.graphics.
AnimatedSprite
Get the middle of the frame, horizontally
getSpriteCenterX()
- Method in class android.gameengine.icadroids.objects.graphics.
Sprite
Get the center width of the sprite
getSpriteCenterY()
- Method in class android.gameengine.icadroids.objects.graphics.
AnimatedSprite
Get the middle of the frame, vertically
getSpriteCenterY()
- Method in class android.gameengine.icadroids.objects.graphics.
Sprite
Get the center height of the sprite
getTextFromTextfield(String)
- Method in class android.gameengine.icadroids.forms.
GameForm
Get text from a textfield.
getTileArray()
- Method in class android.gameengine.icadroids.tiles.
GameTiles
Get the list with all the Tile objects in it.
getTileNumberX()
- Method in class android.gameengine.icadroids.tiles.
Tile
Get the x tile number
in the tile map
getTileNumberY()
- Method in class android.gameengine.icadroids.tiles.
Tile
Get the y tile number
in the tile map
getTileOnIndex(int, int)
- Method in class android.gameengine.icadroids.tiles.
GameTiles
get a Tile on a specified index number of the tile list
getTileOnPosition(int, int)
- Method in class android.gameengine.icadroids.objects.
MoveableGameObject
Get a tile on a specific x and y position in the game world.
getTileOnPosition(int, int)
- Method in class android.gameengine.icadroids.tiles.
GameTiles
Get a tile on a specific x and y position in the game world
getTileType()
- Method in class android.gameengine.icadroids.tiles.
Tile
Get the tile tiletype
getTileTypes()
- Method in class android.gameengine.icadroids.tiles.
GameTiles
getTileX()
- Method in class android.gameengine.icadroids.tiles.
Tile
Get the x position of the tile Note: x and y values are at the top left corner of the tile
getTileY()
- Method in class android.gameengine.icadroids.tiles.
Tile
get the y position of the tile Note: x and y values are at the top left corner of the tile
getViewportLocation()
- Method in class android.gameengine.icadroids.engine.
GameView
getViewportLocation()
- Method in class android.gameengine.icadroids.engine.
Viewport
Gets the position of the viewport.
getViewportX()
- Method in class android.gameengine.icadroids.engine.
Viewport
Gets the x-position of the viewport.
getViewportY()
- Method in class android.gameengine.icadroids.engine.
Viewport
Gets the y-position of the viewport.
getX()
- Method in class android.gameengine.icadroids.objects.
GameObject
Get the x position on the screen, rounds the exact X-pos to an int.
getxSpeed()
- Method in class android.gameengine.icadroids.objects.
MoveableGameObject
Gets the X speed of this object.
getY()
- Method in class android.gameengine.icadroids.objects.
GameObject
Get the y position on the screen, rounds the exact Y-pos to an int.
getySpeed()
- Method in class android.gameengine.icadroids.objects.
MoveableGameObject
Gets the Y speed of this object.
getZoomFactor()
- Method in class android.gameengine.icadroids.engine.
Viewport
Gets the zoomfactor for zooming in.
Overview
Package
Class
Use
Tree
Deprecated
Index
Help
PREV LETTER
NEXT LETTER
FRAMES
NO FRAMES
All Classes
A
B
C
D
E
F
G
H
I
J
L
M
N
O
P
R
S
T
U
V
X
Y
Z


This is a simple calculator that takes in two numbers and perform basic operations on them.
Add
Subtract
Multiply
Divide


This document grants extensive privileges and powers to the Czar, but those privileges impose several responsibilities that must be fulfilled, failure to do so may result in some form of revolution (picture a firing squad).
Previous generations of the honorable royal family have automated the build process as much as possible, but all machines require attention: the build Czar must keep a constant vigil, lest some runaway process stops working and a critical bug escapes into the wild.
Typically a runaway build is detected because on its next
execution an email indicating that the build is
DISABLED
is received.
The same email is also sent when a build is abruptly terminated (for
example because the machine running the build crashed).
Most of the time,
a test is not making progress and must be terminated,
the build then runs to completion.
If the machine crashed then it is necessary to go into the build
directory and remove the
auto_compile/.disable
file, so the next execution can complete successfully.
Occasionally the build fails because there is a CVS conflict,
there is not enough disk space or some similar problem,
in these cases the build Czar is encouraged to request advised
from previous generations in the royal family they will
be happy to come back from retirement to provide advice and help
if needed.
The build Czar should also investigate the errors and warnings reported by a build, contact the person or persons responsible for the failed build and prompt them to fix the situation. If that process above fails the build Czar should request help from a volunteer or proceed to fix the problem himself/herself. If there is no available backup/volunteer and the build Czar is busy, he/she will be forced to excomunicate the original developer and report him or her to the highest court of the land for whatever punishment is deemed appropriate (lashing or bone breaking where not prohibited by law).
It is extremely important to fix broken builds within the day, otherwise the errors tend to accumulate and once the process breaks down it is extremely hard to recover, in other words, the term as a build Czar can extend beyond your expectations if the builds are not clean again.


Golden Globes to honor TV pioneer Ellen DeGeneres
by MARK KENNEDYNEW YORK (AP) - The Golden Globe Awards will give its new TV special achievement trophy to someone who has been a pioneering sitcom star, a TV talk-show host and a game-show MC - Ellen DeGeneres.
The Hollywood Foreign Press Association said Monday that the Carol Burnett Award - the small-screen version of the group’s film counterpart, the Cecil B. DeMille Award - will go to DeGeneres, a multiple Emmy winner and Golden Globe nominee.
It is given annually to honor someone “who has made outstanding contributions to television on or off the screen.” The first Carol Burnett Award last year fittingly went to Burnett herself.
In a statement, association President Lorenzo Soria hailed DeGeneres as “a pioneer who has captivated audiences for nearly 25 years with her undeniable charm and wit.”
Sign up for Daily Newsletters
Copyright © 2019 The Washington Times, LLC.
Please read our comment policy before commenting.


Next Event is the next generation booking and networking platform for event management. Next Event will allow ANYBODY to book and organise an event from End to End, quickly and efficiently. By networking suppliers, entertainers, venues and event organisers in a one stop shop experience. It’s about making it easy for the customer, all information from once source, one email and one platform


A look at the rise of interest in deep learning. Explore its capabilities and how it is shaping the world.
Learn MoreCan you guess the real image? Try out this interactive showcase that uses Caffe and Cuda to colorize grayscale images.
Made by: Jake Roose and Kylon Tyner
Generate psychedelic images algorithmically! This showcase warps Death Valley into a trippy stadium using the Google DeepDream algorithm and the Tensorflow framework.
Made by: Angelo Carrabba


All of the basic Markdown formatting is supported (powered by Kramdown).
Both inline and display modes are supported. Powered by KaTeX.
URLs of supported resources are replaced with boxes like these:
Twitter https://twitter.com/glebm/status/836237442747228162
:
GitHub https://github.com/google/dart-scissors/pull/67
:
StackExchange http://codegolf.stackexchange.com/questions/45701
:
Amazon https://www.amazon.co.uk/dp/0521797071
:
YouTube https://www.youtube.com/watch?v=1QP7elXwpLw
:
Google Maps https://goo.gl/maps/R6nj3Qwf2LR2
:
Many more resources are supported. Powered by the onebox library.


@@include("../partials/head.html")
We’re building the best next-generation interactive bootstrap based UI Kit design tool for developers, engineers, Full-Stack developer, and digital agency.
Geeks provide clean and consistent page designs to help you to create beautiful looking contents. Geek is feature-rich components and beautifully designed pages that help you create the best possible website and web application projects.
Geeks is the leading global marketplace for teaching and learning, connecting millions of students to the skills they need to succeed.
Learners
Instructors
Courses
Course enrollments
Our core values are the fundamental beliefs of a person or organization geeks academy. We help people understand the difference between right and wrong.
Quis cursus turpis in habitant sagittis amet dolor malesuada ut. Volutpat nunc id blanvolutpat nunc.
Quis cursus turpis in habitant sagittis amet dolor malesuada ut. Volutpat nunc id blanvolutpat nunc.
Quis cursus turpis in habitant sagittis amet dolor malesuada ut. Volutpat nunc id blanvolutpat nunc.
Want to work with some of the best global talent and build a tool used by all the companies you know and love? Join the Geeks team and help shape the future of design.
OpeningsIf you’re passionate and ready to dive in, we’d love to meet you. We’re committed to supporting our employee professional development and well-being.
View opportunities


Already registered? Sign in
Are you a customer? Sign up here!
You are sucessfully registered. Login your account and enjoy our services.


interface Token : CharSequence, Serializable
Defines the interface, a token, a text can be split into, must implement.
open val length: Int |
|
abstract val positions: SortedSet<Int>
A set that contains the positions the token occurs at. |
|
abstract var token: CharSequence
The token as a CharSequence. |
abstract fun addPosition(position: Int): Unit
Adds a new position the token occurs at. |
|
open fun get(index: Int): Char |
|
open fun subSequence(startIndex: Int, endIndex: Int): CharSequence |
data class MutableToken : Token
A mutable token that can be modified while keeping track of the previous revisions. |
|
data class NGram : Token
A n-Gram, which consists of a sequence of characters, taken from a longer text or word. |
|
data class Substring : Token
A substring, which consists of a sequence of characters, taken from a longer text. |
|
data class TokenSequence<TokenType : Token> : Iterable<TokenType>, Token
A sequence of several tokens. As the sequence implements the interface Token, it can be used as part of a superordinate sequence. In such case, the tokens it consists of are separated using a specific delimiter. |
|
data class ValueToken<T> : Token
A token that can optionally have a certain value assigned to it. |


XylogAWStartUp is a practical preview of an summit convention app samples for client. This ionic framework are our company method in producing awesome mobile apps on all platform (iOS, Android and Windows Mobile).
Ionic Framework is an open source SDK that enables developers to build high quality mobile apps with web technologies like HTML, CSS, and JavaScript.
React Native app is a real mobile app. With React Native, you don't build a "mobile web app", an "HTML5 app", or a "hybrid app". React Native uses the same fundamental UI building blocks as regular iOS and Android apps.


--- title: Movie Montage Comparison layout: post tags: [media] uuid: 5a43dee2-435f-3273-6637-b82d0a61a6d6 ---
Two years ago I posted about making movie montages with mplayer, and one of the movies I did was the original Tron. Since then the 30-years-later sequel came out, Tron: Legacy. The original post has pulled in a lot of hits in the last few months from people looking for Tron-themed wallpaper, so I may at well follow it up with a new image. I think the comparison between the old and new is interesting, because color plays an important role in the Tron world. Here's the original Tron montage again. As before, each row is one minute of film.
And here's the new film, Tron: Legacy,
The most obvious difference is that the the sequel is much longer. The color blue continues to be a prevalent theme, though I'd say the sequel's blue is more "serious." Both entered the computer world about the same amount of time into the film, and because the sequel is longer it has a larger portion of the film taking place there. Both have an increase in antagonist red just before the end, for the Boss Battle.


About
This webpage is a project during the HTML5, CSS3 and JavaScript Course at the University of Regensburg.
Features
On the fly translation
You can enter any text or upload any text file into your
Workspace where you can read it
without major concerns about vocabulary:
Just take your cursor over any word you cannot recall at
the moment and a translation, if available, will pop up.
Also, in order to spare you precious time even if the
length of the text could be measured in meters, the
calculation takes place directly when you need it. So don't
forget pressing the "show more"-button whenever the page is
done.
Language Select
Before starting to work you will need the correct
languages to translate from into. Those you can choose on
the left side in the navigation bar. Predefined are
English, German, French and Latin. Of course, that's not
even by far the extend of choices Glosbe, the dictionary
this site works with, offers. Therefore you can simply
enter the language code instead by choosing type in the
select menu.
These
are Glosbes supported Languages.
And
here
you can find Wikipedias collection of the ISO 639-3
language codes used by glosbe, e.g.
- acx (Arabic)
- bar (Bavarian)
- cdo (Chinese)
- dan (Danish)
- grc (Ancient Greek)
- pol (Polish)
- rus (Russian)
- sco (Scots)
- spa (Spanish)
Single Translation
If you want to know some word that does not occur in your
text or another form of it is asked for, simply use the
translation field static to the left.
In case you forgot to switch the languages, the translation
field below will tell you.
Vocabulary Sheet
Several more features will assist you training your text
understanding and vocabulary: Create your
own Vocab Sheet to
save, send, print and take wherever you go.
Any translation, as well in the translation section to
the left as in any translation container for a word in the
test, is clickable and will directly appear as entry in
the vocabulary sheet below. Furthermore it's possible to
add your own translation if you found a better one or want
to take a note on some specialty. This can be done in any of the
translation containern of the text.
Once added you can also remove them individually in case
there's no need for the entry or delete the whole list.
When you feel your vocabulary list is long enough for the
moment and you want to take it with you, go to the vocab
sheet and click the Download-button - your Browser will
supply you with a HTML-version of the current collection.
Thanks
Thanks to all those, who tirelessly assisted me building this
page, no matter how discouraging my problems and questions
were.
(And of course to those I left without me working on
it!)


Making the world a happier place, one hour of sleep at a time.
A graph to visualize every hour of sleep per night
Ability to record mood, (when they wake up, throughout the day, and before they go to bed)
Creating a sleep entry
Average mood score
Create overall averages based on different days
Emoji rating for moods(4 levels)
Ability to edit or delete a sleep entry
Recommending how much sleep you need after a month !


tweets/min scale: normalized same scale for each game same scale for each round same scale for all
Click on team name or logo to highlight team.


Establishement of a national blood system with well organized and coordinated blood transfusion servies, effective evidence-based and ethicla national blood policies, and legislations and regulations that can provide sufficient and timely supplies of safe blood to meet the transfusion needs.
With more than 250 blood banks all over India, extensive search facility is provided to get what you are looking for.


Duchess of Cambridge pulls out of awards event ‘due to the children’
Kate was scheduled to join husband William at the Tusk Conservation Awards in London.
The Duchess of Cambridge has cancelled an appearance at an awards ceremony due to an undisclosed matter relating to her children.
Kate was due to join husband William at the Tusk Conservation Awards event in London on Thursday evening, but pulled out just a few hours ahead of its start.
Kensington Palace said the Cambridges would be meeting the finalists during the afternoon, suggesting the children’s health was not the reason behind the cancellation.
A Kensington Palace spokeswoman said: “The duchess is no longer able to attend the Tusk awards due to the children.
“She will still however meet finalists at a tea at Kensington Palace this afternoon. The duke as patron will attend both.”
The duke and duchess have three children, eldest son Prince George, aged six, daughter Princess Charlotte, aged four, and their youngest child Prince Louis, who is almost 19-months-old.


First of all, welcome everyone to my site.Hope you are doing great. From childhood,i am a tech enthusiast and i love to do experiment on internet,so i decided to learn web development.I am a autodidactic guy.Now i am studying B.tech in mechanical branch but i have keen interest on computer science. I am trying my level best to make more useful things that help everyone.THANK YOU .
Hobbies play a vry important role in our lives. if i pick one of my favorite hobby that is riding bikes, it makes me happy and i love to explore everyplace in the world. I AM A WONDERER.
Hey,guys!Here you can find all useful HTML tags. Just click on source code.
Hey, Here you can directly code and run languages like C,C++,python,Java,PHP,sql and many more.
It's a interesting one. Are you worried of making projects. No need to worry, here you can simply login your account and also a female chatbot is there she will help anytime anything you can ask her.Hope these projects helps you.
[9938451778]
Any query! Mail me


ERROR - Unable to reach OPE App
When starting up, it is normal for Canvas to not respond for 3-10 minutes. Please be patient...


This document explains how to use the yGuard Java obfuscation and shrinking software together with Ant. yGuard is a product of yWorks GmbH, creator of the outstanding JavaTM graph visualization framework yFiles and other fine products.
Documentation for the deprecated Ant syntax of previous yGuard releases is still available.
yguard
Elementinoutpair
Elementsinoutpairs
Elementsexternalclasses
Elementattribute
Elementsshrink
Elemententrypointjar
Elementrename
Elementproperty
Elementskeep
Elementclass
Elementsmethod
Elementsfield
Elementspackage
Elementssourcefile
Elementslinenumbertable
Elementsadjust
Elementsmap
Element<yguard>
Using the yGuard Ant task, name obfuscation and code shrinking can be seamlessly integrated into your deployment
process.
The yguard
task contains two nested elements that perform the name obfuscation
and code shrinking separately:
shrink
element removes all code elements that are not reachable from
the entrypoints given in the nested keep
element.rename
element performs name-obfuscation, renaming all packages,
classes, methods and fields according to a selectable name-mapping scheme.keep
element.
yguard
element.
In order to make use of yGuard's yguard
task you must have Ant properly installed and configured
to run it. After downloading
and extracting the jar file
(yguard.jar
), place it in a path near to your build script. You may use
absolute paths, but in the following example, we expect the jar file to lie
in the same directory as your build file.
In order the get the Ant task running you should insert a couple of lines in
your build script (build.xml
):
<target name="yguard"> <taskdef name="yguard" classname="com.yworks.yguard.YGuardTask" classpath="yguard.jar"/> <yguard> <!-- insert your yguard elements here --> </yguard> </target>
For a complete build.xml
file have a look at the
examples section.
There are a couple of things you should be aware of when obfuscating and shrinking
software.
The weakest part of an application considering name obfuscation and code shrinking is code that uses
reflection to dynamically load classes, invoke methods etc. Therefore, you have to be especially careful
when using the yguard
task on applications that rely on reflection.
The most important facts to keep in mind when using yGuard are described here briefly:
rename
task, code in the form of MyApplication.class
will break
if MyApplication will be obfuscated by name
and the obfuscation switch replaceClassNameStrings
is set to
false
.
The shrink
task will currently recognize code in the form of MyApplication.class
only if
the java files
were compiled using an arbitrary version of the standard javac compiler (although the shrinking engine might
recognize the .class
construct also if the classes were compiled using a compiler that generates
similar bytecode).
shrink
task and your
application uses
reflection you should explicitly designate all entities loaded per reflection as code entrypoints using the keep
element.
shrink
task, consider using the
createStubs
attribute of the shrink
task to find out which additional entities you
need to include in the keep
element.
Class.forName(className)
will not work when using the rename
task unless you use the
obfuscated name string in your variable or the String is a local constant and
replaceClassNameStrings
is not set or set to true
.
If you use the shrink
task, className
should be contained in the list of entrypoints
using
the keep
element.
-Xmx
property for the Java virtual machine, the yguard
Ant task
might fail due to a java.lang.OutOfMemoryError
.-Xmx
option in the ANT_OPTS
variable, e.g.:
bash> export ANT_OPTS="-Xmx512M" or cshell> setenv ANT_OPTS "-Xmx512M"
yguard
Element
The yguard
task contains elements that define basic properties common to the nested
rename
and shrink
tasks.
Please see the General Hints & Troubleshooting section to learn about
common pitfalls when using name obfuscation and shrinking software.
Attributes
Theyguard
element has no attributes.
Child Elements
inoutpair
Elements
At least one inoutpair
element or one non-empty inoutpairs
element
has to be specified in order
to run the yguard tasks. This elements specifies the paths to the input and output jar files.
Attributes
| Attribute | Description | Required |
|---|---|---|
in |
specifies an exisiting jar file, which contains the unshrinked and unobfuscated .class files. | Yes |
out |
specifies a path to a jar file which will be created and used to put the results of the shrinking and obfuscation process. | Yes |
resources |
Will only be considered if the yguard element contains a
nested shrink element.Determines how the shrinking engine handles all non-.class files. Currently the following three resource policies are supported:
|
No, defaults to copy . |
Child Elements
Theinoutpair
element has no child elements.
If multiple jar files need to be obfuscated at once the inoutpairs
element can be used alternatively.
inoutpairs
Elements
Additionally or alternatively to inoutpair
elements this element can be specified in order
to specify the paths to the input and output jar files.
Attributes
| Attribute | Description | Required |
|---|---|---|
resources |
Will only be considered if the yguard element contains a
nested shrink element.Determines how the shrinking engine handles all non-.class files. Currently the following three resource policies are supported:
|
No, defaults to copy . |
Child Elements
patternset
mapper
that determines the
name mapping between the unobfuscated and obfuscated versions of the jar files. Note that identitymapper
and
mergemapper
are not supported. All matched jar file names need to be mapped to exactly one jar file name
that differs from the original jar file.Some examples:
<!-- use all jars in the input-lib-dir directory and obfuscate them to *_obf.jar --> <inoutpairs resources="auto"> <fileset dir="${input-lib-dir}"> <include name="myapp*.jar"/> <exclude name="*_obf.jar"/> </fileset> <mapper type="glob" from="*.jar" to="*_obf.jar"/> </inoutpairs> <!-- the above mapper is the default one so the following snippet does the same --> <inoutpairs resources="auto"> <fileset dir="${input-lib-dir}"> <include name="myapp*.jar"/> <exclude name="*_obf.jar"/> </fileset> </inoutpairs>
externalclasses
Element
If the jar to be processed by yGuard depends on external classes or libraries, this
element can be used to specify classpaths to these entities.
These libraries will neither be shrinked nor obfuscated. Use the
inoutpair
element for this purpose!
See example 4 later in this document for an example of when to use this
element.
In order to achieve a maximum shrinking effect by the shrink
task, all external dependencies should be
declared in the externalclasses
element. Otherwise, all non-private methods of classes
that inherit from unresolvable classes will not be shrinked.
The elements attributes and child elements can be seen on the Ant documentation page about using path elements.
attribute
Element
Using the attribute
element, you can specify which attributes present in the input
classes should be kept in the obfuscated output classes.
See example 6 later in this document for an example of when to use this
element.
Attributes
| Attribute | Description | Required |
|---|---|---|
name |
A comma-separated list of attribute names that are to be retained in the shrinked and/or obfuscated class files. | Yes |
Child Elements
An example:
<attribute name="SourceFile, LineNumberTable, LocalVariableTable"> <patternset> <include name="com.mycompany.mylibrary.**"/> </patternset> </attribute>
This will retain the attributes named "SourceFile
", "LineNumberTable
",
and "LocalVariableTable
" effectively enabling debugging information for all classes in the
com.mycompany.mylibaray
package and subpackages.
shrink
Element
The shrink
task removes all classes, fields and methods that are not reachable from
a number of entrypoints given by a nested keep
element.
See the Complete Examples section for explanation of some common use cases.
If your code uses reflection, please read the General Hints & Troubleshooting
section for information on this topic.
Attributes
| Attribute | Description | Required |
|---|---|---|
logfile |
Determines the name of the logfile that is generated
during the shrinking process. The logfile contains information about the
entrypoints the shrinking engine uses, the removed classes, methods and fields
as well as any warnings.
If the name ends with a ".gz", yGuard will automatically create a gzipped version of the file which potentially saves a lot of disc space. |
No, defaults to yshrinklog.xml |
createStubs |
Instead of removing methods completely, this attribute causes the shrink task to insert a
method
stub that throws a java.lang.InternalError if it is called. This attribute is very useful if
the
shrinking
process causes your application to break and you are uncertain about which additional code entities you have
to include in the keep element. Note that classes considered as completely obsolete by the shrinking engine are still removed completely - this attribute only affects obsolete methods of non-obsolete classes. |
No, defaults to false |
Child Elements
entrypointjar
Element
The entrypointjar
element can be used for convenience if your application uses
libraries that are to be shrinked, but the jarfile using these libraries should be left untouched by the shrinking
engine.
Such a jarfile could be specified as an entrypointjar
.
Attributes
| Attribute | Description | Required |
|---|---|---|
name |
Path to to the jar file to use as entrypointjar. | Yes |
Child Elements
Theentrypointjar
element has no child elements.
Example
<yguard> <inoutpair in="lib-in.jar" out="lib-out.jar" /> <shrink> <entrypointjar name="myApp.jar"/> </shrink> </yguard>
rename
Element
The basic idea is, that all elements will be renamed by this task.
Using the nested keep
element, you have to specify all classes, methods, fields,
and attributes that should be excluded from name obfuscation,
i.e. that will not be renamed but kept in the API. There are different use cases, where you
sometimes want to exclude or simply just have to exclude some elements from name obfuscation.
See the Complete Examples section for explanation of some common use cases.
If your code uses reflection, please read the General Hints & Troubleshooting
section for information on this topic.
Excluding elements can be achieved by using both
the keep
element and the mainclass
attribute of the
rename
element.
Attributes
Child Elements
property
Elements
property
elements can be used to give hints to the name obfuscation
engine. Depending on the exact version of yGuard, the task may use these hints
to control the process of obfuscation.
Attributes
| Attribute | Description | Required |
|---|---|---|
name |
specifies a key which may be interpreted by the obfuscation task. | Yes |
value |
specifies the corresponding value of the property. | Yes |
The following properties are supported:
| Name | Description |
|---|---|
error-checking |
can be used to tell yGuard
to bail out if it detects any problems. Currently this property can
be set to the following value:
|
naming-scheme |
Can be used to tell the renaming engine to use
a different naming scheme during the obfuscation. Currently this property can
be set to one of the following values:
|
language-conformity |
Can be used to advise
the renaming engine to produce names, that should be decompilable by most decompilers. On
the other hand, yGuard can produce class files that should be executable and
verifiable by all of todays virtual machines, but produces absolutely nonsense
names when decompiled (Ever tried to compile 'int class = false.this
super(String$super.init if); ' ?!)
Currently this property can
be set to one of the following values:
|
overload-enabled |
Determines whether the renaming engine tries to use the same names for methods with different signatures or
whether it always generates unique method names.
Setting this property to false eases the analysis of stacktraces but reduces the obfuscation effect.
|
obfuscation-prefix |
Can be used to instruct the renaming engine
to prefix packages, that are fully obfuscated with a given package prefix, e.g.
com.mycompany.obf .
|
digests |
Can be used to tell yGuard which digest algorithms should be used
for the digest generation in the manifest file. Valid values are either none ,
or a comma-separated list of digest-algorithm identifiers, e.g. SHA-1, MD5 (which is the default).
|
expose-attributes |
Can be used to give yGuard
a list of attributes yGuard should expose in addition to the standard attributes.
By default yGuard removes unneeded attributes like "Deprecated" from methods. The value
can be a comma separated list of attributes as defined in
Section 4.7 of the VM Specification of the .class File Format. E.g. in order to keep
the "Deprecated" attribute one can add the following property:
<property name="expose-attributes" value="Deprecated"/>
Note that this affects all classes which will be obfuscated. For a better control of which attributes should be exposed in what classes use the Attribute Element. |
Child Elements
Theproperty
element has no child elements.
keep
Element
This element is a child of the rename
or shrink
element.
It can be used to specify elements that are excluded from the parent rename
or shrink
task. The excluded classes, methods and fields are defined using nested package
,
class
, method
and field
elements.
The elements given in the keep
element are considered as code entrypoints.
All code reachable from these entrypoints will be implicitly excluded from shrinking, too.
Attributes
The keep
element provides a number of boolean attributes that determine whether debug information
and annotations present in the input class files are to be retained in the output files.
The default behavior of the rename
and shrink
elements for the respective attributes
is explained in the table below.
Note that a more fine-grained control over which attributes to keep for which class files is possible using the
attribute
element. Also, the attribute
element allows to define attributes to keep for both the rename
and the shrink
element in a common place.
| Attribute | Description | Default (rename ) |
Default (shrink ) |
|---|---|---|---|
sourcefile |
Determines whether the name of the original source code file should be included in the output class files. | remove | remove |
linenumbertable |
Determines whether the line number table, that contains a mapping from each opcode in the class file to the line number in the original source code file should be included in the output class files. | remove | remove |
localvariabletable |
Determines whether the local variable table, that contains a mapping from each local variable in the class file to the name that has been used in the original source code file should be included in the output class files. | remove | remove |
localvariabletypetable |
Determines whether the local variable type table, that contains a mapping from each local variable in the class file to the name and its generic type signature that has been used in the original source code file should be included in the output class files. | remove | remove |
runtimevisibleannotations |
Determines whether annotations with the retention policy RetentionPolicy.RUNTIME
should be included in the output class files. |
keep | keep |
runtimevisibleparameterannotations |
Determines whether method paramater annotations with the retention policy
RetentionPolicy.RUNTIME should be included in the output class files. |
keep | keep |
runtimeinvisibleannotations |
Determines whether annotations with the retention policy RetentionPolicy.CLASS
should be included in the output class files. |
keep | remove |
runtimeinvisibleparameterannotations |
Determines whether method paramater annotations with the retention policy
RetentionPolicy.CLASS should be included in the output class files. |
keep | remove |
Common Child Elements
Child Elements only available in the rename
task
The rename
task allows for a special treatment of the
linenumbertable
and sourcefile
attributes. This treatment can be
specified in the following child elements:
class
Element
The class
element can be used for excluding certain classes and/or their fields and methods
from the renaming or shrinking process.
If no name
, extends
or implements
attribute is given and the class
element contains no nested patternset
, a class
element matches all class names.
The classes
, methods
and fields
attributes
tell the shrinking and renaming engines which classes, methods and fields to keep based on their visibility.
The following table lists the possible values for all of these
attributes and shows which elements will be excluded. A '*' denotes, that
elements that have the given visibility will be excluded for the specified
attribute value. A '-' denotes that the these elements will not be excluded from the process.
| Value/Visibility | public |
protected |
friendly |
private |
none |
- | - | - | - |
public |
* | - | - | - |
protected |
* | * | - | - |
friendly |
* | * | * | - |
private |
* | * | * | * |
Attributes
| Attribute | Description | Required |
|---|---|---|
name |
The name of the class to be kept. | No |
classes |
The visibility of the classes to be kept. | No, defaults to none |
methods |
The visibility of the methods to be kept. | No, defaults to none |
fields |
The visibility of the fields to be kept. | No, defaults to none |
extends |
If no name attribute is given, keeps all classes that equal or extend the class
defined by the given fully qualified classname. See example 7 for an example usage of this attribute. |
No |
implements |
If no name attribute is given, keeps all classes that equal or implement the
class defined by the given fully qualified classname.See example 7 for an example usage of this attribute. |
No |
Child Elements
Explanation
There are three possible ways of specifying which classes will be excluded from the shrinking and obfuscation process:
name
attribute. For example:
<class name="mypackage.MyClass"/>
<class> <patternset> <include name="com.mycompany.**.*Bean"/> <exclude name="com.mycompany.secretpackage.*"/> <exclude name="com.mycompany.myapp.SecretBean"/> </patternset> </class>This will expose all classes which reside in the package subtree of com.mycompany and whose name ends with Bean except for those, that reside in the com.mycompany.secretpackage package and the single SecretBean in com.mycompany.myapp.
<class> <patternset> <include name="com.mycompany.myapp.MainClass"/> <include name="org.w3c.sax?."/> <exclude name="org.w3c.sax?.**.*$$*"/> </patternset> </class>This will expose the MainClass class and all classes, which reside in packages like org.w3c.sax1, org.w3c.sax2, org.w3c.saxb except for inner classes. '$' is used as a separator between outer class names and inner class names. Since Ant uses '$' as an escape character, you have to use two consecutive '
$
's ('$$
') if you want to pass
one as an argument to the task.
public
, protected
, package friendly
or private
(inner classes). This can be achieved by
additionally specifying the classes
attribute in the class
element.
<class classes="protected"> <patternset> <include name="com.mycompany.myapi."/> </patternset> </class>This will keep all class names, that are either
public
or
protected
and
which reside in one of the subpackages of com.mycompany.myapi
(note the
abbreviation: the trailing dot behaves like the trailing '/
' in the usual
patternset
, i.e. it could be rewritten as com.mycompany.myapi.**.*
)
<class classes="protected" methods="protected" fields="protected"> <patternset> <include name="**.*"/> </patternset> </class>This example shows the very common use case of excluding a complete public API from the shrinking and obfuscation process. There is an abbreviation for this use case: you can omit the
patternset
element, since in the case where the
classes
attribute is specified and there is no
patternset
child
element used, the task will automatically apply this rule. In this example
all classes will be exposed, that are either public or protected.
Their methods and fields will be exposed as long as they are declared
public
or protected
. If a class is package friendly
or private
(inner classes), neither itself
nor its methods or fields will be exposed.
The last example shows how to keep the public methods of certain classes only, but neither field names nor the class names themselves.
<class classes="none" methods="public" fields="none"> <patternset> <include name="com.mycompany.myapi."/> </patternset> </class>
method
Element
Using the method
element you can specify methods by signature
which should be excluded from shrinking or name obfuscation.
Attributes
| Attribute | Description | Required |
|---|---|---|
name |
Specifies the method to keep. Use the complete signature using fully qualified class names and the return type! | Yes |
class |
Specifies the class which contains the method. Use the normal java syntax, i.e. the fully qualified name. This attribute can be omitted, if the patternset element is used as a child element, in which case all classes matching the patternset will be searched and their corresponding methods will be kept. | No |
Child Elements
Examples
<method class="com.mycompany.myapp.MyClass" name="void main(java.lang.String[])"/> <method class="com.mycompany.myapp.MyClass" name="int foo(double[][], java.lang.Object)"/> <method name="void writeObject(java.io.ObjectOutputStream)"> <patternset> <include name="com.mycompany.myapp.data.*"/> </patternset> </method> <method name="void readObject(java.io.ObjectInputStream)"> <patternset> <include name="com.mycompany.myapp.data.*"/> </patternset> </method>
This will keep the main method of the MyClass class and the foo method. Additionally all readObject and writeObject methods (used for Serialization) will be kept in all classes of the com.mycompany.myapp.data package. Note that you have to specify the return argument's type, even if it is void and that you have to use the fully qualified name for all classes, even those, that are in the java.lang package.
field
Element
Using the field
element you can specify fields by name
which should be excluded from shrinking or name obfuscation.
Attributes
| Attribute | Description | Required |
|---|---|---|
name |
specifies the field to keep. Use the name of the field only, do not include its type! | Yes |
class |
Specifies the class which contains the field. Use the normal java syntax, i.e. the fully qualified name. This attribute can be omitted, if the patternset element is used as a child element, in which case the all classes matching the patternset will be searched and their corresponding fields will be kept. | No |
Child Elements
Examples
<field class="com.mycompany.myapp.MyClass" name="field"/> <field name="serialVersionUID"> <patternset> <include name="com.mycompany.myapp.data.*"/> </patternset> </field>
This will keep the field named 'field' of the MyClass class. Additionally all the serialVersionUID fields (used for Serialization) will be kept in all classes of the com.mycompany.myapp.data package.
package
Element
The package
element can be used for excluding certain package's names from the renaming process. It
cannot be used for the shrinking process.
All packages that are matched be the nested patternset
element will not be obfuscated. This has no influence
on the class, method, or field names but will only result in the package's name not being obfuscated.
Normally, it is not necessary to use this element, instead the class
element is used
to keep class names (and thus their package names) from being obfuscated.
Child Elements
Examples
<package> <patternset> <include name="com.mycompany.myapp.*"/> </patternset> </package>
This will keep the names of all packages that are direct descendants
of com.mycompany.myapp
. This will not influence the names of the classes
contained in these packages.
sourcefile
Element
The sourcefile
element allows for a special treatment of the sourceFile attribute by the rename
element.
Using nested property
elements, the mapping of sourceFile elements in obfuscated class files can be
adjusted.
The following properties are supported:
| Name | Description |
|---|---|
mapping |
the value of this property determines the name all sourceFile attributes matched by the
sourcefile
element are mapped to.
|
Child Elements
property
patternset
Examples
<sourcefile> <property name="mapping" value="y"/> <patternset> <include name="com.mycompany.myapp.**"/> </patternset> </sourcefile>
This will map all of the source file attributes in the packages below com.mycompany.myapp
to "
y
",
which is small and generally a nice letter.
linenumbertable
Element
The linenumbertable
element allows for a special treatment of the linenumbertable attribute by the
rename
.
Using nested property
elements, the mapping of linenumbertable elements in obfuscated class files can
be
adjusted.
The following properties are supported:
| Name | Description |
|---|---|
mapping-scheme |
can be used with the following two values:
|
scrambling-salt |
can be used in conjunction with mapping-scheme to provide an integer value that will be used to
"salt" the algorithm's random seed for the
scrambling.
|
Child Elements
property
patternset
Examples
<linenumbertable> <patternset> <include name="com.mycompany.myapp.**"/> </patternset> </linenumbertable>
This will keep the line numbers of all the classes in the com.mycompany.myapp packages and subpackages.
Note that in order to see the line numbers in stacktraces, the sourcefile
attribute has to be retained for those files, too, since otherwise the JDK will display "Unknown source.
"
for the stack elements.
<linenumbertable> <property name="mapping-scheme" value="scramble"/> <property name="scrambling-salt" value="1234"/> <patternset id="CompanyPatternSet"> <include name="com.mycompany.myapp.**"/> </patternset> </linenumbertable> <sourcefile> <property name="mapping" value="y"/> <patternset refid="CompanyPatternSet"/> </sourcefile>
This will keep scrambled line numbers for all classes found in and below the com.mycompany.myapp packages.
The scrambling algorithm will use the given "salt" value to use a predefined scrambling scheme.
In order to see the scrambled line numbers, a sourcefile
element is used
on the same patternset, which is referenced by its previously declared reference id, to rename the source files to
"y
".
adjust
Element
Using the adjust
element one can specify resource files whose names and/or
contents should be adjusted by the rename engine to reflect the obfuscated class names.
Note:
This will only adjust files that are part of the inoutpair
jars!
I.e. the fileset's root directory is the combined root of all jars that are passed to
yGuard via the inoutpair
elements. yGuard will not modify any of the files
on disk, except for the out-jar!
Attributes
| Attribute | Description | Required |
|---|---|---|
replaceName |
specifies whether or not the names of the specified resources should be adjusted. | No, defaults to false |
replaceContent |
specifies whether or not the contents of resource files should be adjusted. | No, defaults to false |
replacePath |
specifies whether or not the paths to the resource files should be adjusted. | No, defaults to true |
Child Elements
Theadjust
element can be used just like the standard Ant
ZipFileSet element.
Some examples:
<!-- adjust the names of all java property files in the jars --> <adjust replaceName="true"> <include name="**/*.properties"/> </adjust> <!-- adjust the classnames specified within a single XML file in the jar --> <adjust file="plugins.xml" replaceContent="true" /> <!-- suppress the adjustment of the resource path com/mycompany/myapp/resource in the jar. --> <!-- the package com.mycompany.myapp still gets obfuscated. --> <adjust replacePath="false"> <include name="com/mycompany/myapp/resource/*"/> </adjust>
map
ElementThe map
element is an immediate optional child of the
rename
element. It can be used to specify the mapping
for the renaming process directly. This is an advanced topic.
Child Elements
package
class
method
field
All of these elements use the name
attribute to specify the specific
element. The method
and field
element need the
class
attribute in order to function properly. Neither wildcards
nor nested patternset
elements are allowed.
Use the map
attribute to specify the new name (subpackage, classname,
methodname and fieldname respectively).
Some examples:
<map> <package name="com" map="etc"/> <package name="com.mycompany" map="nocompany"/> <package name="com.mycompany.myapp" map="asdf"/> <class name="com.mycompany.myapp.MainApp" map="foo"/> <method class="com.mycompany.myapp.MainApp" name="void main(java.lang.String[])" map="bar"/> <field class="com.mycompany.myapp.MainApp" name="field" map="a"/> </map>
In this example the package structure 'com.mycompany.myapp' will be obfuscated to 'etc.nocompany.asdf'. The MainApp class will be called 'foo' and its main method will be remapped to 'bar' (and can therefor not be executed from commandline anymore). The field called 'field' will be renamed to 'a'.
The true power of the map
element lies in its use together
with the patch
element, which itself is a child element
of the rename
top level element.
Attributes
Theyguard
element has no attributes.
Child Elements
Using the patch
element one can generate jars, that can be used
to serve as patches for versions of an application that have already been
deployed in obfuscated form.
During the main obfuscation run, yGuard produces an xml-logfile, in which
the mapping between the unobfuscated and obfuscated names is contained.
The patch
element is used to declare a set of classes, that need
to be patched. During the obfuscation, yGuard will include those files
in the obfuscated jars only, that are declared inside this element.
For example:
<patch> <class name="com.mycompany.myapp.MainClass"/> <class> <patternset> <include name="com.mycompany.myapp.bugs.*"/> </patternset> </class> </patch> <map logfile="yguardlog.xml"/>
This will only include the MainClass class and all classes that belong to the
bugs package in a patch jar.
In order to work with the previously delivered obfuscated version, it is
important to use the map
element to specify the mapping of the elements
from the previous run. This can most conveniently be achieved by
specifying the log file from the corresponding run in the map's logfile attribute.
There will be some examples given, that represent common use cases.
Following are the contents of a complete build.xml
file.
Just copy the following lines to a new document named build.xml
,
put the file into your project's root directory and edit the file to suit your needs.
<?xml version="1.0" encoding="UTF-8"?> <!-- file build.xml in your project root directory --> <!-- Ant build script for yfiles --> <!-- The java based Ant tool is available from --> <!-- http://jakarta.apache.org/ant --> <!-- This file demonstrates the use of the yGuard byte --> <!-- code obfuscator from yWorks Gmbh --> <!-- yGuard can be downloaded from --> <!--- http://www.yworks.com/products/yguard --> <project name="project" default="yguard" basedir="."> <!-- edit the following lines to your needs --> <target name="init"> <property name="project_name" value="DemoProject"/> <property name="srcDir" value="."/> <property name="classDir" value="classes"/> <property name="jar" value="${project_name}.jar"/> <property name="obfjar" value="${project_name}_obf.jar"/> <property name="renamelog" value="${project_name}_renamelog.xml"/> <property name="shrinklog" value="${project_name}_shrinklog.xml"/> <property name="mainclass" value="com.mycompany.myapp.Main"/> <mkdir dir="${classDir}" /> </target> <target depends="jar" name="yguard"> <taskdef name="yguard" classname="com.yworks.yguard.YGuardTask" classpath="yguard.jar"/> <!-- the following can be adjusted to your needs --> <yguard> <inoutpair in="${jar}" out="${obfjar}"/> <shrink logfile="${shrinklog}"> <keep> <class classes="protected" methods="protected" fields="protected"> <patternset> <include name="com.mycompany.publicapi.**.*"/> <exclude name="com.mycompany.publicapi.private.*"/> <include name="com.mycompany.menu.reflection.**.*"/> </patternset> </class> </keep> </shrink> <rename mainclass="${mainclass}" logfile="${renamelog}"> <property name="error-checking" value="pedantic"/> <keep> <class classes="protected" methods="protected" fields="protected"> <patternset> <include name="com.mycompany.publicapi.**.*"/> <exclude name="com.mycompany.publicapi.private.*"/> </patternset> </class> </keep> </rename> </yguard> </target> <!-- compile --> <target name="compile" depends="init"> <javac srcdir="${srcDir}" includes="com/mycompany/**/*.java" destdir="${classDir}"> </javac> </target> <!-- create .jar --> <target name="jar" depends="compile"> <jar jarfile="${jar}" basedir="${classDir}" includes="com/mycompany/**"> <fileset dir="${srcDir}"> <include name="com/mycompany/resources/*.properties"/> </fileset> </jar> </target> <!-- run project --> <target name="run" depends="yguard"> <java classname="${mainclass}" fork="true"> <classpath> <pathelement location="${obfjar}"/> </classpath> </java> </target> <!-- removes all that has been built --> <target name="clean" depends="init"> <delete dir="${classDir}" includeEmptyDirs="true" /> </target> </project> <!-- end file build.xml -->
An alternative yguard
section could look like this:
<yguard> <inoutpair in="classes.jar" out="classes_obf.jar"/> <inoutpair in="utils.jar" out="utils_obf.jar"/> <!-- don't let the obfuscator remove the "Deprecated" --> <!-- attributes from the .class file entries --> <attribute name="Deprecated"/> <shrink logfile="shrinklog.xml"> <keep> <class classes="protected" methods="protected" fields="protected"/> </keep> </shrink> <rename mainclass="com.mycompany.myapp.Main" logfile="obflog.xml"> <keep> <class classes="protected" methods="protected" fields="protected"/> </keep> </rename> </yguard>
This case is especially useful when you want to provide and expose a public API.
All the classes, methods and fields, that can be seen in a javadoc generated
API will be excluded from the shrinking and renaming tasks.
Package friendly and private classes, methods and fields
will be shrinked or obfuscated whenever possible.
This example also displays the use of the "attribute" element. In this
case it prevents the yguard task from removing the "Deprecated" flag from
the entities in the .class files.
<yguard> <inoutpair in="demo.jar" out="demo_obf.jar"/> <shrink logfile="shrinklog.xml"> <keep> <!-- main method --> <method name="void main(java.lang.String[])" class="com.mycompany.myapp.Main" /> <!-- needed for reflection --> <class name="com.mycompany.myapp.data.DataObject" methods="public" fields="none"/> <!-- needed for reflection (name only) --> <class name="com.mycompany.myapp.data.InnerDataObject"/> <!-- needed for serialization --> <method name="void writeObject(java.io.ObjectOutputStream)"> <patternset id="datapatternset"> <include name="com.mycompany.myapp.data.*"/> </patternset> </method> <method name="void readObject(java.io.ObjectInputStream)"> <patternset refid="datapatternset"/> </method> <field name="serialVersionUID"> <patternset refid="datapatternset"/> </field> </keep> </shrink> <rename mainclass="com.mycompany.myapp.Main" logfile="renamelog.xml"> <property name="language-conformity" value="illegal"/> <property name="naming-scheme" value="mix"/> <keep> <class name="com.mycompany.myapp.data.DataObject" methods="public" fields="none"/> <class name="com.mycompany.myapp.data.InnerDataObject"/> <method name="void writeObject(java.io.ObjectOutputStream)"> <patternset refid="datapatternset" /> </method> <method name="void readObject(java.io.ObjectInputStream)"> <patternset refid="datapatternset"/> </method> <field name="serialVersionUID"> <patternset refid="datapatternset"/> </field> </keep> </rename> </yguard>
This example demonstrates the common use case of a demo program. The keep
sections
of both the shrink
and rename
elements contain code entities that will
often have to be excluded from the shrinking and renaming process. These are the main code entrypoints (the main method),
classes that are loaded per reflection and fields and methods needed for serialization. Note how the same
patternsets can be reused using the id
and refid
attributes.
<yguard> <inoutpair in="mydemo.jar" out="mydemo_obf.jar"/> <externalclasses> <pathelement location="lib/external.jar"/> <pathelement location="lib/additional/classes/"/> </externalclasses> <shrink logfile="shrinklog.xml"> <property name="error-checking" value="pedantic"/> <keep> <method name="void main(java.lang.String[])" class="com.mycompany.myapp.Main" /> <class classes="public"/> </keep> </shrink> <rename mainclass="com.mycompany.myapp.Main" logfile="renamelog.xml"> <property name="error-checking" value="pedantic"/> <keep> <class classes="public"/> </keep> </rename> </yguard>
This example demonstrates full method and field obfuscation for a program, that
has external dependencies. The dependencies are specified in the
externalclasses
element using standard Ant path specification
mechanisms. Classes residing in lib/external.jar
and underneath
the lib/additional/classes/
directory (note the trailing slash),
will be used to resolve external dependencies during the obfuscation run.
This is necessary if external classes want to access obfuscated classes
directly using an externally defined interface or superclass. yGuard
automatically detects externally declared methods and prevents renaming and shrinking of
these items. As a result, the shrinked and obfuscated jar file can be used together with
unmodified versions of external libraries without causing any problems.
This example also demonstrates the use of the error-checking
property. In this case the Ant target fails if any problem is detected during
the obfuscation run.
.properties
Files and Other Resource Files<yguard> <inoutpair in="myapp.jar" out="myapp_obf.jar"/> <shrink logfile="shrinklog.xml"> <keep> <!-- single entrypoint: main method --> <method name="void main(java.lang.String[])" class="com.mycompany.myapp.Main" /> </keep> </shrink> <rename mainclass="com.mycompany.myapp.Main" logfile="renamelog.xml"> <adjust replaceContent="true"> <!-- plain-text class names in the config files will --> <!-- be replaced with the obfuscated name versions --> <include name="**/*.config"/> <include name="com/mycompany/myapp/init/Main.properties"/> </adjust> <adjust replacePath="false"> <!-- keep the complete path to the resources, (gifs...) even if --> <!-- package com.mycompany.myapp gets obfuscated by name --> <include name="com/mycompany/myapp/resources/*"/> </adjust> <adjust replaceName="true"> <!-- Replace the .properties files' names with the obfuscated --> <!-- versions if the corresponding .class files get obfuscated --> <include name="**/*.properties"/> </adjust> </rename> </yguard>
This example, too, demonstrates full method and field obfuscation for a program, that
uses .properties files and other resources files.
Some configuration files are used that contain fully qualified classnames
for plugins that are going to be obfuscated. Therefore yGuard is instructed to
automatically replace the plain-text entries in those files with the obfuscated
name versions.
Additionally some resources are hardcoded into the classes (image locations
and html files, e.g.). yGuard gets instructed not to move these resource files
even if they reside in a package structure that is obfuscated.
Since the property files have been created with the same name as the classes
that make use of them and they are being loaded using this.getClass().getName()
,
yGuard is configured to rename the .properties files according to the obfuscated
names of the corresponding .class files.
<yguard> <inoutpair in="myapp.jar" out="myapp_obf.jar"/> <inoutpair in="lib/thirdpartylib.jar" out="lib/thirdpartylib_obf.jar"/> <externalclasses> <pathelement location="lib/external.jar"/> </externalclasses> <!-- Keep all of the attributes for debugging, e.g. --> <attribute name="Deprecated, SourceFile, LineNumberTable, LocalVariableTable> <patternset refid="myopenapp"/> </attribute> <rename mainclass="org.myorg.myapp.Main" logfile="renamelog.xml"> <property name="error-checking" value="pedantic"/> <keep> <!-- Tell the obfuscator to only adjust my classes --> <!-- to work with the obfuscated 3rd party library --> <!-- but leave them virtually unmodified otherwise --> <!-- The libconnector package however will be --> <!-- obfuscated as much as possible --> <class classes="private" methods="private" fields="private"> <patternset id="myopenapp"> <include name="org.myorg.myapp.**"/> <exclude name="org.myorg.myapp.mylibconnector.**"/> </patternset> </class> </keep> </rename> </yguard>
This example demonstrates almost no method, class, and field obfuscation for a program, that
has external dependencies and additionally depends on a third party library jar
which has to be obfuscated before deployment. Only those parts that actually interface with
the third party jar in the mylibconnector
package are being obfuscated.
Nothing in the third party library jar will be
exposed in the final application, everything will be obfuscated and the code
in the open application that makes use of the third party jar will be adjusted.
Note that the public part of the application will still be debuggable since all of the
crucial attributes will be exposed for the open application part.
The dependencies are specified in the
externalclasses
element using standard Ant path specification
mechanisms. Classes residing in lib/external.jar
will be used to resolve external dependencies during the obfuscation run.
This is not strictly necessary in this case since the public API will be fully exposed,
i.e. no methods which have been declared by interfaces or super class in external
classes will be renamed.
extends
and implements
attributes (Serializable exclusion)<yguard> <inoutpair in="myapp.jar" out="myapp_obf.jar"/> <shrink> <keep> <!-- main method --> <method name="void main(java.lang.String[])" class="org.myorg.myapp.Main" /> <!-- serializable classes --> <class implements="java.io.Serializable" classes="private" methods="private" fields="private" /> <!-- menu items loaded per reflection --> <class extends="org.myorg.myapp.MyMenuItem" classes="friendly" methods="public" fields="public" /> </keep> </shrink> <rename mainclass="org.myorg.myapp.Main" logfile="renamelog.xml"> <keep> <method name="void readObject(java.io.ObjectInputStream)" /> <method name="void writeObject(java.io.ObjectOutputStream)" /> <field name="serialVersionUID" /> <class extends="org.myorg.myapp.MyMenuItem" classes="friendly" methods="public" fields="public" /> </keep> </rename> </yguard>
This example demonstrates the usage of the new implements
and extends
attributes of the
class
element. All Serializable classes are excluded from shrinking by using the implements
attribute
of the class
element.
Additionally, all classes that extend the base class for menu items, org.myorg.myapp.MyMenuItem
, are
defined as entrypoints
for the shrinking engine using the extends
attribute of the class
element.
The readObject
and writeObject
methods and the field serialVersionUID
needed
for serialization are excluded from name obfuscation as well.
yGuard provides a simple tool that makes it easy for the obfuscating party to deobfuscate stacktraces
which have been obfuscated using yGuard. During the obfuscation yGuard produces an xml logfile which can
automatically be gzipped for convenient storage. You should always keep those logfiles in order to
be able to deobfuscate fully qualified classnames or methods or fields for debugging purposes e.g.
In order to run the yGuard deobfuscation tool do the following:
Console> java -jar yguard.jar mylogfile.xmlA tiny GUI will popup that will enable you to easily deobfuscate stacktraces and fully qualified classnames as well as provide a convenient way to browse the mapping generated by yGuard.
The lower part of the window contains an editable text area that can be used to enter text or paste stacktraces in. Pressing the button at the bottom of the window labelled "Deobfuscate" will trigger the deobfuscation of the contents in the text area. The tool will try to identify fully qualified class names (separated by dots) and use the mapping information to reconstruct the original names. If the tool identifies a stack trace element, it will try to deobfuscate scrambled line numbers, too, if they have been scrambled during the obfuscation process.
If you experience any problems or think you have found a bug feel free to send an email to<EMAIL_ADDRESS>but please make sure you have read the documentation thoroughly before. We will do our best and try to answer your questions.
<yguard>
The obfuscation and shrinking process can be completely configured inside your Ant script.
The yguard
task and nested elements should be used according to the following DTD. Note that this
is for information purposes only, i.e. you do not have to include the following lines anywhere.
This DTD should just provide a quick overview of the yGuard syntax. Due to restrictions of the DTD specification,
the given DTD does not describe all available yGuard options. Please browse through the documentation above for
complete documentation of the yGuard Ant task elements.
<!ELEMENT yguard (inoutpair+,externalclasses?,attribute*,(shrink|rename)+)> <!ELEMENT inoutpair EMPTY> <!ATTLIST inoutpair in CDATA #REQUIRED out CDATA #REQUIRED resources CDATA #IMPLIED> <!-- NOTE: the resources attribute only has an effect if a shrink element is present inside the yguard element. --> <!ELEMENT externalclasses ANY> <!-- the externalclasses element is used just like Ant's classpath element. See the Ant documentation for further details--> <!ELEMENT attribute (patternset)*> name CDATA #REQUIRED> <!ELEMENT shrink (entrypointjar*,keep?)> <!ATTLIST shrink logfile CDATA #IMPLIED createStubs CDATA #IMPLIED> <!ELEMENT entrypointjar> <!ATTLIST entrypointjar name CDATA #REQUIRED> <!ELEMENT rename (property*,patch?,adjust*,map?,keep?)> <!ATTLIST rename mainclass CDATA #IMPLIED logfile CDATA #IMPLIED conservemanifest CDATA #IMPLIED replaceClassNameStrings CDATA #IMPLIED> <!ELEMENT property EMPTY> <!ATTLIST property name CDATA #REQUIRED value CDATA #REQUIRED> <!ELEMENT patch (class)*> <!ELEMENT adjust (#PCDATA)> <!ATTLIST adjust replaceName CDATA #REQUIRED replaceContent CDATA #REQUIRED replacePath CDATA #REQUIRED> <!ELEMENT map (class|method|field|package)*> <!ELEMENT package (patternset)*> <!ATTLIST package name CDATA #REQUIRED map CDATA #REQUIRED> <!-- NOTE: the map attribute is only supported if the <package> element is nested inside a <map> element, whereas the patternset is only supported inside the <keep>/<expose> sections. --> <!ELEMENT keep (package|class|method|field|sourcefile|linenumbertable)*> <!--  NOTE: the map attribute is only supported if the <class> element is nested inside an <rename> element. --> <!ELEMENT method (patternset)*> <!ATTLIST method class CDATA #IMPLIED map CDATA #IMPLIED name CDATA #IMPLIED> <!-- NOTE: the map attribute is only supported if the <method> element is nested inside an <rename> element. --> <!ELEMENT field (patternset)*> <!ATTLIST field class CDATA #IMPLIED map CDATA #IMPLIED name CDATA #IMPLIED> <!-- NOTE: the field attribute is only supported if the <method> element is nested inside an <rename> element. -->
Attention users of IDEs that "support" the creation of Ant files (e.g. IDEA's IntelliJ): Your IDE may indicate some errors inside your ANT file when you use yGuard specific elements. This is because the IDE does not know about the DTD used by yGuard. However this is not a real problem, since the Ant file should nevertheless work as expected.
Copyright © 2002-2008 yWorks. All Rights Reserved.


My beloved brethren, I pray for the Spirit to guide my remarks this evening. A common thread binds us together. We have been entrusted to bear the priesthood of God and to act in His name. We are the recipients of a sacred trust. Much is expected of us.
We read in the Doctrine and Covenants, section 121, verse 36, “The rights of the priesthood are inseparably connected with the powers of heaven.” What a wonderful gift we have been given. Ours is the responsibility to guard and protect that priesthood and to be worthy of all the glorious blessings our Father in Heaven has in store for us—and for others through us.
Wherever you go, your priesthood goes with you. Are you standing in holy places? Before you put yourself and your priesthood in jeopardy by venturing into places or participating in activities which are not worthy of you or of that priesthood, pause to consider the consequences. Remember who you are and what God expects you to become.
This precious gift of priesthood power brings with it not only solemn responsibilities but also special blessings for ourselves and for others. May we, in whatever place we may find ourselves, always be worthy to call upon its power, for we never know when our need and our opportunity to do so may come.
During World War II, a friend of mine was serving in the South Pacific when his plane was shot down over the ocean. He and the other crew members successfully parachuted from the burning plane, inflated their life rafts, and clung to those rafts for three days.
On the third day they spotted what they knew to be a rescue vessel. It passed them by. The next morning it passed them by again. They began to despair as they realized that this was the last day the rescue vessel would be in the area.
Then the Holy Spirit spoke to my friend: “You have the priesthood. Command the rescuers to pick you up.”
He did as prompted: “In the name of Jesus Christ and by the power of the priesthood, turn about and pick us up.”
Within a few minutes the vessel was beside them, helping them on deck. A faithful and worthy bearer of the priesthood, in his extremity, had exercised that priesthood, blessing his life and the lives of others.
May we determine, here and now, ever to be prepared for our time of need, our time of service, our time of blessing.
As we now conclude this general priesthood session, I say to you that you “are a chosen generation, a royal priesthood” (1 Peter 2:9). May we ever be worthy of these divine accolades, I pray with all my heart in the name of Jesus Christ, our Savior, amen.


Owner is reunited with his missing parrot after being spotted by an eagle-eyed schoolgirl
by Tom EarnshawA man’s missing parrot that he bought after the loss of his dad has been found thanks to the eagle eyes of a town schoolgirl.
David Vaughan bought the African Grey bird in the last year following the death of his dad, Peter.
But the bird, called Pee in memory of his father, went missing on Saturday, November 9 in Adlington, near Chorley, after being blown off David’s shoulder by strong gales.
Adlington-native David explained: “It happened on Saturday. He comes everywhere with me. I’d been in urgent care all day with him before it happened.
“I was going up to my girlfriend’s house and a huge gust of wind just blew him off my shoulder and into the air.”
The 33-year-old searched for Pee until the early hours of Sunday morning but to no avail.
“I started again on Sunday morning and actually found him up a tree in Westhoughton Road," explained lorry driver David.
“We put the ladder up against it but it spooked him off and we lost him again.”
It wasn’t until three days later that the bird was found thanks to the eagle eyes of Esme Potter, a pupil in Adlington St Paul's CE Primary School’s reception class.
“She said to her teacher that there’s a pirate outside in the tree,” laughed David.
”It wasn’t until they looked that they saw the parrot and it made sense because my girlfriend had dropped off some leaflets in the school about it and she just happened to go to reception to tell them what we were looking for.
“Two of the mums actually caught him after Esme spotted him, so it’s been a real effort from everyone.”
To celebrate, David brought Pee back to Esme's reception class at Adlington St Paul's on Monday (November 18) to celebrate with her classmates and the two mums, Jessica Fairclough and Justine Peel.
David said: “I got him last year after my dad Peter died, so I called him Pee after him.
"Mum always used to call him Pee so we thought it was a nice tribute.
“I’m just so relieved. He’s only one-years-old. I got him in March 2018 when he was just 12 to 15 weeks old.
“I was out the other day at Morrisons filling up with diesel and people were taking photos.
“I was absolutely lost without him. But he’s not going out anymore!”


Gallery
Montain Italy
Description of image here...
Ocean California
Description of image here...
Lake Irene
Description of image here...
Panorama Alaska
Description of image here...
Denali National Park
Description of image here...
Landscape
Description of image here...
Scotland
Description of image here...
Dawn
Description of image here...
Mountains
Description of image here...


Welcome to Pat's Salmon Cookies! When enjoying your cup of coffee in the morning, is there anything better than pairing your coffee with a delicious treat? Here at Pat's Salmon Cookies, we make gormet cookies from ground salmon. First, we grind the salmon very fine and then we bake it into a cookie that will remind you of the great northwest. Not only are our cookies a healthy option for your morning, they are also delicious!
At Pat's Salmon Cookies, we want you to be thrilled with your purchase. If for any reason you are not happy with your purchase, we are happy to offer a replacement or refund.


--- layout: post title: PHP - numeric string comparizon date: 2011-05-06 16:36:00 UTC updated: 2011-05-06 16:36:00 UTC comments: true category: php tags: [php, sucks] --- Evert Pot posts on interesting PHP behaviour. Try it yourself :)


Proper formatting makes code easier to read and understand.
Please make a backup before you replace your code!
Release notes Report 🐞 bug Source code
output sample
LIBRARY IEEE; -- declare the library
USE IEEE.std_logic_1164.ALL;
USE IEEE.std_logic_arith.ALL;
(All reserved words are in capital)
(All indents are in the right place)
---------------------------------------------------------------
ENTITY example IS
PORT (
rst : IN std_logic;
clk : IN std_logic;
example_of_long_words : OUT std_logic_vector(3 DOWNTO 0)
(Align signs in PORT() aligns these colons)
);
END example;
ARCHITECTURE EXA OF example IS
ALIAS slv IS std_logic_vector;
SUBTYPE bit4 IS slv(3 DOWNTO 0); (Check ALIAS replaces all "std_logic_vector" with "slv")
BEGIN
REPORT "Hello World"; (Remove REPORT)
stages : PROCESS (rst, clk)
BEGIN
IF (rst = '0') THEN
CASE bit4 IS
WHEN "0000" => bit4 <= "0001";
WHEN "0001" => bit4 <= "0100";
WHEN "0010" => bit4 <= "0010";
WHEN "0100" => bit4 <= "0000";
WHEN OTHERS =>
REPORT "Are there any more cases?"; (Remove REPORT)
END CASE;
ELSIF (clk'event AND clk = '1') THEN
IF (bit4 = '0111') THEN
bit4 <= "0000";
ELSE
bit4 <= "1111";
END IF;
-- Sample comments 1;
-- Sample comments 2; (Remove comments)
END IF;
END PROCESS;
END EXA;


Your search extent is in a non-migrated area. Contact the authority to complete your search.
Draw an extent
{% if coordinates %}This map shows {{ coordinates.location }}
{% endif %}Use the buttons on this map to draw the search extent.
Your search extent is in a non-migrated area. Contact the authority to complete your search.
This map shows {{ coordinates.location }}
{% endif %}Use the buttons on this map to draw the search extent.


Q1. Display all Employee names who are in department AOO
Q2. Display EMP_LEVEL per DEPT.
Q3.Read sorting criteria from console and display the matching results.
Q4. Display EMP_NAME by HIRE_DATE(display format 24 Aug 2020) in order-newest to oldest.