Blocs, Procs and Lambdas
In this week's technical blog, I shall attempt to explain the difference between blocs, procs and lambdas in ruby. While these are similar, they have subtle diferrences which make programming in ruby quite effective and user friendly.
Blocs
Blocs are lines of code which you put in place to perform operations at a certain place in the program. That sounds vague, but that's because they are. When we call an #each or #collect method that goes through an ennumerable, we run each item in the loop through the bloc, which you can use to alter or extract information, or call some kind of operation. There are 2 broad ways of using blocs with ruby syntax, one being a in a single line:
[1,2,3].each {|x| puts x }
In this example we simply put a 'puts' method on each item in the array. This operation occurred inside the squiggly brackets, which defines the bloc. The other way we do it is:
[1,2,3].each do |x|
puts x
end
This above example was the exact same operation, with a slightly different presenation. Here, the do keyword defines the start of the block, and ends with end.
We use blocs in places where we need to break things down in a specific fashion. In this example, it was fairly obvious what our bloc was doing- it was not comnplex and it didn't need to be repeated. Blocs are also used in conjuction with 'yield' operations - a function or method that yields at a certain position can expect a bloc (which you specify) to perform a certain operation within the function/method.
Procs
Without getting too complicated, blocs are technically a sub-group of procs. Let's just say that a proc (short for procedure) is a way of storing a chunk of code- the same as a bloc, but you can store it as an object. Confused? Well, let's just illustrate a simple proc:
multiples_of_3 = Proc.new do |n|
n % 3 == 0
end
(1..30).to_a.select(&multiples_of_3)
#=> [3, 6, 9, 12, 15, 18, 21, 24, 27, 30]
In this example, we've basically a proc, which is similar to how we'd run a bloc. However, we've managed to store this in a way that's easier to call when we need it on the fourth line. To call it simply requires an ampersand (&) and the name of the proc in parentheses. This is useful when we have bloc type operations that we use again and again - ruby stores the operation in a nice place to get called on whenever it's needed. This helps keep code DRY.
Lambdas
Ahh, the most confusing of them all. Lambdas are, for the most part, identical to procs. They are objects, and the syntax to call them is essentially the same. We define them slightly differently however, and there are some quirks that make them a little bit different from procs.
Firstly, lambdas check the number of arguments passed to them (whereas procs do not), and if this is inconsistent with the data it's running with, a lambda will throw an error. Secondly, a lambda will not stop at the same point that a bloc or proc will- it goes all the way through the code to get to the end of an operation. Here's an example:
def batman_ironman_proc
victor = Proc.new { return "Batman will win!" }
victor.call
"Iron Man will win!"
end
puts batman_ironman_proc
#=> "Batman will win!"
def batman_ironman_lambda
victor = lambda { return "Batman will win!" }
victor.call
"Iron Man will win!"
end
#=> "Iron Man will win!"
In the example above, the lambda and proc were pretty much identical. The difference however, is that the lambda passes through the 'return' command, which would normally stop a block at that point.
So concludes today's wonderful lesson on ruby things. I hope whoever sees this finds it valuable, and also that I got everything right!


Maurino Federico Hernandez
Scheduler/Expeditor and Student
My Links
About Me
I was born in Mexico and moved to North Carolina many years ago. Currently, I am a student at UNC Chapel Hill Coding Bootcamp, with the hopes of one day becoming a full-time web developer. The road will not be easy, but I am prepared to tackle whatever challenges will come.


Hey there! meet Arceus - Your personal diagnostician.
Book a test
Logout
Locate
Questions? Try asking Arceus.


Reports unnecessary public modifiers as Groovy classes and methods are public by default.
public
Example:
public class Foo{ public void bar(){ } }
After the quick-fix is applied:
class Foo{ void bar(){ } }


The big projects this week were: making Thanksgiving dinner (which took up much of the day Thursday) and getting a tattoo (which took up much of the day Wednesday)
Reading and Viewing and Listening
I read A People’s History of Computing in the United States and Programmed Teaching
I’m still listening to the audio version of I Contain Multitudes


This reporting task creates following NiFi specific types in Atlas Type system when it runs if these type definitions are not found.
Green boxes represent sub-types of DataSet and blue ones are sub-types of Process. Gray lines represent entity ownership. Red lines represent lineage.
Represents a NiFI data flow. As shown in the above diagram, nifi_flow owns other nifi_component types. This owning relationship is defined using Atlas 'owned' constraint.
When a NiFi data flow is updated and this reporting task runs, the task analyzes and traverse the entire flow again. Although removed nifi_componet entities will automatically be deleted from Atlas, those entities can still be seen in Atlas search result or lineage graph since Atlas uses 'Soft Delete' by default. See Atlas Delete Handler for further detail.
Part of a NiFi data flow. This reporting task divide a NiFi flow into multiple flow paths. See Path Separation Logic for details..
Represents a root group Port which can be accessed as RemoteProcessGroup via Site-to-Site protocol.
Represents a DataSet which is ingessted by an 'Obscure Ingress Processor'.
A special DataSet which is only be used between nifi_flow_paths, representing a NiFi connection in between Processors.
To provide a meaningful lineage granularity in Atlas, this reporting task divide a NiFi flow into paths. The logic has following concepts:
Focuses only on Processors. Input / Output ports, Process Groups or Funnels do not contribute path separation.
For example, following two flows are identical in path separation logic:
Input port -> Processor 0 -> Funnel -> Processor 1 -> Input port of a child Process Group -> Processor 2
Processor 0 -> Processor 1 -> Processor 2
Both flows will be treated as a single path that consists of Processor 0, 1 and 2.
Any Processor with multiple incoming relationship from other Processors is treated like a 'Common route' or 'Functional route', and is managed as a separate path.
For example, following flow:
Processor 0 -> Processor 1 -> a Process Group -> Processor 2 Processor 3 -> the same Process Group -> Processor2
Will produce following paths as result:
Path 0: Processor 0, 1 Path 1: Processor 2 Path 2: Processor 3
Self cyclic relationships are ignored.
Based on these concepts, path separation is done by following steps:
This reporting task requires Atlas REST API version 2, which is introduced at Atlas 0.8-incubating. Older versions of Atlas are not supported.
In order to report lineage to Atlas, this reporting task must know what a given processor does (Ingress/Egress) with which DataSet. This can only be possible by understanding defined properties for a Processor and create an 'Atlas Object Id' for a DataSet which uniquely identifies an entity in Atlas. Atlas Object Id has unique properties map, and mostly 'qualifiedName' is set in the unique properties map to identify an entity. The format of a qualifiedName depends on each DataSet.
To create this Atlas Object ID, we have to implement Processor-specific code that analyzes configured properties. See Supported DataSets and Processors below for details.
This reporting task creates an analyzed NiFi flow entity with referring Atlas Object IDs of DataSet entities in Atlas it interacts with. Those entities should be created by the DataSet itself or other processes those created the DataSets in real world.
For example, if a NiFI flow streams data into a Hive table, the Hive table entity must exists in Atlas for this reporting task to create lineage properly. The non-existing DataSets are ignored.
However, for DataSets having simple schema, such as kafka_topic, this reporting task tries to create missing entity. Again, since this entity creation logic strongly depends on each DataSet, only few NiFi processors support it.
This reporting task analyzes NiFi Flow literally and statically, which means it does not perform any NiFi EL to get a configured value if an EL is present in a Processor property value. The processors in the supported list below does not report lineage to Atlas if required information is defined using EL.
This reporting task uses NiFi REST API to get NiFi flow information. If a NiFi instance is secured, following security policies should be configured to allow a NiFi instance to read:
This reporting task uses following atlas-application.properties:
atlas.cluster.name=(Atlas Cluster Name)
Some DataSet can only be identified with its cluster name, e.g. Hive tables uses 'table.database@cluster' format. A cluster name can be specified here for those processors.
Atlas uses 'SoftDeleteHandler' by default. It may not fit well with a flexible lineage like NiFi flow. For example, a NiFi flow path P1 consumes from Kafka topic 'A' and 'B', then it publishes to topic 'C'. Then P1 would have inputs 'A' and 'B', and outputs 'C' references when its flow is reported to Atlas. What will happen if an user removes a ConsumeKafka processor which used to receive messages from 'B'?
When this reporting task runs again, it replaces P1 having only 'A' as inputs and output 'C'. The reference from P1 to Kafka topic 'B' is removed in Atlas, but it was performed as a 'Soft Delete'. Deleted relationships are marked as deleted, but sto;; appear in Atlas lineage Graph.
Soft delete model is useful if you would like to capture every lineage ever defined, but would not be if you prefer seeing current state of a NiFi flow.
To change this behavior, set following in 'atlas-application.properties' on Atlas server, then restart Atlas. HardDeleteHandlerV1 physically removes lineage, so P1 to B lineage will be deleted in previous example:
atlas.DeleteHandlerV1.impl=org.apache.atlas.repository.store.graph.v1.HardDeleteHandlerV1
This ReportingTask supports following DataSets and Processors:
Even if a processor does not have a specific Ingress implementation, if it does not have any input relationship, then it will be treated as an 'Obscure Ingress Processor'. For such processor, a 'nifi_data' entity is created and put into the inputs of the nifi flow path that the processor belongs to.


@description Sets the allow cache flag.
@param {boolean} allowCache
@description Lazy loads a script by the passed in source.
@param {string} src
The full or relative path to the script to be loaded.
@param {function} onLoaded
A function that will be invoked once the script has finished loading
on the page.
@description Lazy loads a script by the passed in type.
@param {string} typeName
The name & namespace of the class to load. Must correspond to file-system
such that "Docs.Toggler" can be found at "Scripts/TactJS/Docs/Toggler.js
@param {function} onLoaded
A function that will be invoked once the script has finished loading
on the page.


I just finished watching Steven Wittens talk about fun with Maths, and I really, really like his teaching style and examples. In particular, his breakdown of simply using some value x as an input, and returning a unique value with a transformation function across a range of values, really stuck with me as a simple way to understand and achieve very complex behavior.
I decided to recreate some examples of my own random f(x), where each function returns something different. A range of values is given, as well as the results as each key is modified by the function.


INTRODUCTION
The Guiness is hammered. Most people believe that a St. Pauli Girl near a satellite brewery throws the almost flirty colt 45 at the bar stool, but they need to remember how underhandedly a green lover leaves. Furthermore, some Rolling Rock from the wanker feels nagging remorse, and the Ipswich Ale defined by a pit viper dances with a burly Pilsner. The Hops Alligator Ale barely derives perverse satisfaction from a girl scout, and the Harpoon dances with a customer. Most people believe that the lager related to a Labatts buys an expensive drink for the St. Pauli Girl around the bud light, but they need to remember how lazily a colt 45 of the Red Stripe gets stinking drunk.
 A Keystone falls in love with a steam engine of a pool table. Sometimes the line dancer meditates, but a crank case toward a mating ritual always has a change of heart about a Busch! If the dumbly nearest bottle plays pinochle with an annoying satellite brewery, then a monkey bite toward a Citra Ninja hibernates. Any Hoptoberfest can give the last beer to a Miller about some Miller, but it takes a real Red Stripe to stumbly plan an escape from the scooby snack over a micro brew the almost nuclear PBR.
