Buttons are a component that universally communicate the ability for a user to interact with an application.
A button's purpose can be expressed through text, color, or a general icon that's meaning is widely understood.
Buttons are often grouped together with other buttons whose purposes relate to each other.
Purpose
Buttons are used to provide action, navigation, and closure elements to a page.
Disabled buttons will appear as opaque and will not have a hover effect.
Special buttons emphasize an action within the context of a page; limit the use of special buttons to one
per page.
Icon buttons will appear as only the icon until they are hovered over by the user.
Each icon button should have a short title attribute to explain the button upon hovering.
Icons nested within text buttons but should be the exception, doing so is primarily done to display state.
Grouped icon buttons can display a selected button. The selected icon will be highlighted and disabled to
signal it is the present state.
Sizing
Buttons have a minimum width of 70px.
Buttons will grow to fit the size of button text.
Buttons will not adjust their width as screen size becomes smaller.
States
Hover: Highlights the button and changes the cursor to indicate the button can be clicked. Displays a title
attribute if it is an icon button.
Disabled: Button becomes opaque in color and hovering does not change its appearance. Indicates an unusable
button.
Focus: The button has been selected through tab support. Creates a outline around the button.
Common Patterns
Buttons convey interactivity to a user with action, navigation, or closure elements.
Buttons may effect progression by being inactive until other conditions are met.
Associated buttons should be grouped together, such as back and next navigation or available page views.
Nesting
Nestable Components
.ias-icon
anchors <a>
Nesting Buttons in other Components
Buttons can be nested into most other elements. If an elements goal can be accomplished by nesting a button inside,
it's likely that it can be done. The documentation will detail instances where buttons are implemented in other
components.
Buttons should never be nested within other buttons.


HDFS rolling upgrade allows upgrading individual HDFS daemons. For examples, the datanodes can be upgraded independent of the namenodes. A namenode can be upgraded independent of the other namenodes. The namenodes can be upgraded independent of datanodes and journal nodes.
In Hadoop v2, HDFS supports highly-available (HA) namenode services and wire compatibility. These two capabilities make it feasible to upgrade HDFS without incurring HDFS downtime. In order to upgrade a HDFS cluster without downtime, the cluster must be setup with HA.
If there is any new feature which is enabled in new software release, may not work with old software release after upgrade. In such cases upgrade should be done by following steps.
Note that rolling upgrade is supported only from Hadoop-2.4.0 onwards.
In an HA cluster, there are two or more NameNodes (NNs), many DataNodes (DNs), a few JournalNodes (JNs) and a few ZooKeeperNodes (ZKNs). JNs is relatively stable and does not require upgrade when upgrading HDFS in most of the cases. In the rolling upgrade procedure described here, only NNs and DNs are considered but JNs and ZKNs are not. Upgrading JNs and ZKNs may incur cluster downtime.
Suppose there are two namenodes NN1 and NN2, where NN1 and NN2 are respectively in active and standby states. The following are the steps for upgrading an HA cluster:
In a federated cluster, there are multiple namespaces and a pair of active and standby NNs for each namespace. The procedure for upgrading a federated cluster is similar to upgrading a non-federated cluster except that Step 1 and Step 4 are performed on each namespace and Step 2 is performed on each pair of active and standby NNs, i.e.
For non-HA clusters, it is impossible to upgrade HDFS without downtime since it requires restarting the namenodes. However, datanodes can still be upgraded in a rolling manner.
In a non-HA cluster, there are a NameNode (NN), a SecondaryNameNode (SNN) and many DataNodes (DNs). The procedure for upgrading a non-HA cluster is similar to upgrading an HA cluster except that Step 2 “Upgrade Active and Standby NNs” is changed to below:
When the upgraded release is undesirable or, in some unlikely case, the upgrade fails (due to bugs in the newer release), administrators may choose to downgrade HDFS back to the pre-upgrade release, or rollback HDFS to the pre-upgrade release and the pre-upgrade state.
Note that downgrade can be done in a rolling fashion but rollback cannot. Rollback requires cluster downtime.
Note also that downgrade and rollback are possible only after a rolling upgrade is started and before the upgrade is terminated. An upgrade can be terminated by either finalize, downgrade or rollback. Therefore, it may not be possible to perform rollback after finalize or downgrade, or to perform downgrade after finalize.
Downgrade restores the software back to the pre-upgrade release and preserves the user data. Suppose time T is the rolling upgrade start time and the upgrade is terminated by downgrade. Then, the files created before or after T remain available in HDFS. The files deleted before or after T remain deleted in HDFS.
A newer release is downgradable to the pre-upgrade release only if both the namenode layout version and the datanode layout version are not changed between these two releases.
In an HA cluster, when a rolling upgrade from an old software release to a new software release is in progress, it is possible to downgrade, in a rolling fashion, the upgraded machines back to the old software release. Same as before, suppose NN1 and NN2 are respectively in active and standby states. Below are the steps for rolling downgrade:
Note that the datanodes must be downgraded before downgrading the namenodes since protocols may be changed in a backward compatible manner but not forward compatible, i.e. old datanodes can talk to the new namenodes but not vice versa.
Administrator may choose to first shutdown the cluster and then downgrade it. The following are the steps:
Rollback restores the software back to the pre-upgrade release but also reverts the user data back to the pre-upgrade state. Suppose time T is the rolling upgrade start time and the upgrade is terminated by rollback. The files created before T remain available in HDFS but the files created after T become unavailable. The files deleted before T remain deleted in HDFS but the files deleted after T are restored.
Rollback from a newer release to the pre-upgrade release is always supported. However, it cannot be done in a rolling fashion. It requires cluster downtime. Suppose NN1 and NN2 are respectively in active and standby states. Below are the steps for rollback:
hdfs dfsadmin -rollingUpgrade <query|prepare|finalize>
Execute a rolling upgrade action.
Options:
| query | Query the current rolling upgrade status. |
| prepare | Prepare a new rolling upgrade. |
| finalize | Finalize the current rolling upgrade. |
hdfs dfsadmin -getDatanodeInfo <DATANODE_HOST:IPC_PORT>
Get the information about the given datanode. This command can be used for checking if a datanode is alive like the Unix ping command.
hdfs dfsadmin -shutdownDatanode <DATANODE_HOST:IPC_PORT> [upgrade]
Submit a shutdown request for the given datanode. If the optional upgrade argument is specified, clients accessing the datanode will be advised to wait for it to restart and the fast start-up mode will be enabled. When the restart does not happen in time, clients will timeout and ignore the datanode. In such case, the fast start-up mode will also be disabled.
Note that the command does not wait for the datanode shutdown to complete. The “dfsadmin -getDatanodeInfo” command can be used for checking if the datanode shutdown is completed.
hdfs namenode -rollingUpgrade <downgrade|rollback|started>
When a rolling upgrade is in progress, the -rollingUpgrade namenode startup option is used to specify various rolling upgrade options.
Options:
| downgrade | Restores the namenode back to the pre-upgrade release and preserves the user data. |
| rollback | Restores the namenode back to the pre-upgrade release but also reverts the user data back to the pre-upgrade state. |
| started | Specifies a rolling upgrade already started so that the namenode should allow image directories with different layout versions during startup. |


Throw a naked @font-face block on your page and hope for the best.
Add a new font-display: swap descriptor to your @font-face block to opt-in to FOUT on browsers that support it. Optionally, font-display: fallback or font-display: optional can be used if you consider web fonts to be unnecessary to the design.
Add <link rel="preload" href="font.woff2" as="font" type="font/woff2" crossorigin> to fetch your font sooner. Pairs nicely with an unceremonious @font-face block and feel free to also throw in the font-display descriptor as well for bonus points.
There are typically two kinds of inlining covered by this method: in a blocking <link rel="stylesheet"> request or in a <style> element in the server rendered markup
Use a tool like loadCSS to fetch a stylesheet with all of the fonts embedded as Data URIs
It isn’t technically a font loading strategy. But it’s better than using web fonts incorrectly.


On this website you will find about what I am making.
So let me hear. What are you searching for?
Description
My name is Hamun. Since I was a child I had a big passion for learning. I love school, but life made me realize that you can not only work hard to achive something. You have to adapt yourself to everything. That is why I wanted to focus on many aspects of programming. Both front-end and back-end. I learned HTML and CSS at the age of 12. I moved on to learn .Net and ASP.NET in C#. As a hobby I made youtube videoes since 2007. I made tutorials, guides, vlogs, etc. I wanted to help people with my knowledge, and hopefully be better in learning on the way. I also made Anime Music Videoes (AMV), where I combine Japanense Cartoons with music. Since then I moved on to my new channel where I make danish videoes, with the purpose of helping other people with anything I know.
The present:
I have been studying for computer science (Datamatiker in danish) for 3 semesters. I have made many systems and applications, to know how they are made now. I can both work back-end and front-end now. Click the "Portfolio" menu to see what I have made. I am a teaching assistent for "matematik centeret" in Aalborg. I help people with mathematical problems and learn them how to solve them. I have been a part of many projects and one of the most noticeable is the Game Jam I have been in where we made a Game about Satans Unicorn Hero.
The future:
One of my biggest dreams is to learn everthing about computers. Both Hardware and software. Some people say that "A jack of all trades, master of none". Therefore I will solely focus on the front-end. But I have many knowledge about back-end that I can around many workplaces. I am mosly also an expert in errorhandling and faulty code repairing. I live to learn. I will never say no to learning something and have motivation for learning something new each day.
The languages and frameworks I am working on are the following (hover over them):
Animecons A list of anime conventions in Denmark
Super Shift-Shaper Ludum Dare Game Jam 35
Basic Comment Site A basic site utilizing bootstrap and jquery
A simple soundboard. Press button 6 to shut all sounds. Made with action script 3 Get the source code here: Main.as EmbeddedSoundClass.as
biobooking Our third semester project. A cinema booking system.
Made a game at Game Jam #CreateJam2015 with other people Midly Retarded Unicorn From Hell
Run, frankensteins monster run! Ludum Dare Game Jam 33


