Roll-a-Ball Tutorial
To get things rolling (pun intended), I started off by walking through the classic Roll-a-Ball Unity tutorial. In many aspects, this tutorial continues to be a great introduction to not only Unity as a whole, but also to the scripting-side of Unity. As will be discussed in the following section, Unity is highly supportive of those who do not wish to write a single line of code. With this tutorial, however, you can get a good feel for both the non-programming side and the C# side.
To start things off, I had to decided which version of Unity I wished to use. I knew going into this project that dealing with versions would be an issue, but I had no idea just how much of an issue that would end up being. A sizeable portion of the hours spent on this project have been juggling packages and trying to learn how 2019.3 has decided to do things differently. Luckily, Roll-a-Ball is simple enough that there wasn't much difficulty here since no special packages are need. Yet another great perk of the tutorial.
My partially completed implementation of the game can be found in this project's GitHub repository
here
.
Shader Graph
The real driving force behind deciding to use Unity for this last project was getting to play with Shader Graph. For the previous assignment, we were tasked with building and using shaders and some of my classmates decided to use Shader Graph. I was very intrigued by their descriptions of it being a means of seeing the results of your shader manipulations as you develop your shaders.
This is the point at which I found the Brackeys Youtube Channel. I landed upon their
"Basics of Shader Graph - Unity Tutorial"
video and after watching it, began following the steps that were laid out. However, this is when I ran into my first issues with the Unity Render Pipelines. As noted in the video, to use Shader Graph, you need the Lightweight Render Pipeline installed. This turned out to be a headache, especially when I found out that in order to get bloom, I needed to set up some Post Processing items. This was very frustrating, especially since I am using the latest version of Unity 2019, which is recent enough to warrant not much relevant online help.
With the Lightweight Render Pipeline somewhat set up correctly, I was able to follow Brackeys' Basic Shader Graph tutorial as well as his dissolve tutorial. I also begin following his force field tutorial, but stopped part way because I realized that I needed to set up the High Definition Render Pipeline, since that was the tutorial setup.
Using Shader Graph was quite nice. The visual format, with its nodes and connections, can be very straight forward. The biggest drawback I had was knowing what node that I wanted or needed. Since I was following tutorials, that wasn't a very great struggle, but I could imagine it being more than just a small hindrance when trying to make your own custom shader. Once you gain a good grasp of the available nodes, however, I feel as though this could be an even more helpful tool.
The visual aspect is very helpful for a higher level understanding; for seeing the flow of data and how the pieces contribute towards the final effect. However, gaining a lower level understanding can be much more difficult because of the abstractions the nodes represent. When trying to follow along with the force field tutorial, I quickly got lost with the calculation needed to "detect" where the force field intersected with other objects in the scene. This was done as shown below in Figure 3.
One big area of confusion was what the Screen Position and Scene Depth nodes really represented. The online documentation on the nodes was helpful, but those extra steps are necessary if you wish to understand the underlying math. In order to create a shader from scratch, you need to understand at least some of the underlying math. What comes to mind is the fog shader we discussed in class. I say "at least some" since there are often a number of hacks or simplications that can remove the more complicated steps, as we did in class. However, if none of the math was understood at all, it wouldn't be possible to create your own fog shader. This is not quite the case with Shader Graph which is both a plus and a minus.
After working on the more simple shaders, I then tackled the grass sway shader. This tutorial excited me because of its use of vertex displacement and its overall complexity. This was a case where I didno't struggle to comprehend what was happening in Shader Graph once I gave it some thought. Going into it with an understanding of vertex displacement made it easy to understand which nodes were necessay and displayed a definite strength of Shader Graph.
Procedural Mesh Generation
After playing around with Shader Graph for a while, I saw another Brackeys tutorial about Mesh Generation and thought it sounded fun. After mucking around with a visual, node-based system for a while, it was refreshing to create some C# scripts and write some code. The tutorial walked through using Perlin Noise to generate pseudo random noise and easy create a terrain with somewhat realistic changes in height. With Unity's extensive libraries, it was as simple as making a single function call, shown below in Snippet 1. Unlike the tutorial, however, I made a new "noisiness" parameter which is available to the user. This parameter is what I am changing to get the effects shown below in Figure 4.
// loop through and generate vertex positions
for (int i = 0, z = 0; z <= zSize; z++)
{
for (int x = 0; x <= xSize; x++)
{
// adjust noise so it's more noticeable
float height = Mathf.PerlinNoise(x * 0.3f, z * 0.3f) * noisiness;
vertices[i] = new Vector3(x, height, z);
i++;
// determine min and max heights
if (height < minHeight) minHeight = height;
if (height > maxHeight) maxHeight = height;
}
}
Putting it all Together and Future Work
After playing around with tutorials, I had a lot of trouble trying to see how I could combine everything into one cohesive project. After completing the grass sway tutorial, I had the thought to procedurally generated mesh and also place swaying grass along it, depending on the height of the mesh. Since the beginning of this project, I thought I had wanted to create a 2D game with essentially a camera fixed at a certain offset from the player. I thought maybe I could generate mesh as the player moves and add swaying grass for them to walk through, all while the player views the scene from a 2D perspective.
I set out to work on this and, since the grass swaying needed to be implemented using the High Definition Render Pipeline, thought it only natural to continue to use it for this somewhat cohesive "game." However, importing my mesh generation from a project using the Lightweight Render Pipeline, did not work immediately. My vertices were being generated where I wanted them to be, but I had no triangles displaying. I knew my vertices were calculated correctly because of this very helpful debugging function Brackeys had implemented in their "PROCEDURAL TERRAIN in Unity! - Mesh Generation" video, shown below in Snippet 2.
private void OnDrawGizmos()
{
// only draw if we have vertices
if (vertices == null)
{
return;
}
for (int i = 0; i < vertices.Length; i++)
{
Gizmos.DrawSphere(vertices[i], 0.1f);
}
}
If my vertices were there, and I was setting the triangles of the mesh just as I did previously, why wasn't I seeing any triangles? After going through some more of the 2019.3 documentation on Mesh Filters, it turned out that for 2019.3, I also needed a Mesh Renderer in order to see the triangles of my mesh. But a Mesh Renderer required a material and therefore didn't allow me to apply a gradient to the vertices as I had done previously, following Brackeys' "MESH COLOR in Unity - Terrain Generation" tutorial. The simple blue to green to white gradient can be seen above in Figure 4. This gradient was simply applied by linearly interpolating between the heights of the vertices to determine where along the gradient that specific vertex fell.
After abandoning the hope of coloring my generated mesh, my next steps were to place a player sphere that I could control and also to place grass on the mesh. I simply copied my player controller script from the Roll-a-Ball tutorial and now I had a player. But the grass bit seemed more difficult. I started with a somewhat silly idea of dropping the grass onto the terrain randomly to see how that would turn out. However, to allow physics-based behaviors, a Unity GameObject needs a rigid body component. Once I got the grass dropping at random locations, I saw that this was not at all the behavior that I wanted. They would tip over and roll about sometimes, but worst of all, they interacted with the player sphere, which had its own rigid body. The player wasn't allowed to go through the grass anymore because they were both physical rigid bodies and, as the name suggests, rigid bodies cannot pass through each other.
Because of the amount of time I had left, and because of the need to complete this writeup, I decided to stop developing at this point, leaving much room for future work. A few items I wish to continue working on are as follows:
-
Allow player to move through the grass clumps
- either just passing through or applying its own vertex displacement to move the grass out of the way)
-
Generate more mesh when the play reaches the edge of the current mesh it is on
- I imagined a MeshManager of some kind that would use the vertices at the end of the current mesh when creating a new one, in order to seamlessly join the two
-
Color the mesh
- as explained above, because of the need of the Mesh Renderer to have a material to apply to the triangles, I was not able to color the vertices- there are possibly ways to do this by texturing the mesh with a custom texture
-
Better player movement
- currently, the movement is through the player being pushed by forces, but this movement isn't very conducive to a 2D game with the player rolling up and down hills because it's difficult to control precisely
Verdict on Using Unity
Package juggling and juggling versions was a pain. With such a popular, constantly developed engine like Unity, there are so many updates being pushed out that it can be very tempting to stick with an older version. This is a case where I feel as though I should not have jumped into 2019.3, although, I'm sure I would've had a whole new set of issues had I used a 2018 version. These issues are one major difference between using your own custom engine and a large, publicly deployed game engine like Unity. A custom engine is very unlikely to have such a high setup cost because of its size and the fact that it likely isn't as complex. Something I found very surprising about some of the errors I was receiving was missing functions or references to types that don't exist. I understand that Unity is expanding rapidly, but I was surprised at its lack of backward compatibility. However, once I realized that it must be that I had out of date packages, and I had
updated them all, then things were fine.
Overall, it was quite a pain to use Unity. It tries to be able to do so much, and it can do so much, but that is also a major downside. I honestly felt as though half of my hours were spent banging my head against versions and wondering why things where black or not showing up even though I had followed the tutorial. I will admit that Shader Graph was very fun and impressive, however somewhat slow on my laptop at times. I hadn't looked to see if this was possible, but I would very much like to see the shaders Shader Graph generated. It did not seem readily apparant that these were available, but I would hope that they are so that those of use that like to dig a little bit deeper can see the outcomes of playing with Shader Graph.
Tutorials


Being on a Keto diet means just about zero sugar, but that doesn't mean that you can't enjoy the (semi) sweet things in life.
So I've created this super sweet (get it?) sugarfree dessert Keto cookbook!
Non-keto chefs beware! While these treats are quite tastey and sweet from a keto perspective... The heavy use of fat and lack of real sugar will make them far less enjoyable to someone who is not as accustomed to the keto diet.


Release 127 of ENA's assembled/annotated sequences now available Read more
In our new publication, "Value, but high costs in post-deposition data curation”, we explore the curation of environmental sample information in the European Nucleotide Archive. Read more
The InterPro protein families database: the classification resource after 15 years
Our latest paper describing new developments on the InterPro website
(Nucleic Acids Research, Jan 2015).
HTML | PDF (3,4Mb) | All publications
The InterPro protein families database: the classification resource after 15 years
Our latest paper describing new developments on the InterPro website
(Nucleic Acids Research, Jan 2015).
HTML | PDF (3,4Mb) | All publications
The InterPro protein families database: the classification resource after 15 years
Our latest paper describing new developments on the InterPro website
(Nucleic Acids Research, Jan 2015).
HTML | PDF (3,4Mb) | All publications
The InterPro protein families database: the classification resource after 15 years
Our latest paper describing new developments on the InterPro website
(Nucleic Acids Research, Jan 2015).
HTML | PDF (3,4Mb) | All publications
If you have thumbnail images to feature and/or more robust content per item, use this pattern.
February 2016 - The InterPro Domain Architecture (IDA) tool allows you to search the InterPro database with a particular set of domains, and returns all of the domain architectures and associated proteins that match the query. Read more
February 2016 - You have probably been as horrified and saddened as me to see the shocking abnormality that affects newborn babies.