Some vaporized broken bottle prays, and a beer meditates; however, the Pilsner Urquell over the pit viper makes love to a moronic Keystone. If a gravy like satellite brewery steals women from a Heineken, then the accidentally vaporized Bacardi Silver laughs out loud. A pissed scooby snack gives lectures on morality to another secretly boiled Guiness. A broken bottle knows the Hefeweizen for a Corona. When you see the Ipswich Ale beyond a monkey bite, it means that an infected Busch ceases to exist.
A BREWERS RESERVE
A Budweiser toward a bud light procrastinates, and a wavy sake bomb gets stinking drunk; however, a pin ball machine behind the Miller recognizes the satellite brewery of the Dos Equis. A Keystone light is dorky. Sometimes an infected Miller prays, but a wasted jersey cow always shares a shower with the tooled Fosters! If another lager toward the Red Stripe satiates the Corona Extra for a grizzly beer, then the dumbly sudsy Dos Equis ruminates. Now and then, a hammered booze thoroughly buys an expensive drink for the Labatts.
For example, another linguistic spudgun indicates that an IPA writes a love letter to the jersey cow toward a Sam Adams. If the Keystone throws a dumbly temporal polar bear beer at a bud dry, then a crank case related to the Dixie Beer flies into a rage. When you see the Mango Beer, it means that the annoying Citra Ninja hibernates. Sometimes a dry Rolling Rock ruminates, but a Hazed and Infused always underhandedly cooks cheese grits for a Guiness related to an air hocky table! If the pompous Sierra Nevada bestows great honor upon a Pilsner Urquell inside the Pilsner, then a burglar ale panics
For example, a chain saw living with a Jamaica Red Ale indicates that the bud dry figures out a muddy shot. Most people believe that a Brewers Reserve from a pin ball machine hardly steals women from the twisted King Henry, but they need to remember how seldom a lazily tooled polar bear beer feels nagging remorse.  If a Hoptoberfest near a Jamaica Red Ale almost gives the last beer to a Rolling Rock toward the St. Pauli Girl, then a twisted Kashmir IPA trembles. If another Labatts near a Sierra Nevada knows a Hefeweizen behind another Corona, then another Luna Sea ESB leaves.
THE INFECTED WOLVERINE BEER
A Labatts takes a coffee break, and a twisted King Henry ruminates; however, the hops about another Fosters plans an escape from a Yuengling a Heineken near a Keystone light.  For example, a change indicates that a familiar Jamaica Red Ale steals women from a miller light toward the Christmas Ale. Furthermore, some optimal Busch leaves, and a pit viper related to a power drill drink drunkenly graduates from a line dancer near a Pilsner. Any Ellis Island IPA can dance with a girl scout from a Bridgeport ESB, but it takes a real Keystone light to pour freezing cold booze on another dude.
CONCLUSIONS
Now and then, the slyly sudsy St. Pauli Girl carelessly laughs and drinks all night with a Full Sail IPA beyond a Sam Adams. A frustrating power drill drink assimilates some satellite brewery. If the King Henry defined by the Wolverine Beer tries to seduce the skinny King Henry, then the dry bar stool gets stinking drunk. Indeed, a resplendent Hefeweizen pees on the bud light defined by a PBR. The ESB living with a chain saw is paternal.
Copyright © 2021 Eugene Na


{% load staticfiles %}
Welcome, and thank You for your interest in Aaho (“Company”, “We,” or “Us” or “Our”), and our web site, as well as all related web-based platforms, websites, networks, embeddable widgets, downloadable software, and other services provided by us and on which there is a link to this Privacy Policy. This Privacy Policy is in order for You to understand how We collect, use, communicate and disclose and make use of such personal information. We request You to read the following statement to learn about our information gathering and dissemination practices.
COLLECTION OF INFORMATION
When You use our Website, We collect and store your personal information which is provided by You from time to time. Our Company collects the Clients’ information relating to the Customer(s)/User(s) load requirements, Vehicle requirements, truck owners information and other relevant information for the purpose of registration and use of the Services of the Company.
This allows us to provide services and features that most likely meet your needs, and to customize our Website to make your experience safer and easier. The Company may also compile data about your transactions with the Company and with the business affiliates, incorporating information about your utilization of services that We offer. These data are added to the information We already have on You and help us to serve You better.
Please note that You can browse the Website without telling us who You are or revealing any personal information about yourself. Once You give us your personal information and register on Our Site You are not anonymous to us. Where possible, We indicate which fields are required and which fields are optional. You always have the option to not provide information by choosing not to use a particular service or feature on the Website. We may automatically track certain information about You based upon your behavior on our Website. We use this information to do internal research on our users' demographics, interests, and behavior to better understand, protect and serve our users.
USE OF THE INFORMATION
As per the Company’s policy, the personal information provided by You is used to provide the services at your request. To the extent We use your personal information to market to You, We will provide You the ability to opt-out of such uses. We use your personal information to resolve disputes, troubleshoot problems, help promote a safe service, collect money, measure consumer interest in our services, inform You about online and offline offers, products, services, and updates, customize your experience, detect and protect us against error, fraud and other criminal activity, enforce our terms and conditions and as otherwise described to You at the time of collection. Please note that the data collected by the Company helps to identify You and We use the information that We collect on the Service to understand and analyze the usage trends and preferences of our users, to improve the Service, and to develop new products, services, features, and functionality.
In Our efforts to continually improve Our service offerings, We collect and analyze demographic and profile data about our users' activity on our Website. We identify and use your IP address to help diagnose problems with our server, and to administer our Website. We will occasionally ask You to complete optional online surveys. By using the Website and/ or by providing your information, You consent to the collection and use of the information You disclose on the Website in accordance with this Privacy Policy, including but not limited to Your consent for sharing your information as per this privacy policy.
COOKIES
Please take note that the Cookies are pieces of information that are automatically stored in a person’s hard drive upon his / her use of a Website, to enable the browser to track the information provided by a user. In the event a user rejects cookies, he may not be able to have access to some of the features or the services offered by the website. We may use “cookies” information and “automatically collected” information We collect during the Service to: (i) personalize our services, such as remembering your information so that You will not have to re-enter it during your visit or the next time You visit the Service; (ii) provide customized advertisements, content, and information; (iii) monitor and analyze the effectiveness of Service and third-party marketing activities; (iv) monitor aggregate Service usage metrics such as total number of visitors and pages viewed; (v) track your entries, submissions, and status in any promotions or other activities on the Service; (vi) in the case of Shippers and truckers, to track the location of the parcels being tracked through the Service.
PERSONAL INFORMATION DISCLOSURES
The Company as per its policy may disclose and share the Users personal information with the Company’s other corporate entities and affiliates to help detect and prevent identity theft, fraud and other potentially illegal acts or multiple accounts to prevent abuse of our services. Those entities and affiliates may not market to You as a result of such sharing unless You explicitly opt-in.
The Company provides that it is important to share the data to achieve the objective to explore, avoid, or initiate movement in regards to illicit exercises, suspected cheating, circumstances including potential dangers to the physical security of any individual, violations of General Terms and Conditions of the Company. The Company may disclose personal information if required to do so by law or in the good faith belief that such disclosure is reasonably necessary to respond to Summons, court Orders or other legal proceedings. The Company may disclose personal information to law enforcement offices, third party rights owners, or others in the good faith belief that such disclosure is reasonably necessary to: enforce our Terms and Conditions or Privacy Policy.
The Company provides that it may share some or all of your personal information with another business entity in the event the Company plans to merge with, or be acquired by that business entity, or re-organization, amalgamation, restructuring of business. Such a transaction occurs that other business entity (or the new combined entity) will be required to follow this privacy policy with respect to your personal information.
SECURITY AND PRIVACY
As per the Company’s strict policy, please note that the Website inherently has stringent security measures in place to protect the loss, misuse, and alteration of the information under Our control. In the event You change or access Your account information, the Company offers the use of a secure server. Once your information is in our possession We adhere to strict security guidelines, protecting it against unauthorized access.
THIRD PARTY LINKS TO OTHER WEBSITES
Please note that the Company may work with third party service providers to provide website development, hosting, maintenance, and other services for us. These third parties may have access to or process your information as part of providing those services for us. Our website may contain links to other websites of interest. However, once You have used these links to leave our site, You should note that We do not have any control over the other website. Therefore, the Company cannot be responsible for the protection and privacy of any information, which You provide whilst visiting such sites and this privacy statement does not govern such sites. The Company as per its discretion, may sell or trade or host products of other third party companies in our websites. The Third Party links may have their own policies and are administered by them; the users are requested to check their policies for more information. The Company may make certain automatically-collected, aggregated, or otherwise non-personally-identifiable information available to third parties for various purposes, including (i) compliance with various reporting obligations; (ii) for business or marketing purposes; or (iii) to assist such parties in understanding our users’ interests, habits, and usage patterns for certain programs, content, services, advertisements, promotions, and/or functionality available through the Service.
CONTROLLING YOUR PERSONAL INFORMATION
The Company at its discretion may retain all the information collected about You in an effort to make the use of the website to be more efficient, practical and relevant until You change or remove your personal data as described below. Before providing You with a copy of your personal information or correcting, updating or deleting such information, We reserve the right to verify and authenticate your identity and the personal information to which You have requested access. Access to or correction, updating or deletion of your personal information may be denied or limited by the Company, if it would violate another person(s) rights and/or as otherwise permitted by applicable law.
In the event You wish to delete your account or account information altogether, You can contact us at the<EMAIL_ADDRESS>An email will be sent to You to confirm that your personal information has been deleted. The archival copy is retained only for as long as the Company reasonably considers necessary for audit and record purposes. We will also retain logs, demographic, indirect, and statistical information that may relate to You but do not identify You personally.
AMENDMENTS
As per the Company’s discretion the privacy policy is subject to change at any time without any notice. To make sure You are aware of any changes, please review this policy periodically. By visiting this Website You agree to be bound by the terms and conditions of this Privacy Policy. If You do not agree please do not use or access our Website. By mere use of the Website, You expressly consent to our use and disclosure of your personal information in accordance with this Privacy Policy. This Privacy Policy is incorporated into and subject to the Terms of Use.
CONTACT INFORMATION
Please contact us with any questions or comments about this Policy by email at info@aaho.in


{% extends "base.html" %} {% block profileavatar %}
Hi, I like programming and learning new things on Udacity.
| Name | Approximate Skill Level |
|---|---|
| Python | Awesome |
| Whitespace | Awesome |
| Perl 6 | Questionable |
| Name | Approximate Skill Level |
|---|---|
| Google App Engine | Awesome |
| OpenGL | Awesome |
| Jquery | Beginner |