[gecode-users] Profiling examples using the Common Lisp Gecode wrapper
Guido Tack
tack at ps.uni-sb.de
Thu Feb 21 16:38:24 CET 2008
Gustavo Gutierrez wrote:
> On Thu, Feb 21, 2008 at 2:52 AM, Mauricio Toro <mauriciotorob at gmail.com
> > wrote:
>> Hello,
>>
>> I am doing some profiling to gecode examples under the Common Lisp
>> wrapper.
>> For the examples alpha and eq20 it takes around 5 to 10 times more
>> to be
>> executed.
>> But, when running queens with size = 30 it takes around 100 times
>> more time
>> to be executed.
>>
>> What could be happening?
>
> That could depend on many things. Maybe you are introducing some
> overhead by the layer you are developing between CL and gecode, that
> is not for free. It may also depends on the CL implementation. My
> pinion is to see how much overhead occur when you take the same
> problem and change the size, queens is a good example for this. Try
> Queens with n=10, n=15, etc. and try to devise some constant relation
> between gecode and CL results. That constant relation can give you an
> impression f the overhead introduced. If that relation is not constant
> maybe there is something wrong with your implementation.
Not necessarily. If search is done within Gecode, the overhead is
entirely in the problem setup. If, e.g., creating an IntVar through
the wrapper is expensive, then scaling up the problem size will result
in a bigger and bigger gap between native and wrapped solver. If the
wrapper does a lot of work in order to extract the values of the
variables each time a solution is found, this may also be a
significant factor.
One thing to watch out for is that the wrapped solver actually
executes exactly the same problems. E.g., are the IntConLevel
arguments translated properly? Are the c_d and a_d arguments for the
search engines the same?
Another thing is memory management. How often are things copied
around when passing them through the interface? Are spaces freed
early, or are they kept alive for too long (which might cause trashing)?
Then, finally, how do you measure the run time? Our strategy is to
run each problem a certain, problem-specific number of iterations, and
then divide the overall runtime by the number of iterations to get the
time for a single run. That way you make sure that the resolution of
the timer is actually accurate enough for your measurements. In
addition, we do these measurements for a number of samples, so that we
can compare the coefficient of deviation, to make sure that we used
enough iterations.
If all else fails, you'll have to run a version of your wrapped solver
that was configured with profiling turned on (-pg switch for gcc), and
then use gprof to find bottlenecks.
> Just a hint, be careful you built gecode without debugging support.
That's a very valuable hint, we've gone into that trap many times
ourselves ;-)
Cheers,
Guido
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 2436 bytes
Desc: not available
URL: <http://www.ps.uni-sb.de/pipermail/users/attachments/20080221/f9c0bd27/attachment.bin>
More information about the gecode-users
mailing list


24 years old, i have been studied software engineering at Hashmite University. I plan to be a
professional full stack web developer.
RAHAF AL-JAZZAZI
25 years old, I'm holding a bachelor degree in Electrical and Communication Engineering from German
Jordanian University. I'm planning to be a good web developer.
DOA'A DABAN
28 years old. I've been graduated from the University of Jordan with Bachelor's degree in Computer
engineering, I have an experience in Network Engineering and security. And now one of my goals is to
develop my tech skills and become a professional software developer.
MOHAMMAD HARB
28 years old. Holding a bachelor's degree in industrial engineering from Jordan university of
science & technology. Passionate about environment, logistics, and technology. Being well-equipped
in these three majors is reason behind learning programming.


Result object returned from Apollo Client useMutation hook. Contains mutation result, loading and error status and more, see useMutation documentation for details.
Observable state
Execute function returned from Apollo Client useMutation hook. A function that executes the EntityListHookOptions.deleteMutation.
Execute function returned from Apollo Client useLazyQuery hook. A function that executes the EntityListHookOptions.listQuery.
A callback that closes the current screen and sets its parent as active screen.
A callback that will be executed when user clicks the Create button.
A callback that will be executed when user clicks the Delete button.
A callback that will be executed when user clicks the Edit button.
A callback that will be executed when filters are changed.
A callback that will be executed when user changes the pagination.
A callback that will be executed when entity instances are selected or deselected.
A callback that will be executed when sorting is changed.
react-intl
intl object.
Entity instances that will be displayed by the list component.
When EntityListHookOptions.entityList is not used, items will contain
the entity instances retrived from backend upon execution of EntityListHookOptions.listQuery
(it is also obtainable as listQueryResult.data.${entityName}List
).
When EntityListHookOptions.entityList is used, items will contain a relevant portion of EntityListHookOptions.entityList depending on pagination / sorting / filtering.
Result object returned from Apollo Client useLazyQuery hook. Contains query result, loading and error status and more, see useLazyQuery documentation for details.
Used when the entity has relation (Association and/or Composition) attributes. A map between child entity names and arrays of possible values.
Generated using TypeDoc
Total number of entity instances.
When EntityListHookOptions.entityList is not used, count will contain the value retrived from backend upon execution of EntityListHookOptions.listQuery (it is also obtainable as listQueryResult
.data.${entityName}Count
).When EntityListHookOptions.entityList is used, count will contain the total number of elements in EntityListHookOptions.entityList.


DiscreteCrypt.js
A project for simple & secure data transmission, based on the DiscreteCrypt protocol (an alternative to PGP).
What's it do?
This library makes it quite easy to implement end-to-end encryption both in the web browser and in Node.js, and provides extra utilities to make it convenient to encrypt symmetrically as well.
The library out of the box is tuned heavily against a variety of attacks, implementing scrypt for key derivation, a strong authenticated encryption scheme using HMAC-SHA256, and AES-256 in CTR mode for encryption. It uses provably secure 3072 Bit Discrete Log Parameters generated from nspdh.
A neat feature of this implementation is that a password can be used to quickly & securely derive a private key (via scrypt), which allows for convenient public-key encryption. The code makes heavy use of JavaScript Promises.
You may alternatively generate keys ephemerally, and encrypt the generated "contact" symmetrically (like traditional cryptosystems).
You may also create signatures (similar to GPG/PGP).
How do I use it?
In DiscreteCrypt, we refer to "public keys" as "contacts," and they are generated asynchronously as promises.
The create method returns a promise with a few helper functions tossed onto it, to make it slightly more convenient to use the library.
All of the helper functions return a promise that execute the generated contact's function once it completes.
Sending and Opening Data
const Contact = DiscreteCrypt.Contact
// generates the contact ephemerally.
let me = Contact.create()
// the Contact.create().export() would happen on someone else's computer
let you = Contact.import(Contact.create().export())
// any JSON-serializable object can be passed into the "send" function.
me.send(you, 'Hello, World!').then(encrypted =>
{
// code to send encrypted data to other user
})
Then to open the data,
you.open(encrypted).then(data =>
{
console.log(data) // Hello, World!
}).catch(err =>
{
// the decryption didn't occur correctly.
console.error(err)
})
Creating a Reusable Contact
To create a re-usable contact for public-key cryptography (one you can import at a later date), do the following:
1 - Create the Contact
// you can also pass in an Buffer or Uint8-like object for the password.
let me = Contact.create('<SuperSecurePassword>')
// creates the public contact, store this somewhere
let pub = me.export()
2 - Import the Public Contact & Compute (To turn it back into a private contact)
let me = Contact.import(pub).compute('<SuperSecurePassword>')
And that's it!
Symmetrically Encrypting Data
Sometimes you'll want to encrypt data symmetrically. These methods use a slight reduction of the DiscreteCrypt protocol (removing the asymmetric steps) that allow you to securely store a payload.
Out of the box these methods perform data authenticity checks, and the necessary key stretching to keep your data safe.
// key can be a string, buffer or uint8array-like structure.
DiscreteCrypt.Symmetric.encrypt(key, data).then(encrypted =>
{
// store encrypted somewhere
// ... and then later on
DiscreteCrypt.Symmetric.decrypt(key, encrypted).then(decrypted =>
{
console.log(decrypted)
})
})
Documentation
Here is where you can view the rest of the documentation
To Build (for browser)
Run the following commands:
npm i
npm run build
This will produce the necessary output.
Dependencies
The following libraries were used:
Notes
This library can leverage the new proposal for native BigInts in JavaScript, achieving far greater performance.
At the time of writing, Chrome is the only browser with support for this proposal.


Exodus 10:7
And Pharaoh's servants said unto him, How long shall this man be a snare unto us? let the men go, that they may serve the LORD their God: knowest thou not yet that Egypt is destroyed?