Make Wednesday your movie night at home with these 3 flicks
Cape Town – Pop some popcorn and get your favourite drink for movie night from the comfort of your couch.
From comedy, to a stylish crime thriller, to a South African Western – here are our top movie recommendations.
Instant Family
21:50 Movies Premiere (DStv 103)
Mark Wahlberg and Rose Byrne star as a couple who are yearning for parenthood. Looking to adopt a small child, the couple enrol in a foster care class to prepare themselves for the next step in their lives parenthood. After meeting three siblings, they decide to adopt the trio without realising the whirlwind of family life they’ve just let themselves in for. Pete and Ellie quickly realise the stress and joys of raising a family, let alone a blended one! (READ OUR REVIEW HERE)
A Simple Favour
Anna Kendrick and Blake Lively drive this crazy crime movie. Stephanie, a single mom, befriends Emily, a secretive upper-class woman whose kids go to the same school, but when Emily goes missing Stephanie decides to investigate. (READ OUR REVIEW HERE)
Five Fingers for Marseilles
Lives change forever when Tau, the young lion, kills two corrupt policemen in a South African shanty town. (READ OUR REVIEW HERE)
Compiled by Leandra Engelbrecht.


Factory function for a GdprManager
GdprManagerFactory
Factory for creating a guard
The unique name/identifier for this guard
The description of the guard
Where the data will be stored
Whether or not it is a required guard
Whether or not it is currently enabled
Factory function for a GdprManager


User Interviews, Comparative Analysis, Survey, Heuristic Evaluation, & Usability Testing
UX Researcher & Designer
Neha Dhawan, Chuhan Hou, Matt Cloutier, Nick Murray, & Lauren Elbaum
12 weeks
Our project was to improve the invoicing process in Coupa.
Coupa is a spend management software as a service (SaaS) provider built on Amazon Web Services that helps enterprises manage their indirect purchases, invoices, and expenses in real-time.
From our stakeholder interviews, we understood that Coupa was interested in finding problems encountered in the invoice creation process for its users. We utilized needs assessment and usability evaluation methods to do the research for this project and found a series of specific yet interrelated problems within the process. Finally, we devised a solution bundle to tackle these problems.
Our needs assessment phase included user interviews, comparative evaluation, and survey.
We conducted 2 stakeholder interviews with our client to understand the problem from our client’s perspective. It also helped us get an overview of the product and understand the invoicing process on a very high level.
We then conducted 5 interviews with the current Coupa users:
We also conducted 1 interview with an accounts payable employee who uses software other than Coupa as a point of reference.
After all the six interviews, we transcribed all the interviews and did interpretation sessions to find patterns. We then derived overarching themes via a widely-used qualitative method known as an “Affinity Wall Diagram,” which allows for the physical clustering of key findings around emergent themes.
Our user interviews helped us to develop three primary personas:
We identified 3 direct competitors, 2 partial competitors, 4 parallel competitors and 1 analogous competitor.
Broad criteria for comparative evaluation:
We then deployed a survey which covered all three of our primary personas. We received 25 responses during our two-week window; 21 responses from users in accounts payable department and 4 suppliers.
To validate if our findings from the interviews and the comparative evaluation were representative of the larger user population.
Coupa does not throw an error if suppliers submit invoices with the same invoice number twice. This leads to confusion in matching invoices to the correct Purchase order. Besides our 2 interviewees, 32.5% of our survey respondents mentioned that they faced this issue. Many of the competitors we analyzed such as QuickBooks, Concur and TurboTax inform their users proactively of the errors and guide them to resolve issues efficiently.
Run a data validation script on the website that checks for duplicate invoice numbers for any new entry against an existing invoices database for a given supplier and display an error to the user in real time.
This allows suppliers to bill purchasers more than once for the same item. Besides our two interviewees, 22.5% of our survey respondents agreed that they faced this issue. Our interviewees expressed that repeat invoicing is the chief driver of supplier disputes; often, these disputes need to be resolved via costly conversations with suppliers.
We suggest that this issues could be resolved by “closing” a purchase order line once an invoice has been uploaded against that line. This would prevent any repeat charges to an individual Purchase order line.
ur second phase of research consisted of utilizing a heuristic evaluation and series of usability tests to discover the problems most readily faced by the novice users of the interface.
For our heuristic evaluation, we each used Nielsen's ten heuristics to evaluate the interface. We assigned a severity rating to each issue individually and then aggregated our severity ratings to reach a final list of most severe issues.
We conducted one pilot test and 5 usability tests with employees of accounts payable departments who had never used Coupa before. We designed 6 different tasks around invoicing to test the interface with 5 different users.
During each usability test, we first administered a pretest-questionnaire to gather demographic information of the users to confirm their participation criteria. Then the moderator gave tasks to the users to perform. After each task and the whole testing session, participants filled out a post-questionnaire to rate the difficulty level of tasks and overall impression of the product. Notetakers observed the testing sessions in order to capture usability issues and reactions of the users to the interface during the session.
We had three major findings from the usability evaluation phase:
Invoice Inbox has poor information architecture and it is hard to search invoices in it. All five of our users in usability tests faced this problem and two of them could not find the given invoice in the invoice inbox. The older invoices are listed first while the most recent invoices are listed many pages later. Consequently, users have to browse through all the pages to find the most recent invoice, unless they use the sort or search functionality. Furthermore, the sort functionality is not easily discoverable, and the search shows no relevant results when the users try to search for an invoice by invoice number or company name. This makes searching for invoices a real struggle. Below are few of the quotes from the participants during usability testing:
List invoices more logically, with the most recent invoices being displayed first. Also, the search functionality should be more robust so that users can search by company name and invoice number. We also recommend making the sort functionality more salient so that users can find it and use the sort functionality to view relevant results.
This finding came up during our heuristics evaluation and was validated during our usability testing when 2 of our 5 users did not discover the search filters. Additionally, the remaining three users who did discover the filters found them difficult to work with. There is a long drop down list of filters with more than 50 entries that is difficult to navigate through. Some users gave up after looking at the long list of filters because they did not find the relevant filter. The filters themselves are within an old fashioned search query that contains three fields. The second field has options like: “is”, “contains”, “is blank.” Other users spent time scrolling through the long list to find the filter they required and wrote a search query which frustrated them.
Make filters within search more apparent. Changing the hierarchy and positioning of the search bar and the “Advanced” button can help achieve this. We also suggest that the Advanced button must be renamed “Filters” or “Advanced Search” to make it more apparent that there are filters associated with the Search.
The filters should also be categorized so that they are easy to scan and use. The less frequently used categories can be grouped together as “More Filters” and must be made available to enhance the flexibility of use.
This finding overlapped in our needs assessment and usability evaluation phase. The user interface copy which comprises field labels and other text on the interface lacks clarity. 38.1% of our survey correspondents who had been using Coupa for more than 6 months mentioned that they do not understand meaning of certain fields.
Additionally, during our usability testing all our five users were confused about the “Billing” field and didn’t know whether they had to specify billing address, name, or amount. Another field that three of our users struggled with was “Invoice Control Total”.Users did not know if they had to enter billing address, name, or amount.
Make field labels more specific. Adding tooltips to explain complex fields may also help. Novice users of enterprise softwares have different needs than the experienced users and might greatly benefit with the guidance that tool tips or “learn more” sections. This will also reduce the workload on the customer support team. Another recommendation is to add examples and hints for filling these fields. This also prevents users running into errors later and increases efficiency. The fields should only allow users to enter certain types and formats of input. For instance, if “Billing” field stands for billing date, then only data in a date format should be allowed.
As next steps, we would suggest reaching out to wider audience to validate our findings. We also recommend that suppliers be included as part of the study to understand their problems as they are a significant proportion of Coupa’s user base. Further needs assessment and usability evaluation on the supplier side would bring meaningful value to Coupa.
Through needs assessment and usability evaluation methods, we developed valuable insights regarding user needs and pain points in the invoice management platform. The research helped us give clear recommendations to Coupa to become a leader in the invoice management domain.


sureroute test object
SureRoute for Performance chooses the fastest path to the origin to ensure that your site is continuously accessible and that uncacheable content is delivered to end users with optimal performance


| getSymbols.yahoo {quantmod} | R Documentation |
Downloads Symbols
to specified env
from ‘finance.yahoo.com’. This method is
not to be called directly, instead a call to
getSymbols(Symbols,src='yahoo')
will in
turn call this method. It is documented for the
sole purpose of highlighting the arguments
accepted, and to serve as a guide to creating
additional getSymbols ‘methods’.
getSymbols.yahoo(Symbols, env, return.class = 'xts', index.class = 'Date', from = "2007-01-01", to = Sys.Date(), ..., periodicity = "daily", curl.options = list())
Symbols |
a character vector specifying the names of each symbol to be loaded |
env |
where to create objects. (.GlobalEnv) |
return.class |
class of returned object |
index.class |
class of returned object index (xts only) |
from |
Retrieve data no earlier than this date. (2007-01-01) |
to |
Retrieve data through this date (Sys.Date()) |
... |
additional parameters |
periodicity |
periodicity of data to query and return. Must be one of "daily", "weekly", "monthly". ("daily") |
curl.options |
options passed to |
Meant to be called internally by getSymbols
(see also).
One of a few currently defined methods for loading data for use with quantmod. Essentially a simple wrapper to the underlying Yahoo! finance site's historical data download.
A call to getSymbols.yahoo will load into the specified
environment one object for each
Symbol
specified, with class defined
by return.class
. Presently this may be ts
,
zoo
, xts
, or timeSeries
.
In the case of xts objects, the indexing will be by Date. This
can be altered with the index.class
argument. See
indexClass
for more information on changing index classes.
As of quantmod 0.4-9, getSymbols.yahoo
has been patched to
work with changes to Yahoo Finance, which also included the following
changes to the raw data:
The adjusted close column appears to no longer include dividend adjustments
The close column appears to be adjusted for splits twice
The open, high, and low columns are adjusted for splits, and
The raw data may contain missing values.
Jeffrey A. Ryan
Yahoo Finance: https://finance.yahoo.com
## Not run: # All 3 getSymbols calls return the same # MSFT to the global environment # The last example is what NOT to do! ## Method #1 getSymbols('MSFT',src='yahoo') ## Method #2 setDefaults(getSymbols,src='yahoo') # OR setSymbolLookup(MSFT='yahoo') getSymbols('MSFT') ######################################### ## NOT RECOMMENDED!!! ######################################### ## Method #3 getSymbols.yahoo('MSFT',env=globalenv()) ## End(Not run)