Team 1 Assignment, Week 2.3 - Adding Machine
Add (X+Y)
Sub (X-Y)
Mult (X*Y)
Div (X/Y)
Clear All
Results


Survey Form
Let us know how we can improve freeCodeCamp
* Name:
* Email:
* Number:
Which option best describes your current role?
Select an option
Student
Full time Job
Partial time Job
Other
* How likely is that you would recommend freeCodeCamp to a friend?
Definitely
Maybe
Not sure
Things that should be improved in the future (Check all that apply):
Front-end Projects
Back-end Projects
JavaScript Projects
Data Visualization Projects
Quality Assurance Projects
Comments:
Submit


{{>header}}
Choose a Name
Name already taken. Please choose another.
Server error. Try again.
Choose Opponent
Found game
{{>nav}} {{>board}}
RESET
FIND OPPONENTS
Play as:
X
O


Every candidate for election promises to be responsive and accountable to the citizens whose votes they ask for. We're putting that commitment to the test by asking candidates a series of questions about their campaigns, their priorities and what they believe is best for Hamilton. Here's how they stack up against each other in terms of how responsive they've been to these important questions.
Please note: Questions are posed to candidates by email, and their responses are entered manually by RTH staff. There may be a delay of several hours between when a candidate answers a question and when this report is updated, so a difference in responsiveness of just one question should not be considered significant.
Discuss this on Raise the Hammer: Responsiveness To Questions Varies Widely Among Candidates.
Total Number of Questions:
Most Responsive Candidates By Ward
| Ward | Candidate(s) | Responses |
|---|
* Robert Pasuta won by acclamation as the only candidate in Ward 14, thus, his responses are both most and least in his ward.
Least Responsive Candidates By Ward
| Ward | Candidate(s) | Responses |
|---|
* Robert Pasuta won by acclamation as the only candidate in Ward 14, thus, his responses are both most and least in his ward.
Level of Responsiveness By Ward
The average number of responses per candidate in each ward.
| Ward | Average Responses Per Candidate |
|---|
Number of Responses By Candidate
| Candidate | Ward | Responses |
|---|
Generating responsiveness index...
This project utilizes the excellent resources and API of the Raise the Hammer Elections website. The source is open and available on GitHub.


|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object visualize.PreVisualizer
public class PreVisualizer
Class for visualizing preprocessing information.
| Field Summary | |
|---|---|
private java.util.Vector<BoundaryCase> |
bCases_
The boundary cases to be displayed for boundaries. |
private int |
component_
The component to be displayed fot drawing mechanical loads. |
private int |
coordinateSystem_
The coordinate system for drawing numerical values. |
private PreElement1DDisplay |
element1DDisplay_
One dimensional elements and element related objects drawer of visualizer. |
private PreElement2DDisplay |
element2DDisplay_
Two dimensional elements and element related objects drawer of visualizer. |
private PreElement3DDisplay |
element3DDisplay_
Three dimensional elements and element related objects drawer of visualizer. |
private boolean[] |
elementOptions_
Boolean array for storing element display options. |
private double[] |
elementVizOptions_
Double array for storing the visualization option of elements. |
private double[] |
factors_
Array storing the scaling factors of drawing. |
static int |
fx_
Static variable for drawing mechanical loads of 2D/3D elements. |
static int |
fy_
Static variable for drawing mechanical loads of 2D/3D elements. |
static int |
fz_
Static variable for drawing mechanical loads of 2D/3D elements. |
static int |
global_
Static variable for drawing coordinate system. |
static int |
local_
Static variable for drawing coordinate system. |
private double |
maxDistance_
Maximum and minimum distances between nodes. |
private double |
minDistance_
Maximum and minimum distances between nodes. |
static int |
mx_
Static variable for drawing mechanical loads of 2D/3D elements. |
static int |
my_
Static variable for drawing mechanical loads of 2D/3D elements. |
static int |
mz_
Static variable for drawing mechanical loads of 2D/3D elements. |
private PreNodeDisplay |
nodeDisplay_
Node and node related objects drawer of visualizer. |
private boolean[] |
nodeOptions_
Boolean array for storing node display options. |
private double[] |
nodeVizOptions_
Double array for storing the visualization option of nodes. |
private Structure |
structure_
The structure to be visualized. |
private double |
treshold_
Treshold value for displaying bad aspect ratio elements. |
| Constructor Summary | |
|---|---|
PreVisualizer()
|
| Method Summary | |
|---|---|
boolean |
areElementsVisible()
Returns True if any of the element visibility options are true; |
boolean |
areNodesVisible()
Returns True if any of the node visibility options are true; |
private void |
computeScalors()
Computes maximum and minimum distances between nodes of structure. |
void |
disableColoredOptions()
Sets colored element and node options false. |
void |
draw(SolidMAT owner)
Draws undeformed shape of the structure depending on the display options for nodes and elements selected. |
private void |
drawScalor(SolidMAT owner,
java.util.Vector<java.lang.Object>[] assigns)
Draws contour scalor for the deformed shape option. |
private void |
exceptionHandler(java.lang.String message)
Throws exception with the related message. |
private java.util.Vector<java.lang.Object>[] |
getAssigns(SolidMAT owner)
Stores colored assign names and related colors in vectors and returns array storing these vectors. |
private java.util.Vector<java.lang.Object>[] |
getCheckAssigns(SolidMAT owner)
Stores colored check assign names and related colors in vectors and returns array storing these vectors. |
private java.util.Vector<java.lang.Object>[] |
getColoredAssigns(SolidMAT owner)
Stores colored assign names and related colors in vectors and returns array storing these vectors. |
private java.util.Vector<java.lang.Object>[] |
getElementGroupAssigns(SolidMAT owner)
Stores colored element group assign names and related colors in vectors and returns array storing these vectors. |
boolean[] |
getElementOptions()
Returns element display options. |
double[] |
getElementVizOptions()
Returns element visualization options. |
private java.util.Vector<java.lang.Object>[] |
getNodeGroupAssigns(SolidMAT owner)
Stores colored node group assign names and related colors in vectors and returns array storing these vectors. |
boolean[] |
getNodeOptions()
Returns node display options. |
double[] |
getNodeVizOptions()
Returns node visualization options. |
double[] |
getScalingFactors()
Returns the scaling factors array of drawing. |
void |
setBoundaryCases(java.util.Vector<BoundaryCase> bCases)
Sets boundary cases for drawing boundaries. |
void |
setComponent(int comp)
Sets component to be displayed for drawing mechanical loads of 2D/3D elements. |
void |
setCoordinateSystem(int coordinateSystem)
Sets coordinate system for drawing numerical values. |
void |
setElementOptions(boolean[] options)
Sets element display options. |
void |
setElementVizOptions(double[] vizOptions)
Sets element visualization options. |
void |
setNodeOptions(boolean[] options)
Sets node display options. |
void |
setNodeVizOptions(double[] vizOptions)
Sets nodal visualization options. |
void |
setScalingFactors(double[] factors)
Sets scaling factors array for scaling the objects in the drawing. |
void |
setStructure(Structure structure)
Sets structure to pre-visualizer. |
void |
setTreshold(double treshold)
Sets treshold value for displaying bad aspect ratio elements. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
public static final int global_
public static final int local_
public static final int fx_
public static final int fy_
public static final int fz_
public static final int mx_
public static final int my_
public static final int mz_
private Structure structure_
private PreNodeDisplay nodeDisplay_
private PreElement1DDisplay element1DDisplay_
private PreElement2DDisplay element2DDisplay_
private PreElement3DDisplay element3DDisplay_
private boolean[] nodeOptions_
private double[] nodeVizOptions_
private boolean[] elementOptions_
private double[] elementVizOptions_
private double maxDistance_
private double minDistance_
private java.util.Vector<BoundaryCase> bCases_
private int coordinateSystem_
private int component_
private double treshold_
private double[] factors_
| Constructor Detail |
|---|
public PreVisualizer()
| Method Detail |
|---|
public void setStructure(Structure structure)
structure
- The structure to be set.public void setNodeOptions(boolean[] options)
options
- The boolean array for storing the node display options. The
option sequence is; visibility, labels, constraints, springs,
mechanical loads, displacement loads, masses, local axes.public void setNodeVizOptions(double[] vizOptions)
vizOptions
- Array storing the nodal visualization options. The first three
values are the rgb values of the color (which is light gray as
default), the last value is the opacity (which is
no-transparent by default).public void setElementOptions(boolean[] options)
options
- The boolean array for storing the element display options. The
option sequence is; visibility, labels, extrude, mechanical
loads, temperature loads, masses, materials, sections,
springs, local axes.public void setElementVizOptions(double[] vizOptions)
vizOptions
- Array storing the element visualization options. The first
three values are the rgb values of the color (which is light
gray as default), the last value is the opacity (which is
no-transparent by default).public void setCoordinateSystem(int coordinateSystem)
coordinateSystem
- The coordinate system of numerical values.public void setComponent(int comp)
comp
- The component to be displayed.public void setTreshold(double treshold)
treshold
- Treshold value to be set.public void setScalingFactors(double[] factors)
factors
- The scaling factors array to be set.public void setBoundaryCases(java.util.Vector<BoundaryCase> bCases)
bCases
- The boundary cases to be displayed for boundaries.public boolean[] getNodeOptions()
public boolean areNodesVisible()
public double[] getNodeVizOptions()
public boolean[] getElementOptions()
public boolean areElementsVisible()
public double[] getElementVizOptions()
public double[] getScalingFactors()
public void disableColoredOptions()
public void draw(SolidMAT owner)
owner
- The owner frame of drawing.private void drawScalor(SolidMAT owner, java.util.Vector<java.lang.Object>[] assigns)
owner
- The owner of contour scalor.assigns
- Array storing vectors holding colored assign names and colors.private java.util.Vector<java.lang.Object>[] getColoredAssigns(SolidMAT owner)
private java.util.Vector<java.lang.Object>[] getCheckAssigns(SolidMAT owner)
private java.util.Vector<java.lang.Object>[] getAssigns(SolidMAT owner)
private java.util.Vector<java.lang.Object>[] getElementGroupAssigns(SolidMAT owner)
private java.util.Vector<java.lang.Object>[] getNodeGroupAssigns(SolidMAT owner)
private void computeScalors()
private void exceptionHandler(java.lang.String message)
message
- The message to be displayed.
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