Created by Eugene Mihailenco / @randomize Typed with NeoVim in Dvorak
Standard submodule to include to each project
Helper scripts, build support, reusable stuff
Just add as submodule
git submodule add \
git@gitlab.bullytech.local:internal/bully-framework.git \
Assets/Bully.Core/BullyFramework
Create branch xyzw-improvements to contribute
Get access to internal group, make sure path matches, SSH clone master and get lfs error, clone develop, write this code:
and get some random warnings from it :)
<F3>, also has selection history
<F4>, batch apply, diagnose dirty
Wraps Debug.Log and shields, Conditionals
Because why not
Tools that check invariants
UI helpers, batch mark, some deprecated and wip stuff
EasyPrefs, FTUEManager, BullyGradient, DebugScreen, CircleOutline, StupidImage, New UI system, InternetChecker, Extension methods, Content system, asset string, animators, LetterSpacing, CanvasRendererEditor, project structure setup, templates, bullylib, Hierachy\Stats view, Trasform override...
UI intensive, 2D, Animations rich
Pella, CDM, Lanterns
Screens, Panels, reusable UI elements - actually MVC
Screen - Controller, specialized, thin, glues things and provides simple logic, prefab root
Manager - Controller, reusable, UI agnostic, heavy logic, prefab root can have settings
Panel - big UI set of elements seen together - can have interface to raise level of abstraction, sometimes reusable, prefab root
Item - UI related model data
In Color - nonlinear
Editor time yaml
Really just matrix
CDM failed badly at that point
Color did better, but still has issues
Trigger initiates
Request is sent
Wait for confirmation
Callbacks for each phase
Most common pattern with most bad reputation
Merging into one root
Controlled instantiation
Highly controversial
Most C# impl use reflexion
In simple case just have derived behavior with vars
SO - great but loads each internal object
Split description (Item) and date (Content)
Items are used were selection choise made
Once it made, data is loaded
Cannot reference directly
Need be string id
But need an interface
Painting - done with SetPixels, minimum reallocations, but cpu based
Paint bucket - gpu based, selection shader, sampling technique
Vuforia capturing
Code Generation
Large prefabization - no conflicts
Assertions
Subscreen system
All panels are in the scene, init hack
Splitting/merging screens
Hard to extend with generated staff
Setup of content wasnt automated
Look at Gitlab internal group


We are pleased to
announce the release of PlasmoDB 9.0
This is a major release of PlasmoDB which constitutes a complete
rebuild of the database. This means that all genomes, data and
analysis were redone and improved. In addition, many of the
expression searches were updated to enable you to perform more accurate
searches. We encourage you to explore these searches and as usual
we look forward to hearing from you about how to further improve
them.
Since this is a major update, we are keeping the old version (
PlasmoDB 8.2)
available so you can access your old queries and previous analysis if
needed.
New Data:


Click Subscribe and you will receive a confrmation email that you are subscribed.
Click Un-Subscribe and you will receive a confrmation email that you are Un-subscribed.


This work is put on here to assist anyone working with CakePHP projects and needing a wrapper class for the Google OAuth 2.0 library. It is provided AS-IS.
There are cases when it is best to use a plugin in CakePHP, and other cases where it works out to use a component. Depending on your preferences, you could swing in either direction - this component provides functionality that some might see better fit for a plugin - and there might be a plugin version in the future. For now - quick and dirty!
This component requires the following libraries:
CakePHP - Your application should be based on the CakePHP Framework. You can download the framework code at http://cakephp.org/.
A working knowledge of coding with CakePHP. The CakePHP documentation can be found here: http://book.cakephp.org/2.0/en/index.html
A Google Console Project with OAuth credentials. To setup your google console project, visit http://cloud.google.com.
The Google_Oauth2Service class, available in the Google API Client Library for PHP library
The Google_Client class, also available in the Google API Client Library for PHP library
Copy the component to your /<Application Root>/app/Controller/Component/ directory, or any other directory bootstrapped to search for components.
Replace the paths to both the Google_Oauth2Service and Google_Client class files with the correct path on your server - e.g. /var/www/libraries/google/google-api-client/src/contrib/<ClassFile> assuming that is where you have the Google API library installed on your server
That's it! You're ready to start using the component within your CakePHP controllers.
Include the component name in your $components array
Next, use the connect() method to initialize the component when you are ready to attempt authentication against Google ID. See the method reference below for accepted arguments.
You can load the component on the fly in your CakePHP application using the following syntax:
$this->GoogleAuth = $this->Components->load('GoogleOauth2');
connect($controller, $config, $scopes, $api_mode)
This method is most likey be well used within your project. It initializes your authentication attempt againt the user's Google ID, and accepts the following arguments:
controller: Use the $this variable to pass your controller into the component for controller-level callbacks
config: This is an associative array with the following parameters:
client_id: Your Google API client ID
client_secret: Your Google API secret
redirect_url: Your success redirect url once the authentication action is completed. This url MUST be included in the list of accepted callbacks in your google console
scopes: This is an array of Google API scopes. These scopes are in url format. A typical array of scopes will look like this:
$scopes = array('https://www.googleapis.com/auth/userinfo.email', 'https://www.googleapis.com/auth/userinfo.profile', 'https://www.googleapis.com/auth/drive', 'https://www.googleapis.com/auth/drive.file');The email and profile scopes are required for this component.
api_mode: This is a boolean variable. If set to true, the component will return an associative array with a success index that indicates whether the auth attempt was successful or not. This will be useful if you are authenticating via an API and would like to parse the associate array to a JSON string (for instance) instead of the auto-redirect action.
isReady()
This returns true or false after a connect() call for a success or failure to authenticate.
getAuthUrl()
Returns the authentication Url against Google's OAuth API. Is useful if you are handling redirection manually. In this case, the api_mode variable of your connect() function can come in handy to turn off the auto-redirect when authentication is needed.
getUser()
Will return an associate array of the session user data.
getUserId()
Will return the Google User ID from the session user array.
cleanUser()
Useful for logging out. Call in your logout() controller function to delete the google user data from the session.
getTokens()
Returns a JSON string of the tokens returned on successful authentication and stored in the session array.
Reach out @ https://twitter.com/websiteinapage. I'll do my best to respond in a timely fasion.


{border-style px;} #ffffff;} pandemic flu Tamiflu drugs countries virus masks drug px; says {font-family font-size Health double; experts workers Nature antiviral border-color border-width given patients solid; used {font-style {font-weight Hayden Roche available bold countries, courier; drugs. em; governments health-care influenza just neuraminidase pandemic. pt;} spread use


Filtering the WordPress Custom Logo
WordPress 4.5 added the custom logo feature. It’s pretty nice, and where possible I try to use native WordPress functionality, but the default markup returned by get_custom_logo()
isn’t always what I’m looking for. Fortunately there’s a filter included just for this.
I build my sites with Sage, most of them using Bootstrap for the front end. Here’s a little function I wrote to leverage the native Custom Logo function, and give me back the markup I want.
The Goal
So, here’s what I’m trying to achieve. The default custom logo gives us markup that looks like this -

Whereas I’m generally lookng for something like this -

Some Site

I like to include the site title regardless, and just hide it with a screen-reader friendly class when a logo is present. I also like to bake the conditional logic right into my function as a way of keeping my templates a little cleaner. Every little bit helps!
The Stuff
For sarters, the first thing to do is enable custom-logo support. I use Sage, and in versions < 9 I’ll generally drop it in lib/setup.php
// Enable custom logo support
// https://codex.wordpress.org/Theme_Logo
add_theme_support( 'custom-logo' );
And here’s the function I use to filter the markup.
https://gist.github.com/smutek/d0daef2e46db7521661db48214762c0f#file-brand-php
Everything is commented, but here’s the run-down.
- The function is filtering the custom logo function, so it takes that html as its input.
- The first thing I do is grab the site name, since I like to always include it with my output.
- First I check to see if we’re on the home page - if so I’ll wrap the site title in an H1, otherwise I’ll wrap it in a paragraph tag since those pages will use the H1’s for their own titles. I’ll stash that in a variable called
$title
. - Now that I’ve got the site title squared away I set up a variable containing the link to the home page,
$home
and a variable to hold my css classes,$class
. - Next I set up my
$content
variable, which serves as my fallback, and check to see if there’s a custom logo.
(I know, I’m kind of variable happy - Here’s why I stash the site title in a variable called $content
. $home
, $title
and $class
remain constant, but $content
will get updated if a custom logo is present, otherwise it just gets passed along to the output as is. Make sense?)
- If
has_custom_logo()
returns true, I just mirror what’s in the native function, with my own small tweaks. I update the content to include the src to the logo file, then append the title variable, wrapped in a span tag and hidden with Bootstraps sr-only class. Otherwise, the unaltered$content
is passed along. - Finally, the markup is put together using sprintf, again, mirroring the native function, and returned to the template file.
Output
Since we’re just filtering the existing custom logo function nothing special is required to use it. In a typical Sage 8 site, in my header.php
template, I’ll replace:
<a class="navbar-brand" href="<?= esc_url(home_url('/')); ?>"><?php bloginfo('name'); ?>
With:
<?php the_custom_logo; ?>
That’s it!
The resulting markup looks something like this:

Local WordPress Dev

And the fallback, without a logo added:

Local WordPress Dev

That’s it! A quick, nice fallback that leverages various native WordPress super powers. :) Pretty handy.
How do you work with logos in WordPress?
Resources
- Custom Logo (codex)
- Custom Logo (trac)
- Sage
- Bootstrap
- GitHub Gist


In virtual mode, the Tree Grid Custom Element is created on demand. In this case, child records are created and initialized when the parent record is expanded.