| ZOLTAN_ID_PTR
ZOLTAN_MALLOC_GID(struct Zoltan_Struct
*zz); |
Allocates and returns a pointer to a single global ID. |
| ZOLTAN_ID_PTR
ZOLTAN_MALLOC_LID(struct Zoltan_Struct
*zz); |
Allocates and returns a pointer to a single local ID. |
| ZOLTAN_ID_PTR
ZOLTAN_MALLOC_GID_ARRAY(struct Zoltan_Struct
*zz, int n); |
Allocates and returns a pointer to an array of n global IDs,
where the index into the array for the ith global ID
is i*NUM_GID_ENTRIES. |
| ZOLTAN_ID_PTR
ZOLTAN_MALLOC_LID_ARRAY(struct Zoltan_Struct
*zz, int n); |
Allocates and returns a pointer to an array of n local IDs,
where the index into the array for the ith local ID is
i*NUM_LID_ENTRIES. |
| ZOLTAN_ID_PTR
ZOLTAN_REALLOC_GID_ARRAY(struct Zoltan_Struct
*zz, ZOLTAN_ID_PTR
ptr, int n); |
Reallocates and returns a pointer to an array of n global IDs,
replacing the current array pointed to by ptr. |
| ZOLTAN_ID_PTR
ZOLTAN_REALLOC_LID_ARRAY(struct Zoltan_Struct
*zz, ZOLTAN_ID_PTR
ptr, int n); |
Reallocates and returns a pointer to an array of n local IDs,
replacing the current array pointed to by ptr. |
| void ZOLTAN_INIT_GID(struct Zoltan_Struct
*zz, ZOLTAN_ID_PTR id); |
Initializes all entries of the global ID id to zero; id
must be allocated before calling ZOLTAN_INIT_GID. |
| void ZOLTAN_INIT_LID(struct Zoltan_Struct
*zz, ZOLTAN_ID_PTR id); |
Initializes all entries of the local ID id to zero; id
must be allocated before calling ZOLTAN_INIT_LID. |
| void ZOLTAN_SET_GID(struct Zoltan_Struct
*zz, ZOLTAN_ID_PTR tgt,
ZOLTAN_ID_PTR
src); |
Copies the global ID src into the global ID tgt.
Both src and tgt must be allocated before calling ZOLTAN_SET_LID. |
| void ZOLTAN_SET_LID(struct Zoltan_Struct
*zz, ZOLTAN_ID_PTR tgt,
ZOLTAN_ID_PTR
src); |
Copies the local ID src into the local ID tgt.
Both src and tgt must be allocated before calling ZOLTAN_SET_LID. |
| int ZOLTAN_EQ_GID(struct Zoltan_Struct
*zz, ZOLTAN_ID_PTR a,
ZOLTAN_ID_PTR
b); |
Returns TRUE if global ID a is equal to global ID b. |
| void ZOLTAN_PRINT_GID(struct Zoltan_Struct
*zz, ZOLTAN_ID_PTR id); |
Prints all entries of a single global ID id. |
| void ZOLTAN_PRINT_LID(struct Zoltan_Struct
*zz, ZOLTAN_ID_PTR id); |
Prints all entries of a single local ID id. |


History of the Internet
The Internets existence is rather young, only being around for a little less than half-a-century.
And it all started with a group of bright scientists.
Around the late 1960s to early 70s, bright computer scientists, such as Robert E. Kahn and Vint Cerf, managed to invent the very first interconnected network, ARPANET. From there on, they began creating and using new forms to transmit data more efficiently and safely, such as the TCP/IP, and thus leading to quick advancements to this interconnected band of networks.
The World Wide Web was not far ahead either, being created by Tim Berners-Lee only 20 years later around 1990. The World Wide Web made accessing the internet much more common to the public, and because of this, allowed the WWW along with the internet itself to nearly explode in popularity. Thanks to websites, hyperlinks, and URLs, the World Wide Web provided a significant boost to the internet. Without it, the internet and the consumer would most likely be in an extremely different place.


Like to play and cudle with pets but can't keep one at home?
 Great with kids.


public class Tile
extends java.awt.Point
| Modifier and Type | Field and Description |
|---|---|
int |
f
The file or column of the square.
|
char |
r
The rank or row of the square.
|
static int |
SHOGI_NOTATION
The typical shogi notation, where 9i is at the bottom left
and 1a is at the top right.
|
static int |
XY_NOTATION
The notation used by the GameState class, where 00
is at the bottom left and 88 is at the top right.
|
| Constructor and Description |
|---|
Tile(char xOrFile,
char yOrRank)
Constructs a new Tile of the given location.
|
Tile(int file,
char rank)
Constructs a new Tile of the given location.
|
Tile(int x,
int y)
Constructs a new Tile of the given location.
|
Tile(java.awt.Point p)
Constructs a new Tile of the given location.
|
Tile(java.lang.String sq)
Constructs a new Tile of the given location.
|
| Modifier and Type | Method and Description |
|---|---|
void |
determineOther(int file,
char rank)
Accepts shogi standard notation coordinates.
|
void |
determineOther(int x,
int y)
Accepts GameState xy notation coordinates.
|
java.lang.String |
getCode()
Returns a 2 character String representation
of the coordinates of this tile.
|
java.lang.String |
getCode(int format)
Returns the 2 character String representation
of the coordinates of this tile with the given
notation format.
|
int |
getFile()
Returns the column of the tile.
|
char |
getRank()
Returns the row of the tile.
|
boolean |
isValid()
Calculates whether this tile is on
the 9x9 shogi board.
|
void |
move(int x,
int y)
Sets the location of this tile to the
given GameState XY coordinates.
|
void |
setLocation(int x,
int y)
Sets the location of this tile to the
given GameState XY coordinates.
|
void |
setLocation(java.awt.Point p)
Sets the location of this tile to the
given GameState XY coordinates.
|
void |
translate(int dx,
int dy)
Translates this point, at location (x,y),
by dx along the x axis and dy along the y axis
so that it now represents the point (x+dx,y+dy).
|
public static final int XY_NOTATION
public static final int SHOGI_NOTATION
public int f
public char r
public Tile(java.awt.Point p)
p
- the GameState coordinates of the tilepublic Tile(java.lang.String sq)
sq
- the coordinates of the tilepublic Tile(char xOrFile, char yOrRank)
xOrFile
- the x coordinate of the tileyOrRank
- the y coordinate of the tilepublic Tile(int file, char rank)
file
- the column of the tilerank
- the row of the tilepublic Tile(int x, int y)
x
- the x coordinate of the tiley
- the y coordinate of the tilepublic void determineOther(int file, char rank)
file
- the column of the tilerank
- the row of the tilepublic void determineOther(int x, int y)
x
- the column of the tiley
- the row of the tilepublic boolean isValid()
public int getFile()
public char getRank()
public java.lang.String getCode()
public java.lang.String getCode(int format)
format
- the format of the coordinatespublic void move(int x, int y)
move
in class java.awt.Point
x
- the new x coordinatey
- the new y coordinatepublic void setLocation(int x, int y)
setLocation
in class java.awt.Point
x
- the new x coordinatey
- the new y coordinatepublic void setLocation(java.awt.Point p)
setLocation
in class java.awt.Point
p
- the new x,y coordinatespublic void translate(int dx, int dy)
translate
in class java.awt.Point
dx
- the distance to move this point along the X axisdy
- the distance to move this point along the Y axis


Add a new city!
City
Min Customers
Max Customers
Average Cookie Sale
Get Global totals
Return to default
Main Page


Quote it using the form!
Please enter author's name
Please enter quote
Please enter Your name
Please enter another quote
Date is required


Hundreds of genomic analysis tools available from within a notebook, no programming required
Executable notebooks based on and compatible with Jupyter Notebooks, accessible through a browser, no installation required
Browse a collection of genomic and machine learning notebooks and adapt them for your own use
Ensure reproducibility of your methods by adding a link to your notebook in a publication
Reich et al. The GenePattern Notebook Environment. Cell Systems. 2017(5):149-51
GenePattern Notebook is developed in the lab of Jill Mesirov at University of California, San Diego


index
|
Previous results
|
Next results
Project: npn13g2v_VBIC_Q118
Results Reverse Characteristics
Reverse Gummel - VEC=0(0)0V
Reverse Output IE(VEC) - VBC=0(0)0V


Particles used with verbs
The direct object 「を」particle
The 「を」particle is attached to the end of a word to signify that that word is the direct object of the verb.
Examples
-
魚を食べる。
Eat fish.
-
ジュースを飲んだ。
Drank juice.
Places can also be the direct object of motion verbs such as 「歩く」and「走る」.
-
街をぶらぶら歩く。
Aimlessly walk through town. (lit: Aimlessly walk town.)
-
高速道路を走る。
Run through expressway. (lit: Run expressway.)
When you use 「する」with a noun the 「を」particle is optional and you can treat the whole 「noun+する」as one verb.
-
毎日、日本語を勉強する。
Study Japanese everyday.
-
メールアドレスを登録した。
Registered email address.
The target 「に」particle
The 「に」particle can specify the target of a verb.
Examples
-
ボブは日本に行った。
Bob went to Japan.
-
家に帰らない。
Not go back home.
-
部屋に来る。
Come to room.
The target particle always targets "to" rather than "from". 「から」can be used to say "come from". 「から」is often paired with 「まで」which means "up to".
-
アリスは、アメリカから来た。
Alice came from America.
-
宿題を今日から明日までする。
Will do homework from today to tomorrow.
The idea of target in Japanese is not restricted to motion verbs.
-
猫は部屋にいる。
Cat is in room.
-
いすが台所にあった。
Chair was in the kitchen.
-
いい友達に会った。
Met good friend.
-
ジムは医者になる。
Jim will become a doctor.
-
先週に図書館に行った。
Went to library last week.
The use of the 「に」particle is optional with time but causes a slight difference in meaning. In the following examples, the target particle makes the date a specific target emphasizing that the friend will go to Japan at that time. Without the particle, there is no special emphasis.
-
友達は、来年、日本に行く。
Next year, friend go to Japan.
-
友達は、来年に日本に行く。
Friend go to Japan next year.
The directional 「へ」particle
While the 「に」particle goes to a target as the final, intended destination (both physical and abstract), the 「へ」particle is used to express the fact that one is setting out towards the direction of the target.
This particle is only used with directional motion verbs.
It does not guarantee whether the target will reach the final intended destination, only that it is heading towards that direction.
Examples
-
ボブは日本へ行った。
Bob headed towards Japan.
-
家へ帰らない。
Not go home toward house.
-
部屋へ来る。
Come towards room.
We cannot use the 「へ」particle with verbs that have no physical direction. However, it can be used to talk about setting out towards certain future goals and expectations.
-
勝ちへ向かう。
Go towards victory.
The contextual 「で」particle
The 「で」particle specifies the context in which the action is performed.
Examples
-
映画館で見た。
Saw at movie theatre.
-
バスで帰る。
Go home by bus.
-
レストランで昼ご飯を食べた。
Ate lunch at restaurant.
Using 「で」with 「何」
The word for "what" (「何」) is usually read as 「なに」but sometimes it is read as 「なん」. In these examples it is read 「なにで」.
-
何できた？
Came by the way of what?
-
バスできた。
Came by the way of bus.
However, there is a colloquial version of the word "why" that is used much more often than the less colloquial version 「どうして」or the more forceful 「なぜ」. It is also written as 「何で」but is read as 「なんで」. This is a completely separate word and nothing to do with the 「で」particle.
-
何できた？
Why did you come?
-
暇だから。
Because I am free (as in have nothing to do).
The 「から」here meaning "because" is different from the 「から」is the previous section and will be covered later.
When location is the topic
When the location of an action is also the topic of a sentence you can attach the topic particle 「は」and 「も」to the three particles that indicate location (「に」,「へ」,「で」).
Examples
ボブ：学校に行った？
Bob: (Did you) go to school?
アリス：行かなかった。
Alice: Didn't go.
ボブ：図書館には？
Bob: What about library?
アリス：図書館にも行かなかった。
Alice: Also didn't go to library.
ボブ：どこで食べる？
Bob: Eat where?
アリス：イタリアレストランではどう？
Alice: How about Italian restaurant?
When direct object is the topic
The direct object particle is different from particles related to location in that you cannot use any other particles at the same time.
Examples
-
日本語を習う。
Learn Japanese.
-
日本語は、習う。
About Japanese, (will) learn it.