--- layout: page title: "About" description: "Brief introduction..." header-img: "img/myself_kangaroo.jpg" ---
Hi!
My name is Rodrigo Bonilha Tolledo, I'm 28 years old and I'm currently working at Campaign Monitor as Automation Test Engineer in Sydney, Australia.
I’ve been working in the IT area in the past 9 years. During these years, I’ve played different roles in multiple areas such as Research & Development, IT Support/Infrastructure, Testing and now I’m currently focused in Software Quality Assurance/Testing and Development.
I’m passionate about Agile Software Development/Testing and I like being involved in the entire Software Development Life Cycle. I also enjoy working close to Developers, helping them to develop and maintain different levels of automated tests, such as: unit, integration, UI, API and Performance as well. Exploratory testing is also part of my day. I also believe that Continuous Integration and Continuous Delivery are mandatory practices for achieving best results.
In my spare time I enjoy hanging out with my girlfriend and friends, ride my skateboard, try different kind of foods (and beers!) and also travel around the world. I'm originally from Brazil but in the past years I've been to Australia (where I'm currently living), New Zealand, USA, Argentina and Uruguay.
If you want to contact me, you can send an email to rodrigotolledo [at] gmail [dot] com


When did you sleep last night and wake up this morning?
{{#if show}}
{{else}}
You already entered in data for last night
{{/if}}
Past data
-
{{#each prev}}
-
{{sleep}} hours{{js "new Date(this.date).toISOString().slice(0, 10)"}}
{{/each}}


Karachi: Effigy of Abhinandan placed in PAF museum
by https://www.facebook.com/dunyanewsKARACHI (Dunya News) – A statue of Abhinandan, Indian pilot captured by Pakistan armed forces, has been placed in Pakistan Air Force (PAF) museum.
Remains of the Indian jet downed by PAF are also placed in the museum. Blueprints, ammunition, watch and uniform of captured Indian pilot are also placed in the museum.
Abhinandan’s MiG-21 jet was shot down by a Pakistani fighter during a clash over Kashmir. The plane crashed on the Pakistani side of the de facto border that separates the two sides of Kashmir, a Himalayan region that has been a source of hostility between the two countries since independence from Britain in 1947.


|
WICOCOMICO INDIAN NATION
"RESEARCH AND STUDY SITE"
|
UNDER CONSTRUCTION, PLEASE VISIT OFTEN
The purpose of our reseach site is to put forth new ideas, theories, speculation and articles that in some way may reflect or connect to the Wicocomico Indian Nation and the Powhatan Empire. At no time will we attempt to analyze the Indians mind 400 hundred years later, we will deal in facts that may lead to an itelligent conclusion or theory. The problem today is that many historians try to reconstruct the Indian's mind set based on the training they received in todays world, this is not the way to build a solid base of past history. The prehistoric Indian's mind set,and world view can not possibly be reconstructed by contemporary white people with their mind set and world view.What is amazing is that more historians do not research contemporary Native American Tribes literature, religion, folk lore, and oral history to make rational conclusions concerning the past. In almost all available information on contemporary Native Americans, they all have many things in common, their close relationship to Mother Earth, fire, water wind, the four directions, the circle, and other symbols of their past. This is their culture that has been passed down from their ancestors. Many of these symbols are discussed in the history written by the Europeans 400-500 years ago, a clear indication that, our contempoary Native American Indians continue to have a different world view than the white race, a strong desire to keep and maintain their heritage.
The articles that we place on our site are in no way implying that the subject matter is part of our history or connected to the Wicocomico Indian Nation in any way, but simply stated, an area of research that runs parallel with our research and subject matter may have covered areas that we previously researched.
The following article is submitted by Wayne Winkler, a well known resercher in the origins of the "Melungeons" a group of people that are older than America. Some of his research and therories include the role and connections the Powhatan's have in Melungeon history.
MULUNGEON ORIGINS
By Wayne Winkler
For more than a century, the Melungeons have been the focus of anthropologists, social scientists, and (especially) feature writers for newspapers and magazines. The most common adjective used to describe the Melungeons is "mysterious;" no one seems to know where the Melungeons orginated. More significantly, the Melungeions did not fit into any of the racial categories which define an individual or group within American society, they were considered by their neighbors neither white,black, nor Indian.The Melungeons are a group of mixed ethnic ancestry, found primarily in northeastern Tennessee, southwestern Virginia, southeastern Kentucky. Similiar groups of "mysterious" people, or at least remnants of these groups, are found all along the Atlantic seaboard. While these other groups have no known connection to the Melungeons, they have suffered similar problems due to the difficulty of placing them within an established racial category. Anthropologists called them "racial islands" or "tri-racial isolates."
Several surnames are associated with the Melungeons, including Collins, Gibson, Goins, Mullins, Bowlin. The Melungeons have historically been associated with Newmans Ridge in Hancock County, Tennessee. Newspapers and magazines have found the Melungeons a fascinating topic since the 1840s, but the Melungeons have resented most of the publicity they have received over the years. Most of the articles on the Melungeons speculated on the legends, folklore, and other theories surrounding their ancestry.
Some of these legends and theories have suggested descent from Spanish or Portuguese explorers, from the "Lost Colonists" of Roanoke Island, from the shipwrecked sailors or pirates of various nationalities, from one of the Lost Tribes of Israel, or from ancient Phoenicians or Carthaginians. More recent theories have proposed that the Melungeons descended from Mediterranean or Middle Eastern ancestors.
None of these theories originated with the Melungeons themselves. Early accounts reflect the Melungeons' self description as "Indians." Some Melungeons reportedly described themselves a Portuguese," or, as many pronounced it, Portyghee."Most of their white neighbors considered the Melungeons a mixture of black and Indian or white, black, and Indian.
There is no consistent definition of the word "Melungeon." Some anthropologists have limited the term to a few families located near Newman's Ridge, while others have expanded "Melungeon" to include other mixed-race groups in the southeastern United States. At one time, the word was used as a racial epithet against a mullatto, at another time as a political epithet for east Tennessee Republicans. The common usage of the term had an element of socio-economic status attached to it; families who were financially successful were not necessarily considered Melungeon, no matter who their ancestors were.
By the early 1960s, newspaper articles predicted the disappearance of the Melungeons; out-migration and intermarriage with whites had nearly rendered the Melungeons indistinguishable from their white neighbors. However, by the end of that decade, Melungeons in Hancock County were acknowledging and celebrating their heritage with an outdoor drama. By the mid-1900s, a "virtual community" of Melungeons had developed on the internet.
One question which has been examined by nearly every writer on this subject is the origin of the name"Melungeon" The most commonly accepted theory is that the word derived fromthe French melange, meaning mixture. A French colony in southwestern Viginia in the late 1700s may have dubbed these people with the plural form of melange, which is melangeon or melangeons, which could conceivably have been corrupted to "Melungeon." Another proposed theory for the origin of "Melungeon" is the Afro-Portuguese term meaning melungo, supposedly meaning shipmate." Yet another is the Greek term melan, meaning "black."
Author Brent Kennedy, in arguing a Trukish origin for the Melungeons, maintains that "Melungeons" derives from the Arabic melun jinnand the Turkishmelun can, both pronounced similarly to " Melungeon" and both translated to "cursed soul" "or one who has been abandoned by God."Kennedy maintains that the Melungeons identified themselves by that name.
Historian C.S.Everett suggests another possible origin for the term:melongena, originally an Italian term related to the more modern melanzane(pronounced meh lun zhen eh) which means "eggplant." The eggplant has a dark skin,and the term was used to describe sub-Saharan Africans.
Karlton Douglas and Joanne Pexxullo suggests that the word "Melungeon" originated as the old English term "malengin"(singular) or "malengine"(plural). An old copy of Webster's Dictionary defines "malengine" as "Evil machination; guile;deceit. Douglas and Pessullo write, "It is well known the people of Appalachia, and Melungeons in particular, used words that were becoming archaic, and not much in use beyond Appalachia."
Nearly everyone that has written about the Melungeons agrees that they fiercely resented the name. Even in mid-20th century, to call a Hancock Countian a Melungeon was to insult him. The stigma attached to the name "Melungeon" leads most researchers to the conclusion that the name was imposed upon the people, that it was not a name they ever used for themselves.
Most Melungeons in Hancock County lool very much like their "white" neighbors, many of whom are quite swarthy from a lifetime of outdoor work. In 1963, Brewton Berry wrote,"[N]either in their culture nor their economy are they distinguishable from other mountain folk. Among those bearing the telltale surnames are individuals of dark complexion and straight black hair...But the physical features of most of them suggest no other ancestry than white." Some historic descriptions of Melungeons include:
They are tall, straight, well-formed people, of a dark copper color...but wolly heads and other similar appendages of our negro.
They are swarthy complexion, with prominent cheek bones, jet black hair, generally straight but at times having a slight tendancy to curl, and the men have heavy black beards...Their frames are well built and some of the men are fine specimens of physical manhood. They are seldom fat.
While some of them are swarthy and have high Indian cheekbones, the mountain whites, too, often display these same characteristics. Also, many of the Melungeons have light hair, blue eyes, and fair skin.
The color of the skin of a full-blooded, pure Melungeon is a much richer brown than an Indian's skin. It is not the color of a part Indian and part white, for their skin is lighter. The full-blooded, pure Melungeon had more the color of a skin of a person from India and Egypt.
In 1946, William Gilbert presented the first comprehensive survey of tri-racial groups in the U.S. He estimated that there were at least 50,000 person who were "complex mixtures in varying degrees of white, Indian, and Negro blood."
Gilbert listed ten major tri-racial groups with several related groups. These included:
      1.BRASS ANKLES and allied groups in South Carolina, including Red Bones, Red Legs, Turks, Marlboro Blues and others.
      2. CAJANS and CREOLES of Alabama and Mississippi.
      3. CROATANS of North Carolina, South Carolina, and Virginia.
      4. GUINEAS of West Virginia and Maryland.
      5. ISSUES of Amherst and Rockingham Counties, Virginia.
      6. JACKSON WHITES of New York and new Jersey.
      7. MELUNGEONS the Southern Appalachians.
      8. MOORS and NANTICOKES of Delaware and New Jersey.
      9. RED BONES of Louisiana.
      10. WESORTS of southern Maryland.
MORE TO FOLLOW.


the Arduino language is merely a set of C/C++ functions that can be called from your code. Your sketch undergoes minor changes (e.g. automatic generation of function prototypes) and then is passed directly to a C/C++ compiler (avr-g++).
Read MoreAt the most basic level, the chassis of an automobile consists of only the frame. ... As well as act as the frame onto which all of the vehicle's parts are attached, it also provides invaluable structural integrity which prevents the car from collapsing into itself under large amounts of strain.
Read MoreThere are many different types of batteries available on the market . Choosing the right battery is essential in a robotics Project
Read moreGears are mechanical parts with cut teeth designed to mesh with teeth on another part so as to transmit or receive force and motion. The cut teeth are also sometimes called cogs. ... In Robotics Gears are used to transfer rotational forces between axles. They can change speed and direction.
Read MoreThis robotics guide deals with the very basics of electronics required for developing robotics systems
Read MoreThere are many types of motors are available in today's market, but mostly Tiny pager motors, servo motors, linear motors, stepper motors and DC geared motors are used in industrial robots according to their application area.
Read MoreThe advantages of virtual memory abstraction and the ability to abstract hardware to their core functions make Raspberry Pi a desirable addition to the ingredients that make a great robotics project.
Read MoreThe AVR microcontroller is excellent with C code because it was designed with C in mind. Atmel have also made it easy to use C in AVR Studio, as WinAVR compiler can run from within AVRStudio just like the assembler. ...


SBI BioE
Unit A
Unit B
Unit C
Unit D
Unit E
The Current time is:
Furnace ON/OFF:
DB count ON/OFF
Placeholder for DB count:32767
Reset
Methanol tank
mass:20g
Conola Tank:
mass:20g
By pass :
Name
Value
1
Mark
2
Jacob
3
Larry


TO SECURE GOOD LUCK FOR A CHILD.


Toggle navigation
Home
Profile
Chatting Room
Logout
You Are In the Queue!
Time remaining until shuttle time:
00
You are
#3
of the Queue.
Chatting Room
Cancel


Watched by The Detective
Sign up and start your free trial with The Spaghetti Detective
Set up Raspberry Pi with Octoprint
Connect Raspberry Pi to printer and webcam. Install The Spaghetti Detective plugin.
Link the Detective up with your printer and print away!
The Spaghetti Detective watches your prints constantly for problems and intervenes to catch failures early.
Check in on your prints in real time to instantly know if the printer is acting up.
Keep a close eye on your setup and step in before anything goes awry.
Access your printer securely from anywhere without opening your home network to the wild internet.
Start/pause/cancel prints anytime, anywhere! Upload your print files and kick-off prints from your phone, desktop, or tablet.
Conveniently access Octoprint's full UI functionality when away from your home network with our tunneling feature.
Collaborate with The Spaghetti Detective's Discord community.
“ Trying out the @thespaghettispy - it works surprisingly well. Stopped the print after a few centimeters of spaghetti. I'm impressed! I mean I can barely see the issue in that photo…”
“ I'm watching TV, and I get an alert from the detective on my phone. I go look, and it looks the the print is finished. Looking closer, I see that it stopped at 98 %. Looking at the print, I see that the print has been knocked out of alignment. If the print had continued, the last 2% would have been offset. What I find amazing about this, is that the detective could tell that there was a problem without any spaghetti being generated. I didnt realize that the algorithm could detect this failure as well. Well done dev team!”
“ Keep up the good work. This program is invaluable. Saved me at least 10 messes already.Worth a few false positives not resuming quickly.”
 The Spaghetti Detective is his most recent effort at bringing new technologies to 3D printing.
Other works: OctoPrint Anywhere and the Slicer Plugin


Utility Application Template
In Episode 2 of Forging Titanium, we took a look at a framework for displaying a stack of windows in a cross-platform navigation controller. In the following episode, we'll be implementing a template for a simple two-stage utility application, while isolating our cross-platform navigation code to a single component.
We will be building upon our technique of creating custom components, while adding in an important API for creating component-oriented applications: Application-level events. By firing and listening for custom events, we can ensure that components in our system do not need to have knowledge of how other components behave - they just need to know how to indicate to the rest of the application that an important event has happened.
Find out how use this technique to create a two-stage utility application in this week's episode of Forging Titanium.
Episode Resources:


astropy.wcs History¶
astropy.wcs
began life as pywcs
. Earlier version numbers refer to
that package.
pywcs Version 1.11¶
- Updated to wcslib version 4.8, which gives much more detailed error messages.
- Added functions get_pc() and get_cdelt(). These provide a way to always get the canonical representation of the linear transformation matrix, whether the header specified it in PC, CD or CROTA form.
- Long-running process will now release the Python GIL to better support Python multithreading.
- The dimensions of the
cd
andpc
matrices were always returned as 2x2. They now are sized according to naxis. - Supports Python 3.x
- Builds on Microsoft Windows without severely patching wcslib.
- Lots of new unit tests
pywcs
will now run withoutpyfits
, though the SIP and distortion lookup table functionality is unavailable.- Setting
cunit
will now verify that the values are valid unit strings.
pywcs Version 1.10¶
- Adds a
UnitConversion
class, which gives access to wcslib’s unit conversion functionality. Given two convertible unit strings, pywcs can convert arrays of values from one to the other. - Now uses wcslib 4.7
- Changes to some wcs values would not always calculate secondary values.
pywcs Version 1.9¶
Support binary image arrays and pixel list format WCS by presenting a way to call wcslib’s
wcsbth()
Updated underlying wcslib to version 4.5, which fixes the following:
- Fixed the interpretation of VELREF when translating AIPS-convention spectral types. Such translation is now handled by a new special- purpose function, spcaips(). The wcsprm struct has been augmented with an entry for velref which is filled by wcspih() and wcsbth(). Previously, selection by VELREF of the radio or optical velocity convention for type VELO was not properly handled.
pywcs Version 1.3a1¶
Earlier versions of pywcs had two versions of every conversion method:
X(...) -- treats the origin of pixel coordinates at (0, 0)
X_fits(...) -- treats the origin of pixel coordinates at (1, 1)
From version 1.3 onwards, there is only one method for each conversion, with an ‘origin’ argument:
- 0: places the origin at (0, 0), which is the C/Numpy convention.
- 1: places the origin at (1, 1), which is the Fortran/FITS convention.


public class XWalkView
extends XWalkViewInternal
XWalkView represents an Android view for web apps/pages. Thus most of attributes
for Android view are valid for this class. Since it internally uses
android.view.SurfaceView for rendering web pages by default, it can't be resized,
rotated, transformed and animated due to the limitations of SurfaceView.
Alternatively, if the preference key XWalkPreferences.ANIMATABLE_XWALK_VIEW
is set to True, XWalkView can be transformed and animated because
TextureView is intentionally used to render web pages for animation support.
Besides, XWalkView won't be rendered if it's invisible.
XWalkView needs hardware acceleration to render web pages. As a result, the AndroidManifest.xml of the caller's app must be appended with the attribute "android:hardwareAccelerated" and its value must be set as "true".
<application android:name="android.app.Application" android:label="XWalkUsers" android:hardwareAccelerated="true">
Crosswalk provides 2 major callback classes, namely XWalkResourceClient
and
XWalkUIClient
for listening to the events related to resource loading and UI.
By default, Crosswalk has a default implementation. Callers can override them if needed.
Unlike other Android views, this class has to listen to system events like intents and activity result. The web engine inside this view need to get and handle them. With contianer activity's lifecycle change, XWalkView will pause all timers and other components like videos when activity paused, resume back them when activity resumed. When activity is about to destroy, XWalkView will destroy itself as well. Embedders can also call onHide() and pauseTimers() to explicitly pause XWalkView. Similarily with onShow(), resumeTimers() and onDestroy(). For example:
import android.app.Activity; import android.os.Bundle; import org.xwalk.core.XWalkResourceClient; import org.xwalk.core.XWalkUIClient; import org.xwalk.core.XWalkView; public class MyActivity extends Activity { XWalkView mXwalkView; class MyResourceClient extends XWalkResourceClient { MyResourceClient(XWalkView view) { super(view); } @Override WebResourceResponse shouldInterceptLoadRequest(XWalkView view, String url) { // Handle it here. ... } } class MyUIClient extends XWalkUIClient { MyUIClient(XWalkView view) { super(view); } @Override void onFullscreenToggled(XWalkView view, String url) { // Handle it here. ... } } @Override protected void onCreate(Bundle savedInstanceState) { mXwalkView = new XWalkView(this, null); setContentView(mXwalkView); mXwalkView.setResourceClient(new MyResourceClient(mXwalkView)); mXwalkView.setUIClient(new MyUIClient(mXwalkView)); mXwalkView.load("http://www.crosswalk-project.org", null); } @Override protected void onPause() { super.onPause(); if (mXwalkView != null) { mXwalkView.pauseTimers(); mXwalkView.onHide(); } } @Override protected void onResume() { super.onResume(); if (mXwalkView != null) { mXwalkView.resumeTimers(); mXwalkView.onShow(); } } @Override protected void onDestroy() { super.onDestroy(); if (mXwalkView != null) { mXwalkView.onDestroy(); } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (mXwalkView != null) { mXwalkView.onActivityResult(requestCode, resultCode, data); } } @Override protected void onNewIntent(Intent intent) { if (mXwalkView != null) { mXwalkView.onNewIntent(intent); } } }
| Modifier and Type | Field and Description |
|---|---|
static int |
RELOAD_IGNORE_CACHE
Reload mode with bypassing the cache.
|
static int |
RELOAD_NORMAL
Normal reload mode as default.
|
| Constructor and Description |
|---|
XWalkView(Context context,
Activity activity)
Constructor for Crosswalk runtime.
|
XWalkView(Context context,
AttributeSet attrs)
Constructor for inflating via XML.
|
| Modifier and Type | Method and Description |
|---|---|
void |
addJavascriptInterface(java.lang.Object object,
java.lang.String name)
Injects the supplied Java object into this XWalkView.
|
void |
clearCache(boolean includeDiskFiles)
Clear the resource cache.
|
void |
evaluateJavascript(java.lang.String script,
Evaluate a fragment of JavaScript code and get the result via callback.
|
java.lang.String |
getAPIVersion()
Get the API version of Crosswalk embedding API.
|
XWalkNavigationHistory |
getNavigationHistory()
Get the navigation history for current XWalkView.
|
java.lang.String |
getOriginalUrl()
Get the original url specified by caller.
|
java.lang.String |
getTitle()
Get the title of current web page/app.
|
java.lang.String |
getUrl()
Get the url of current web page/app.
|
java.lang.String |
getXWalkVersion()
Get the Crosswalk version.
|
boolean |
hasEnteredFullscreen()
Indicate that a HTML element is occupying the whole screen.
|
void |
leaveFullscreen()
Leave fullscreen mode if it's.
|
void |
load(java.lang.String url,
java.lang.String content)
Load a web page/app from a given base URL or a content.
|
void |
loadAppFromManifest(java.lang.String url,
java.lang.String content)
Load a web app from a given manifest.json file.
|
void |
onActivityResult(int requestCode,
int resultCode,
Intent data)
Pass through activity result to XWalkView.
|
void |
onDestroy()
Release internal resources occupied by this XWalkView.
|
void |
onHide()
Pause many other things except JavaScript timers inside rendering engine,
like video player, modal dialogs, etc.
|
boolean |
onNewIntent(Intent intent)
Pass through intents to XWalkView.
|
void |
onShow()
Resume video player, modal dialogs.
|
void |
pauseTimers()
Pause all layout, parsing and JavaScript timers for all XWalkView instances.
|
void |
reload(int mode)
Reload a web app with a given mode.
|
boolean |
restoreState(Bundle inState)
Restore the state from the saved bundle data.
|
void |
resumeTimers()
Resume all layout, parsing and JavaScript timers for all XWalkView instances.
|
boolean |
saveState(Bundle outState)
Save current internal state of this XWalkView.
|
void |
setResourceClient(XWalkResourceClient client)
Embedders use this to customize their handlers to events/callbacks related
to resource loading.
|
void |
setUIClient(XWalkUIClient client)
Embedders use this to customize their handlers to events/callbacks related
to UI.
|
void |
stopLoading()
Stop current loading progress.
|
public static final int RELOAD_NORMAL
public static final int RELOAD_IGNORE_CACHE
public XWalkView(Context context, AttributeSet attrs)
context
- a Context object used to access application assets.attrs
- an AttributeSet passed to our parent.public XWalkView(Context context, Activity activity)
context
- a Context object used to access application assetsactivity
- the activity for this XWalkView.public void load(java.lang.String url, java.lang.String content)
getUrl()
.
If content is null, try to load the content from the url.
It supports URL schemes like 'http:', 'https:' and 'file:'.
It can also load files from Android assets, e.g. 'file:///android_asset/'.url
- the url for web page/app.content
- the content for the web page/app. Could be empty.public void loadAppFromManifest(java.lang.String url, java.lang.String content)
url
- the url for manifest.json.content
- the content for manifest.json.public void reload(int mode)
mode
- the reload mode.public void stopLoading()
public java.lang.String getUrl()
public java.lang.String getTitle()
public java.lang.String getOriginalUrl()
public XWalkNavigationHistory getNavigationHistory()
public void addJavascriptInterface(java.lang.Object object, java.lang.String name)
JavascriptInterface
if it's called by JavaScript.object
- the supplied Java object, called by JavaScript.name
- the name injected in JavaScript.public void evaluateJavascript(java.lang.String script,callback)
script
- the JavaScript string.callback
- the callback to handle the evaluated result.public void clearCache(boolean includeDiskFiles)
includeDiskFiles
- indicate whether to clear disk files for cache.public boolean hasEnteredFullscreen()
public void leaveFullscreen()
public void pauseTimers()
public void resumeTimers()
public void onHide()
pauseTimers()
about pausing
JavaScript timers.
It will be called when the container Activity get paused. It can also be explicitly
called to pause above things.public void onShow()
public void onDestroy()
public void onActivityResult(int requestCode, int resultCode, Intent data)
requestCode
- passed from android.app.Activity.onActivityResult().resultCode
- passed from android.app.Activity.onActivityResult().data
- passed from android.app.Activity.onActivityResult().public boolean onNewIntent(Intent intent)
intent
- passed from android.app.Activity.onNewIntent().public boolean saveState(Bundle outState)
outState
- the saved state for restoring.public boolean restoreState(Bundle inState)
inState
- the state saved from saveState().public java.lang.String getAPIVersion()
public java.lang.String getXWalkVersion()
public void setUIClient(XWalkUIClient client)
client
- the XWalkUIClient defined by callers.public void setResourceClient(XWalkResourceClient client)
client
- the XWalkResourceClient defined by callers.


STEFANIE TAM
INFORMATION
08.2018; 6"x6", WEBSITE
HTTP://OFPLACE.INFO/ is the result of an extensive surveillance collection of Google Maps satellite images. With choices dictated by randomization, pre-established rules, curiosity, and intuition, ://OFPLACE. archives 600 images of 20 different cities. ://OFPLACE. simultaneously compares and contrasts both basic and strange infrastructural features of various cities while it also allows the user to explore cities around the world in a way that’s dictated by intuition rather than preconceived notions tied to a specific location.
://OFPLACE. explores the relationship between print and web to reflect the contrasting nature of digital and physical within the quickly evolving landscape of contemporary design and art practices. Creating ://OFPLACE. was an exercise of transparent data collection and reflection of dispersion of information.


--- layout: nb-post title: "Principal Component Analysis vs Exploratory Factor Analysis" author: Brian Feldstein github: BrianFeldstein tags: [PCA, Exploratory Factor Analysis] ---
NOTE: the code in this notebook can be hidden for readability. To toggle on/off, click here.
Recently, exploratory factor analysis (EFA) came up in some work I was doing, and I put some effort into trying to understand its similarities and differences with principal component analysis (PCA). Finding clear and explicit references on EFA turned out to be hard, but I can recommend taking a look at this book and this Cross Validated question. Here, I will review both PCA and EFA, and compare and contrast them. These are both techniques which can be used to figure out which combinations of features are important to your data, and for reducing the dimensionality of your feature space.
Suppose we have $p$ features, and $n$ data points, comprising an $n \times p$ matrix $X$. Without loss of generality, we may assume that the means for each feature have been subtracted (so that the columns of X each average to 0), and that each feature has also been normalized by its measured standard deviation (so that the standard deviation of each column is 1).
We can form the correlation matrix of X as
$S = \frac{1}{n}X^T X$,
and determine its orthonormal eigenvectors $\overrightarrow{u}_1 .. \overrightarrow{u}_p$, and corresponding positive eigenvalues $d_1 .. d_p$. These eigenvectors are referred to as "principal components".
We may then project the data onto a subspace spanned by some set of the $\overrightarrow{u}_i$'s with the largest eigenvalues. The idea is that directions in feature space showing little variation in the data do not contain much useful information, and so can safely be dropped.
For example, let's consider a simple case in which we have two features, which are always equal to each other up to random, normally distributed measurement error terms:
$x_1 = a + e_1$
$x_2 = a + e_2$
Here the $e_i$'s are the error terms, and $a$ is some variable whose value determines the correlated parts of $x_1$ and $x_2$. We can generate an example data set for this system, with 10,000 data points, as follows:
import numpy as np
from matplotlib import pyplot as plt
import seaborn
import pandas as pd
%matplotlib inline
n = 10000
p = 2
a = np.random.normal(size=(n, 1))
e = np.random.normal(scale=0.2, size=(n, p))
X = np.hstack((a, a)) + e
X = X - np.mean(X, axis=0)
X = X / np.std(X, axis=0)
S = (1 / n) * np.transpose(X).dot(X)
eig = np.linalg.eig(S)
idx = eig[0].argsort()[::-1]
u1 = eig[1][:, idx[0]]
u2 = eig[1][:, idx[1]]
d = eig[0][idx]
print(S)
print("Eigenvalues: ", d)
print("Eigenvector 1: ", u1)
print("Eigenvector 2: ", u2)
Note that we have taken the error terms to have standard deviation $.2$, while a is normally distributed with standard deviation $1$. Below we plot the data set and the two normalized eigenvectors:
plt.scatter(X[:, 0], X[:, 1])
plt.xlim((-4, 4))
plt.ylim((-4, 4))
plt.axes().set_aspect('equal')
ax = plt.axes()
ax.arrow(0, 0, u1[0], u1[1], head_width=0.1, head_length=0.1, lw=3, color='r')
ax.arrow(0, 0, u2[0], u2[1], head_width=0.1, head_length=0.1, lw=3, color='g')
plt.show()
We can see that $\overrightarrow{u}_2$, corresponding to the green arrow above, corresponds to a direction in which there is little variation in the data. We could thus project the data onto the $\overrightarrow{u}_1$ (red) direction without losing too much information.
In EFA, one makes an ansatz that the features we measure in the data are linearly determined from a smaller set of more fundamental parameters, plus uncorrelated "measurement error" terms. The data set we generated above for our PCA example happened to follow exactly this sort of ansatz, with 2 measured features $x_i$, and one underlying parameter $a$.
That is, in EFA, we take an ansatz
$x_i = \sum_{k} L_{ik} f_k + e_i$,
where the $f_k$'s are the fundamental underlying parameters, or "factors", and the "loadings" $L$ describe how the measured parameters are determined in terms of the $f_k$'s. The $e_i$'s are the error terms. Note that this form for the features is simply a model, and the data scientist looking at a data set has no a priori knowledge what the fundamental parameters are, or even how many there many be.
The goal of EFA is to try to determine what the fundamental parameters- or "factors"- underlying a data set might be. Let us assume there to be $m$ different factors in our model. We may assume that the $f_k$'s are uncorrelated with each other and have unit standard deviation (without loss of generality, since we may always redefine the $f_k$'s to have this property). We also assume that the $f_k$'s and error terms are uncorrelated. It then follows from our expression for the $x_i$'s above that if our ansatz is correct, the correlation matrix for the $x_i$'s in the full poulation will take the form
$P = L\ L^T + \psi$,
where $\psi = e\ e^T$ is diagonal since the measurement errors are assumed uncorrelated, and $L$ is a $p\times m$ matrix.
Given a measured data set X with $n$ data points, we may form the sample correlation matrix as $S = \frac{1}{n} X^T X$, and we may attempt to determine $L$ and $\psi$ so that our theoretical correlation matrix $P$ matches $S$ as closely as possible. More precisely, we may try to minimize the sum of squares of all of the elements of $S-P$. Note that the diagonal elements of $S-P$ may always be taken to $0$ by appropriately adjusting $\psi$. Therefore, we would like to find a matrix $L$ such that the sum of squares of the off diagonal elements of $S - L\ L^T$ is as small as possible.
Note that if we can find such a matrix $L$, it is not unique. We may always take a new matrix $L' = L\ O$ for any $m \times m$ orthogonal matrix O, and $L'\ L'^T$ will remain unchanged. The columns of $L$ span a subspace of feature space corresponding to the directions of the factors in the model. Applying an orthogonal transformation $O$ to $L$, simply corresponds to changing our basis for this factor subspace, in such a way that the underlying factors $f$ remain uncorrelated.
Let us consider again the same data set $X$ we generated above for our PCA example, but instead perform an exploratory factor analysis. As shown above, our sample correlation matrix has the form
print("S = ")
print(pd.DataFrame(S).to_string(header = False, index = False))
With one factor, a candidate loading matrix is simply
print("L = ")
print(pd.DataFrame(np.array([["l1"], ["l2"]])).to_string(header=False, index=False))
So that the off diagonal elements of $S$ may be approximated exactly by setting $l_1 = .962057/l_2$.
We thus see in this example, that one factor, pointing in any direction in feature space, could be thought of as "underlying" the data set (so long as the model also included appropriate measurement errors for the two measured variables in order to also reproduce the diagonal elements of $S$). Of course, in this case the conclusion is correct: we did indeed generate the data set with a single underlying factor.
However, exactly the same mathematics shows that in fact, in factor analysis, a 2 dimensional feature space may always be represented exactly as coming from a single underlying factor. This is in clear contrast to PCA, where, if we had set larger errors "e" in generating the data set, then the oval in our above figure would become more spread out and circular. We would then have concluded that both principal components were needed to describe the data. In EFA however, we would always find a perfect fit to the off-diagonal correlations with one factor.
The present example also shows that exploratory factor analysis does not lead to unique factors. When the number of model factors is much smaller than the number of measured features, typically only the orthogonal transformation ambiguity mentioned above is present (in which case the subspace spanned by the factors is fixed). As in this 2 dimensional example case, however, there can also be further ambiguities.
Factor analysis tries to find a description of the data in terms of a smaller set of underlying factors, but there are in general many such possible descriptions. What is typically done, is to look for a set of factors with further desirable properties, such as having loading matrices with many elements close to 0. This sort of structure makes factors easier to "interpret" intuitively in terms of the measured variables. Perhaps more importantly, if it is actually the case that some of the measured variables are more fundamental than (and determine) the others, it may be possible to use factor analysis to determine which ones they are by looking for the simplest factor structure.
At this point one might be tempted to conclude that PCA and EFA are essentially unrelated, both in concept and output.
PCA tries to find a set of eigenvectors of the correlation matrix, in order to find directions in the data with the largest variance. One can then reduce the dimensionality of the data set by projecting onto those eigenvectors with the largest eigenvalues. In this way one reduces the effective size of the feature space without losing too much information.
Factor Analysis begins with a different point of view; it tries to model correlations between measured variables in the data by writing them as linear combinations of some smaller set of underlying "factors". EFA does not care about intrinsic variance in a measured variable due to measurement error, and therefore only tries to model the off-diagonal elements of the correlation matrix.
However, mathematically, PCA and EFA have a lot more in common with each other than is immediately apparent.
Let us arrange the $m$ PCA principal component eigenvectors with $m$ highest eigenvalues into the columns of a matrix $U$. Let $D$ be the corresponding $m \times m$ diagonal matrix of eigenvalues. We may define a loading matrix for PCA as $L = U\ D^{1/2}$. If $m$ was set to its maximum value of $p$ then we would have $S = L\ L^T$. For smaller $m$, we might wonder how well $L\ L^T$ actually approximates $S$... in fact it provides the best possible approximation to $S$ amongst all $L$'s of the given dimensions, as defined by the sum of squared errors of the matrix elements! The proof follows quickly from the Eckart-Young theorem (see https://en.wikipedia.org/wiki/Singular_value_decomposition).
Therefore, $P = L\ L^T$ minimizes the sum of squared errors of the matrix $S - P$. Notice the obvious similarity to factor analysis, where we tried to minimize the same quantity, but with $P = L\ L^T + \psi$ for $\psi$ diagonal. Thus PCA provides a solution to the factor analysis problem, except that PCA does not ignore intrinsic measurement error on each measured variable in the same way that factor analysis does (and there is no need to assume uncorrelated measurement errors as in factor analysis).
In fact, the loading matrix provided by PCA becomes a better and better approximation to a factor analysis solution as the original number of features $p$ becomes large. This is because there are $\frac{p^2 - p}{2}$ off-diagonal components of $S$, but only $p$ diagonal components. Therefore, the fact that factor analysis solutions do not attempt to approximate the diagonal components of $S$ becomes less and less important for larger $p$.
Note that in PCA, the principal component eigenvectors and their eigenvalues may be solved for algebraically. Unfortunately, the same is not true for EFA: the loading matrices $L$ can only be determined numerically. Moreover, in EFA, given the form of the model $x_i = \sum_{k} L_{ik} f_k + e_i$, and some set of factor loadings $L$ and a set of measurements $x_i$, there is in general no unique way to determine what specific values of the $f_k$ were behind the measurements. To estimate the $f_k$, various procedures may be adopted, such as choosing the $f_k$ which minimize the required measurement errors $e_i$. The resulting factor scores may then be used as a "reduced" set of feature values if desired, just as PCA may be used for dimensionality reduction.
Principal Component Analysis and Exploratory Factor analysis are both methods which may be used to reduce the dimensionality of data sets. Philosophically they are very different: PCA tries to write all variables in terms of a smaller set of features which allows for a maximum amount of variance to be retained in the data. EFA tries to find a set of features which allow for understanding as much of the correlations between measured variables as possible. However, EFA does not attempt to reproduce variance which is due to "measurement error" only affecting measured variables individually.
In PCA the principal component directions are taken to be eigenvectors of the correlation matrix, while an analogous requirement is not used in EFA. In EFA one rather tries to find a set of underlying features which is related in a simple way to the original measured variables, although there is generally not a unique solution. Mathematically, a set of principle components from PCA will give an approximate solution for the EFA problem when the number of measured variables is large.


PRODUCTS
Industrial / Domestic Gases
Industrial Gases
LP / Domestic Gases
Welding Machines / Torches /Spares
MIG Welding Machines
TIG Welding Machines
Plasma Cutting Machines
ARC Welding Machines
Mig Torches
Mig Torch Spares
BZ 15 Contact tips
BZ 24- 501 Contact Tips
Gas Diffusers
Tip Adaptor
Swan Necks
Bz Nozzles
Bz Liners
Switches
Torch Handles
Central /Torch Adaptor & Plug
Power Cables
Gun Body
Power Conduit & Gas Pipe
Tig Torches
Tig Torch Spares
Tig Torch Body
Back Caps
Ceramic Nozzle
Ceramic Gas Lens Nozzle
Gas Lens
Collets
Collet Body
Switches
Tungston
Gas Cutting & Welding Accessories
Gas Cut & Weld Accessories
Regulators
MIG Process
Mig Spares
Nozzles
BZ15 Connicle Nozzle
BZ25 Connicle Nozzle
BZ36 Connicle Nozzle
BZ40 Connicle Nozzle
BZ501 Connicle Nozzle
BZ Contact Tips
Swan Necks
BZ Tip Adaptors
Power Cables
BZ Gas Diffusers
Liners
MIG Torches
Hoses
Flashback Arrestors
Gas Equipment Accessories
Welding Electrodes
Safety Wear
Head Protection
Spectacles
Ear Plugs
SFT025
Hard Hats & Helmets
Body Protection
Overalls
Gloves
Foot Wear
Safety Shoes
Cutting & Grinding
Cutting Discs
Grinding Discs
Flap Discs
Flap Wheels
Grinding Stones
Mop Wheels
Pencil Grinders
Tungston Burrs
Sanding Abrasives
Velcro Discs
Tools
Drills
Grinders
Spanners
Pliers
Screw Drivers
Brushware
Bass Brooms
Platform Brooms
Yard Brooms
Tig Torches & Spares
Tig Torches
Tig Torch Body
Back Caps
Ceramic Nozzles
Ceramic Gas Lens Nozzles
Gas Lens
Collets
Collet Body
2% Thoriated Tungsten Electrodes
Tungstons
Switches
Switch Boot
Mig Torch & Spares
BZ15 X 4m Torch & Spares
BZ24 X 4m MIG Torch
BZ25 X 4m MIG Torch
Bz36 X 4m MIG Torch
Welding Chemicals & Fluxes
Safety Gloves & Protection
Gas Torches
Universal Cutting Torch
Shank / Torch Handle
Cutting Attachment
Mixer (SAF OXY / Act)
Nozzle Nut Type2 Universal


M&S Cube is a smart phone and tablet app that serves as a gentle introduction to the emerging field of modeling and simulation.
I developed the first version of the iPad app in 2012 and also ported the app to iPhone platform in 2013.
Other contributors are Anthony M. Barraco who developed the second version of iPad app and Android version and Anitam who helped porting the app to iPhone platform.
The project was led by Dr. Jose J Padilla and Dr Saikou Y Diallo. You can download the app using the links below.


Event Location:
Free Mind Foundry
Via Sclafani 40
Acireale, Sicilia, Italy
Abstract:
Are you faced with complaints from users, poor performing code from developers, and regular requests to build reports? Do you uncover installation and configuration issues on your SQL Server instances? Have you ever thought that in dire times avoiding Worst Practices could be a good starting point? If the answer is “yes”, then this session is for you: together we will discover how not to torture a SQL Server instance and we will see how to avoid making choices that turn out to be not so smart in the long run. You are probably thinking: “Hey, wait, what about Best Practices?”. Sometimes Best Practices are not enough, especially for beginners, and it is not always clear what happens if we fail to follow them. Worst Practices can show the mistakes to avoid. I have made lots of mistakes throughout my career: come and learn from my mistakes!
Speaker(s): Gianluca Sartori,
Abstract:
SQL Server offre da sempre gli strumenti per gestire dati gerarchici e relazioni tra le entità. A volte, però, le relazioni tra le entità possono diventare complesse. Pensiamo ad una relazione molti-a-molti, i database relazionali non dispongono di soluzioni native per questo tipo di legame, che viene comunemente implementato con una tabella di associazione. SQL Server 2017, grazie all'introduzione di Graph Database, permette di esprimere certi tipi di query più facilmente rispetto ad un database relazionale puro. In questa sessione verrà fornita un'introduzione a SQL Graph e agli scenari di utilizzo. Nell'ultima demo verrà mostrato come costruire un sistema di raccomandazione per le offerte, in grado di determinare i prodotti consigliati sulla base del prodotto che il cliente sta acquistando, uno scenario tipico di utilizzo di SQL Graph.
Speaker(s): Sergio Govoni,
Abstract:
OR, How In-Memory Objects Can Supercharge Your Data And Bring About World Peace OK, so you’ve been reading about, perhaps even testing out some of the ‘in-memory’ objects now available in SQL Server. Some of the claims are exciting, and some seem overly optimistic. And Yet, you want to know, experience more … Perhaps your situation doesn’t really call out for in-memory tables. But you should consider memory-optimized #Temp tables, memory-optimized table variables, and natively compiled stored procedures.It’s true. Using memory-optimized tables requires a little more fore-thought, a bit more care, even a few configuration tweaks. • But what are the real advantages of memory-optimized objects? • What are the memory-optimized objects you can use? • How can you best use memory-optimized objects? In this demo packed session, we will discuss the pros and cons of using memory-optimized objects in ways that will supercharge your SQL Server.
Speaker(s): Arnie Rowland,
Abstract:
Con l'avvicinarsi della scadenza per il recepimento del regolamento generale sulla protezione dei dati (GDPR, General Data Protection Regulation), ma anche per il continuo e preoccupante aumento del numero di crimini informatici, il tema della protezione dei dati diventa sempre più importante. Gli RDBMS sono tradizionalmente uno degli obiettivi principali di attacchi informatici e SQL Server offre svariate tecnologie sia per proteggere i dati in transito e a riposo, che per monitorare in maniera proattiva i tentativi di aggirare i meccanismi di protezione. Lungi dal voler esaurire l'argomento GDPR, che spesso è più una questione di processi che di tecnologia, in questa sessione vedremo quali sono le tecnologie che possono aiutarci nel recepimento del regolamento scendendo più in dettaglio sulle nuove funzionalità introdotte con SQL Server 2016 e faremo anche alcuni cenni alle tecnologie per mitigare i rischi di perdita dei dati.
Speaker(s): Gianluca Hotz,
Abstract:
Quando le cose funzionano bene è improbabile che ci si ponga il problema di verificare il "buon comportamento" del Transaction Log del nostro database. Quando però qualcosa non funziona a dovere, una buona conoscenza dell'architettura e delle logiche che governano questo specialissimo file sono essenziali per aiutarci ad individuare le corrette soluzioni. Qualche suggerimento ed una panoramica sul problema possono aiutarci a risolvere il problema, o anche solo a gestire al meglio il ripristino urgente (ovviamente point-in-time!) richiesto da qualche utente molto preoccupato.
Speaker(s): Gilberto Zampatti,
Abstract:
Azure Cosmos DB is Microsoft's globally distributed, multi-model database. This is NoSQL in the cloud. In this session, you'll see how to use it to create columnar tables, JSON documents and graphs, you'll understand what that means, see what's the difference with relational tables, and how it can be useful for you.
Speaker(s): Rudi Bruchez,
Abstract:
While creating SQL Server VMs via Azure gallery templates is really cool, these pre-built instaces are meant to be used in a large variety of scenarios and consequently use generic settings which aren't optimized from a performance point of view. Let's see together how to maximize performance (and minimize costs) of our SQL VMs on Azure, following Microsoft best practices and some additional tips.
Speaker(s): Marco Obinu,
Abstract:
This certification exam prep session is designed for people experienced with analysing, modeling and visualizing Data and are interested in taking the 70-778. Attendees of this session can expect to review the topics covered in this exam in a a fast-paced format, as well as receive some valuable test taking techniques. Attendees will leave with an understanding of how Microsoft Certification works, what are the key topics covered in the exams and an exhaustive look at resources for finalising and getting ready for the exam.
Speaker(s): Dr. Subramani Paramasivam,
Abstract:
Spesso un algoritmo di Machine Learning è visto come una di quelle armi magiche in grado di rivelare possibili scenari futuri a chi la detiene. In verità si tratta di applicazioni dirette di concetti di matematica e statistica, che a volte generano come output dei modelli complessi da interpretare. Esistono però dei modelli predittivi basati su alberi decisionali che sono davvero semplici da comprendere. In questa sessione verrà spiegato cosa c'è dietro ad un modello predittivo di questo tipo, chiarendo il tutto con pratici esempi realizzati in R.
Speaker(s): Luca Zavarella,
Abstract:
In this session the SMB 3.0 protocol will be presented and how we can take advantages and increase the availability and performance of the environment by investing less in infrastructure.
Speaker(s): Marcelo Fernandes,
Abstract:
Una delle nuove (tante) funzionalit#224; di SQL Server 2016 #232; il supporto integrato per tabelle di dati temporali. Con una tabella temporale pu#242; essere reperito il valore di ciascun record in qualsiasi momento nel tempo. Questo pu#242; essere utile per "viaggiare nel tempo", per fare audit, recuperare il vecchio valore di un campo in seguito a una modifica accidentale.
Speaker(s): Pasquale Ceglie,
Abstract:
Ricordate quando, qualche anno fa, SQL Server su Linux era solo un pesce d'aprile? Beh, oggi è una realtà che sta rapidamente conquistando l'interesse del mercato. In questa sessione vedremo quali sono le caratteristiche, i prerequisiti e le modalità di installazione su Linux e Docker e come amministrare e monitorare SQL Server per Linux da un qualsiasi sistema operativo.
Speaker(s): Danilo Dominici,
This is a list of speakers from the XML Guidebook records. The details and URLs were valid at the time of the event.
Danilo Dominici, lavora con SQL Server sin dalla versione 6.5. Si occupa principalmente di progettazione, implementazione ed ottimizzazione architetturale, monitoring e performance tuning. Alterna le attivit#224; di consulenza a quelle di formatore, speaker ed autore. Microsoft Certified Trainer dal 2000 e SQL Server MVP dal 2014, #232; anche co-leader del PASS Global Italian Virtual Chapter, lo user group quot;virtualequot; in lingua italiana dedicato a SQL Server.
LinkedIn: http://www.linkedin.com/in/sgovoni
Contact: https://mvp.microsoft.com/it-it/PublicProfile/4029181?fullName=Sergio%20Govoni
Since 1999 Sergio Govoni has been a software developer; in 2000 he got a degree in Computer Science at "Università degli Studi" in Ferrara (Italy). He has worked for over 18 years in Centro Software, a software house that produces the best ERP for manufacturing companies that are export oriented. Now, he manages the development product team and he is constantly involved on several team projects, where he focues his attention on the architecture and the mission-critical technical details. Since 2016 he is the vice president of the UGISS (www.ugiss.org). For the provided help to technical communities and for sharing his own experience, since 2010 he has received the Microsoft Data Platform MVP award.
LinkedIn: http://it.linkedin.com/in/ghotz
Contact: http://www.ghotz.com
Gianluca Hotz is an independent consultant, trainer, speaker and Mentor specialized in architecture, database design, high availability, capacity planning, performance tuning, system integration and migrations for Microsoft SQL Server. He has been working as a consultant in the IT field since 1993 and with SQL Server since 1996. He is among the original founders of ugiss.org, where he served as vice-president from 2001 to 2016 and he is now serving as president, for his contribution to the community he has been a SQL Server MVP since 1998.
LinkedIn: https://www.linkedin.com/in/lucazavarella/
Contact: http://blogs.solidq.com/en/author/lzavarella/
Mentor Technical Director at SolidQ Italy. He loves BI, Advanced Analytics and Machine Learning. He plays piano in the free time.
LinkedIn: https://www.linkedin.com/in/marco-obinu-omegamadlab/
Contact: https://www.omegamadlab.com
Curious by nature, talkative geek who can speak in front of a public or a camera, in love with technology, primarily SQL Server and Azure. I'd like to understand how things work and to solve problems by myself.
LinkedIn: https://it.linkedin.com/in/pasqualeceglie
MCSE - Data Management and Analytics
LinkedIn: https://br.linkedin.com/in/marcelodba
Contact: http://marcelodba.wordpress.com
Marcelo Fernandes is SQL Server MVP and has 12+ years experience with databases, specialized in High Availability, critical missions and very large databases. He holds the MCP / MCDBA / MCSA / MCTS / MCITP and MCT certifications, he lives and works in Berlin for an American e-commerce company that sells home goods. He share their knowledge through webcasts, presentations and articles on Microsoft technologies and can be cantacted by email<EMAIL_ADDRESS>or twitter @ marcelodba
LinkedIn: https://www.linkedin.com/in/arnie
Contact: http://sqlblog.com/blogs/arnie_rowland/
Arnie long ago realized that most issues between Developer and DBA comes from incomplete communication and a misunderstanding of each other's objectives. He is a frequent Trainer and Mentor for Developers and DBAs, bringing both sets of skills to better communicate with teams to create a working solution. For over a decade, Arnie has been a SQL Server MVP, Certified Trainer, technical editor for several publishers, including MOC, and has served as University and Community College adjunct faculty. Clients include Fortune 500 and Multi-Nationals, Federal and State agencies, Foreign governments, and local enterprises –both public and private.
LinkedIn: https://www.linkedin.com/in/arnie
Contact: http://sqlblog.com/blogs/arnie_rowland/
Arnie long ago realized that most issues between Developer and DBA comes from incomplete communication and a misunderstanding of each other's objectives. He is a frequent Trainer and Mentor for Developers and DBAs, bringing both sets of skills to better communicate with teams to create a working solution. For over a decade, Arnie has been a SQL Server MVP, Certified Trainer, technical editor for several publishers, including MOC, and has served as University and Community College adjunct faculty. Clients include Fortune 500 and Multi-Nationals, Federal and State agencies, Foreign governments, and local enterprises –both public and private.
LinkedIn: https://fr.linkedin.com/in/rudibruchez
Contact: http://www.babaluga.com/
(same as before)
LinkedIn: http://it.linkedin.com/pub/gianluca-sartori/23/50b/a12
Contact: http://spaghettidba.com
Gianluca Sartori is a Data Platform MVP, independent consultant and performance tuning specialist. He has been working in the software industry since 1999 and has been working with SQL Server ever since. He also works as a SQL Server trainer and in his spare time he writes technical articles and participates the SQL Server forums. Gianluca enjoys presenting SQL Server topics at conferences in Europe and in Italy in particular. He is currently working as lead DBA at a famous Formula 1 team.
LinkedIn: http://it.linkedin.com/pub/gianluca-sartori/23/50b/a12
Contact: http://spaghettidba.com
Gianluca Sartori is a Data Platform MVP, independent consultant and performance tuning specialist. He has been working in the software industry since 1999 and has been working with SQL Server ever since. He also works as a SQL Server trainer and in his spare time he writes technical articles and participates the SQL Server forums. Gianluca enjoys presenting SQL Server topics at conferences in Europe and in Italy in particular. He is currently working as lead DBA at a famous Formula 1 team.
LinkedIn: http://uk.linkedin.com/in/dageop
Contact: http://www.yoursqlman.com/index.php/blogs
Dr.SubraMANI Paramasivam is a Microsoft MVP, PhD, Microsoft Certified Trainer and Head of Data AI at DAGEOP Ltd having 21 years of DB, BI, Analytics and AI experience. Mani has also spoken in various events like MS IGNITE, PASS Summit, MS Inspire, SQLBITS, Power Platform Summit, Global AI Bootcamp, Data BI Summit, SQLRelay, Power BI World Tour, Data Platform Summit, INSIDESQL UK, Global AI Nights, SQLServerGeeks Summit, MCT Global Summits, Data Day Events and various user group events. Mani also believes in Empowering Every Person in the planet and spreads the awareness on Global challenges via www.EmpoweringEveryPerson.com. He is also a co-owner of 1 Global AI Meetup and 3 Power BI PUG PASS local / user groups.
Contact: http://www.dbi-services.com/index.php/blog/dbi-bloggers/blogger/listings/sth
St#233;phane Haby has more than ten years of experience in Microsoft solutions. He is specialized in SQL Server technologies such as installation, migration, best practices, and performance analysis etc. He is MVP as well as MCSA and MCSE for SQL Server 2012 as well as ITIL Foundation V3 certified. He holds a Engineer diploma in industrial computing and automation from France. His branch-related experience covers Chemicals amp; Pharmaceuticals, Banking / Financial Services and many other industries.
Time ago (a lot of time ago…) an excellent IT pro brought me with him and became my Mentor in the IT wonderland…it was a world full of mainframes… I met the Relational theory when there were no commercial RDBMS, and I was spellbound by that “magic”. When Microsoft appeared in the IT market, I felt finally which trek I had to follow. I’m still walking on such road, and in my rucksack I’ve ben putting some other stuff (like SharePoint, for example). My sole regret: I’ve left the College to consecrate all my time to my job; curiously, since then, I’ve never stop learning…
The following is a list of sponsors that helped fund the event.