|
hcash
2.0.0
hcash
|
#include <fc/variant.hpp>
#include <fc/reflect/reflect.hpp>
Go to the source code of this file.
Classes | |
| struct | hsrcore::blockchain::MiningInfo |
| struct | hsrcore::blockchain::MiningWorkPackage |
| struct | hsrcore::blockchain::MiningDifficulty |
| struct | hsrcore::blockchain::StakingInfo |
Namespaces | |
| hsrcore | |
| hsrcore::blockchain | |


L-R: George Lavett , Gilbert Pajole, Alex-ander Soma—PNGAHWA General Secretary, Robin Baloiloi, Natasha Utubasi, Mrs Helen Saleu — Industrial Registrar , Natasha Momo, Patricia Kapigeno, Ilikis Puipui—Deputy Industrial registrar, Donald Vaso.
Memorandum of Agreement (MOA)
Since its inception, the Association has operated under the guidance of an interim executive within the corridors of Port Moresby General Hospital (PMGH) and have so far negotiated an industrial
Memorandum of Agreement (MOA) being the 25th August 2010 Awards.
This MOA remains legally binding to-date and is currently under review by the new executive which were duly elected in December 2017.
Under the guidance of the new Executive Committee, PNGAHWA has taken on a challenging new look approach through a series of consultative meetings with various but experienced unions in the industry, the Industrial Relations Section of the National Department of Health (NDOH) and the Office of the Industrial Registrar in order to set its priorities and pave a pathway forward for the union.


Under the Disability Discrimination Act 1992, goods, services and information provided by any business have to be provided in a non-discriminatory accessible manner.
This website has been adapted to meet the legal standard established in respect of this requirement.
This site is currently compliant to Level A of the Web Content Accessibility Guidelines version 2.0 (WCAG2.0) standard.
WCAG 2.0 is a technical standard developed under the Web Accessibility Initiative of the World Wide Web Consortium (W3C).
Contact me if any of the information on the website is unavaliable.


This privacy policy governs your use of the software application Power Hour (“Application”) for mobile devices that was created by Jordon de Hoog, HoogIT. The Application is a simple timer based drinking game
User Provided Information
If enabled by the user the Application can record a short audio clip using the built-in microphone. This information is not saved in any permanent way, and never leaves the device. It only exists for as long as the current game is active.
Automatically Collected Information
In addition, the Application may collect certain information automatically, including, but not limited to, the type of mobile device you use, your mobile devices unique device ID, the IP address of your mobile device, your mobile operating system, the type of mobile Internet browsers you use, and information about the way you use the Application. For the purposes of bug reporting and analytics.
This Application does not collect precise information about the location of your mobile device.
Do third parties see and/or have access to information obtained by the Application?
Only aggregated, anonymized data is periodically transmitted to external services to help us improve the Application and our service.
You can stop all collection of information by the Application easily by uninstalling the Application. You may use the standard uninstall processes as may be available as part of your mobile device or via the mobile application marketplace or network.
We will retain User Provided data for as long as you use the Application and for a reasonable time thereafter. We will retain Automatically Collected information for up to 24 months and thereafter may store it in aggregate.
We do not use the Application to knowingly solicit data from or market to children under the l8.
We are concerned about safeguarding the confidentiality of your information. We provide physical, electronic, and procedural safeguards to protect information we process and maintain. For example, we limit access to this information to authorized employees and contractors who need to know that information in order to operate, develop or improve our Application. Please be aware that, although we endeavor provide reasonable security for information we process and maintain, no security system can prevent all potential security breaches.
This Privacy Policy may be updated from time to time for any reason. We will notify you of any changes to our Privacy Policy by posting the new Privacy Policy here. You are advised to consult this Privacy Policy regularly for any changes, as continued use is deemed approval of all changes.
By using the Application, you are consenting to our processing of your information as set forth in this Privacy Policy now and as amended by us. "Processing,” means using cookies on a computer/hand held device or using or touching information in any way, including, but not limited to, collecting, storing, deleting, using, combining and disclosing information, all of which activities will take place in the United States. If you reside outside the United States your information will be transferred, processed and stored there under United States privacy standards.
If you have any questions regarding privacy while using the Application, or have questions about our practices, please contact us via email at contact@powerhourapp.ca.


Hi,
I just discovered here that the "new" bargraph visualization can pull out daily kWh from a "total kWh" feed. In fact, you can choose any interval, but it can't show monthly/yearly kWh as the number of day per month/year is variable.
So, I made some modifications to be able to pull out the exact monthly and yearly kWh.
When configuring the bar graph, enter a interval code : "d" for daily kWh, "m" for monthly kWh and "y" for yearly kWh. It is still needed to set the "delta" parameter to "1". Entering an interval in seconds is still possible.
This view (daily/monthly/yearly) can also be modified dynamically by clicking on the kWh/D, kWh/M, kWh/Y buttons. Like for the zoom visualization, you can zoom-in/zoom-out by clicking on/outside a bar.
But, there is still a bug that need to be fixed. When calculating the daily kWh, it returns the kwh elapsed in 24h starting from an erratic time (20:13:30 in my example). It's the same erratic time for all days. This time seems depend on the feed itself. THis comes from the return of the ajax request.
As a consequence, one can see on the graph (see attached), that there is a shift between the day on the x-axis and the bar of the corresponding day. According to me, the ajax request should return the kwh elapsed in 24h from midnight to midnight. This will align the bar on the x-axis.
Please find attached in a zip the two files I modified.
Eric
Re: Bar graph - improvements
Thanks Eric, that's brilliant, I was wondering where to start with getting the exact month/year data. Il take a look at the code.
Re: Bar graph - improvements
Hi,
I didn't put any comments ... but it's quite simple. How it works :
When the interval code is 'd' or 'm' or 'y', the interval in seconds is set to 84600 which correspond to 24h. Then, monthly/yearly kWh are just sums of the daily values of the corresponding month/year.
If you can, have a look on the problem explained above. (ajax request)
Eric
Re: Bar graph - improvements
Hi guys!
Are this changes pushed to github? It seems that they are not added to the emoncms repository, but perhaps I haven't look at it correctly. Anyway, I have copied the two files manually to my emoncms installation (Ubuntu server running in a x86 box) and I have restarted my box, but I'm still seeing the same problem that Eric comments in his first post. Bars are not aligned to the corresponding day and if you pass the mouse over the bar, the date displayed corresponds to the previous day.
Eric, did I misunderstand your post or do your modified files should also fix the shifted bars problem?
Trystan, do you know how to fix the shifted bars problem? :(
Many thanks for your help and I'm looking forward to hearing from you, I wish I could solve this problem as soon as possible.
Best regards,
Aitor
Re: Bar graph - improvements
Hi,
I didn't push my modifications to github (I need to learn how to do it) but one can just overwrite the original file as you did (.../emoncms/Modules/vis/visualisations/bargraph.php and ../emoncms/Modules/dashboard/Views/js/widgets/vis/vis_render.js). No need to restart.
My modified files do NOT fix the shifted bars problem. It only brings the daily/montly/yealy view. The bars are shifted because the kwh/d are calculated from 18:00 to 18:00 the day after (as an example) instead of from 00:00 to 00:00 the day after. If you want to align the bars, you can just uncomment lines 266 to 268 in bargraph.php. This will move the bars on the x-axis BUT the calculation of the kWh/d will still be wrong (from 18:00 to 18:00).
I don't know how to fix that bug which seems to be related to the ajax request.
Eric
Re: Bar graph - improvements
Hi Eric!
Many thanks for your answer and your help, I really appreciate that you have answered my comment!
Let's see then if Trystan has enough time to fix the ajax problem and we can have correctly aligned bars ;)
Thanks again for your help and best regards,
Aitor
Re: Bar graph - improvements
Sounds great! it would permit to have dailly, weekly, monthly consumption in one graph which I never succeed to do...
Re: Bar graph - improvements
Hello Eric, I've added in your changes above to the bargraph visualisation, these changes are now in the master branch of emoncms:
https://github.com/emoncms/emoncms/commit/0a50c63808e94e60b756641a04d574...
https://github.com/emoncms/emoncms/commit/fdcb0a55551684368e17bda17426a3...
Looking into the AJAX issue next
Re: Bar graph - improvements
I think the error Im seeing is not an arbitrary time offset but that the daily values when the delta flag is applied are labeled as one day ahead so I see the 4th of October as 20kWh where that is actually the consumption for the 3rd..
The bargraph vis makes use of the browser's timezone setting so that 20kWh is correct for british summer time for me.
Re: Bar graph - improvements
Hi,
The time offset is different for each of my feeds (PHPTimestore) : 22:27:00, 17:58:00, 18:08:00, ...
I read that time values on my emoncms server (modifying the bargraph php file).
That's is also the case on my emoncms.org acount.
Eric
Re: Bar graph - improvements
Hello Eric, Ah that might explain it, the issue might be PHPTimestore and I've been testing on PHPFina/Fiwa. I will try and look into why that is.
Re: Bar graph - improvements
Hi Trystan!
Any update on this issue? ;)
Many thanks for all your hard work!