We have a lot of fun and educational activities planned for you.
We hope you enjoy your time here at Camp Comfy.
Search Flickr


We give you the most thrilling African experiences! The wildlife, the wonders of nature, the culture, the adventure of a lifetime!
Our African Safari Packages take you to some of the most beautiful places on earth, Victoria Falls, Zimbabwe and Cape Town, South Africa. Your adventure includes photo safari game drives, exhilarating excursions, scenic views, culture, food, and shopping that will delight.
Destinations


About the Cache Valley Simulator
Can we balance human needs with environmental health?
Around the world, human activities are resulting in unprecedented environmental change. And as the human population continues to grow, we are often presented with the difficult challenge of addressing human needs while minimizing environmental impact. With each decision, it is often hard to imagine the big picture of environmental change, how our impacts compound over time, and to what extent can we undo damage that is already done.
With these challenges in mind (and a desire to learn JavaScript!) the USU Nerd Herd generated a game that simulates the environmental impacts of resource and land use decisions. Our game asks the user to respond to eight crises, ranging from energy and housing to water and air quality needs, by choosing among prescribed management options. It then simulates the environmental impacts of each action taken, and presents the user with the next challenge and corresponding options. Because the impacts compound across the landscape with each successive action, the user can see how environmental impacts accumulate and whether they can be undone.
While this game focuses on general needs with corresponding options and impacts, we recognize that human needs and solutions are often highly place-based. Therefore, our group has also generated resources with which instructors and students can make their own games by replacing the current scenarios with local needs and response options. It is our hope that this resource will help students explore the difficulty of balancing human needs use with environmental health to generate a big picture perspective on resource use decisionmaking.


ABOUT
It’s Vintage is a pop up shop based in Metro Manila that offers one-of-a-kind vintage pieces sourced from all over the world. Each item is handpicked by owner Fed Pua, who’s always had an affinity for the antiquated. His old soul longs for a time when people dressed up to stand out. In the age of overnight trends and fast fashion, It’s Vintage is looking to bring individuality and sustainability back to personal style.
It’s estimated that on average, a piece of clothing is only worn about seven times before it’s discarded. Stockpiled from the deepest ends of thrift shops, personal collections and flea markets, these timeless treasures preserve the world of yesterday and the planet of tomorrow.
In an industry ruled by transience, It’s Vintage is the place to discover something that lasts, taking you back to a time when every piece of clothing meant something special. It’s Vintage is for the city dwellers, the hard workers, the sleepless creatives, the fresh faces, the go-getters, the dream chasers. It’s for you, whoever you are. Our diverse assortment is yours to explore.
“Where did you get it?” Every piece has a story tell.


01
EcoClean
Developed an app using Flutter to help municipality ineffective garbage collection and encourage people to keep their surroundings clean. Helps in optimizing garbage collection routes using IoT sensors and ML.
Read MoreDeveloped an app using Flutter to help municipality ineffective garbage collection and encourage people to keep their surroundings clean. Helps in optimizing garbage collection routes using IoT sensors and ML.
Read MoreAn indoor navigation system using BLE(Bluetooth Low Energy) and Flutter App to help people easily navigate around large buildings like malls, government offices, colleges, hospitals, etc.
Read MoreImplementation of the basic Blockchain concept using C programming language aimed to improve knowledge and understanding of the technology and the language. Cutom hashing algorithm is used to generate hashes.
Read More


kbchan2792 wrote:Incredibly disappointed there's lack of Indian servers. Update on their availability?
juress wrote:Until then, there won't be any Indian servers.
ORFK wrote:juress wrote:Until then, there won't be any Indian servers.
and is that a problem? there are so many other servers on the world with have good connection, to india too. and i think DICE have a good reason why they have stopped the selling rights.


{% extends "base.html" %} {% block title %} {% if section != '' %} RMG Solvation {{ section|title }} {% else %} RMG Solvation Database {% endif %} {% endblock %} {% block extrahead %}{% endblock %} {% block navbar_items %}
For details on the solute and solvent descriptors and solvation groups, please refer to Solvation Thermochemistry in documentation.
{% if section == '' %}


Tunisia: Habib Jemli tasked with forming a new government
The 60-year-old former junior minister has two months to establish a coalition out of a fractured Parliament.
Tunisia's recently elected President Kais Saied has tasked agricultural engineer Habib Jemli with forming a government after the Ennahdha party nominated him for the prime minister's job.
After the announcement on Friday, Jemli said cabinet members will be chosen on "their competence and integrity, regardless of their political affiliation", in a video posted on the presidency's Facebook page.
More:
Jemli, who described himself as an independent, served as a junior minister in the first Ennahda-led government formed in late 2011 after the fall of longtime ruler Zine El Abidine Ben Ali to a pro-democracy uprising.
The 60-year-old has two months to form a coalition out of a deeply fractured Parliament in which Ennahdha, as the largest party, took only a quarter of the seats in last month's election. In case Jemli fails, Saied will nominate another prime minister.
Tunisia's new Parliament on Wednesday elected Ennahdha's Rached Ghannouchi as its speaker after the rival Heart of Tunisia party backed him, opening the way for a possible coalition government between them.
Any new government will need the support of at least two other parties to command even the minimum parliamentary majority of 109 seats needed to pass legislation.
'I hope this will be a new start'
Analysts say the new government will need clear political will and strong backing in Parliament to push through economic reforms started by the outgoing prime minister, Youssef Chahed, who is acting as caretaker during coalition talks.
Chahed's cabinet has focused on spending cuts backed by the IMF to bring Tunisia's hefty deficit and public debt under control while raising spending on security to woo back tourists to the country.
Economic challenges - unemployment of 15 percent nationally and 30 percent in some cities, inflation of nearly seven percent and a weak dinar - have plagued Tunisia since its 2011 revolution, which spawned democracy and sparked the "Arab Spring" that swept across the region.
Those problems, alongside deteriorating public services and a public perception of widespread government corruption, drove voters to reject the political establishment in this autumn's presidential and parliamentary elections.
"I hope that it will be a new start. After we completed democratic transition, the focus will be on development, fighting against corruption, unemployment and high prices," Ghannouchi said on Friday.


A simple static approach. Copy the file, inject a window.addEventListener('error', someFunc) call, where someFunc is a function that returns parsable code.
If this works, then with any luck, we can proxy over HTTP(S).


Arithmetic Operations On two operands
Operand 1:
Operand 2:
Addition
Subtraction
Multiplication
Division


| Cholesterol | 175 mg/dL | Upto 200 is ok. But Michael Greger says, that only upto 150 is ok. | |
| Triglycerides | 83 mg/dL | Upto 150 is ok | |
| HDL | 44 mg/dL | 40-60 is normal. Closer to 60 is better. | |
| LDL | 124 mg/dL | Less than 100 is optimal, 100-130 is near optimal. Less than 80 is super. Hunter gather socities have it between 50 and 75. | LDL carries insoluble cholesterol to tissues which need cholestorol (via blood). Excess of it gets deposited in arteries, get oxidised and damager the arteries. |
| VLDL | 17 mg/dL | Less than 20 is desriable | |
| CHOL/HDL Ratio | 4.0 | Cardiac risk factor is low for <3.5, and below average risk for 3.5 to 4.5. |
So, I need to reduce cholesterol and increase HDL.
| Cholesterol | 163 mg/dL | Good work in getting it down. |
| Triglycerides | 95 mg/dL | Some increase. |
| HDL | 53 mg/dL | Increased close to optimum value |
| LDL | 91 mg/dL | Drastic improvement |
| VLDL | 19 mg/dL | Some increase |
| CHOL/HDL Ratio | 3.1 | Very good improvement |
Plan: Keep running + working out and eat healthier fats to decrease cholesterol and LDL further and also get VLDL down.
Between 2017 and 2019, osteporosis seems to have worsened. Doctor has asked to:
Since vitamin D and vitamin B12 levels are okay, and I don't smoke or drink, doctor is surprised what is the reason behind osteoporosis at this age.
We need 1000 mg calcium per day.
Plan: Take 1000mg calcium everyday, show to an orthopedic, get calcium test done.
They call it "hepatic cyst". Two cysts were found in liver in Sep 2019. Consulting doctor asked to consult a gastro doctor. Internet search tells cyst is small in size and doctors usually suggest a wait and watch approach. I'll not approach any doctor and will get a scan done in 6 months and see what comes out.
Small polyps are seen in Sep 2019. This is new development. Not to worry since in worst case gall bladder can be removed.


TapBlock
width:
-
XX
+
height:
-
XX
+
colors:
-
XX
+
With these settings…
Games completed / total:
#
Average play time:
#
Best score:
#
Average score:
#
Start
Game Over
TAPPED OUT!
Restart


--- layout: default title: Shashwat Nayak, My first Page ---
I'm trying to make a new Page Don't follow me yet. Read more about me


Installation¶
Install with Pip¶
Pip is the package management system for Python, this is the recommend installation method.
>>> pip install clusterweb
If you don’t have root access to the required files pip uses to install a package, such as if you are a non-admin user on a cluster, use the –user flag.
>>> pip install --user clusterweb
Install with Conda¶
Conda is another package management system, but also includes environment control and is the preferred method for when dealing with conda environments.
>>> conda install clusterweb
Install from Source¶
>>> git clone https://github.com/gndctrl2mjrtm/cweb-project.git
>>> cd cweb-project
>>> pip install -r requirements.txt
>>> pip install -e .


Al Pacino Net Worth
by Peace FM OnlineAlfredo “Al” James Pacino is an American actor and filmmaker from New York City.
Pacino has had a career spanning over five decades, during which time he has received numerous honors and accolades. Pacino is also one of few actors to have won an Oscar, an Emmy, and a Tony Award for acting.
As of 2019, Al Pacino’s net worth is approximately $165 million dollars, making him one of the richest and most popular film icons in the movie industry.
Featured Video


Create a new version of this plan, allowing multiple different versions of the Plan to be managed at the same time.