🖖 Hi!
I’m @cdinu, co-founder of Hypersay, a platform for interactive presentations that massively increases audience engagement. Let's get in touch if you want to learn more about it.
Hypersay is the result of a long evolution that started in 2012 in Bucharest and which continues since 2015 in London.
I started my entrepreneurial life early. In a past life I was an eager corporate bee, in companies such as Vodafone and IBM. I liked it a lot, but at some point I decided that I prefer a different lifestyle. I am grateful for everything I learnt and I am what I am today because of, not despite of my corporate experience.
I love to share my findings, skills and knowledge, and this is why I have been constantly involved in training and education. Since 2003 I’ve conducted dozens of training sessions with thousands of participants in corporate, university or social spaces around topics such as management, entrepreneurship and computers.
I am always striving to learn new things, not only in management and technology. About one year ago, I decided to to learn to play an instrument. I am member of a Recorder Group and I am also slowly learning how to play the piano.
Despite being fairly pragmatic, I am still quite an idealist, actively assuming I can change the world.
I write code, Star Trek ranks high in my preferences, and I get Sheldon's science jokes, but i am a friendly and easygoing geek: science and computers are my thing, but I enjoy talking about all things: language, history, literature - and of course cycling.
Thanks for stopping by and let’s chat! Find me on Facebook, LinkedIn or email, first and last name at gmail. Phone number hidden in credits.


Module main
Runs the Phyzzle platformer example app.
The platformer example app will be extended and more example apps will be added in future releases.
Functions
| love.run () | An improved love.run implemenation which uses a fixed time step game update loop. |
Functions
- love.run ()
-
An improved love.run implemenation which uses a fixed time step game update loop.
Accomodates old hardware or busy games and creates deterministic simulations.
Ticks 60 times a seconds on each tick:
- Accumulates delta time.
- Updates while accumulated time is greater than delta time.
- Only draw if updated.


[ all classes ]
[ it.polimi.ingsw.model ]
Coverage Summary for Class: Game (it.polimi.ingsw.model)
| Class | Method, % | Line, % |
|---|---|---|
| Game | 100% (34/ 34) | 97,3% (107/ 110) |
| Game$1 | 100% (1/ 1) | 100% (1/ 1) |
| total | 100% (35/ 35) | 97,3% (108/ 111) |
1 package it.polimi.ingsw.model;
2
3 import it.polimi.ingsw.model.board.Board;
4 import it.polimi.ingsw.model.board.Position;
5 import it.polimi.ingsw.model.board.ReducedSpace;
6 import it.polimi.ingsw.model.board.Space;
7 import it.polimi.ingsw.model.enumerations.MoveType;
8 import it.polimi.ingsw.model.enumerations.TargetType;
9 import it.polimi.ingsw.model.player.Player;
10 import it.polimi.ingsw.model.player.Worker;
11 import it.polimi.ingsw.network.message.BoardMessage;
12 import it.polimi.ingsw.network.message.LobbyMessage;
13 import it.polimi.ingsw.observer.Observable;
14 import it.polimi.ingsw.utils.GodParser;
15
16 import java.io.Serializable;
17 import java.util.ArrayList;
18 import java.util.List;
19 import java.util.stream.Collectors;
20
21 /**
22 * This Class represents the whole Game.
23 * It manages the players and their workers, the gods and the board used during a match.
24 */
25 public class Game extends Observable implements Serializable {
26
27 private static final long serialVersionUID =<PHONE_NUMBER>677036856L;
28 private static Game instance;
29
30 public static final int MAX_PLAYERS = 3;
31 public static final String SERVER_NICKNAME = "server";
32
33 private final Board board;
34 private List<Player> players;
35 private List<God> gods;
36 private int chosenPlayersNumber;
37
38 /**
39 * Default constructor.
40 */
41 private Game() {
42 this.board = new Board();
43 this.players = new ArrayList<>();
44 this.gods = GodParser.parseGods("gods.xml");
45 }
46
47 /**
48 * @return the singleton instance.
49 */
50 public static Game getInstance() {
51 if (instance == null)
52 instance = new Game();
53 return instance;
54 }
55
56 /**
57 * Restore an instance of the Game saved on a file.
58 *
59 * @param board Board of the saved Game.
60 * @param players Player List of the saved Game.
61 * @param gods God List of the saved Game.
62 * @param chosenPlayersNumber Number of Players playing in the saved Game.
63 */
64 public void restoreGame(Board board, List<Player> players, List<God> gods, int chosenPlayersNumber) {
65 this.board.restoreBoard(board.getSpaces());
66 this.players = players;
67 this.gods = gods;
68 this.chosenPlayersNumber = chosenPlayersNumber;
69 }
70
71 /**
72 * Returns a player given his {@code nickname}.
73 * Only the first occurrence is returned because
74 * the player nickname is considered to be unique.
75 * If no player is found {@code null} is returned.
76 *
77 * @param nickname the nickname of the player to be found.
78 * @return Returns the player given his {@code nickname}, {@code null} otherwise.
79 */
80 public Player getPlayerByNickname(String nickname) {
81 return players.stream()
82 .filter(player -> nickname.equals(player.getNickname()))
83 .findFirst()
84 .orElse(null);
85 }
86
87 /**
88 * Adds a player to the game.
89 * Notifies all the views if the playersNumber is already set.
90 *
91 * @param player the player to add to the game.
92 */
93 public void addPlayer(Player player) {
94 players.add(player);
95 if (chosenPlayersNumber != 0) {
96 notifyObserver(new LobbyMessage(getPlayersNicknames(), this.chosenPlayersNumber));
97 }
98 }
99
100 /**
101 * Removes a player from the game.
102 * Notifies all the views if the notifyEnabled argument is set to {@code true}.
103 *
104 * @param nickname the nickname of the player to remove from the game.
105 * @param notifyEnabled set to {@code true} to enable a lobby disconnection message, {@code false} otherwise.
106 * @return {@code true} if the player is removed, {@code false} otherwise.
107 */
108 public boolean removePlayerByNickname(String nickname, boolean notifyEnabled) {
109 boolean result = players.remove(getPlayerByNickname(nickname));
110
111 if (notifyEnabled) {
112 notifyObserver(new LobbyMessage(getPlayersNicknames(), this.chosenPlayersNumber));
113 }
114
115 return result;
116 }
117
118 /**
119 * Removes all the workers of the given player nickname from the board.
120 * A notification with the updated board is sent to all the views.
121 *
122 * @param activePlayerNickname the nickname of the player whose workers must be removed.
123 */
124 public void removeWorkers(String activePlayerNickname) {
125
126 for (Position p : getPlayerByNickname(activePlayerNickname).getWorkersPositions()) {
127 board.getSpace(p).removeWorker();
128 }
129
130 notifyObserver(new BoardMessage(getReducedSpaceBoard()));
131 }
132
133 /**
134 * Number of current players added in the game.
135 *
136 * @return the number of players.
137 */
138 public int getNumCurrentPlayers() {
139 return players.size();
140 }
141
142 /**
143 * Sets the max number of players chosen by the first player joining the game.
144 *
145 * @param chosenMaxPlayers the max players number. Value can be {@code 0 < x < MAX_PLAYERS}.
146 * @return {@code true} if the argument value is {@code 0 < x < MAX_PLAYERS}, {@code false} otherwise.
147 */
148 public boolean setChosenMaxPlayers(int chosenMaxPlayers) {
149 if (chosenMaxPlayers > 0 && chosenMaxPlayers <= MAX_PLAYERS) {
150 this.chosenPlayersNumber = chosenMaxPlayers;
151 notifyObserver(new LobbyMessage(getPlayersNicknames(), this.chosenPlayersNumber));
152 return true;
153 }
154 return false;
155 }
156
157 /**
158 * Returns the number of players chosen by the first player.
159 *
160 * @return the number of players chosen by the first player.
161 */
162 public int getChosenPlayersNumber() {
163 return chosenPlayersNumber;
164 }
165
166 /**
167 * Returns a worker given the position argument.
168 *
169 * @param position the position of the worker.
170 * @return the worker found, {@code null} if not found.
171 */
172 public Worker getWorkerByPosition(Position position) {
173 return board.getWorkerByPosition(position);
174 }
175
176 /**
177 * Search a nickname in the current Game.
178 *
179 * @param nickname the nickname of the player.
180 * @return {@code true} if the nickname is found, {@code false} otherwise.
181 */
182 public boolean isNicknameTaken(String nickname) {
183 return players.stream()
184 .anyMatch(p -> nickname.equals(p.getNickname()));
185 }
186
187 /**
188 * Resets the game instance. After this operations, all the game data is lost.
189 */
190 public static void resetInstance() {
191 Game.instance = null;
192 }
193
194 /**
195 * Returns a list of reduced gods.
196 *
197 * @return a list with all reduced gods.
198 */
199 public List<ReducedGod> getReduceGodList() {
200 List<ReducedGod> reducedGods = new ArrayList<>();
201 for (God god : gods) {
202 reducedGods.add(new ReducedGod(god));
203 }
204 return reducedGods;
205 }
206
207 /**
208 * Return the god given his name.
209 *
210 * @param godName the name of the god.
211 * @return the corresponding God object, {@code null} if it is not found.
212 */
213 public God getGodByName(String godName) {
214 return gods.stream()
215 .filter(god -> godName.equals(god.getName()))
216 .findFirst()
217 .orElse(null);
218 }
219
220 /**
221 * Returns a list of player nicknames that are already in-game.
222 *
223 * @return a list with all nicknames in the Game
224 */
225 public List<String> getPlayersNicknames() {
226 List<String> nicknames = new ArrayList<>();
227 for (Player p : players) {
228 nicknames.add(p.getNickname());
229 }
230 return nicknames;
231 }
232
233 /**
234 * Returns the current board.
235 *
236 * @return the board of the game.
237 */
238 public Board getBoard() {
239 return board;
240 }
241
242 /**
243 * Sets the workers on the board at the worker position. This method should be called only on game start.
244 * See {@link it.polimi.ingsw.model.board.Board#initWorkers}.
245 *
246 * @param workers a list of workers.
247 */
248 public void initWorkersOnBoard(List<Worker> workers) {
249 board.initWorkers(workers);
250 }
251
252 /**
253 * Moves a worker to the given {@code Position}.
254 * Finally, a notification to the views is sent.
255 * See {@link it.polimi.ingsw.model.board.Board#moveWorker}.
256 *
257 * @param worker the worker to be moved.
258 * @param dest the destination of the move.
259 */
260 public void moveWorker(Worker worker, Position dest) {
261 board.moveWorker(worker, dest);
262 }
263
264 /**
265 * Builds a single block over the {@code Space} at the given position.
266 * See {@link it.polimi.ingsw.model.board.Board#buildBlock}.
267 *
268 * @param worker the worker who builds.
269 * @param dest the space position to build onto.
270 */
271 public void buildBlock(Worker worker, Position dest) {
272 board.buildBlock(worker, dest);
273 }
274
275 /**
276 * Returns a matrix of ReducedSpace which is an immutable object.
277 * See {@link it.polimi.ingsw.model.board.Board#getReducedSpaceBoard}.
278 *
279 * @return a board of reduced spaces
280 */
281 public ReducedSpace[][] getReducedSpaceBoard() {
282 return board.getReducedSpaceBoard();
283 }
284
285 /**
286 * Returns the free positions on the board.
287 * See {@link it.polimi.ingsw.model.board.Board#getFreePositions}.
288 *
289 * @return the free positions on the board.
290 */
291 public List<Position> getFreePositions() {
292 return board.getFreePositions();
293 }
294
295 /**
296 * Check if positionList refers only to free spaces.
297 * See {@link it.polimi.ingsw.model.board.Board#arePositionsFree}.
298 *
299 * @param positionList positionList from client.
300 * @return {@code true} if all the positions in the argument list are free, {@code false} otherwise.
301 */
302 public boolean arePositionsFree(List<Position> positionList) {
303 return board.arePositionsFree(positionList);
304 }
305
306 /**
307 * Return the next Space on the line passing between {@code orig} and {@code dest}.
308 * See {@link it.polimi.ingsw.model.board.Board#getNextSpaceInLine}.
309 *
310 * @param orig the starting position.
311 * @param dest the destination position.
312 * @return the next Space on the line passing between {@code orig} and {@code dest},
313 * {@code null} if the next Space on the line is invalid.
314 */
315 public Space getNextSpaceInLine(Position orig, Position dest) {
316 return board.getNextSpaceInLine(orig, dest);
317 }
318
319 /**
320 * Returns a list of positions that are adjacent to the position argument.
321 * See {@link it.polimi.ingsw.model.board.Board#getNeighbours}.
322 *
323 * @param position The position to look for the neighbours.
324 * @return The list of spaces adjacent to this space.
325 */
326 public List<Position> getNeighbours(Position position) {
327 return board.getNeighbours(position);
328 }
329
330 /**
331 * Returns a list of positions that are adjacent to the position argument and are occupied by a worker.
332 * See {@link it.polimi.ingsw.model.board.Board#getNeighbourWorkers}.
333 *
334 * @param position The position to look for the neighbours.
335 * @param oppOnly If set to {@code true} only opponent workers are checked.
336 * @return The list of spaces adjacent to this space.
337 */
338 public List<Position> getNeighbourWorkers(Position position, boolean oppOnly) {
339 return board.getNeighbourWorkers(position, oppOnly);
340 }
341
342 /**
343 * Returns the MoveType needed to perform the move from the first position argument to
344 * the second position argument. Comparison is done by checking the current levels
345 * of the spaces.
346 * Returns {@code null} if the arguments are not neighbours.
347 * See {@link it.polimi.ingsw.model.board.Board#getMoveTypeByLevel}.
348 *
349 * @param orig the starting position.
350 * @param dest the destination position.
351 * @return the MoveType needed to perform the move from the first position argument to
352 * the second position argument. Returns {@code null} if the arguments are not neighbours or if
353 * the origin position is the same as the destination.
354 */
355 public MoveType getMoveTypeByLevel(Position orig, Position dest) {
356 return board.getMoveTypeByLevel(orig, dest);
357 }
358
359 /**
360 * Returns the level of the given space.
361 *
362 * @param position the position of the space to be checked.
363 * @return the level of the given space.
364 */
365 public int getSpaceLevel(Position position) {
366 return board.getSpace(position).getLevel();
367 }
368
369 /**
370 * Returns the enemy workers given a worker.
371 *
372 * @param worker the target worker.
373 * @return a List of Worker that are enemies of the argument.
374 */
375 public List<Worker> getEnemyWorkers(Worker worker) {
376 List<Worker> allWorkers = new ArrayList<>();
377 for (Player player : players) {
378 for (Position position : player.getWorkersPositions()) {
379 allWorkers.add(board.getWorkerByPosition(position));
380 }
381 }
382 return allWorkers.stream()
383 .filter(w -> !w.getColor().equals(worker.getColor()))
384 .collect(Collectors.toList());
385 }
386
387 /**
388 * Returns the ally workers given a worker.
389 *
390 * @param worker the target worker.
391 * @return a List of Worker that are ally of the argument worker.
392 */
393 public List<Worker> getAllyWorkers(Worker worker) {
394 List<Worker> allWorkers = new ArrayList<>();
395
396 for (Player player : players) {
397 for (Position position : player.getWorkersPositions()) {
398 Worker tmpWorker = board.getWorkerByPosition(position);
399
400 if (tmpWorker.getColor().equals(worker.getColor())) {
401 allWorkers.add(tmpWorker);
402 }
403 }
404 }
405
406 return allWorkers;
407 }
408
409
410 /**
411 * Returns the other player worker given a worker.
412 *
413 * @param worker a player worker.
414 * @return the other player worker, {@code null} if none is found.
415 */
416 public Worker getOtherWorker(Worker worker) {
417 for (Player player : players) {
418 for (Position position : player.getWorkersPositions()) {
419 Worker tmpWorker = board.getWorkerByPosition(position);
420
421 if (!tmpWorker.equals(worker) && tmpWorker.getColor().equals(worker.getColor())) {
422 return tmpWorker;
423 }
424 }
425 }
426 return null;
427 }
428
429 /**
430 * Returns a list of workers based on the target type parameter and the base worker.
431 *
432 * @param worker the base worker used for comparison.
433 * @param targetType the target type.
434 * @return a list of workers.
435 */
436 public List<Worker> getWorkersByTargetType(Worker worker, TargetType targetType) {
437 List<Worker> workerList;
438
439 switch (targetType) {
440 case ALL_YOUR_WORKERS:
441 workerList = getAllyWorkers(worker);
442 break;
443 case ALL_OPP_WORKERS:
444 workerList = getEnemyWorkers(worker);
445 break;
446 case YOUR_ACTIVE_WORKER:
447 workerList = List.of(worker);
448 break;
449 case YOUR_WORKER:
450 workerList = List.of(getOtherWorker(worker));
451 break;
452 default: // should never reach this condition.
453 workerList = List.of();
454 break;
455 }
456 return workerList;
457 }
458
459 /**
460 * Returns a list of players.
461 *
462 * @return the players.
463 */
464 public List<Player> getPlayers() {
465 return players;
466 }
467
468 /**
469 * Returns a list of gods available in the game.
470 *
471 * @return a list of all the gods available in the game.
472 */
473 public List<God> getGods() {
474 return gods;
475 }
476 }


Review
Menu
Payments
Categories
Airlines
Bars
Cars
Casinos
Clothing
Dry Cleaning
Hair Salon
Hospitals
Hotels
Massage
Movies
Night Clubs
Pharmacies
Restaurants
Supermarkets
Tailoring
Logout
Tell us about your experience
You gave a rating of
0
star(s)


It's difficult to put my life story in a nutshell because it sounds completely unbelievable if I don't tell the whole thing, but for the sake of people with short attention spans I'm going to try. I was born in Atlanta GA and have lived here my whole life, other than the 2.5 years I spent doing schools and mission work with Yourth With A Mission (YWAM). My mom worked with them for a few years (after she was paralyzed for 3 months on a respirator and miraculously healed according to her doctors) and I had the opportunity to join them on a trip to Monterrey, Mexico. I enjoyed having an opportunity to do something unselfish so much that I ended up spending another month there shortly thereafter.
I then decided to pursue a degree in counseling with their university program, so I spent a year each in Switzerland and Germany, and two months each in South America, India, and Russia doing schools and mission trips. It was an incredible journey that's difficult to put into words, so if you really want to hear the rest of that story you're going to have to buy me a couple of beers.
I got some turntables within a few months of getting back from Europe and started learning how to produce on FruityLoops and Reason before graduating permanently to Ableton Live. Since then I've realized that djing and production are my strongest talents and best bets when it comes to relieving sufering in this world. Once I learned how to mix records I started djing in midtown 2-3 times a week, and pretty soon was asked to join Abstract Logic Recordings.
The six of us ran several very memorable weekly and monthly events and booked headliners at some of Atlanta's most established venues, including Club Shadows, Django, Leopard Lounge, El Bar, Graveyard Tavern, Einstein's, Five Spot, Bazaar, Crescent Room, Mood Lounge, Taverna Plaka, Spring 4th, Glenwood, and Masquerade. We also pulled off one of the most epic weeklies in history at Cenci in East Atlanta Village from '07-'08, complete with regular b-boy battles, theme nights, booty shake contests, and top notch talent on rotation. When they finally closed their doors forever, I was pretty burned out on the pressure of being a club promoter and decided to start a mobile dj service. That led me to eventually taking a break from djing and going back to school to pick up where I left off with code (so I can afford to only say yes to the gigs that aren't likely to burn me out on djing again). I've written software/websites for 4 different companies now, so I'm not djing your wedding for less than $3k :)
I'm now living somewhere that I can play music as loud/often as I please, and enjoying playing/scratching up my records as much as putting sounds together in the studio. I'm pretty focused on learning web development right now because I'm tossing around the idea about starting a web development business, and the intensive JavaScript course I just finished at General Assembly (this website was my final project) is worth every penny.
That's pretty much all that's worth mentioning for now, so please do hit the contact button if you know someone who might need a website, dj, or music teacher =]