Interfaces
This section is for setting up the user interfaces generated by BeoLiving Intelligence.
The main features that can be configured are:
- The subset of resources and macros that appear for each zone.
- Virtual resources, which provide a friendly way for interacting with some systems.
- Sources and features of A/V products.
- Lists of favorite channels and radio stations.
- Access to IP cameras in the home.
- Users which can access the system, and access restrictions.
The user interfaces generated from this configuration can be accessed in several ways:
- On mobile devices via BeoLiving App.
- On the Web Panel, using any web browser.
- On Bang & Olufsen NetworkLink TVs.
- On externalcontrollers interfacing with BeoLiving Intelligence via the Home Integration Protocol.
Synchronizing BeoLiving App: BeoLiving App will automatically update its user interface to reflect changes in the saved configuration. This means that BeoLiving App will not reflect configuration changes in real time, but will update as soon as a configuration is saved.
User management
Installer (admin)
There is always a user called admin
which is reserved for the
installer. The admin
user has access for setting up BeoLiving Intelligence,
and also for accessing all zones via web or mobile interfaces.
Only the password for admin can be changed here.
End users
Other users may be defined to allow acces to user interfaces for the home owners, kids, etc.
The options for end users are:
- User management access, when selected, allows this user to add or edit other users. This option should be set for the home owner, but not for the kids or guests.
- Controller should normally be selected, and allows the user to acces BeoLiving Intelligence via mobile devices (BeoLiving App). When disabled, the only access for that user is via the web panel.
- Zone access provides a list of zones which the user has access to. For example, kids should not have access via their mobile apps into the main bedroom.
Network cameras setup
In this section you can add the configuration for several network cameras.
The optional user name and password are used for basic HTTP authentication to the camera.
You must provide a base URL onto which all commands will be appended.
For example, http://<IP_ADDRESS>/axis-cgi/
.
You must then provide commands for obtaining video and images both in
high and low resolution. For example, mjpg/video.cgi
for the high
resolution video feed.
All commands will be appended to the base url provided.
Other optional commands can be provided for cameras with pan/tilt/zoom control.
Raw edit option
Entering all these fields into edit-boxes may be time consuming.
By pressing the Raw edit button, you are provided with a text representation of all the fields. Here you can copy/paste, or edit in your favorite text editor.
More important, you can copy all the text and then paste it when setting up other similar cameras.
Zone resource filtering
In this section, for each zone you can check and reorder the available resources that will be shown to the user.
You have the option to hide unneeded resources in order to reduce clutter. This is important for providing a good experience to the user. Remember that, in day-to-day use, easy access to a few functions is more desirable than accessing everything possible.
Options for buttons and macros
Macros and buttons, which are represented as buttons on the user interfaces, have further options:
- Compact will produce a half-width button. Two such buttons together will appear side by side.
- On camera view will also display this button / macro next to the
IP camera images in that zone. For example, you may want to have an
All lights ON
andAll lights OFF
macro available next to the video feed. - Confirm should be enabled for buttons which should not be pressed
accidentally (for example,
Vacation mode
, orShades down
). When selected, a confirmation is required from the user.
B&O products configuration
For each A/V product, there are some basic options, plus the list of sources you wish to present to the user.
Product options:
- Name: you can rename the product here.
- Address: uneditable product address.
- Force IP Address: sets product IP address (not recommended).
- Beo4 navigation: whether the product is set up for the old Beo4 navigation, or the new navigation with cursor keys and SELECT.
Sources
For each NetworkLink product, available sources are discovered and added automatically.
In case of inconsistencies in the source list, sources can be queried directly from the product
by clicking on the Force synchronization with product
button.
Hide sources you won’t be using in order to reduce clutter in the resulting user interfaces.
The information to provide for each source is the following:
- Source: This is the source type.
- Name: This is name of the discovered source.
- UI type: This is an indication to the mobile application on what type of user interface is needed for operating the product. Choose the type that most suits your specific source or set-top box.
- Favourites list: This allows to select one of the favourite lists defined in the Favourites section. If something other than “None” is selected, mobile applications will show a favourites button for this source allowing channel/station selection.
Favourites
This screen allows the definition of lists of favourite TV channels and radio stations. Favourite lists can then be associated to one or more sources.
The mobile application will show channel/station logos to the user for easy channel selection, based on the selected favourite list.
Favourite lists are identified by a name. This name will show up in the sources configuration section for each source.
For each favourite list a global delay and end command can be set that will affect each favourite command. The end command will be added at the end of each favourite command sequence and can be one of PLAY or SELECT. The global delay will be added between all digits (CIFFER) and between digits and the end command for each favourite command.
Also, a delay on source selection can be set. This delay that will be added before the first digit of each favorite command, but only if the source was effectively selected.
For each channel/station in a list, the following information should be provided:
- Caption: a short description for the favourite.
- Path: the full URL of the logo image to show. It must point to a valid image as mobile applications will use it periodically to retrieve the logo. It can be set manually or using the logo picker.
- Command: the command to be executed once the logo is selected in
mobile applications. Valid commands consist of one or more of the
following elements, separated by a plus sign (+), which can be
omitted in case of contiguous ciffers:
- The digits CIFFER_0 to CIFFER_9, optionally shortened as 0 to 9.
- Delay: Nms where N is a positive number indicating a delay in milliseconds.
- PLAY or SELECT ending the sequence.
- MENU.
- CNTL_REWIND, CNTL_WIND, CNTL_STEP_UP and CNTL_STEP_DW, optionally shortened as GREEN, YELLOW, BLUE and RED respectively.
For example:
CIFFER_1+Delay: 200ms+CIFFER_3+PLAY
, or using the abbreviated form:1+Delay: 200ms+3+PLAY
.12
, with the global delay set to 100ms and global end command set to SELECT, is the same as1+Delay: 100ms+2+Delay: 100ms+SELECT
without global settings.
Logo picker
The logo picker shows as a pop-up window for selecting logos from the B&O repository. It shows up by clicking the search button next to the path field or by clicking on the logo itself.
Available logos are shown in groups of 50. The most convenient way to
search for a channel is by using the filter. Typing a search string will
immediately restrict the channels displayed to only the matching
entries. For example, typing music
will show the channels that contain
the word “music” in its name.
Clicking on a logo will close the picker window and complete the path and command fields, and show the selected logo. The caption will be also updated except if it was edited explicitly: if the caption was empty, or it was the exact name from the previous selection, it will be updated with the name of the new selected channel; in other cases, the caption was edited and will be unmodified.
Note: The logo picker is only available if your browser has an Internet connection available. Also, the complete list of channels must be retrieved the first time; this may take some seconds on a slow connection.