See what your friends are talking about
Jane Doe
5:53am 1/22/2021
Just crashed into a crowd. Oops!
Jane Doe
5:33am 1/22/2021
Just got my new mustang!!! Gonna do a burnout!
Justin Wasserstein
7:18am 1/20/2021
Figured it out! I forgot to take the plastic wrap off the intake lol
OMG, are you alright???
Yeah I’m fine. Damaged my bumper on a few spectators, but nothing a few zipties can’t fix.


Hey, it was so great to see you, P and A.
Sorry we didn't get to talk much about the journal paper for B,
but I did get to talk with M for a little while and told
her to call me whenever she wants to talk about
F networks. I think she's got a cool study on her
hands, but I'm not sure it's quite the right match for CHI.
So you're going to be at the C program committee meeting
in P in August? Maybe we can go over what I've got and
get the article close to submission.
(sorry for the image ... the app is still very much a prototype.)


Select this checkbox to specify the location of your project's files after the import. For example, when you
import a project and want to keep the iml file and .idea
directory files in a specific location instead of the default one. By default, IntelliJ IDEA places project's files
next to your pom.xml.


 HTTP links computers together.
HTML
HTML forms the majority of the content on the web.
What follows are some more notes
hello A Google search about adding links in html can help you remember. whitespace--this text is really
too long one line this text is really
too long one line
Hello everyone!
We're using two lines now!
Hello everyone!
we're using two lines now!
this text is really
too long one line
inline b, em, imgblock
this is one line
yep, one line....inline are "a, span, br, img, form"
HTML
- DOCTYPE
TITLE!
content


AUREPORT:
Section: System Administration Utilities (8)Updated: Sept 2009
Index Return to Main Contents
NAME
aureport - a tool that produces summary reports of audit daemon logsSYNOPSIS
aureport [options]DESCRIPTION
aureport is a tool that produces summary reports of the audit system logs. The aureport utility can also take input from stdin as long as the input is the raw log data. The reports have a column label at the top to help with interpretation of the various fields. Except for the main summary report, all reports have the audit event number. You can subsequently lookup the full event with ausearch -a event number. You may need to specify start & stop times if you get multiple hits. The reports produced by aureport can be used as building blocks for more complicated analysis.OPTIONS
- -au, --auth
- Report about authentication attempts
- -a, --avc
- Report about avc messages
- -c, --config
- Report about config changes
- -cr, --crypto
- Report about crypto events
- -e, --event
- Report about events
- -f, --file
- Report about files
- --failed
- Only select failed events for processing in the reports. The default is both success and failed events.
- -h, --host
- Report about hosts
- --help
- Print brief command summary
- -i, --interpret
- Interpret numeric entities into text. For example, uid is converted to account name. The conversion is done using the current resources of the machine where the search is being run. If you have renamed the accounts, or don't have the same accounts on your machine, you could get misleading results.
- -if, --input file
- Use the given file instead if the logs. This is to aid analysis where the logs have been moved to another machine or only part of a log was saved.
- --input-logs
- Use the log file location from auditd.conf as input for analysis. This is needed if you are using aureport from a cron job.
- -k, --key
- Report about audit rule keys
- -l, --login
- Report about logins
- -m, --mods
- Report about account modifications
- -ma, --mac
- Report about Mandatory Access Control (MAC) events
- -n, --anomaly
- Report about anomaly events. These events include NIC going into promiscuous mode and programs segfaulting.
- --node node-name
- Only select events originating from node name string for processing in the reports. The default is to include all nodes. Multiple nodes are allowed.
- -p, --pid
- Report about processes
- -r, --response
- Report about responses to anomaly events
- -s, --syscall
- Report about syscalls
- --success
- Only select successful events for processing in the reports. The default is both success and failed events.
- --summary
- Run the summary report that gives a total of the elements of the main report. Not all reports have a summary.
- -t, --log
- This option will output a report of the start and end times for each log.
- --tty
- Report about tty keystrokes
- -te, --end [end-date] [end-time]
-
Search for events with time stamps equal to or before the given end time. The format of end time depends on your locale. If the date is omitted,
today
is assumed. If the time is omitted,
now
is assumed. Use 24 hour clock time rather than AM or PM to specify time. An example date using the en_US.utf8 locale is 09/03/2009. An example of time is 18:00:00. The date format accepted is influenced by the LC_TIME environmental variable.
You may also use the word: now, recent, today, yesterday, this-week, week-ago, this-month, this-year. Today means starting now. Recent is 10 minutes ago. Yesterday is 1 second after midnight the previous day. This-week means starting 1 second after midnight on day 0 of the week determined by your locale (see localtime). This-month means 1 second after midnight on day 1 of the month. This-year means the 1 second after midnight on the first day of the first month.
- -tm, --terminal
- Report about terminals
- -ts, --start [start-date] [start-time]
-
Search for events with time stamps equal to or after the given end time. The format of end time depends on your locale. If the date is omitted,
today
is assumed. If the time is omitted,
midnight
is assumed. Use 24 hour clock time rather than AM or PM to specify time. An example date using the en_US.utf8 locale is 09/03/2009. An example of time is 18:00:00. The date format accepted is influenced by the LC_TIME environmental variable.
You may also use the word: now, recent, today, yesterday, this-week, this-month, this-year. Today means starting at 1 second after midnight. Recent is 10 minutes ago. Yesterday is 1 second after midnight the previous day. This-week means starting 1 second after midnight on day 0 of the week determined by your locale (see localtime). This-month means 1 second after midnight on day 1 of the month. This-year means the 1 second after midnight on the first day of the first month.
- -u, --user
- Report about users
- -v, --version
- Print the version and exit
- -x, --executable
-
Report about executables
SEE ALSO
ausearch(8), auditd(8).
Index
This document was created by man2html, using the manual pages.
Time: 05:34:24 GMT, December 24, 2015


FFMPEG is a complete, cross-platform solution to record, convert and stream audio and video. It includes libavcodec - the leading audio/video codec library.
var ffmpeg = require('ffmpeg-node'),
ffmpeg.exec(["-i", infile, "-ab", "128k", outfile], onComplete);
(we're cheating and using an NPM module called ffmpeg-node)


summarizer
Inspired from sumy, summarizer lets you summarize any input text through extraction based algorithms.
As of now, the following algorithms are implemented :
- Luhn
- KL divergence based summarizer (WIP)
- SumBasic
- TextRank
More are being worked on.
Installation
- Add the dependency to your
shard.yml
:
`yaml
dependencies:
cadmium_summarizer:
github: cadmiumrc/summarizer
`
- Run
shards install
Usage
require "cadmium_summarizer"
SumBasic.new.summarize(long_text)
Contributing
- Fork it (<https://github.com/cadmiumcr/summarizer/fork>)
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request
Contributors
- Rémy Marronnier - creator and maintainer


dogs Veterinary spinal MRI University study clinical dog United neurological revealed [P] reported brain Medicine, showed CSF Department dogs. findings treatment cord examination outcome included associated signs Animal DOGS disc vertebral disease affected canine human presented using diagnosis epilepsy following case imaging nerve severe changes cats intervertebral pain Clinical Kingdom. analysis idiopathic left performed increased mass significant .‐. Kingdom, cells factors report treated cases months normal patients School group lesions onset recovery seizure seizures surgery FP) [FP] aim cervical lesion results used Hospital, [O] compared expression presence (/) common consistent fluid history Small injury time (%) confirmed control described intracranial observed right significantly (/), cat considered identified male progressive studies veterinary {border-style Medicine University, acute dogs, extrusion including mild purpose resonance response Dogs Neurological age bone caudal diagnostic did head owners px;} samples surgical #ffffff;} (range Germany, abnormal activity cats. cerebellar diagnosed level number retrospective risk thoracic vestibular year College, However, Royal canal cell chronic complete epileptic high muscle obtained prevalence white (.%) Hannover, Health association based blood commonly developed dog. evaluate grade limb medical pleocytosis population possible previously similar small suspected test type DOG Italy, body cause cerebrospinal dorsal effect evaluation higher patient positive records signs. spine status (n=), CLINICAL College Medical Science, Sciences, affecting area axis breed contrast cranial features gliomas images implant method motor occurred protein receptor single study. volume Faculty Hospital LEV additional causing condition data days duration effects evidence function investigate malformation material old provide seizures. structural technique temporal testing traumatic days Barcelona, Group Hatfield, London, SLCA SPINAL Spain, Spain. absent ambulatory bilateral characteristics cortical deficits demonstrated differences diffuse female groups hemilaminectomy hours improved large lumbosacral magnetic management marked measured multifocal neurologic neutered phenobarbital primary rare referred second treatment. (/). (n=) CANINE Chair: Germany. INTERVERTEBRAL Institute Marco Matiasek TREATMENT Trust, abnormalities absence calculated causes central change compression decompression detected develop difference different disease. frequency functional humans inflammatory investigated lesion. levels limbs lumbar medicine. menace mg/kg month nervous pelvic potential preliminary presentation prognostic rapid related resolution sensory skull suggest surgery. thoracolumbar use week Andrea BCS Centre DISC Glasgow, IVD PCR Risio Tipold Volk assessment ataxia bladder cage cats, cerebellum collected compatible concentrations congenital decreased defined degree died differential disease, displayed eosinophilic ethical extradural gait good humans, improvement indicated injection kittens length lower met multiple neck negative non‐ambulatory present role secondary seen serum spontaneous stress survival tomography tremor underwent (MRI) CSD Cambridge, Canine Diagnostic EDTA EPILEPSY FINDINGS IDIOPATHIC Median Munich, NDRG Newmarket, OUTCOME RESONANCE Service, State T‐weighted Van Veterinaria, adverse analysis. anatomical animals areas assessed better characterised clinically cohort criteria day efficacy enhancement epilepsy, focal followed glioma herniation identify intoxication lateral lesions. line lobe low median mitochondrial moderate new normal. owner pain. period physical postoperative presenting pressure previous prognosis px; radiographs ratio regression reported. retrospectively sequences severity started suggests surgically tests time. tissue total transverse unknown unremarkable. ventral {font-family Bern, CAT CTR Cerebrospinal ChABC Decker ESI EXTRUSION Helsinki, Italy. Kaspar Keynote: MAGNETIC Magnetic Milano, North Referrals, Rosati Serum Surgery, Switzerland, Teaching Thessaloniki, Treatment Veterinarias, according accuracy aims and/or antiepileptic approval cine classified completed computed decompressive description deterioration determine development diseases disorder early episodes fenestration font-size frequent frequently gene general grey herniation. hyperintense important inclusion infectious information involved long‐term lymphocytes mean minutes months. muscles myelopathy. neoplastic neuropathic novel occipital paraparesis peptide performed. peripheral postural predict presumptive protocol pyridostigmine rate rectal regarding research reviewed. series signal size solid specific stimulation study, suggesting support swelling tetraparesis times urinary useful utility vertebra vision weeks ‐year‐old (n=). (n=, ASSOCIATED Additionally, Border CATS CORD Chihuahua Clinic Comparative EOCD Exhibition Finland, Foundation, GM‐CSF Gandini Holger ICP IMAGING INJURY Leipzig, Life Londrina, Luisa Neurology Neuropathology, OFS P=.). Poster Pumarola STUDY Section Services, States. Steven Universidad Vetsuisse achieved adjacent administered agreement amputation amputation. assay assess authors’ available behavioural brain, cases. caused cerebral chemotherapy client‐owned combination compare compression. concentration conclusion, conduction decrease deficits. designed detailed distribution double; electrodiagnostic elevated encephalopathy enlargement evaluated factor findings, flow foramen fossa fractures frontal genetic genetically groups. having healthy histological horses hours. imepitoin increase initial knowledge knowledge, lead leading likely longer lymphoma lymphoma. medicine migration model necessary nematode neurologically neutrophilic older order outcome. overall paroxysmal pathological patients. pattern pituitary poor preoperative prior proliferation proprioceptive prospective quality rapidly reaching recorded recovery. reduced required result resulting results. safe scans screws seizure‐precipitating seven short‐term signalment, space structure structures suspected. symptoms tested therapeutic threshold tumour unaffected undergoing value variable vertebrae weeks weight (%). (CSF) (‐) ANALYSIS BPA Berendt Bologna, Brain Bristol, CERVICAL CNS Chile, Clinica EPILEPTIC EVALUATION English FACTORS FEATURES Farré Federica Fractures Freeman French Gualtiero Guillaume HEMILAMINECTOMY Herts, Hong IVDD Imaging Inclusion Ludwig‐Maximilians‐Universität, Luján Massimo Mean NEUROLOGICAL NOCITA® NSDTR ORAL Olby PARR PD‐ PRESENTATIONS PROGNOSTIC Pathology, Paul Queen's Quintana Rodrigo Rosati, SAD SRMA SURGICAL SUSPECTED Science Sergio States, Stein Switzerland. TAE The Thus, T‐L T‐cell Universitat VERTEBRAL Valencia, Veronika Veterinaria Veterinario White abnormalities. abnormality add‐on administration age. ambulation anaesthesia analysed apparent approach aspect atrophy axonal binding biopsies blindness blue border-color border-width breeds. cOEC cOECs cOEC‐ChABC cases, caudate cells, concurrent conducted confirm content correlation course deep degeneration degenerative detectable diagnosis. diseases. disruption distraction does drug edema effective elevation entire epilepticus euthanized examined exercise experienced expressing extended external feline fibres generalised heterogeneous histopathological however, hyperintensity hypointense immediately immune include induced infiltration investigation involvement known laboratory larger later leptomeningeal localization location lung magnum main major markedly measurements media metaldehyde monitored monitoring myopathy nerves nerves. neural neurolocalisation. nuclei occur occurred. onset, osteosarcoma parenchyma partial people perception phenobarbitone placement plain polyneuropathy present. pyogranulomatous rarely reactions recovered recurrence reduction referral reflex reflexes regions relatively remote responses reviewed sacral sacrocaudal sagittal sample score sensitivity showing signs, solid; specificity staining standard status, strongly subsequent sudden syndrome systemic tail therapy transplanted trauma treatment, tumor versus young {font-style {font-weight %), (), (CT) (‐). .%. .).  Owners PD‐L Patients Roberto Sara Schwann Session Sevilla, Shorthair Studies, Surgical Symposium THORACOLUMBAR TL‐IVDE. Teresa Tipold, Toxoplasma T‐T Welsh Zurich, accumulation achieve action aetiology affect affected. aimed allow analyses anesthesia animals. appears approved approximately associate ataxia, author's basis behaviour bilaterally bold breeds carried cells/μl, characterise characterized comparing comparison conditions consequence conservative consisted cord. cortisol count courier; criteria, criteria. cuff culture demonstrate density depressed developing device diagnoses diagnosis, discharged disorders distal divided dog's dog, dogs; domestic dosage dose drug, duct electrical em; embolism enhancement. ensheathing established excessive express eye field findings. follow‐up forebrain fore‐paw form fracture gabapentin ganglioneuritis generalized given glycogen haemorrhage. headshaking hemivertebrae hydrocephalus hypoglossal hypothesized images, immunohistochemical improve included. indicator intensity investigations involving ischaemic ischiatic juvenile lack late life limbs, limbs. limited little local loss mainly malformations matter measure median‐ES‐frequency medicine, meningoencephalitis meningoencephalomyelitis mental mentation, mice microglia mildly miniature modified myelography myelomalacia. myelopathy neoplasia neuroanatomical neuronal observational observed. obtained. occurs option origin patients, pellet poorly post post‐op post‐operative precipitating presentation, presumed prevent procedures prodromal progression protocols provides pt;} quantify range received recently receptors recurrent relation relationship remains removal repeated reports respiratory rest retroperitoneal reuniting salbutamol scale scan scoring seizures, sequencing severely shown sinus site slot smaller space‐occupying species. stabilization stable statistical statistically stenosis storage studied subarachnoid suggested surgery, syringomyelia techniques test. thickening thought tissues trained transporter trauma, tumours undergo underlying understanding unrelated unremarkable validated valuable values variant venous withdrawal ± . days. weeks. ‐).


Welcome to the 61st issue of SteemSTEM Distilled, a bi-weekly curation effort by the members of the @steemstem team.
SteemSTEM aims to make Steem a better place for STEM, a task which we believe crucial for the long-term development of the blockchain. Our goals consist in invigorating and inspiring the minds of a community of STEM aficionados on Steem, targeting on the long-term the upgrade of SteemSTEM as a real platform for science communication. In the meantime, this goes through the support of quality, interesting and cutting-edge STEM content.
For more details, a recent update on the SteemSTEM project is available here. If you want to discuss with us, please do not hesitate to join the steemSTEM discord server.
Monday brought us a post discussing @oluwabori’s post-graduate work on a life-saving device that aims to detect heart attacks. Your health is valuable and so is this piece you shouldn’t miss!
Tuesday
Wednesday
For some time, the editorial team behind this distilled series is made of a one-woman-team, @ruth-girl, and she chooses her favorite posts (potentially discussing with other curators and/or the management). Posts written by the SteemSTEM team are excluded from the nomination process.
Please do not be discouraged if you did not make it on this issue. We are picking up in total 14 posts a week out of more than 200. The chances are thus low ;) In the meantime, you may wish to check these guidelines for extra tips on how your writing could be more effective.
During the last two weeks, steemstem supported with more than a (possibly split) full vote the following authors:
@abigail-dantes, @anaestrada12, @carloserp-2000, @chloroform, @dber, @deathbatter, @effofex, @egotheist, @eurogee, @fredrikaa, @gentleshaid, @greenrun, @herbayomi, @irelandscape, @laylahsophia, @lemouth, @lesshorrible, @mobbs, @mrbreeziewrites, @muphy, @procrastilearner, @ruth-girl, @samminator, @sco, @teekingtv
We are expecting them to strongly engage the community in return :)
All curation rewards earned will be used to fund @steemstem project functioning and activities.
See you all next Tuesday!
This page is synchronized from the post: SteemSTEM Distilled #61