DRIVING MISS DAISY A film review by Randy Parker Copyright 1996 Randy Parker
RATING: ***1/2 (out of ****)
(Review written in 1989)
DRIVING MISS DAISY takes its sweet time to tell a small, intimate story. It's a quiet film, a slow film, a deliberate film. But if you're patient with it, the movie offers innumerable rewards, such as a pair of self-assured performances by Morgan Freeman and Jessica Tandy.
DRIVING MISS DAISY is based on Alfred Uhry's Pulitzer-prize winning play of the same name, which first opened in New York four years ago. The play has garnered international acclaim with productions in Chicago, Los Angeles, London, Vienna, Norway, and the Soviet Union. Uhry himself wrote the screenplay for the film adaptation of DRIVING MISS DAISY; he also penned the wonderful sleeper, MYSTIC PIZZA.
 The movie relies on character, rather than plot, to propel the action. In fact, the movie has no discernible plot in the traditional sense; it doesn't present a linear story in which all the scenes flow together. Rather, DRIVING MISS DAISY is made up of the routine activities of everyday life: shopping, listening to the radio, visiting the cemetery, eating fried chicken, and so on. The film also incorporates into the story line actual events in Atlanta's history, including the 1958 bombing of The Temple (the city's oldest Jewish congregation) and a 1965 ceremony honoring the Reverend Dr. Martin Luther King, Jr.
The story begins in 1948 with Daisy (Tandy) crashing and wrecking her Packard as she pulls out of her driveway. The insurance company cancels her insurance, and her son, Boolie, decides to hire her a chauffeur. Freeman, reprising his role from the play, plays the chauffeur, Hoke. The film chronicles the warm friendship that slowly but surely blossoms between the chauffeur and his reluctant passenger. DRIVING MISS DAISY is a movie about human nature, aging, prejudice, and a great many other things, but more than anything it's about a relationship: one that spans 25 years, 4 cars, the advent of civil rights, and one gravely important 33 cent can of salmon.
Daisy is strong-willed and set in her ways, and, from the outset, she is utterly opposed to the idea of having a chauffeur. Initially, she treats Hoke with contempt, refusing to let him drive her anywhere. Once she does get in the car, Daisy is the ultimate back-seat driver. To make matters worse, she is extremely self-conscious about what others might think if they were to see her being escorted around town by a hired hand. Eventually, however, Daisy is worn down by Hoke's good-natured charm and infectious cheer; she softens and opens up to him.
Tandy plays the part of Daisy exceedingly well, but unfortunately this feisty, cantankerous character is just a smidgen too commonplace. We've seen this woman countless times before in other incarnations, from ON GOLDEN POND to COCOON. Nevertheless, Tandy manages to put enough of a personal stamp on the familiar character to make it her own.
Freeman, as Hoke, on the other hand, gives the more distinctive of the two performances. There is something profoundly moving about the way Hoke maintains his pride and dignity in a society which forbids him from using public rest rooms because of his skin color. Hoke is uneducated and illiterate, but Freeman always suggests that there is something more to this man, an inner strength beneath the simpleton exterior.
Both Freeman and Tandy seem to be in their element, in full command of their natural charisma. They flirt with the camera and dominate scenes without overtly calling attention to themselves. They bring a light touch to their humorous banter and to the movie's gentle humor. At the same time, Tandy and Freeman provide more than a few moments of truly poignant drama.
In his first dramatic role, Dan Aykroyd is surprisingly chubby and unexpectedly effective as Boolie, Tandy's loving and patient son. Drama seems to agree with Aykroyd; taking a break from comedy seems like a good move for the actor, especially when you consider the wretched comedies he has made recently (GHOSTBUSTERS II, THE GREAT OUTDOORS, MY STEPMOTHER IS AN ALIEN). The only other significant characters in the film are Daisy's housekeeper, Idella, marvelously played by Esther Rolle ("Good Times"), and Boolie's pretentious wife, played by Patti LuPone.
Under the direction of Bruce Beresford (CRIMES OF THE HEART, TENDER MERCIES), DRIVING MISS DAISY seems a bit stagey now and again. But fortunately, Beresford never forgets he's shooting a movie, and accordingly, he offers plenty of striking cinematic touches, such as gorgeous shots of flowers, trees, and tomatoes.
In adapting DRIVING MISS DAISY from the stage to the screen, the filmmakers have achieved a delicate subtlety. Uhry understands that what his characters do not say can be just as important as what they do say. Beresford wisely exercises restraint in the film's dramatic moments. The movie tugs at your heart, but it never goes for the jugular. The only sap in DRIVING MISS DAISY is in the trees.
----------- Randy Parker<EMAIL_ADDRESS>http://www.shoestring.org
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


◆ Camera()
| HornetEngine.Graphics.Camera.Camera |
( |
| ) |
|
The constructor of the camera
◆ RegisterScenePrimaryCamera()
| static void HornetEngine.Graphics.Camera.RegisterScenePrimaryCamera |
( |
Scene |
scene | ) |
|
|
static |
A function which can be used to register the primary camera
- Parameters
-
| scene | The scene from which the primary camera can be pulled |
◆ Rotate() [1/2]
| void HornetEngine.Graphics.Camera.Rotate |
( |
quat |
rotation_quat | ) |
|
Rotate the camera
- Parameters
-
| rotation_quat | The rotation quat used for the rotation |
◆ Rotate() [2/2]
| void HornetEngine.Graphics.Camera.Rotate |
( |
vec3 |
axis_angle, |
|
|
float |
degrees |
|
) |
| |
Rotate the camera
- Parameters
-
| axis_angle | The axis over which the camera should be rotated |
| degrees | The amount of degrees which the camera should be rotated |
◆ SetOrientation()
| void HornetEngine.Graphics.Camera.SetOrientation |
( |
float |
roll, |
|
|
float |
pitch, |
|
|
float |
yaw |
|
) |
| |
Sets the orientation
- Parameters
-
| roll | The roll used in the rotation |
| pitch | The pitch used in the rotation |
| yaw | The yaw used in the rotation |
◆ UpdateProjectionMatrix()
| void HornetEngine.Graphics.Camera.UpdateProjectionMatrix |
( |
| ) |
|
Update the projection matrix
◆ UpdateViewMatrix()
| void HornetEngine.Graphics.Camera.UpdateViewMatrix |
( |
| ) |
|
◆ Foreward
| vec3 HornetEngine.Graphics.Camera.Foreward |
|
get |
◆ FrameBuffer
The framebuffer of the camera
◆ Material
◆ Orientation
| quat HornetEngine.Graphics.Camera.Orientation |
|
getset |
Quaternion for describing the orientation of the camera; camera will always look at Z+ if orientation[0,0,0]
◆ Position
| vec3 HornetEngine.Graphics.Camera.Position |
|
getset |
The current position of the camera
◆ Primary
| Camera HornetEngine.Graphics.Camera.Primary |
|
staticget |
◆ ProjectionMatrix
| mat4 HornetEngine.Graphics.Camera.ProjectionMatrix |
|
get |
◆ Render_plane
◆ Right
| vec3 HornetEngine.Graphics.Camera.Right |
|
get |
◆ Rotation
| vec3 HornetEngine.Graphics.Camera.Rotation |
|
get |
The current Rotation in degrees
◆ Target
| vec3 HornetEngine.Graphics.Camera.Target |
|
get |
◆ Up
| vec3 HornetEngine.Graphics.Camera.Up |
|
get |
◆ ViewMatrix
| mat4 HornetEngine.Graphics.Camera.ViewMatrix |
|
get |
◆ ViewSettings
The documentation for this class was generated from the following file:


Chheng has a new weapon in the battle against poachers: Protection Assistant for Wildlife Security (PAWS), predictive AI software that crunches massive amounts of data and leverages machine learning to suggest the most effective patrol routes.
Two generations ago, this was a remote corner of the Ho Chi Minh Trail in eastern Cambodia. Now, on this steamy February morning, Chheng leads his team into Srepok Wildlife Sanctuary for another long, exhausting and potentially dangerous day. Clad in camouflage green, Chheng leads seven rangers who fall into formation behind him. They walk single file. Their stoic faces betray a mixture of determination and slight fear, their eyes constantly scanning for animal snares, footprints, bullet cartridges and motorbike tracks—telltale signs of poachers. Suddenly, the sound of a chainsaw in the distance shatters the silence.dis parturient montes Chheng's face tightens. Illegal loggers could mean poachers. Last year, poachers murdered four Cambodian rangers, and they have killed 10 over the past five years, according to Rohit Singh, a former ranger and president of Ranger Federation Asia, which oversees ranger training throughout Asia. In early February, illegal hunters shot and injured a Srepok ranger in a firefight. After his evacuation, poachers pumped his abandoned motorbike with 13 bullets. Chheng raises him arm for the rangers to stop, then opens his arms wide, a sign for them to spread out and deploy behind trees and desiccated stalks of grass. The rangers slowly advance.
The brainchild of Professor Milind Tambe, a USC Viterbi computer scientist and co-founder of the USC Center for Artificial Intelligence in Society (CAIS), PAWS uses algorithms to intelligently randomize ranger schedules to combat poaching by keeping the poachers off-balance, making it impossible for them to identify exploitable patrol patterns. Poachers have no idea when and where rangers will appear.
Through its integration with the Spatial Monitoring and Reporting Tool (SMART), PAWS could be introduced into about 100 wildlife sanctuaries in Africa and Asia by early next year, and 300 to 600 worldwide by the end of 2020, according to Jonathan Palmer, chief technology officer of the SMART partnership, a consortium of nine global conservation agencies including Wildlife Conservation Society (WCS), WWF and Panthera, and more than 60 governmental partners committed to improving the
SMART is a digital tracking tool that allows rangers to collect and manage patrol data, said Palmer, who also serves as executive director of strategic technology at WCS. Conservation agencies have successfully deployed it at natural reserves around the world, leveraging historical data to help rangers identify areas likely to attract illicit hunting and logging. Unlike PAWS, though, SMART cannot predict poaching hotspots. That's why the combination of SMART and PAWS should prove so powerful.


OAT High Availability Deployment
Table of Contents
SSH Password-less Connection between Hosts
Deploy the Web Applications with Load Balancers
Enable the Haproxy ports in Firewalld
Deploy the Web Applications with HA & Load Balancer
Deploy Mariadb and Galera Replicator
Galera Configuration with Three-node Cluster
Configure Mariadb with HA & Load Balancers
In this guide, we will provide you with the complete deployment process of the OAT HA (high availability) solution. In this solution, we are using HAProxy to construct a highly available and scalable web cluster with two load balancers, two web servers and three Mysql servers. In addition, Keepalived, a framework for server failover, is also included to avoid the single point of failure (SNOF). The detailed topology is described in the following figure.
A minimum of three servers are required for this implementation. The deployment environment has been validated in Ubuntu 14.04.1, Fedora 20, RHEL 7 and SLES 12. This guide is intended for Red Hat Enterprise Linux 7.
Edit /etc/hosts and match the host name with its IP address in the cluster. Make sure the connectivity among hosts.
Create the ssh key pair with ssh-keygen and paste the public key to the $HOME/.ssh/authorized_keys file of the target server and vice versa.
HAProxy is renowned for one of the most popular load balancing and proxying solution. In our deployment, HAProxy is used to balance the load of the two web applications.
To install haproxy:
# yum install 每y haproxy
# chkconfig haproxy on
# setsebool -P haproxy_connect_any on
If you failed to set the selinux policy and got the error ※Boolean haproxy_connect_any is not defined§, then update your selinux policy by the following command:
# yum update selinux-policy
Backup the original haproxy configuration.
# mv /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy_backup.cfg
# vim /etc/haproxy/haproxy.cfg
Create a new one with the following settings:
global
maxconn 4096
user haproxy
group haproxy
log <IP_ADDRESS> local1 debug
daemon
defaults
log global
mode http
option dontlognull
retries 3
option redispatch
maxconn 2000
contimeout 5000
clitimeout 50000
srvtimeout 50000
frontend http-in
mode http
option httplog
bind *:442
reqadd X-Forwarded-Proto:\ http
acl is_whitelist path_beg -i /WhiteListPortal
use_backend whitelist_portal if is_whitelist
default_backend trust_dashboard_portal
backend trust_dashboard_portal
mode http
balance roundrobin
option httpchk HEAD /TrustDashBoard/login.htm HTTP/1.1\r\nHost:\ *:8080
option forwardfor
cookie LSW_WEB insert
option httpclose
server <lb1 hostname> <lb1 IP>:8080 cookie LSW_WEB01 check
server <lb2 hostname> <lb2 IP>:8080 cookie LSW_WEB02 check
backend whitelist_portal
mode http
balance roundrobin
option httpchk HEAD /WhiteListPortal HTTP/1.1\r\nHost:\ *:8080
option forwardfor
cookie LSW_WEB insert
option httpclose
server <lb1 hostname> <lb1 IP>:8080 cookie LSW_WEB01 check
server <lb2 hostname> <lb2 IP>:8080 cookie LSW_WEB02 check
frontend https-in
bind *:443
mode tcp
option tcplog
acl is_att path_beg -i /AttestationService
acl is_his path_beg -i /HisPrivacyCAWebServices2
use_backend Att-https if is_att
use_backend His-https if is_his
default_backend WLM-https
backend WLM-https
mode tcp
balance roundrobin
option tcplog
option httpchk HEAD /WLMService HTTP/1.1\r\nHost:\ *:8181
option ssl-hello-chk
server <lb1 hostname> <lb1 IP>:8181 check
server <lb2 hostname> <lb2 IP>:8181 check
backend Att-https
mode tcp
balance roundrobin
option tcplog
option httpchk HEAD /AttestationService HTTP/1.1\r\nHost:\ *:8181
option ssl-hello-chk
server <lb1 hostname> <lb1 IP>:8181 check
server <lb2 hostname> <lb2 IP>:8181 check
backend His-https
mode tcp
balance roundrobin
option tcplog
option httpchk HEAD /HisPrivacyCAWebServices2/hisPrivacyCAWebService2?wsdl HTTP/1.1\r\nHost:\ *:8181
option ssl-hello-chk
server <lb1 hostname> <lb1 IP>:8181 check
server <lb2 hostname> <lb2 IP>:8181 check
listen stats *:9000
stats enable
stats uri /
stats hide-version
stats realm OAT\ Haproxy
stats auth admin:<admin pwd>
Replace the contents in the angle brackets with the load balancer server hostname and IP.
Then, start HAProxy
# service haproxy start
Now you are able to access HAProxy＊s statistics page through the url http://<load balancer_hostname>:9000/ with username admin and password <admin password>
Redo the exact same steps to setup the other load balancer server.
In order to enable to HAProxy logging, there are some changes to make.
Create new configuration file.
# vim /etc/rsyslog.d/49-haproxy.conf
Paste the following setting in the /etc/rsyslog.d/49-haproxy.conf
$ModLoad imudp
$UDPServerAddress <IP_ADDRESS>
$UDPServerRun 514
local1.* -/var/log/haproxy_1.log
Then start the rsyslog service
# service rsyslog restart
And you are done. Check the HAProxy log in /var/log/haproxy*.log
Be sure to do the steps again on the other load balancer server.
Create the /etc/firewalld/services/haproxy.xml file and paste the following lines:
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>HAProxy</short>
<description>HAProxy load-balancer</description>
<port protocol="tcp" port="8181"/>
<port protocol="tcp" port="8080"/>
<port protocol="tcp" port="442"/>
<port protocol="tcp" port="443"/>
<port protocol="tcp" port="3307"/>
</service>
Assign correct SELinux context and file permissions to the haproxy.xml file:
# cd /etc/firewalld/services
# restorecon haproxy.xml
# chmod 640 haproxy.xml
Update the firewall configuration:
#
firewall-cmd --permanent --add-service=haproxy
# firewall-cmd --reload
To enable the virtual IP address we will use keepalived.
# yum install -y keepalived
# chkconfig keepalived on
Good, keepalived is now installed. If you want to enable mail alert, be sure to install sendmail.
Backup the original keepalived configuration.
# mv /etc/ keepalived/keepalived.conf /etc/ keepalived/keepalived.bak.conf
Now let＊s add the configuration for keepalived in the file /etc/keepalived/keepalived.conf.
global_defs {
notification_email {
<admin＊s email addr> # The email address for notification
}
notification_email_from <from email addr> # The from address for the notification
smtp_server <the mail server IP> # Specify the SMTP server address
smtp_connect_timeout 30
}
vrrp_script haproxy {
script "killall -0 haproxy"
interval 2
weight 2
}
vrrp_instance 50 {
virtual_router_id 50
advert_int 1
priority 101
state MASTER
interface eth0 # change to your network interface
smtp_alert # activate email notification, optional
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
<virtual IP> dev eth0 # The virtual IP address shared by the two load balancers. Do change eth0 to the actual network interface
}
track_script {
haproxy
}
}
Voila, let＊s save the configuration and start the service.
# service keepalived start
The next step is to install and configure keepalived on the second load balancer. Repeat the previous steps on the second server starting from keepalived installation. The only difference is the minor change in the configuration of keeplived. Be sure to make two setting changes.
From:
priority 101
state MASTER
To:
priority 100
state BACKUP
Mariadb/Galera is synchronous multi-master cluster for MariaDB/InnoDB database. Data committed on one server will be replicated across the whole cluster, which prevents the cluster from the SNOF.
If you already have Mariadb installed, remove the mariadb Server or its dependency
# yum remove mariadb-libs
Add a yum repo by pasting the following contents to file /etc/yum.repo.d/mariadb.repo
# MariaDB 5.5 RedHat repository list - created 2014-12-08 08:18 UTC
# http://mariadb.org/mariadb/repositories/
[mariadb] name = MariaDB
baseurl = http://yum.mariadb.org/5.5/rhel7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
Firstly, install the patched Mariadb
# yum install MariaDB-Galera-server MariaDB-client galera
Then, configure MariaDB Server, start the mariadb server on all nodes and run the command below to set the root password.
# service mysql start
# mysql_secure_installation
Repeat the same steps on the second and the third database server.
In OAT, one attestation server has its own set of endorsement certificate and PrivacyCA certificate generated upon server setup. In the HA implementation, there are two or more web applications to offload each other. However, only one set of certificates will be created and used in the cluster. Therefore, the certificate will be generated on one server and transferred to other servers hosting web applications.
Regarding how to install the OAT server, you may refer to the wiki (https://github.com/OpenAttestation/OpenAttestation/wiki ) to install all the necessary dependencies beforehand.
On the first server, download and compile the source code from git source (https://github.com/OpenAttestation/OpenAttestation) to $HOME folder
# git checkout v2.2
# cd $HOME/OpenAttestation/
# mvn clean install
# cd deploy
And redo it on the other oat web server.
# ./deploy_rhel_ha.sh 每mysql <mysql password> --ip <The virtual IP> --port <the oatserver port on load balancer> --mysql_port <the mysql port on load balancer>
Notice: the parameter port here is the oat server https port on the load balancer. It was set as 443 in /etc/haproxy/haproxy.cfg in our implementation.
On the second server:
# cd $HOME/ OpenAttestation/deploy
# ./deploy_rhel_ha .sh 每mysql <mysql password> --ip <The virtual IP> --port <the oatserver port on load balancer> --ha_master <the first server IP>
Here the ha_master is the IP/hostname of the first web server deployed.
 TO sst@'%' IDENTIFIED BY 'yourpass';"
# mysql -uroot 每p<password> mysql -e "GRANT ALL PRIVILEGES ON *.* TO 'sst'@'localhost' IDENTIFIED BY 'yourpass";
Remove user accounts with empty user names because they cause problems:
# mysql 每uroot 每p<password> mysql -e "DELETE FROM mysql.user WHERE user='';"
Then open the firewall port:
# firewall-cmd --permanent --add-port=3306/tcp
# firewall-cmd --permanent --add-port=4567/tcp
# firewall-cmd --permanent --add-port=4568/tcp
# firewall-cmd --permanent --add-port=4444/tcp
# firewall-cmd --reload
After that, let＊s begin the configuration:
Edit /etc/my.cnf.d/server.cnf, add the following content under [galera] section:
wsrep_provider=/usr/lib64/galera/libgalera_smm.so #it could be located in /usr/lib/galera/ libgalera_smm.so depends on the platform
wsrep_cluster_address=gcomm://
wsrep_node_address=<first db server IP>
wsrep_sst_method=rsync
wsrep_sst_auth=sst:<yourpass>
wsrep_cluster_name="my_wsrep_cluster"
binlog_format=row
wsrep_slave_threads=1
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
query_cache_size=0
Move onto the second server:
Edit /etc/my.cnf.d/server.cnf, add the following content under [galera] section:
wsrep_provider=/usr/lib64/galera/libgalera_smm.so #it could be located in /usr/lib/galera/ libgalera_smm.so depends on the platform
wsrep_cluster_address=gcomm://<first db server IP>
wsrep_node_address=<second db server IP>
wsrep_sst_method=rsync
wsrep_sst_auth=sst:<yourpass>
wsrep_cluster_name="my_wsrep_cluster"
binlog_format=row
wsrep_slave_threads=1
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
query_cache_size=0
OK, let＊s re-launch mariadb/mysql service to apply the settings.
# service mysql restart --wsrep-new-cluster
Then, restart the service on the second db server to let it join the cluster.
# service mysql restart
Now the configuration is done and the service is up. Let＊s check the wsrep status.
# mysql 每usst 每p<yourpass> -e "show status like 'wsrep%';" | egrep 'wsrep_ready|wsrep_cluster_size'
The result should look like this. If any of the return values does not match the result below, you will have to verify your configurations and restart MySQL.
wsrep_cluster_size 2
wsrep_ready ON
OK, now the galera cluster works. In order to avoid any split-brain situation, the cluster is recommended to have at least three nodes. So add one more database node into the cluster. Redo the same steps as the second node. The only difference is the setting listed below.
wsrep_cluster_address=gcomm://<second db server IP>
wsrep_node_address=<third db server IP>
Restart the mysql service on the third node:
# service mysql restart
It will automatically connect to the other node and will be a member of the cluster. After joined the cluster, check the size of the cluster and it should be 3 now.
# mysql 每u<username> 每p<password> -e "show status like 'wsrep%';" | grep ＆wsrep_cluster_size'
That＊s it! Check the replication by creating databases, tables and fields.
Important note: when your 3 node replication is setup, change the address of the node with this gcomm:// address by gcomm://<third db server IP>.
Tips: if you are able to setup mariadb galera cluster, you are able to find more detailed info in /var/lib/mysql/<FQDN>.err.
If you have the SELinux enabled in enforcing mode, the SELinux should be set up to allow galera.
The basic idea is to let the MariaDB Galera nodes run under permissive mode in order to get all possible operations (which SELinux would have otherwise denied) logged into the audit log and then create a policy module using allow2audit tool after carefully analyzing the ※denials§. This module can then be installed before enabling (enforcing) SELinux.
First of all, Install SELinux policy management tools
# yum install policycoreutils-python
Secondly, put SELinux in permissive mode on all the mariadb hosts
# setenforce 0
On Host 1:
Start the service (as the donor node), when SELinux is in permissive mode, it basically logs all the denial operations as warnings during service startup.
# service mysql restart
Wait for the joiner node Host 2 to join the cluster by restart the mariadb service on Host 2.
Stop the service on Host 1, edit /etc/my.cnf.d/server.cnf and replace gnome:// with gnome://<second host IP> and restart the service again to join the existing cluster (as the joiner node).
# service mysql restart
Once the node succeeds to join the cluster, let＊s capture the audit log and define a new policy.
# grep mysqld /var/log/audit/audit.log | audit2allow -M galera
# semodule -i galera.pp
Put the SELinux back to enforcing mode and restart the mariadb service again to verify the new policy.
# setenforce 1
On Host 2 and Host 3:
Follow the steps performed for Host 1. Note: the node will be started as the ※joiner node§ and would later become the ※donor§.
In the end, revert all the changes performed in order to collect audit logs in the configuration files.
For the time being, there are three database nodes. In OAT, one single entry point is needed to access the database. To avoid SNOF, a HAProxy is to set up on top of the existing Galera cluster.
Add the following configurations to the bottom of /etc/haproxy/haproxy.cfg. Redo this on the other load balancer server.
listen galera_cluster *:3307
mode tcp
balance roundrobin
option tcpka
option mysql-check user haproxy
server <db server1 hostname> <db server1 IP>:3306 check weight 1
server <db server2 hostname> <db server2 IP>:3306 check weight 1
server <db server3 hostname> <db server3 IP>:3306 check weight 1
When you specify the option mysql-check with a username. You need to add a user in the mysql database like this:
# mysql 每u<username> -p<password> mysql -e ※insert into user(Host, User) values(＆%＊, ＆haproxy＊); GRANT ALL PRIVILEGES on *.* TO 'haproxy'@'%'; flush privileges;§
Reboot HAProxy.
# service
haproxy restart
When it is done, update the OAT server configuration with the latest connection
string.
Remember to make the same change on the other web application server. Restart tomcat to take effect.
# service tomcat restart
OK. Finally we have the complete initial OAT HA environment setup in a three-node cluster.
Now, you are able to access the oat web portal by http://<virtual IP>:442/TrustDashBoard/login.htm and http://<virtual IP>:442/WhiteListPortal/login.htm
If there is a system failure or upgrade which needs a system reboot, check the running status of the keepalived, haproxy, tomcat and mysql service. If any of them fail to start, restart them or check the error log for details.
If one of the nodes comes across some hardware failure or system crash, to setup a new node to join the HA cluster, please follow this guide to build a fresh node.
1. Setup Haproxy. http://www.leaseweblabs.com/2011/07/high-availability-load-balancing-using-haproxy-on-ubuntu-part-1/#comment-79665
2. Setup Keepalived. http://www.leaseweblabs.com/2011/09/setting-up-keepalived-on-ubuntu-load-balancing-using-haproxy-on-ubuntu-part-2/
3. HAProxy logging. http://kvz.io/blog/2010/08/11/haproxy-logging/
4. Mariadb-Galera. http://blog.laimbock.com/2014/07/08/howto-setup-mariadb-galera-cluster-10-on-centos/comment-page-1/
5. Mysql-Galera with HAProxy. http://www.sebastien-han.fr/blog/2012/04/08/mysql-galera-cluster-with-haproxy/
6. Configure SELinux for Galera. http://nirbhay.in/2014/08/selinux-for-galera-cluster/


Statistical hypothesis H0 is an assertion regarding the distribution of one or more random variables. The alternative hypothesis H1 states that H0 is not true.
A test of a hypothesis is a procedure based on observed values of random variables which results in either the rejection of H0 (and hence acceptance of H1) or else acceptance of H0 (and hence rejection of H1).


Mette Agger Eriksen, Per Linde
They discuss the use of workshop artefacts.
"Artefacts drive design. Sketches, props, samples, mock-ups, prototypes, objet-trouvé – capture and embody ideas; they represent, translate, inspire, and shape the often evasive artefact-under-design; they facilitate interdisciplinary collaboration by both, fostering collective imaginations and giving concrete form or anchors to flighty and highly complex ideas; they help communicate the outcomes of design efforts."
"Artefacts-in-context highlight the inseparability of social, cultural and material practices and the objects we design and design with."


{{ define "main" }}
You should override the "main"
block in your site's
layouts/index.html
to change this content:
{{"{{"}} define "main" {{"}}"}}
This will be your site's homepage's new content!
 {{"{{"}} end {{"}}"}}
You can change the title
as well by overriding the
"title"
block:
{{ end }} {{ define "title" }} Home - {{ .Site.Title }} {{ end }}{{"{{"}} define "title" {{"}}"}} Index - {{ .Site.Title }} {{"{{"}} end {{"}}"}}


| Created: | 4/29/2013 12:00:00 AM |
| Modified: | 4/30/2013 4:09:46 PM |
| Project: | |
| Advanced: |
| Attribute | ||
|
Public Identifier. Type UBLVersionID |
||
Details:
|
||
|
Public Identifier. Type CustomizationID |
||
Details:
|
||
|
Public Identifier. Type ProfileID |
||
Details:
|
||
|
Public Identifier. Type ProfileExecutionID |
||
Details:
|
||
|
Public Identifier. Type ID |
||
Details:
|
||
|
Public Indicator. Type CopyIndicator |
||
Details:
|
||
|
Public Identifier. Type UUID |
||
Details:
|
||
|
Public Date. Type IssueDate |
||
Details:
|
||
|
Public Time. Type IssueTime |
||
Details:
|
||
|
Public Code. Type UtilityStatementTypeCode |
||
Details:
|
||
|
Public Text. Type Note |
||
Details:
|
||
|
Public Currency_ Code. Type DocumentCurrencyCode |
||
Details:
|
||
|
Public Code. Type AccountingCostCode |
||
Details:
|
||
|
Public Text. Type AccountingCost |
||
Details:
|
| Element | Source Role | Target Role |
|
«ABIE» Customer Party Class |
Name: |
Name: |
|
Details:
The buyer, if different from the receiver of the document.
|
||
|
«ABIE» Document Reference Class |
Name: |
Name: Parent Document Reference |
|
Details:
A reference to the parent Invoice or Credit Note.
|
||
|
«ABIE» Document Reference Class |
Name: |
Name: Additional Document Reference |
|
Details:
A reference to an additional document associated with this document.
|
||
|
«ABIE» Party Class |
Name: |
Name: Receiver Party |
|
Details:
The party receiving this document.
|
||
|
«ABIE» On Account Payment Class |
Name: |
Name: Main On Account Payment |
|
Details:
A payment on an account.
|
||
|
«ABIE» Party Class |
Name: |
Name: Sender Party |
|
Details:
The party sending this document.
|
||
|
«ABIE» Party Class |
Name: |
Name: Subscriber Party |
|
Details:
The subscriber (user or receiver of the service), if different from the buyer and from the party receiving this document.
|
||
|
«ABIE» Signature Class |
Name: |
Name: |
|
Details:
A signature applied to this document.
|
||
|
«ABIE» Subscriber Consumption Class |
Name: |
Name: |
|
Details:
A utility statement for a particular consumption point.
|


| PostgreSQL 9.0.10 Documentation | ||||
|---|---|---|---|---|
| Prev | Up | Chapter 2. The SQL Language | Next |
This chapter provides an overview of how to use SQL to perform simple operations. This tutorial is only intended to give you an introduction and is in no way a complete tutorial on SQL. Numerous books have been written on SQL, including Understanding the New SQL and A Guide to the SQL Standard. You should be aware that some PostgreSQL language features are extensions to the standard.
In the examples that follow, we assume that you have created a database named mydb, as described in the previous chapter, and have been able to start psql.
Examples in this manual can also be found in the PostgreSQL source distribution in the directory src/tutorial/. (Binary distributions of PostgreSQL might not compile these files.) To use those files, first change to that directory and run make:
$ cd ..../src/tutorial $ make
This creates the scripts and compiles the C files containing user-defined functions and types. Then, to start the tutorial, do the following:
$ cd ..../tutorial $ psql -s mydb ... mydb=> \i basics.sql
The \i command reads in commands from the specified file. psql's -s option puts you in single step mode which pauses before sending each statement to the server. The commands used in this section are in the file basics.sql.


--- title: "Front Matter" lastmod: 2019-03-06T00:00:00.000Z draft: false type: docs maths: true linktitle: "Front Matter" menu: docs: parent: Content Management weight: 15 ---
Front matter adds metadata to the page and also serves to toggle existing layouts (like table of contents). It is essential to every page. For more front matter variables/options go here.
The front matter we use follows the yaml format and should look something like this:
Note the three dashes at the beginning and end. This signifies the beginning and end of the front matter. Front matter must be at the top of the page.
Running through the front matter from top to bottom:
Title: This is the big title that appears at the top of the page
Lastmod: This tells the reader and content creators the last time this page was modified. This is automatically done by Hugo. You do not need to enter this in yourself.
Draft: Set to false this does nothing. If set to true it will hide the page from users.
Maths: This should be set to true.
The following renders the table of contents (if you don’t want a table of contents don’t include this):
Note: this method of inserting a table of contents will only work for RMarkdown files and not Markdown files. Additionally, the table of contents is rendered from heading levels 1 through 3.
Linktitle: This is the menu entry for the page.
The following specifies where in the menu and which menu it appears in:
For more information about menu entries go [here]({{< ref “/docs/menu_entries.MD” >}}) .


--- layout: default headerline: Ink. Thing headerlinelink: # ---
Ink Thing is our monthly Open Discussion Session where we all settle down together and plan out the projects we are going to target for the upcoming month.
All you need to do is look up interesting projects, recent designs made with in the club, and things happening around you and share it with all of us.
Not only is this fun but very informative, but crucial to the clubs functioning. Apart from a casual discussion over sponsored snacks we review the clubs activities and plan our way forward.
We have had quite a few Ink. Things since our inception.
{% assign things = site.things %} {% for thing in things %} {{thing.title}} - {{thing.name}}{{thing.date}}
{% endfor %}


You are amazing
Pug is a terse and simple templating language with a strong focus on performance and powerful features.
{{title}}


sdEndEx updates the currently drawn window onto screen, if DoUpdate is "true".
void sdEndEnd(bool DoUpdate);
None. [ASM: All registers are preserved.]
sdStart sdEnd


Helper class to perform comparison operations over arbitrary values. More...
Static Public Member Functions | |
| static bool | Compare (object value1, string operation, object value2) |
| Perform comparison operation over two arguments. The operation can be performed over values of any type. More... | |
| static bool | AreEqual (object value1, object value2) |
| Checks if two values are equal. The operation can be performed over values of any type. More... | |
| static bool | AreNotEqual (object value1, object value2) |
| Checks if two values are NOT equal The operation can be performed over values of any type. More... | |
| static bool | IsLess (object value1, object value2) |
| Checks if first value is less than the second one. The operation can be performed over numbers or strings. More... | |
| static bool | IsGreater (object value1, object value2) |
| Checks if first value is greater than the second one. The operation can be performed over numbers or strings. More... | |
| static bool | Match (object value1, object value2) |
| Checks if string matches a regular expression More... | |
Helper class to perform comparison operations over arbitrary values.
|
static |
Checks if two values are equal. The operation can be performed over values of any type.
| value1 | the first value to compare |
| value2 | the second value to compare |
|
static |
Checks if two values are NOT equal The operation can be performed over values of any type.
| value1 | the first value to compare |
| value2 | the second value to compare |
|
static |
Perform comparison operation over two arguments. The operation can be performed over values of any type.
| value1 | the first argument to compare |
| operation | the comparison operation |
| value2 | the second argument to compare |
|
static |
Checks if first value is greater than the second one. The operation can be performed over numbers or strings.
| value1 | the first value to compare |
| value2 | the second value to compare |
|
static |
Checks if first value is less than the second one. The operation can be performed over numbers or strings.
| value1 | the first value to compare |
| value2 | the second value to compare |
|
static |
Checks if string matches a regular expression
| value1 | a string value to match |
| value2 | a regular expression string |


kinX is an umbrella term for my projects on keyboard input latency and keyboard controllers.
Its artifacts are a drop-in keyboard controller replacement for the Kinesis Advantage keyboard with <0.33ms input latency, a drop-in USB hub replacement, and a device for measuring processing latency.


THERMALLY INDUCED FLOW INSTABILITIES IN TWO-PHASE
MIXTURES IN THERMAL EQUILIBRIUM
A THESIS Presented to The Faculty of the Graduate Division by
Mamoru Ishii
In Partial Fulfillment of the Requirements for the Degree Doctor of Philosophy in the
School of Mechanical Engineering
Georgia Institute of Technology
June, 1971
%
Reproduced with permission of the copyright owner. Further reproduction prohibited without permission.


Muzaffarpur shelter home case: Delhi court to pronounce verdict on Nov 14
Earlier, the court had framed various charges including criminal conspiracy to commit rape and sexual assault against the accused
by ANIA Delhi court will likely pronounce its judgement on Thursday in an alleged case of sexual and physical assault on several girls at a shelter home in Muzaffarpur, Bihar.
Additional Sessions Judge Saurabh Kulshrestha on September 30 reserved its order after the conclusion of arguments against prime accused Brajesh Thakur and others.
More than 40 minor girls were allegedly sexually assaulted over a period of time in the shelter home which was run by Thakur's state-funded non-governmental organization (NGO). Thakur is the purported mastermind of the incidents.

The gruesome incident came to light after the Tata Institute of Social Sciences (TISS) filed an affidavit detailing horrifying sexual abuse cases at the shelter homes in 2017.
In December last year, the Central Bureau of Investigation (CBI) had filed a chargesheet against 21 accused in the case.
The Supreme Court had earlier transferred the case from Bihar to the court and ordered the judge to complete it within six months. Trial Court then framed charges against 21 accused in the case.