A community supporting Digital Creativity in Tourism.
This working group supports digital creativity concerning tourism and hosts an “Open Standard for Tourism” Vocabulary, which is a reusable Ontology for describing tourism data.
Want to help to simplify travelling? Help out commuters? Then contact us.
“In the touristic data-landscape openness is not the issue: the essence of the industry runs on its data being available to an audience as big as possible. In such an environment of multiple sources happily sharing their own part and version of the truth, unfortunately, the issue then is to understand all of it in a coherent way. This first iteration of the semantic touristic vocabulary is rightfully something that deserves the international attention of the touristic community.”
Join the conversation on our mailinglist!
The ‘Open Standard for Tourism” Vocabulary is developed in the research project, ‘Towards a sustainable mobile tourism guide’ (Thomas More, iMinds).
Both local governments, tourism organisations as well as developers of apps for the sector will be invited to make Tourism Data more exchangable and resusable for mobile applications.
The DataHub project at Westtoer got its origins in a rather typical view of building a central data-exchange system to control the growing costs of developing and maintaining bridges and mappings to synchronize information between all possible sources of data and the publication channels that should be fed.
Rather atypical we avoided the trap of building yet another central system that eventually concedes at only building another system to bridge to, simply because it fails at maintaining its central role. Instead we found ourselves embracing the modern insights of rest-architectures, web-semantics and linked open data. Combined with a vision of making sure that all parts can be replaced we achieved the paradoxical opposite: the resulting collaboration survives.
During the “Mobile Guides” project we got the chance to meet and collaborate with different organizations in the touristic domain struggling with similar perils in the information interchange. Jointly defining the Touristic Vocabulary and adopting it as soon as possible is fitting our strategy to disseminate the information about our touristic products with an ever wider reach. We like to believe we now have an architecture and vocabulary, but more importantly even an attitude towards exchanging information that is as hospitable as our touristic region itself!
...the tourist experience is more diverse than ever, covering a spectrum that goes from the family looking for a nice hotel with guided tours, to a backpacker who travels alone and surfs somebody's couch.
However, there is one factor that is common across all kinds of tourists: the need for digital services to get information, plan trips, reserve accommodations, get in touch with other tourists, consult maps to visit places, rate restaurants or share experiences. Imagine we could use the same services in different places around the world without the need for searching new service providers or new apps every time we visit a different place or city.
A lot of projects fail because the underlying systems and databases are too difficult to connect or because it is too costly to do. Data are often locked in isolated silos, that can't be reused outside an existing website or mobile app.
Linked Open Data aims to connect these solitary pieces of information to other data sources on the web. If each data is linked, we can jump from link to link to retrieve and discover new knowledge: suggesting interesting attractions, thematic walks, or other nearby services.
There are already good initiatives focusing on reusable apps and data. But we need more Open Data and a common language for machine readable touristic information. Therefore we've joined forces in a new working group which supports digital creativity concerning tourism and host an “Open Standard for Tourism” Vocabulary, which is a reusable Ontology for describing tourism data.
“In order to serve tourists better, it is essential that they get as much relevant data as possible. Only when the different data sources are easily available, also for third parties, this is possible.”
During the hackathong there will be a community meeting.
This meeting is relevant for those intrested in shaping the future of open tourism: "Supporting Digital Creativity in Tourism".
At Open Belgium 2016 we will be having a workshop about "Linked Open Data publishing and discovery".
We will share and discuss the ‘Open Standard for Tourism Ecosystems Data’, developed by touristic actors in Flanders and a tool for aggregating existing data and mapping it to the tourism vocabulary.
Workshop organized on 21st of January 2016 in Mechelen, Belgium. The workshop focused on tourism data: publishing raw data, getting from raw data to linked data, hands-on explanation of the tools that facilitate working with tourism data.
During Open Belgium 2015 we had a workshop about the importance of enriching your online content with semantic annotations.
We wrote a blogpost about what we did that day.


Image and segmentation view
This document contains information about view control
- Reset zoom - reset view to default scale
- Zoom - Zoom selected area. When button is marked zoom with scroll is working
- Move - Move image. When button is marked zoom with scroll is working
- Draw
- Erase
- Clean drawing - remove results of Draw and Erase
- Clean data


Preparation time
less than 30 mins
Cooking time
1 to 2 hours
Serves
Serves 2 generously
This is a good dish for a birthday celebration when you want to push the boat out and cook something special. It’s inspired by Peking duck but with a British twist – swapping Chinese style pancakes for potato ones.
Equipment and preparation: you will need a wire rack which fits in a roasting tray.
Preheat the oven to 200C/400F/Gas 6. Using a small sharp knife, pierce the skin of the duck all over, but be careful not to tear holes in the skin. Season the duck with salt and the ground Sichuan pepper and place on a wire rack sat in a roasting tin. Roast in the oven for 25 minutes.
Pour any excess fat into a jug. Reduce the oven temperature to 120C/250F/Gas ½. When at 120C/250F/Gas ½, return the duck to the oven and cook for a further 1¼ hours - basting with the reserved fat every 20 minutes.
While the duck is roasting, bring the duck or chicken stock up to the boil with the thyme, butter and peeled rind from one lemon. Place the lettuce into the stock and cover with a lid or tin foil. Turn the heat down and braise on the hob for 8-10 minutes, or until the lettuce starts to wilt. Remove from the heat and keep warm until ready to serve.
Remove ninety percent of the duck fat from the roasting tin and pour the honey over the duck. Turn the oven up to 180C/350F/Gas 4 and put the duck back into the oven for a further 15-20 minutes, basting every five minutes and making sure the honey doesn’t burn. On the final baste, drizzle the soy sauce over the duck. When cooked, remove the duck from the oven and set aside to rest.
While the duck is resting make the potato pancakes. Mix the cold mash, flour and baking powder together. In a separate bowl or jug, whisk the eggs and milk together. Pour into the mash and flour mixture and gently stir to make a batter (don't worry about a few lumps). Season with salt and pepper to taste. Fry spoonfuls of the batter mix in a non-stick frying pan with a little oil until golden-brown on each side. Remove from the heat and keep warm.
Carve the duck and serve with the braised lettuce and the potato pancakes. Spoon a little of the cooking liquor from the lettuce over the top and tuck in.


My Team
Alex
Manager
ID:
Email:
Office Number:
Alex
Engineer
ID:
Email:
GitHub:
Alex
Intern
ID:
Email:
School:


Getting Drupal's Search Module to Work on Dreamhost
30 Jun 2007One of my first frustrations with Drupal was that I could not seem to get the search module to work. I searched my new Drupal site again and again and was irked to find that each search returned the unhelpful response, "Your search yielded no results." After searching the forums, I realized out that the search module only works if you have set up a cron job on your server for cron.php. The easiest way to do this via Dreamhost is to go to the control panel (panel.dreamhost.com). Here are the steps to take once there: 1. Click on "Goodies" on the left navigation menu of your control panel. At the bottom of the new menu that just appeared, select "Crob Jobs." 2. Click "Add New Cron Job." 3. On the next screen, create a title for your cron job such as drupancron and enter the following code in the "Command to Run" box:
wget http://www.yoursite.com/cron.php
Make sure to replace "yoursite" with the name of your site. 4. Mark the job as "Enabled" and select how frequently your cron job should run. If you post infrequently, once a day should be sufficient. Otherwise, you should consider running the job hourly. 5. Wait an hour or a day to make sure that your cron job is running effectively by searching for a term that you know will have search results.


Thursday September 06 2018
As of the 4th of April this year it is now mandatory for ALL PCBU's in control of a workplace to have an Asbestos Management Plan if they have presumed or confirmed by lab analysis their building contains Asbestos Containing Materials (ACM'S). Contact Joe if your Asbestos Register and associated compliance documents need reviewing or updating. Make sure your workers and contractors are safe and you are ready if Worksafe call!
September 06 2018
Are you Compliant with the new Asbestos Regulations!
September 06 2018
September 06 2018


Weathermaster:
P_45. The Sunshine of Spring
Actualized by temporarily raising a sun-like fire and by outputting the energy produced from the heat generated by Pa'agrio's fire through the Weathermaster. Outputting is currently halted due to an error occurring in the safety device. *The energy input for Pa'agrio's fire is still in progress. Critical mass to be reached soon. Adjustment necessary*
[Quest _120_PavelsResearch 32042-09.htm|Stop it]


Sends a random message to the chat channel when the player dies
Please see the JS console in your browser for basic functionality.
Provide your token, username, and channel. You can generate a token here: https://twitchapps.com/tmi/


The code for the pacman animation linked herein.
GitHub for Pacman ProjectThe code for the boston bus animation linked herein.
Github for Boston Bus
Proof of concept for Boston Bus
The code for eyes following the mouse linked herein
GitHub for Eyes Project


--- title: touchlists-m section_title: Touch Lists section_id: touchlists-m ---
Right now, the touchList class is applying some overrides to the way font-size, margin and padding are defined in sectionLists and dividedLists
{% include touchlist/basic.md %} {% include touchlist/attendee_item.md %} {% include touchlist/segmented.md %}


Add ingredient and quantities to Recipe with id:
Add ingredient to recipe item
Set quantity
id
Ingredient quantity
Ingredient name
Recipe name
Action
Edit
Delete
Back to main
Ready to Leave?
×
Select "Logout" below if you are ready to end your current session.


Staying engaged and connected is an important part of staying healthy! ITNSunCoast is introducing Let’s Go Places! so you can get out to do the things you need and want to do while enjoying our beautiful area and all it has to offer.
Let’s Go Places! provides an exciting monthly calendar of events - going to the theater, art openings movies and other cultural events; shopping for necessities and fun; eating out at local restaurants; attending community events; and going to local attractions. You will be picked up at your home, share the ride with a few others, go to the specified destination, and be given a ride home at the time set on the schedule. And, if there is a specific place you would like to go, please let us know!
Door-to-door, round-trip rides to scheduled events will cost $15 with some noted exceptions. As an added benefit, we are negotiating discounts for Let’s Go Places! participants at local businesses to get you real bargains and keep the cost of getting out affordable.
Let’s Go Places! together. This service is open to anyone age 60+. ITNSunCoast membership is not required. For more information, please call us at<PHONE_NUMBER>.
Loading. Please wait
{{serverMessage}}


| Take attendance |
|---|
| 1. Open website: http://attendance.xitiz.net |
|
2. Click on menu Attendance and select the correct Sabha date
|
|
3. Click on Male or Female icon and search attendees by First Or Last name
|
|
4. Choose the correct attendee from the search result and click on button. To see the attendance time, click on Refresh button
|


Swifternalization
Swift library that helps in localizing apps in a different, better, simpler, more powerful way than system localization does. It uses json files instead of strings files.
Features
- [x] Pluralization support - Without using stringdict files
- [x] Length variations support - Supported since iOS 8.0 (instead of iOS 9.0 like system does) and avoids using stringsdict files
- [x] Expressions - inequality and regular expressions
- [x] Shared Expressions
- [x] Built-in Expressions
- [x] Works similarly to NSLocalizedString()
- [x] Uses JSON files to minimize boilerplate code
- [x] Comprehensive Unit Test Coverage
- [x] Full documentation
Table of Contents
- Introduction
- Practical Usage Example
- Features
- Expressions
- Getting Started
- Contribution
- Swift 2
- Things To Do
- License
Introduction
Swifternalization helps in localizing apps in a smarter way. It has been created because of necessity to solve Polish language internalization problems but it is universal and works with every language very well.
It uses JSON files and expressions that avoid writing code to handle some cases that you have to write when not using this framework. It makes localizing process simpler.
Practical Usage Example
Description of practical usage example will use things that are covered later in the document so keep reading it to the end and then read about details/features presented here.
Problem
Let’s assume the app supports English and Polish languages. Naturally app contains two Localizable.strings files. One is for Base localization which contains English translation and one is Polish language.
App displays label with information which says when object from the backend has been updated for the last time, e.g. 2 minutes ago
, 3 hours ago
, 1 minute ago
, etc.
Analysis
The label displays number and a hour/minute/second word in singular or plural forms with ago
suffix. Different languages handles pluralization/cardinal numbering in slight different ways. Here we need to support English and Polish languages.
In English there are just two cases to cover per hour/minute/second word:
- 1 -
one second ago
- 0, 2, 3…
%d seconds ago
- Same with minutes and hours.
In Polish it is more tricky because the cardinal numbers are more complicated:
- 1 -
jedną sekundę temu
- 0, (5 - 21) -
%d sekund temu
- (2 - 4), (22-24), (32-34), (42, 44), …, (162-164), … -
%d sekundy temu
- Same logic for minutes and hours.
Following chapters will present solution without and with Swifternalization framework. Each solution describes Base (English) and Polish localizations.
Here is a table with Language Plural Rules which covers cardinal forms of numbers in many languages - Many language handle plurality in their own way.
Solution without Swifternalization
Localizable.strings (Base)
--------------------------
"one-second" = "1 second ago";
"many-seconds" = "%d seconds ago";
"one-minute" = "1 minute ago";
"many-minutes" = "%d minutes ago";
"one-hour" = "1 hour ago";
"many-hours" = "%d hours ago";
Localizable.strings (Polish)
-------------------------
"one-second" = "1 sekundę temu"
"few-seconds" = "%d sekundy temu"
"many-seconds" = "%d sekund temu""
"one-minute" = "1 minutę temu"
"few-minutes" = "%d minuty temu "
"many-minutes" = "%d minut temu"
"one-hours" = "1 godzinę temu"
"few-hours" = "%d godziny temu"
"many-hours" = "%d godzin temu";
There are 6 cases in English and 9 cases in Polish. Notice that without additional logic we’re not able to detect which version of a string for hour/minute/second the app should display. The logic differs among different languages. We would have to add some lines of code that handle the logic for all the languages we’re using in the app. What if there are more than 2 languages? Don’t even think about it - this might be not so easy.
The logic is already implemented in Swifternalization framework and it fits to every language.
Solution with Swifternalization
This is how localizable files will look:
base.json
---------
"time-seconds": {
"one": "%d second ago"
"other": "%d seconds ago"
},
"time-minutes": {
"one": "%d minute ago"
"other": "%d minutes ago"
},
"time-hours": {
"one": "%d hours ago"
"other": "%d hours ago"
}
pl.json
-------
"time-seconds": {
"one": "1 sekundę temu",
"few": "%d sekundy temu",
"many": "%d sekund temu"
},
"time-minutes": {
"one": "1 minutę temu",
"few": "%d minuty temu",
"many": "%d minut temu"
},
"time-hours": {
"one": "1 godzinę temu",
"few": "%d godziny temu",
"many": "%d godzin temu"
}
one
,few
,many
,other
- those are shared expressions already built into Swifternalization - covered below.- You can add own expressions to handle specific cases - covered below.
As mentioned the logic is implemented into framework so if you want to get one of a localized string you have to make a simple call.
Swifternalization.localizedString("time-seconds", intValue: 10)
or with I18n
typealias (I-18-letters-n, Internalization):
I18n.localizedString("time-seconds", intValue: 10)
The key and intValue parameters are validated by loaded expressions and proper version of a string is returned - covered below.
Features
Pluralization
Swifternalization drops necessity of using stringdicts files like following one to support pluralization in localized strings. Instead of that you can simply define expressions that cover such cases.
<plist version="1.0">
<dict>
<key>%d file(s) remaining</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@files@</string>
<key>files</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>d</string>
<key>one</key>
<string>%d file remaining</string>
<key>other</key>
<string>%d files remaining</string>
</dict>
</dict>
</dict>
</plist>
No more stringsdict files!
Length Variations
iOS 9 provides new way to select proper localized string variation depending on a screen width. It uses stringsdict file with NSStringVariableWidthRuleType key.
Swifternalization drops necessity of using such file and it is not necessary to use this new key to use the feature.
With Swifternalization this length variations feature is available since iOS 8.0 because the framework has its own implementation of length variations.
To use length variations feature your translation file should has entries like this:
base.json
---------
"forgot-password": {
"@200": "Forgot Password? Help.",
"@300": "Forgot Your Password? Use Help.",
"@400": "Do not remember Your Password?" Use Help.""
}
The number after @
sign is max width of a screen or bounds that a string fits to. E.g. the second string will be returned if passed fitting width as a paramter is be greater than 200 and less or equal 300.
To get the second localized string the call looks like below:
I18n.localizedString("forgot-password", fittingWidth: 300) // 201 - 300
You can mix expressions with length variations. Following example shows it:
base.json
---------
"car": {
"ie:x=1": {
@100: "One car",
@200: "You've got one car"
},
"more": "You've got few cars"
}
Expressions
There are few expression types. Every expression type has their own parser and matcher but they work internally so you don’t need to worry about them.
There are 3 types of expressions:
- inequality - handles simple inequalities like: x<3, x>10, x=5, x<=3, and so on. Work with integer and float numbers.
- inequality extended - extended version of inequality with syntax like this: 2<x<10, 4<=x<6. Work with integer and float numbers.
- regex - uses regular expression. This is the most powerful ;)
Inequality Expressions
It is composed of several elements:
- ie: - prefix of inequality expression
- x - you have to always pass it, this means here is the place for a number that will be matched. Works with Ints and floating point numbers.
- <, <=, =, >=, > - use one of inequality signs
- 1, 3, 5, 6, … - value to match is the last one in this expression
Example:
"cars": {
"ie:x=1": "1 car",
"ie:x=0": "no cars",
"ie:x>1": "%d cars"
}
Inequality Extended Expressions
This is extended version of inequality expression. It is composed of 2 values, one value marker
and two inequality signs.
- iex: - prefix of inequality extended expression
- x - place for number that will be matched. Works with Ints and floating point numbers.
- Only < and <= are accepted.
Expample:
"tomatos": {
"iex:2<x<10": "%d tomatos is between 2 and 10"
}
Regex Expressions
This is the most powerful type of expression. It takes regular expression ;)
- exp: - prefix of regex expression
- string - it takes string with regular expression
Example: (police cars in Polish language)
"police-cars": {
"exp:^1$": "1 samochód policyjny",
"exp:(((?!1).[2-4]{1})$)|(^[2-4]$)": "%d samochody policyjne",
"exp:(.*(?=1).[0-9]$)|(^[05-9]$)|(.*(?!1).[0156789])": "%d samochodów policyjnych"
}
Powerful stuff, isn’t it? :>
PS. There is built-in solution for Polish language so you can use it with doing just this:
"police-cars": {
"one": "1 samochód policyjny",
"few": "%d samochody policyjne",
"many": "%d samochodów policyjnych"
}
This is called Shared Built-In Expression
and is covered below.
Shared Expressions
Shared expressions are expressions available among all the localization files. They are declared in expressions.json file divided by language and you can use them in localization files.
The functionality allows developer to observance of DRY principle and to avoid mistakes that exist because of reapeating the code in many places.
Normally you declare expression like this:
...
"ie:x>1": "Localized String"
...
If you want to use the same expression in multiple files there is no necessity to repeat the expression elsewhere.  Because of that there are Shared Expression. These feature allows you to create expression just in one place and use identifier of it in multiple places where you normally should put this expression.
What you need to do is to create expressions.json file with following structure:
{
"base": {
"one": "ie:x>1"
},
"pl": {
// ... other than "one" because "one" is available here too.
}
}
Now in pl.json, en.json and so on you have to use it as below:
...
"one": "Localized String"
...
Before you decide to create your own expression take a look if there is no built-in one with the same name or whether there is such expression but named differently. Maybe you don’t need to do this at all and just use it.
Built-in expressions
Built-in expressions as name suggest are shared expressions built into framework and available to use with zero configuration. They are separated by country and not all country have its own built-in expressions. For now there are e.g. Base built-in expressions and Polish built-in expressions. Base expressions are available in every country and there are very generic to match all countries pluralization/cardinal numbering logic.
List of supported built-in shared expressions:
Base (English fits to this completely)
- one - detects if number is equal 1
- >one - detects if number is greater than 1
- two - detects if number is equal 2
- other - detects if number is not 1, so 0, 2, 3 and so on.
Polish
- few - matches (2-4), (22-24), (32-4), ..., (..>22, ..>23, ..>24)
- many - matches 0, (5-9), (10-21), (25-31), ..., (..0, ..1, ..5-9)
As you can see polish has no one
, >one
, etc. because it inherits from Base by default.
Getting Started
This chapter shows you how to start using Swifternalization and how to intergrate it with your code.
Documentation
Documentation covers 100% of the code, Yay! There are two types of documentation. First covers only public API which is for those who only want to use the framework without looking inside. The second one covers all the API - public, internal and private.
You can find Public API and Full documentation with docset here in docs directory.
It is also hosted on my blog: - Public API documentation - Full API documentation
Docsets: - Public API docset - Full API docset
Installation
It works with iOS 8.0 and newer.
With CocoaPods:
pod 'Swifternalization', '~> 1.2'
If you are not using CocoaPods just import files from Swifternalization/Swifternalization directory to your project.
Swifternalization also supports Carthage.
Configuration
Before you get a first localized string you have to configure Swifternalization by passing to it the bundle where localized json files are placed.
I18n.configure() // for NSBundle.mainBundle() - Mostly you want to call it this way
I18n.configure(bundle) // if files are in another bundle
Creating file with Shared Expressions
Shared Expressions must be placed in expressions.json. Syntax of a file looks like below:
{
"base": {
"ten": "ie:x=10",
">20": "ie:x>20",
"custom-pl-few": "exp:(.*(?=1).[0-9]$)|(^[05-9]$)|(.*(?!1).[0156789])"
},
"pl": {
"few": "exp:(((?!1).[2-4]{1})$)|(^[2-4]$)",
"two": "ie:x=2",
"three": "ie:x=3"
}
}
In pseudo-language:
{
"language-1": {
"shared-expression-key-1": "expression-1",
"shared-expression-key-2": "expression-2"
},
"language-2": {
"shared-expression-key-1": "expression-1"
}
}
Expressions from the files may be used inside localizable files. All the shared expressions for different languages are placed in the same file because there will be just few expressions for every language. Mostly the expression will be defined in base variant because if expression is in base it is also available in every other language too. So, ten
is available in pl
, but three
is not available in base
.
Creating file with localization per country
Localizable file contains translations for specific language. The files might look like below:
{
"welcome-key": "welcome",
"cars": {
"one": "one car",
"ie:x>=2": "%d cars",
"ie:x<=-2": "minus %d cars"
}
}
Name of a file should be the same like country code. e.g. for English it is en.json, for Polish it is pl.json, for base localization it is base.json, etc.
There are few things that you can place in such files. More complex file will look like below:
{
"welcome": "welcome",
"cars": {
"one": {
"@100": "one car",
"@200": "You have one car",
"@400": "You have got one car"
},
"other": "%d cars"
}
}
In pseudo-language:
{
"key": "value",
"key": {
"expression-1": {
"length-variation-1": "value-1",
"length-variation-2": "value-2",
"length-variation-3": "value-3"
},
"expression-2": "value"
}
}
Getting localized string
Swifternalization allows you to work with its one class method which exposes all the methods you need to localize an app.
These methods have many optional paramters and you can omit them if you want. There are few common parameters:
key
- A key of localized string.fittingWidth
- A width of a screen or place where you want to put a localized string. It is integer.defaultValue
- A value that will be returned if there is no localized string for a key passed to the method. If this is not specified thenkey
is returned.comment
- A comment used just by developer to know a context of translation.
First method called localizedString(_:fittingWidth:defaultValue:comment:)
allows you to get value for simple key without expression.
Examples:
I18n.localizedString("welcome")
I18n.localizedString("welcome", fittingWidth: 200)
I18n.localizedString("welcome", defaultValue: "Welcome", comment: "Displayed on app start")
Next method localizedString(_:stringValue:fittingWidth:defaultValue:comment:)
allows you to get a localized string for string value that match an expression. Actually the string value will contain number inside in most cases or some other string that you would like to match.
I18n.localizedString("cars", stringValue: "5")
// Other cases similar to above example
The last method localizedString(_:intValue:fittingWidth:defaultValue:comment:)
allows you to get a localized string for int value. This method calls the above one and just turn the int value into string because all the framework operates on strings.
I18n.localizedString("cars", intValue: 5)
Contribution
Swifternalization is open sourced so everyone may contribute if want to. If you want to develop it just fork the repo, do your work and create pull request. If you have some idea or question feel free to create issue and add proper tag for it.
There is no guide for contributors but if you added new functionality you must write unit tests for it.
Swift 2
Swifternalization supports Swift 2 and works on Xcode 7 beta 4. Please check out swift2 branch.
Things to do in future releases
- Add more built-in expressions for another countries.
- Add support for float numbers in built in expressions that uses regular expressions.
LICENSE
Swifternalization is released under the MIT license.


Check out the first vivo X30 video teaser
by YordanThe vivo X30 is expected to arrive next month, and we finally have a first look at the phone’s back, thanks to an official teaser. The 30-second video reveals a vertical camera setup in the upper left corner with a rectangular aperture beside it and a neat gradient.
The most interesting bit is the frame of a camera, which confirms 16mm to 135mm focal length and F/1.8 to F/3.0 apertures. Those confirm the X30 will come with an ultrawide angla camera and a long F/3.0 telephoto. The latter will likely use a periscope design, that ends in the aforementioned rectangular aperture.
The vivo X30 is expected to be the first smartphone sporting Samsung’s Exynos 980 chipset that has an integrated 5G modem. The phone will be capable to operate both on standalone and non-standalone networks, but we expect to see a non-5G variant in the mix, which should act as a budget option of the vivo X30.
When the phone arrives, it will be the first device from the X series with 5G connectivity (and just second after the NEX 3 5G) and should be able to compete with the Xiaomi Mi 9 Pro 5G, Honor V30 5G and Huawei nova 6 5G on the domestic scene in China.


| Apache Struts 2 Documentation > Home > Guides > Core Developers Guide > Result Types > FreeMarker Result > Freemarker Support |
Freemarker views can be rendered using the webwork result type freemarker.
The freemarker result type is defined in struts-default.xml, so normally you just include it, and define your resuts to use type="freemarker".
<include file="struts-default.xml"/> ... <action name="test" class="package.Test"> <result name="success" type="freemarker">/WEB-INF/views/testView.ftl</result> </action> ...
Your action properties are automatically resolved - just like in a velocity view.
for example ${name} will result in stack.findValue("name"), which generaly results in action.getName() being executed.
A search process is used to resolve the variable, searching the following scopes in order, until a value is found :
The following variables exist in the freemarer views
To configure the freemarker engine that webwork uses, just add a file freemarker.properties to the classpath. The supported properties are those that the freemarker Configuration object expects - see the freemarker documentation for these.
default_encoding=ISO-8859-1 template_update_delay=5 locale=no_NO
Freemarker has builtin support for using any JSP taglib. You can use JSP taglibs in FreeMarker even if
a) your servlet container has no support for JSP, or
b) you didn't specify the taglib in your web.xml - note how in the example below we refer to the taglib by its webapp-absolute URL, so no configuration in web.xml is needed.
<#assign s=JspTaglibs["/WEB-INF/struts.tld"] /><EMAIL_ADDRESS>method="'post'" name="'inputform'" action="'save.action'" ><EMAIL_ADDRESS>name="'id'" /><EMAIL_ADDRESS>label="'Details'" name="'details'" rows=5 cols=40 /><EMAIL_ADDRESS>value="'Save'" align="center" /><EMAIL_ADDRESS>NOTE : numeric properties for tags MUST be numbers, not strings. as in the rows and cols properties above. if you use cols="40" you will receive an exception. Other than that, the freemarker tag container behaves as you would expect.


Search mail:
GO!
⚙
PROFILE
ABOUT
FOLDERS:
INBOX
SENT
FLAGGED ⚑
DRAFTS
SPAM
TRASH
OPTIONS:
↻ REFRESH
WRITE NEW
Subject
From:
{{user.realname}}
<EMAIL_ADDRESS>To:


Using the filterMode attribute, option filtering type can be defined for the user input:
filterMode
NO - no filtering.
NO
STARTS_WITH - by the beginning of a phrase.
STARTS_WITH
CONTAINS - by any occurrence (is used by default).
CONTAINS


Enter your new password here. We will then reset your password to the new one and you should be able to log in again.


public final class CameraInternal
extends java.lang.Object
The camera used internally by the engine, all Camera
s internally
have a CameraInternal
and are just a relay for the methods here.
You most likely don't have a need to use this class,
instead use the provided Camera
component.
Camera
| Constructor and Description |
|---|
CameraInternal(org.joml.Matrix4f projection,
CameraClearFlags clearFlags)
Create a new camera.
|
CameraInternal(org.joml.Matrix4f projection,
CameraClearFlags clearFlags,
Texture2D skyboxTexture)
Create a new camera.
|
| Modifier and Type | Method and Description |
|---|---|
void |
destroy()
Destroy the camera.
|
static java.lang.Iterable<CameraInternal> |
getCameras()
Get all cameras, use
Camera.getCameras() unless you specifically need an internal camera. |
Color |
getClearColor() |
CameraClearFlags |
getClearFlags() |
static CameraInternal |
getCurrentCamera()
Get the current camera, use
Camera.getCurrentCamera() unless you specifically need an internal camera. |
static CameraInternal |
getMainCamera()
Get the main camera, use
Camera.getMainCamera() unless you specifically need an internal camera. |
org.joml.Matrix4f |
getProjection() |
org.joml.Matrix4f |
getViewProjection() |
void |
render()
Make the camera render now.
|
void |
setClearColor(Color clearColor)
Set the clear color of the camera, only used in
CameraClearFlags.SolidColor . |
void |
setClearFlags(CameraClearFlags clearFlags)
Set the
CameraClearFlags to use. |
static void |
setMainCamera(CameraInternal camera)
Set the main camera, use
Camera.setMainCamera(Camera) unless you specifically need an internal camera. |
void |
setProjection(org.joml.Matrix4f projection)
Set the projection of the camera.
|
void |
setSkybox(Texture texture)
Set the skybox texture of the camera.
|
void |
setTransform(Transform transform)
Set the transform of the camera.
|
public CameraInternal(org.joml.Matrix4f projection, CameraClearFlags clearFlags)
projection
- The projection of the camera.clearFlags
- The CameraClearFlags
to use.public CameraInternal(org.joml.Matrix4f projection, CameraClearFlags clearFlags, Texture2D skyboxTexture)
projection
- The projection of the camera.clearFlags
- The CameraClearFlags
to use.skyboxTexture
- The texture to use for the Skybox
public final void destroy()
public final void render()
public final void setClearFlags(CameraClearFlags clearFlags)
CameraClearFlags
to use.clearFlags
- The new clear flags.public final void setProjection(org.joml.Matrix4f projection)
projection
- The new projection.public final void setTransform(Transform transform)
transform
- The new transform.public final void setSkybox(Texture texture)
texture
- The new texture of the skybox.public final void setClearColor(Color clearColor)
CameraClearFlags.SolidColor
.clearColor
- The new clear color.public final CameraClearFlags getClearFlags()
CameraClearFlags
this camera is using.public final org.joml.Matrix4f getProjection()
public final org.joml.Matrix4f getViewProjection()
public final Color getClearColor()
public static void setMainCamera(CameraInternal camera)
Camera.setMainCamera(Camera)
unless you specifically need an internal camera.camera
- public static java.lang.Iterable<CameraInternal> getCameras()
Camera.getCameras()
unless you specifically need an internal camera.public static CameraInternal getMainCamera()
Camera.getMainCamera()
unless you specifically need an internal camera.public static CameraInternal getCurrentCamera()
Camera.getCurrentCamera()
unless you specifically need an internal camera.


Facilities in your Gym
We’re here to help all our members feel positive, motivated and in the perfect mood for a workout. That’s why all our gyms are bright and spacious with a laid- back atmosphere, so when you come in, you feel as comfortable as a pair of old trainers. You’ll also find all the practical bits and bobs you need: showers and changing rooms, lockers – even vending machines in case you’ve left something at home. And to keep you safe and sound day and night, we’ve got a PIN entry door system for our members.


I'm a recruiter by trade and aptitude. I sought out coding to learn more about the folks that I hire while also learning a new skill. Thusfar, I've proven a pretty slow learner, but it's all about the journey, baby. I've been given a great set of people to be around who are ridiculously supportive of even the most basic questions. And for that, friends, I thank you.
In the coming days, I'll begin picking up some Angular, starting to learn some aspects of server-side development and start upon another brain wrenching journey of "why did I think I could do this?"
Ideally, this particular issue will see me learning about the following:
Angular2
Node.js
ArangoDB
Neo4j
And about a million other things to support that environment!
Feel free to keep track of my comings and goings throughout the learning process and/or get in touch with me through those beautiful buttons above. As I do impressive or notable things (for me, low bar here, folks) you can begin to find them below.
Creating something from nothing
Get in touch
I'm a recruiter before I'm a coder (at least for the foreseeable future). Thus, if you ever want to get in touch with me regarding my day job, feel free to drop me a line. I'm happy to chat with you about whatever your heart desires, whether it's to learn more about what we're doing at GE in New Orleans, talent acquisition, or why I decided to try my hand at coding. I look forward to chatting with you soon!


Jazmin Villagra
Web developer and DevOps technician
>:/ whoami ?
I'm just a girl who fell in love with computers :)
About me
I'm currently a senior year student of Computer Science Degree in Asunción, Paraguay. I've been working in Sodep S.A. since March 2016 and am currently a Web Developer and DevOps Team Leader.
I only need three things to survive in this world: coffee, a good book and my sisters :)
Who've I worked with?
I’m proud to say that thanks to the goal I've set to myself, I got to work in projects such as:


isNaN(x) provides a reliable way to determine if x is one of the "not a
number" floating point forms.
More...
isNaN(x) provides a reliable way to determine if x is one of the "not a
number" floating point forms.
Comparing x==NaN does not work because any relational operation involving NaN always return false, even (NaN==NaN)! This routine is specialized for all SimTK scalar types:
- float, double, long double
- std::complex<P> (P is one of the above precisions)
- SimTK::conjugate<P>
- SimTK::negator<T> (T is any of the above)
For complex and conjugate types, isNaN() returns true if either the real or imaginary part or both are NaN.
| bool SimTK::isNaN |
( |
const negator< float > & |
x | ) |
|
|
inline |
| bool SimTK::isNaN |
( |
const negator< double > & |
x | ) |
|
|
inline |
| bool SimTK::isNaN |
( |
const negator< long double > & |
x | ) |
|
|
inline |
template<class P >
| bool SimTK::isNaN |
( |
const negator< std::complex< P > > & |
x | ) |
|
|
inline |
| bool SimTK::isNaN |
( |
const float & |
x | ) |
|
|
inline |
| bool SimTK::isNaN |
( |
const double & |
x | ) |
|
|
inline |
| bool SimTK::isNaN |
( |
const long double & |
x | ) |
|
|
inline |
template<class P >
| bool SimTK::isNaN |
( |
const std::complex< P > & |
x | ) |
|
|
inline |
template<class P >
| bool SimTK::isNaN |
( |
const conjugate< P > & |
x | ) |
|
|
inline |


To mark the opening of the Science Museum’s major new Robots exhibition, as well as the beginning of the Radio 4 series The Rise of the Robots, we’ve picked out a selection of great books for all ages that feature robots.
Ever wondered why they’re called ‘robots’? Czech playwright Karel Čapek coined the word from the Czech verb ‘robota’, ‘to work’.
This list was compiled with the help of Lakenheath Library manager Chris Howard and information and content librarian Lisa Brennan.
Board books
The Robot Book, by Heather Brown
“This robot has two eyes, two arms, and two legs, but what really makes him tick? Inside The Robot Book, Heather Brown answers that question within an interactive story that features actual working - and moving - parts.”
Picture books
Astro the Robot Dog, by Clare Freedman
“Astro is a robot dog with a big heart. In this picture book by the author of Aliens Love Underpants, he is sent from Planet Xog to find out what life is like on Earth, and discovers the true meaning of friendship.”
No-bot: the robot with no bottom!, by Sue Hendra
“Bernard the robot loses his bottom on the park swing, and sets off to find it. Every time he gets close, it disappears again! Bird was using it as a nest, but it was too heavy; Bear used it in his drum kit, but it was too tinny; the squirrels built sandcastles with it - and now it looks as if they’re sailing away in it. Will Bernard ever get his bottom back?”
Norton and Alpha, by Kristyna Litten
“Norton the Robot is intrigued by his discovery of a lone flower one day and sets about trying to care for it, with amusing and ultimately poignant results. A new book from the acclaimed creator of Blue & Bertie, Kristyna Litten, about making friends, appreciating the wonder of nature, and seeing that sometimes there is more to life than it might seem.”
The Robot and the Bluebird, by David Lucas
“There was once a robot with a broken heart, good for nothing but expiring slowly on a scrap heap. Then one winter’s day a migrating bluebird lands on his shoulder. The robot offers her shelter in the place where his heart used to be and her warmth and companionship stir up the last glimmer of energy the robot has.”
Robot Rumpus!, by Sean Taylor
“When mum and dad go out for the evening they think they’ve left their daughter in safe hands with robots designed to get her to bed. There’s Cook-bot to make great spaghetti for dinner, Clean-bot to do the washing-up, Wash-bot for bath time and even Book-bot for a bedtime story. What could possibly go wrong?”
The Big Bad Robot, by Valerie Thomas
“When Winnie makes a cardboard robot she is very proud of her creation and decides to turn it into a real robot. BIG mistake! Winnie and Wilbur soon discover that the Big Bad Robot is trouble, especially when it gets hold of Winnie’s magic wand. Join Winnie and Wilbur on a robotic rollercoaster of a story!”
Winnie gets more then she bargains for when she unintentionally makes a robot in an art class at the library, but Wilbur saves the day.
Harry and the Robots, by Ian Whybrow & Adrian Reynolds
“When Harry’s toy robot stops marching, he sends it to the robot hospital to be fixed. Harry and Nan decide to make their own robots to play with while they wait for it to return. But before they can start, Nan is taken to hospital herself.”
Short chapter books
Robot Girl, by Malorie Blackman
“Claire is keen to find out what her dad has been working on in his lab. He’s been really excited about it and Claire knows it must be something that will make him even more famous. But the big reveal isn’t at all what she expected and now Claire has a dilemma on her hands - what do you do when your dad has created a monster?”
Robot Riot, by Tim Healey & Chris Mould
“Mortimer Keene is full to bursting with madcap plans, and if it’s trouble you’re after, look no further! With laugh-out-loud illustrations, rollicking rhymes, and short chapters perfect for new readers. Mortimer Keene has made a robot! Several, in fact. And they’re all being helpful around the school. Until Robo-13 goes haywire and hacks into the Robot Control system.”
The Robodog and the Big Dig, by Frank Rodgers
“Chip, the robodog, is fed up when no one will take him for a walk. He thinks it might be more fun to be a cat and he confuses everyone by beginning to behave like one. This causes chaos but will he remember how to be a dog?”
Junior novels
School Shutdown, by Judy Brown
“Archie the cat, Sparky the mouse and Flo the bird have found a new home in a school, and can’t resist helping out by using their special robot skills. They have to do it in secret though, so none of the adults find out! When one of the children they have befriended accidentally causes a school computer to break, Archie promises to fix the problem. But soon Archie starts to behave strangely. What’s got into him? It’s almost as if his programming has gone haywire! The Petbots realise he has downloaded a virus, and it’s up to Flo, Sparky and their new human friends to work out a cure before Archie shuts down for good!”
There are 3 titles in the Petbots series, and 3 robots who star in them all: Archie the cat, Sparky the mouse and Flo the bird. Their chaotic adventures are the perfect read for children moving on from short chapters to slightly longer reads. This is the second title in the series.
Cogheart, by Peter Bunzl
After the mysterious disappearance of her inventor father, Lily travels to London to uncover the truth. Featuring life-like clockwork animals called “mechanicals”, a cast of well-drawn characters and faux Victorian steampunk inventions galore, this is a brilliant read. It’s a corker of a book, a rip-roaring adventure and we hope someone makes it into a film.
The Iron Man, by Ted Hughes
“A clanking iron giant topples from a cliff and lies smashed on the rocks below. Then his various parts begin to stir and reach out for one another. The Iron Man is ready to walk again, and he is very hungry.”
Clash of the Rival Robots
“The Steampunk Pirates are lured back to England by the promise of gold. But when their inventor Mr Richmond Swift appears on the scene, sparks begin to fly!”
This is the third rollicking book relating the adventures of the Steampunk Pirates.
The Everything Machine, by Ali Kennen
“Eleven-year-old Olly has a very special delivery - a 3D printing machine, stamped with PROPERTY OF M.O.D and BRITISH SPACE AGENCY. WARNING. DO NOT TAMPER, which has magical powers. It has a name, it speaks, and it can print ANYTHING Olly asks it to - a never-ending supply of sweets, a swimming pool in the shed - but what Olly really wants is his dad, who has separated from his mum and moved out of the family home. Cue the creation of Dad-Bot - he looks just like Dad (on a good day) but is totally chaotic - and his antics tip Olly and co into a heart-racing and heart-warming adventure!”
The Mouse and his Child, by Russell Hoban
Published in 1967, this classic allegorical tale about mechanical toys tells of their struggles through a hostile world and their quest to become self-winding. It features some memorable characters such as Manny Rat, the ruthless amoral villain, a fortunetelling frog who preys on the gullible and a troupe of travelling rooks called The Caws of Art. If you haven’t come across it before, give it a try but don’t be deluded by the gentle cover. It’s quite a read.
Robot Revolution, by James Patterson
“After a few early glitches in their relationship, Sammy and his ‘bro-bot’ E are now best friends. In fact, E is such a valued member of the family that the other electronic members of the House of Robots are feeling sorely unappreciated. And when Sammy’s inventor mum becomes distracted by a top-secret project, the robots soon begin to fall into disrepair.
“Cue a robot revolt, with the droids wreaking harmless havoc in the house! Armed with pranks like glue in the shampoo bottles and flying toast missiles, the robots demand to be cared for. It’s up to Sammy and his disabled sister Maddie to keep the peace until his mum reveals her secret project and why it was worth the wait.”
Cakes in Space, by Philip Reeve & Sarah McIntyre
“Astra’s ship is in trouble. There’s something very sinister lurking in the canteen. A cakey monstrosity on the war path. And then there’s the Poglites - a space salvage crew who have invaded the ship in their quest for spoonage! Astra and her robot friend Pilbeam are the only things standing in the way of the ship’s destruction!”
Frank Einstein and the Antimatter Motor, by Jon Scieszka & Brian Biggs
“Frank is a kid genius who loves figuring out how the world works by creating household contraptions that are part science, part imagination, and definitely unusual. After an uneventful experiment with a garage-lab artificially intelligent RoboBug, a lightning storm, and a flash of electricity, Frank’s inventions - the robots Klink and Klank - suddenly come to life.
“Not exactly the ideal lab partners, the wise-cracking Klink and the overly expressive Klank are a help nonetheless as Frank attempts to perfect his Dark Energy Drive - that is until Frank’s arch nemesis, T. Edison, steals Klink and Klank for his evil doomsday plan!”
Picture books for older readers
The Building Boy, by Ross Montgomery
“When the boy’s grandma dies, he finds all of her old building materials in the garden shed - the girders and cement and bricks. At night, through wind, snow and rain, he builds a structure in the garden.  And when he’s finished, she comes to life!  The adventure begins!”
Junior non fiction
How to Draw Mecha Robots, by Mark Bergin
This book teaches you how to draw a variety of futuristic robots and machines with step-by-step instructions for a variety of drawing materials including pencil, pen, crayon, paints and charcoal. Build up to creating sci-fi and fantasy scenes featuring the figures you’ve learned to draw.
Gadgets, Games, Robots and the Digital World: what are you wired up to?, by Clive Gifford
“What are you wired up to? Every day you text, tweet, stream songs, watch videos and send emails and this is the book to tell you how. Readers can discover the techonology behind it all, from robots under the sea, to satellites in space and even the inside of your laptop.”
iRobot, by Clive Gifford
“Children can interact with robots in their own homes thanks to the digital magic of Augmented Reality. Activities include building their own robot and programming it to move, seeing their own arm become bionic, flying a search and rescue drone and battling with bots, all on the kitchen table! Place your tablet or smart phone near the visual trigger on the page then hold it up to see the AR in action. iRobot is packed with fascinating information about these marvellous machines - how they work, how they are used and what the future holds.”
Inventions (Eyewitness Guide)
“Discover the fascinating inventions that changed the world, from simple everyday objects like the clock to future technologies, robots and AI. Explore the world of telescopes and medical equipment, or learn how modern computers came to exist. With amazing encyclopedic stats, engaging photographs and genius gem facts, Inventions will introduce you to the the most exciting and revolutionary gadgets ever created.”
Young Adult
Bzrk, by Michael Grant
“These are no ordinary soldiers. This is no ordinary war. Welcome to the nano, where the only battle is for sanity. Losing is not an option when a world of madness is at stake. Time is running out for the good guys.
Echo Boy, by Matt Haig
“Audrey’s father taught her that to stay human in the modern world, she had to build a moat around herself; a moat of books and music, philosophy and dreams. A moat that makes Audrey different from the echoes: sophisticated, emotionless machines, built to resemble humans and to work for human masters. Daniel is an echo - but he’s not like the others. He feels a connection with Audrey; a feeling Daniel knows he was never designed to have, and cannot explain. And when Audrey is placed in terrible danger, he’s determined to save her.”
Adult fiction
I, Robot, by Isaac Asimov
“In these classic sci fi stories, Isaac Asimov ushers in the Robot Age, where Earth is ruled by master-machines who are governed by Three Laws of Robotics, designed to ensure humans maintain the upper hand. But what happens when a rogue robot’s idea of what is good for society contravenes the Three Laws?”
If you prefer listening to reading, why not listen to the recent Radio 4 dramatisation of I, Robot while it’s still on iPlayer?
The Hitchhiker’s Guide to the Galaxy, by Douglas Adams
Follow the adventures of the last surviving man from Earth, Arthur Dent, after the planet is demolished by Vogons to make way for a hyperspace bypass. Exploring the galaxy with his alien friend and rescuer Ford Prefect, he meets all manner of unusual characters, including depressed robot Marvin, the Paranoid Android.
Do Android Dream of Electric Sheep?, by Philip K. Dick
“Popularly known as Blade Runner due to its movie adaptation, Do Androids Dream of Electric Sheep? is Dick’s most famous title. Stalking androids in 21st century megalopolis, Deckard begins to question just who is human and what human is.”
Rossum’s Universal Robots, by Karel Čapek (trans. David Short)
“Determined to liberate the mass-produced but highly intelligent robots forged in the machinery of Rossum’s island factory, Helena Gory arrives in a blaze of righteousness. Soon perplexed by the robots’ seeming humanity but lack of sentience, she deserts her strident campaigning and falls in love with Domin, the factory’s general manager.”
V., by Thomas Pynchon
“V. is the debut novel of Thomas Pynchon, published in 1963. It describes the exploits of a discharged U.S. Navy sailor named Benny Profane, his reconnection in New York with a group of pseudo-bohemian artists and hangers-on known as the Whole Sick Crew, and the quest of an aging traveller named Herbert Stencil to identify and locate the mysterious entity he knows only as “V.””
The Stepford Wives, by Ira Levin
“The women of Stepford are not all that they seem. All the beautiful people live in idyllic Stepford, Connecticut, an affluent, suburban Eden populated with successful, satisfied hubbies and beautiful, dutiful wives. For Joanna Eberhart, newly arrived with her husband and two children, it all seems too good to be true.”
Bicentennial Man, by Isaac Asimov
The title story in this collection is about robot butler NDR, aka Andrew, who increasingly feels and identifies as human, but cannot be recognised as such unless he becomes mortal.
Frankenstein, by Mary Shelley
“Written when Mary Shelley was only 19 years old, this chilling tale of a young scientist’s desire to create life still resonates today. Victor Frankenstein’s monster is stitched together from the stolen limbs of the dead, and the result is a grotesque being who, rejected by his maker, sets out on a journey to wreak his revenge. In the most famous gothic horror story ever told, Shelley confronts the limitations of science, the nature of human cruelty and the pathway to forgiveness with rich language and evocative imagery.”
Adult non-fiction
Rise of the Robots: technology and the threat of mass unemployment, by Martin Ford
“Artificial intelligence is already well on its way to making ‘good jobs’ obsolete: many paralegals, doctors, and ironically even computer programmers are poised to be replaced by robots. As technology continues to accelerate and machines begin taking care of themselves, fewer jobs will be necessary.
“In terms of societal and economic upheaval, this is most important technological shift since the industrial revolution. And, unless we radically reassess the fundamentals of how our economy and politics work, we risk a future of massive unemployment and inequality as well as the implosion of the economy itself. Martin Ford offers both an exploration of this new technology and a call to arms to face its implications.”
The Fourth Industrial Revolution, by Klaus Schwab
“The founder and executive chairman of the World Economic Forum on how the impending technological revolution will change our lives.”
The Internet of Things: how smart TVs, smart cars, smart homes, and smart cities are changing the world, by Michael Miller
“The old Internet typically connected personal computers. But a radically new Internet is emerging. By some estimates, the ‘Internet of Everything’ will explode into a $19 trillion market in just a few years. If that happens, when that happens, it will transform your life. You need to know what’s coming. Michael Miller reveals how a new generation of autonomously connected smart devices is emerging, and how it will enable people and devices to do more things, more intelligently, and more rapidly.”
Making Simple Automata, by Robert Race
“Designing and making successful automata involves combining materials, mechanisms, and magic. This book explains how to design and construct small scale, simple mechanical devices made for fun. Illustrated with examples throughout, it explains the six golden rules for making automata alongside detailed step-by-step projects.”
Leonardo Automations and Robotics, by Sara Taglialagamba (ed.)
“One of the most exciting challenges faced by Leonardo was to create robots made to resemble human or animal, or rather automatic self-operating devices. The technological excellence achieved during the XV century and the impetus in Mechanics and Engineering developed in Leonardo a growing interest in humanoid automata and in self-operating machines that still interests many scholars today. Many researchers share the hypothesis that Leonardo studied automata and attempted to sketch some projects on his manuscripts. In fact, pulleys and gears are the real ‘stars’ of the famous folio 216v-b [579r] in the Codex Atlanticus, associated with the project of the automaton or robot. Due to the lack of a main project, this drawing leaves some pending questions.
“This project was the result of the research carried out by the artist in the field of anatomy, studies partially lost and partially recorded in the Codex Huygens, kept at the Pierpont Morgan Library in New York. Therefore Leonardo traced the idea of a sort of Robotics, a so-called anathomia artificialis: studying the human body, he came to the creation of a wonderful humanised machine. The artist-craftsman could not receive a higher consecration. Leonardo’s automata are the subject of this book, which collects the results presented by scholars that have studied Leonardo from different points of view.”
In Our Own Image: artificial intelligence, fear, love and the future of mankind, by George Zarkadakis
“Dr George Zarkadakis traces artificial intelligence or AI’s origins in ancient myth, through literary classics such as Frankenstein, to today’s sci-fi blockbusters, arguing that a fascination with AI is hardwired into the human psyche. He explains AI’s history, technology and potential; its manifestations in intelligent machines; its connections to neurology and consciousness, as well as - perhaps most tellingly - what AI reveals about us as human beings.”
DVDs
Humans
“Sci-fi drama series set in an alternate future where families use lifelike androids, known as synths, as their robotic house servants. In suburban London, Joe Hawkins (Tom Goodman-Hill) purchases a new synth, that his children name Anita (Gemma Chan), to replace his oft-absent wife Laura (Katherine Parkinson). But when she returns to find her husband’s new purchase, Laura begins to feel threatened by the synthetic human and worryingly suspects that synths may be capable of experiencing human emotions.
“Meanwhile, retired synth scientist Dr. George Millican (William Hurt) starts to experience problems with his outdated synth Odi (Will Tudor) while elsewhere another synth scientist, Professor Edwin Hobbs (Danny Webb), leads a search for a trio of missing synths.”
Blade Runner - The Final Cut
“Extended version of Ridley Scott’s cult classic. Ex-cop Rick Deckard (Harrison Ford) is hired to track down a group of androids who have escaped from a satellite colony. As two of the AWOL ‘replicants’ (Rutger Hauer and Daryl Hannah) seek refuge in a geneticist’s house, Deckard takes his investigation to the Tyrell Corporation, where he falls in love with Rachael (Sean Young), herself an android, but with a memory chip that convinces her she is human.”
Wallace and Gromit: The Wrong Trousers
“When money troubles prompt Wallace to take in a lodger, life at West Wallaby Street gets complicated for poor Gromit. Forced out of his room to make way for a cool-as-a-cucumber penguin called Feathers McGraw, it’s not long before he feels well and truly usurped as Wallace’s faithful companion.
“There’s something not right about this penguin and when Gromit spots a ‘Wanted’ poster for a criminal ‘chicken’, it would seem his suspicions are correct. Meanwhile, the helpless Wallace finds himself under Feathers’ control – quite literally! The dastardly penguin has adapted Wallace’s Techno Trousers for his latest heist and he’s going to get Wallace to carry out his dirty work…”
Music
Alan Parsons - I Robot
This album draws conceptually on author Isaac Asimov’s science fiction Robot trilogy, exploring philosophical themes regarding artificial intelligence.
Rexanthony - War Robots
War Robots is a crossover of various styles such as psycho-trance, post-techno and minimal-electro. Its concept is to support human rights and a higher consciousness of social problems through sounds and lyrics.


{% extends "help/help_base.html" %} {% load i18n %} {% block colab %}tab-cur{% endblock %} {% block help_con %}
{% trans "Once you and your friends sync a shared library onto your computers, you may add, delete or edit files in the library together. Every change you make to the library will be automatically synced to others' computers." %}
{% blocktrans %} Sometimes you and your friends may edit the same file at the same time. Your changes may conflict with each other's. In this case, Seafile would keep your version unchanged, while save your friends' versions as "conflict files". A conflict file's name ends with its author's email address, plus the current time, e.g. test.txt<EMAIL_ADDRESS>2013-10-01-00-12-24). {% endblocktrans %}
{% endblock %}


{include file="public:head" /}
{include file="public:nav" /}
{:lang('account not activated')}
{:lang('resend active email')}
{:lang('resend now')}
{include file="public:footer"/}
{include file="public:scripts"/}


Standards for typography provide consistent visual display for content across the site. Font colors may be changed for specific usage.


| Top |
SoupContentDecoder handles adding the "Accept-Encoding" header on outgoing messages, and processing the "Content-Encoding" header on incoming ones. Currently it supports the "gzip" and "deflate" content codings.
If you are using a plain SoupSession (ie, not SoupSessionAsync or
SoupSessionSync), then a SoupContentDecoder will automatically be
added to the session by default. (You can use
SOUP_SESSION_REMOVE_FEATURE_BY_TYPE
at construct time if you don't
want this.) If you are using one of the deprecated SoupSession
subclasses, you can add a SoupContentDecoder to your session with
soup_session_add_feature()
or soup_session_add_feature_by_type()
.
If SoupContentDecoder successfully decodes the Content-Encoding,
it will set the SOUP_MESSAGE_CONTENT_DECODED
flag on the message,
and the message body and the chunks in the “got_chunk”
signals will contain the decoded data; however, the message headers
will be unchanged (and so "Content-Encoding" will still be present,
"Content-Length" will describe the original encoded length, etc).
If "Content-Encoding" contains any encoding types that
SoupContentDecoder doesn't recognize, then none of the encodings
will be decoded (and the SOUP_MESSAGE_CONTENT_DECODED
flag will
not be set).
(Note that currently there is no way to (automatically) use Content-Encoding when sending a request body, or to pick specific encoding types to support.)


3 February, 2020
SFO T3 Door 5
Jake Herman
11:00 AM Arrival
3 Passengers
AKL 9
A. Cooper
N. Cooper
Add member


{% extends "layout.html" %} {% block content %}
Recognition Speed: - Recognition Average:
Image Details


The scaffolder package provides a comprehensive set of tools to automate the process of scaffolding interfaces to modules, classes, functions, and documentations written in other programming languages. As initial proof of concept, scaffolding R interfaces to Python packages is supported via reticulate.
Let’s say if we want to write an interface to an existing Python package. reticulate package is the perfect tool to facilitate that. reticulate package contains a powerful set of tools for interoperability between Python and R. It allows R users to call Python from R in many different ways and automatically translate between different R and Python objects.
However, if we use reticulate often enough, we will face many challenges, for example:
None
-> NULL
, True
-> TRUE
, convert Python list literals in the docs to R lists, massage R numeric values to Python integers via as.integer
where required, etc.). And then again, this requires future maintenance in order to keep them up-to-date.The scaffolder package comes to the rescue. It provides functions to automatically scaffold and customize the R wrapper interfaces to modules, classes, functions, and documentations written in other programming languages. Users are able to customize different parts of the scaffolding process in order to avoid the additional editing that we mentioned above. For example, users can implement a function to cast parameters with default values that contains “L” to integers.
The core functionalties of this package were originally developed as part of reticulate’s scaffolding functionalities to facilitate the process of writing different components of the R interface to TensorFlow. We found the process of writing R wrappers very tedious and then developed the scaffolding functionalities in reticulate that are marked for internal use only. It was then further developed and experimented to automate the generation of h2oai/h2o4gpu’s R package.
Install the scaffolder package from CRAN as follows:
install.packages("scaffolder")
Or you can install it from GitHub as follows:
install.packages("remotes") remotes::install_github("terrytangyuan/scaffolder")
Please checkout the examples here.


|
||||||||||
| PREV LETTER NEXT LETTER | FRAMES NO FRAMES |
ItemListener
updates the 3D scene of the JMeshPanel
whenever the mesh color changes.ItemListener
from the given JMeshPanel
and
MeshUI
.
ComboBoxModel
for the geometry color
Renderer
.
ModeCorrelationMatrix.getBoundingRadius2D()
.
ModeCorrelationMatrix.getBoundingRadius3D()
.
NodeConnectionMatrix
.
ModeConnectionMatrix
.
ComboBoxModel
of the connection colors
that can be rendered in Java3D.
ComboBoxModel
of the connection colors
that can be rendered in Java3D.
AbstractMatrix.getRowCount()
.
AbstractMatrix.getRowCount()
.
ComboBoxModel
of the connection type.
ComboBoxModel
of the connection type.
DiagonalMatrix.getValueAt(int)
.
DiagonalMatrix.getValueAt(int)
.
RectangularMatrix.getValueAt(int, int)
.
MeshFilter
.
ModeFilter
.
First Mesh
.
First Mesh
.
First Modes
.
First Mode
panel.
First Modes
.
AbstractMatrix.getRowCount()
.
ModeCorrelationMatrix.getFirstModeCount()
.
First Mode
frequencies.
First Mode
at the given index.
First Mode
at the given index.
AbstractMatrix.getRowNameAt(int)
.
AbstractMatrix.getRowNameAt(int)
.
First Mode
names as a KeyList
.
AbstractMatrix.getRowNames()
.
First Nodes
as a KeyList
.
AbstractMatrix.getRowNameAt(int)
.
KeyList
of the currently selected
First Modes
.
KeyList
of the currently selected
First Modes
.
KeyList
of the currently selected
First Modes
.
ComboBoxModel
of the geometry colors that
can be rendered in Java3D.
ComboBoxModel
of the geometry colors that
can be rendered in Java3D.
ComboBoxModel
of the independent mesh.
ComboBoxModel
of the independent mesh.
Last Mesh
.
Last Mesh
.
Last Modes
.
Last Mode
panel.
Last Modes
.
AbstractMatrix.getColumnCount()
.
ModeCorrelationMatrix.getLastModeCount()
.
Last Mode
frequencies.
Last Mode
at the given index.
AbstractMatrix.getColumnIndexOf(java.lang.String)
.
AbstractMatrix.getColumnNameAt(int)
.
Last Mode
names as a KeyList
.
AbstractMatrix.getColumnNames()
.
Last Nodes
as a KeyList
.
AbstractMatrix.getColumnNameAt(int)
.
LogEvent
.
ComboBoxModel
of the mass matrices.
ComboBoxModel
of the mass matrices.
JMeshConnectionPanel
of the
First Mesh
and Last Mesh
.
JMeshConnectionPanel
of the
First Mesh
and Last Mesh
.
ModeConnectionMatrix
from the currently
selected First Modes
andLast Modes
in this
TableModel
.
ModeCorrelationMatrix
.
TableModel
of the mode correlation.
TableModel
of the mode correlation.
AbstractMatrix.getRowCount()
.
ModeMatrix.getModeCount()
.
AbstractMatrix.getRowNameAt(int)
.
AbstractMatrix.getRowNames()
.
ModeMatrix
.
TableModel
of the modes.
TableModel
of the modes.
AbstractMatrix.getRowCount()
.
ModeMatrix.getNodeCount()
.
ComboBoxModel
of the groups of node
subsets.
ComboBoxModel
of the groups of node
subsets.
AbstractMatrix.getRowNames()
.
AbstractMatrix.getRowNames()
.
AbstractMatrix.getColumnNames()
.
First Nodes
and Last Nodes
based on the minimum correlation.
First Modes
and Last Modes
based on the maximum correlation.
NodeMatrix
and the given one, sorts each by
the corresponding given node names, and computes the resulting
NodeCorrelationMatrix
.
ModeMatrix
and the given one, sorts each by
the corresponding given mode names and node names, and computes the
resulting ModeCorrelationMatrix
from
ModeMatrix.computeDotProduct(de.iabg.mode.ModeMatrix)
.
ModeMatrix
and the given one, sorts each by
the corresponding given mode names and node names, and computes the
resulting ModeCorrelationMatrix
from
ModeMatrix.computeGeneralizedMass(de.iabg.mode.MassMatrix,
de.iabg.mode.ModeMatrix)
.
ModeMatrix
and the given one, sorts each by
the corresponding given mode names and node names, and computes the
resulting ModeCorrelationMatrix
from
ModeMatrix.computeModalAssuranceCriterion(de.iabg.mode.ModeMatrix)
.
ModeMatrix
and the given one, sorts each by
the corresponding given mode names and node names, and computes the
resulting ModeCorrelationMatrix
from
ModeMatrix.computeOrthogonalityCheck(de.iabg.mode.MassMatrix,
de.iabg.mode.ModeMatrix)
.
AbstractMatrix.getRowCount()
.
ModeCorrelationScene2D
with the given scale and
background color.
ModeCorrelationMatrix.getScene2D(double, javax.vecmath.Color3f)
.
NodeMatrix
represents at the given scale and with the given background color.
ModeCorrelationScene3D
with the given scale and
background color.
ModeCorrelationMatrix.getScene3D(double, javax.vecmath.Color3f)
.
MassMatrix
.
KeyList
.
KeyList
.
MassMatrix
.
KeyList
of the currently selected modes.
KeyList
of the currently selected modes.
KeyList
of the currently selected modes.
KeyList
of the currently selected node subset group.
KeyList
of the currently selected node subset group.
DiagonalMatrix.getValueAt(int, int)
with the
given dimension as the row and column indices.
First Node
and Last Node
indices.
First Node
and Last Node
indices.
First Node
and Last Node
indices.
First Node
and Last Node
indices.
First Node
and Last Node
indices.
First Node
and Last Node
indices.
First Node
and Last Node
indices.
First Node
and Last Node
indices.
First Node
and Last Node
indices.
|
||||||||||
| PREV LETTER NEXT LETTER | FRAMES NO FRAMES |


data wrangling (1)
- Melting a list of columns - April 27, 2020
ggplot (4)
- How to make plots with factor levels below the x-axis (bench-biology style) - December 27, 2020
- Paired line plots - January 22, 2019
- Interaction plots with ggplot2 - October 15, 2018
- A simple ggplot of some measure against depth - September 10, 2018
stats 101 (30)
- Normal Q-Q plots - what is the robust line and should we prefer it? - October 15, 2020
- What is the range of reasonable P-values given a two standard error difference in means? - March 18, 2018
- Covariate adjustment in randomized experiments - April 12, 2019
- Textbook error 101 -- A low p-value for the full model does not mean that the model is a good predictor of the response - September 11, 2018
- Linear models with a covariate ("ANCOVA") - October 21, 2020
- What is the consequence of normalizing by each case in the control? - May 18, 2020
- A comment on the novel transformation of the response in " Senolytics decrease senescent cells in humans: Preliminary report from a clinical trial of Dasatinib plus Quercetin in individuals with diabetic kidney disease" - October 2, 2019
- "Nested" random factors in mixed (multilevel or hierarchical) models - November 30, 2019
- GLM vs. t-tests vs. non-parametric tests if all we care about is NHST - January 7, 2019
- Analyze the mean (or median) and not the max response - June 25, 2019
- What does cell biology data look like? - June 9, 2019
- What is the consequence of a Shapiro-Wilk test-of-normality filter on Type I error and Power? - August 8, 2019
- On alpha - April 23, 2018
- Analyzing longitudinal data -- a simple pre-post design - March 19, 2020
- Should we be skeptical of a "large" effect size if p > 0.05? - May 28, 2019
- The statistical significance filter - April 17, 2019
- Blocking vs. covariate adjustment - April 27, 2019
- Paired t-test as a special case of linear model and hierarchical (linear mixed) model - June 25, 2019
- Type 3 ANOVA in R -- an easy way to publish wrong tables - October 23, 2020
- What is the bias in the estimation of an effect given an omitted interaction term? - July 31, 2019
- What to write, and not write, in a results section — an ever-growing list - January 31, 2019
- ANCOVA when the covariate is a mediator affected by treatment - July 12, 2020
- GLM vs. t-tests vs. non-parametric tests if all we care about is NHST -- Update - May 30, 2019
- Bootstrap confidence intervals when sample size is really small - June 1, 2020
- What is an interaction? - November 4, 2020
- Is the power to test an interaction effect less than that for a main effect? - July 2, 2019
- Can a linear model reproduce a Welch t-test? - October 27, 2019
- Reporting effects as relative differences...with a confidence interval - November 14, 2018
- How to estimate synergism or antagonism - November 3, 2020
- Estimate of marginal ("main") effects instead of ANOVA for factorial experiments - November 29, 2019


Class and Object
- Python is an object oriented programming language.
- A class is a user-defined prototype from which objects are created.
- Classes provide a means of functionality together.
- Creating a new class creates a new type of object, allowing new instances of that type to be made.
- Each class instance can have its own attributes.
- Class instances can also have methods (defined by its class) for modifying its state.
- Classes are created by keyword class.
- Attributes are the variables that belong to class.
- Attributes are always public and can be accessed using dot (.) operator.
Syntax:
To create a class, use the keyword class:
class car:
x = 5
print(car)
Object
An Object is an instance of a Class. A class is like a blueprint while an instance is a copy of the class with actual values.
An object consists of :
1. State : It is represented by attributes of an object. It also reflects the properties of an object.
2. Behavior : It is represented by methods of an object. It also reflects the response of an object with other objects.
3. Identity : It gives a unique name to an object and enables one object to interact with other objects
Syntax:
Now we can use the class named car to create objects:
class car:
x = 5
p1 = car()
print(p1.x)
Output:
5
Maruti
Example:
class Jeep:
# A simple class
# attribute
company = "Maruti"
location = "India"
# A sample method
def test(self):
print("I'm from", self.company)
print("I'm made in ", self.location)
# Object instantiation
jimny = Jeep()
# Accessing class attributes
# and method through objects
print(jimny.company)
jimny.test()
Output:
Maruti
I'm from Maruti
I'm made in India
In the above example, an object is created which is basically a Jeep named jimny. This class only has two class attributes that tell us that jimny is
from Maruti and made from India.
NOTE: The self parameter is a reference to the current instance of the
class, and is used to access variables that belong to the class.
The Self Parameter
- Class methods must have an extra first parameter in method definition. We do not give a value for this parameter when we call the method, Python provides it.
- If we have a method which takes no arguments, then we still have to have one argument.
- This is similar to this pointer in C++ and this reference in Java.
- The self parameter is a reference to the current instance of the class, and is used to access variables that belongs to the class.
- It does not have to be named self , you can call it whatever you like, but it has to be the first parameter of any function in the class:
Example:
class Car:
def __init__(sampleobject, name, price):
sampleobject.name = name
sampleobject.age = price
def myfunc(abc):
print("Hello , my car is " + abc.name)
p1 = Car("BMW", 1)
p1.myfunc()
Output:
Hello , my car is BMW
The init() Function
- The init method is similar to constructors in C++ and Java.
- Constructors are used to initialize the object. Like methods, a constructor also contains a collection of statements(i.e. instructions) that are executed at the time of Object creation.
- It is run as soon as an object of a class is instantiated. The method is useful to do any initialization you want to do with your object.
- All classes have a function called init(), which is always executed when the class is being initiated.
- Use the init() function to assign values to object properties, or other operations that are necessary to do when the object is being created:
Example:
class Car:
def __init__(self, company):
self.company = company
p1 = Car("Maruti" )
print(p1.company)
Output:
Modify Object Properties
Modify object properties
Example:
class Car:
def __init__(self, model, rate):
self.model = model
self.rate = rate
def myfunc(self):
print("Hello my name is " + self.model)
p1 = Car("Swift", 500000)
p1.myfunc()
print(p1.model)
print("Previous rate of my model was " , p1.rate)
p1.rate = 400000
print("New rate is" , p1.rate)
Output:
Hello my name is Swift
Swift
Previous rate of my model was 500000
New rate is 400000
Delete object properties
Example:
class Car:
def __init__(self, model, rate):
self.model = model
self.rate = rate
def myfunc(self):
print("Hello my name is " + self.model)
p1 = Car("Swift",500000 )
del p1.rate
print(p1.rate)
Output:
AttributeError: 'Car' object has no attribute 'rate'
Delete objects
Example:
class Car:
def __init__(self, model, rate):
self.model = model
self.rate = rate
def myfunc(self):
print("Hello my name is " + self.model)
p1 = Car("Swift",500000 )
del p1
print(p1.rate)
Output:
NameError: name 'p1' is not defined
The pass statement
Class definitions cannot be empty, but if you for some reason have a class definition with no content, put in the pass statement to avoid getting an error.
Example:
class Car:
# Class Variable
fav_car = 'Verna'
# The init method or constructor
def __init__(self, model, color):
# Instance Variable
self.model = model
self.color = color
# Objects of Dog class
Moderna = Car("swift", "brown")
Buziga = Car("wagonR", "black")
print('Moderna details:')
print('Moderna is a', Moderna.fav_car)
print('Model: ', Moderna.model)
print('Color: ', Moderna.color)
print('\nBuziga details:')
print('Buziga is a', Buziga.fav_car)
print('Model: ', Buziga.model)
print('Color: ', Buziga.color)
# Class variables can be accessed using class
# name also
print("\nAccessing class variable using class name")
print(Car.fav_car)
Output:
Moderna is a Verna
Model: swift
Color: brown
Buziga details:
Buziga is a Verna
Model: wagonR
Color: black
Accessing class variable using class name
Verna
To get more practical knowledge Click here.


Introduction
Hello, my name is Joe Streifel. I created this page to experiment with HTML, CSS, and JavaScript. I don't have a complete formal education in programming yet but I'm getting there!
Today, I'm training to become a software developer, and attending a bootcamp called Code Fellows to hone my skills eventually make development my career!
My Education and Work Experience
- Education
- 1 year of college at UW
- Electronics training from military
- Work Experience
- Washed boats in a boatyard
- Marine Corps Calibration/Repair Technician, Avionics
- Civillian Calibration Technician, Aviation / Biomedical
My Top Ten Video Games
- Gears of War
- Heroes of the Storm
- Dark Souls
- Bloodborne
- Doom Eternal
- God of War (2018)
- Ghost of Tsushima
- Hades
- Final Fantasy XIV
- Elite: Dangerous
Quiz Time
This button will initiate a 7 question quiz with 5 questions based on my short bio above, as well as 2 unrelated questions.
Click "Begin!" to start.


When scanning the Tiled map data the TilemapParser can either insert a null value (true) or a Phaser.Tile instance with an index of -1 (false, the default). Depending on your game type depends how this should be configured. If you've a large sparsely populated map and the tile data doesn't need to change then setting this value to true
will help with memory consumption. However if your map is small, or you need to update the tiles (perhaps the map dynamically changes during the game) then leave the default value set.


Bulk upload apprentices
You can:
- bulk upload your apprentices from a .csv file
Before you start
You must:
- seperate your list by training, you will choose training first and then upload
- make sure your file fits our template and is in a .csv format
You can:
You must:


Version History
| Version | Changes |
|---|---|
v9.5.0 |
Base Path added. |
To deploy a Next.js application under a sub-path of a domain you can use the basePath
config option.
basePath
allows you to set a path prefix for the application. For example, to use /docs
instead of /
(the default), open next.config.js
and add the basePath
config:
Note: this value must be set at build time and can not be changed without re-building as the value is inlined in the client-side bundles.
When linking to other pages using next/link
and next/router
the basePath
will be automatically applied.
For example, using /about
will automatically become /docs/about
when basePath
is set to /docs
.
export default function HomePage() {
return (
<>
<Link href="/about">
About Page
</Link>
</>
);
}
Output html:
This makes sure that you don’t have to change all links in your application when changing the basePath
value.
When using the next/image
component, you will need to add the basePath
in front of src
.
For example, using /docs/me.png
will properly serve your image when basePath
is set to /docs
.
import Image from "next/image";
function Home() {
return (
<>

My Homepage

<Image
src="/docs/me.png"
alt="Picture of the author"
width={500}
height={500}
/>

Welcome to my homepage!

</>
);
}
export default Home;


| 1 | /* | |
| 2 | * Licensed to the Apache Software Foundation (ASF) under one or more | |
| 3 | * contributor license agreements. See the NOTICE file distributed with | |
| 4 | * this work for additional information regarding copyright ownership. | |
| 5 | * The ASF licenses this file to You under the Apache License, Version 2.0 | |
| 6 | * (the "License"); you may not use this file except in compliance with | |
| 7 | * the License. You may obtain a copy of the License at | |
| 8 | * | |
| 9 | * http://www.apache.org/licenses/LICENSE-2.0 | |
| 10 | * | |
| 11 | * Unless required by applicable law or agreed to in writing, software | |
| 12 | * distributed under the License is distributed on an "AS IS" BASIS, | |
| 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| 14 | * See the License for the specific language governing permissions and | |
| 15 | * limitations under the License. | |
| 16 | */ | |
| 17 | package org.apache.commons.math3.stat.clustering; | |
| 18 | ||
| 19 | import java.io.Serializable; | |
| 20 | import java.util.Collection; | |
| 21 | import java.util.Arrays; | |
| 22 | ||
| 23 | import org.apache.commons.math3.util.MathArrays; | |
| 24 | ||
| 25 | /** | |
| 26 | * A simple implementation of {@link Clusterable} for points with double coordinates. | |
| 27 | * @version $Id$ | |
| 28 | * @since 3.1 | |
| 29 | * @deprecated As of 3.2 (to be removed in 4.0), | |
| 30 | * use {@link org.apache.commons.math3.ml.clustering.DoublePoint} instead | |
| 31 | */ | |
| 32 | @Deprecated | |
| 33 | public class EuclideanDoublePoint implements Clusterable<EuclideanDoublePoint>, Serializable { | |
| 34 | ||
| 35 | /** Serializable version identifier. */ | |
| 36 | private static final long serialVersionUID =<PHONE_NUMBER>091227632L; | |
| 37 | ||
| 38 | /** Point coordinates. */ | |
| 39 | private final double[] point; | |
| 40 | ||
| 41 | /** | |
| 42 | * Build an instance wrapping an integer array. | |
| 43 | *
 | |
| 44 | * The wrapped array is referenced, it is not copied. | |
| 45 | * | |
| 46 | * @param point the n-dimensional point in integer space | |
| 47 | */ | |
| 48 | public EuclideanDoublePoint(final double[] point) { | |
| 49 | this.point = point; | |
| 50 | } | |
| 51 | ||
| 52 | /** {@inheritDoc} */ | |
| 53 | public EuclideanDoublePoint centroidOf(final Collection<EuclideanDoublePoint> points) { | |
| 54 | final double[] centroid = new double[getPoint().length]; | |
| 55 | for (final EuclideanDoublePoint p : points) { | |
| 56 |
2
1. centroidOf : changed conditional boundary → KILLED 2. centroidOf : negated conditional → KILLED |
for (int i = 0; i < centroid.length; i++) { |
| 57 |
1
1. centroidOf : Replaced double addition with subtraction → KILLED |
centroid[i] += p.getPoint()[i]; |
| 58 | } | |
| 59 | } | |
| 60 |
2
1. centroidOf : changed conditional boundary → KILLED 2. centroidOf : negated conditional → KILLED |
for (int i = 0; i < centroid.length; i++) { |
| 61 |
1
1. centroidOf : Replaced double division with multiplication → KILLED |
centroid[i] /= points.size(); |
| 62 | } | |
| 63 |
1
1. centroidOf : mutated return of Object value for org/apache/commons/math3/stat/clustering/EuclideanDoublePoint::centroidOf to ( if (x != null) null else throw new RuntimeException ) → KILLED |
return new EuclideanDoublePoint(centroid); |
| 64 | } | |
| 65 | ||
| 66 | /** {@inheritDoc} */ | |
| 67 | public double distanceFrom(final EuclideanDoublePoint p) { | |
| 68 |
1
1. distanceFrom : replaced return of double value with -(x + 1) for org/apache/commons/math3/stat/clustering/EuclideanDoublePoint::distanceFrom → KILLED |
return MathArrays.distance(point, p.getPoint()); |
| 69 | } | |
| 70 | ||
| 71 | /** {@inheritDoc} */ | |
| 72 | @Override | |
| 73 | public boolean equals(final Object other) { | |
| 74 |
1
1. equals : negated conditional → KILLED |
if (!(other instanceof EuclideanDoublePoint)) { |
| 75 |
1
1. equals : replaced return of integer sized value with (x == 0 ? 1 : 0) → NO_COVERAGE |
return false; |
| 76 | } | |
| 77 |
1
1. equals : replaced return of integer sized value with (x == 0 ? 1 : 0) → KILLED |
return Arrays.equals(point, ((EuclideanDoublePoint) other).point); |
| 78 | } | |
| 79 | ||
| 80 | /** | |
| 81 | * Get the n-dimensional point in integer space. | |
| 82 | * | |
| 83 | * @return a reference (not a copy!) to the wrapped array | |
| 84 | */ | |
| 85 | public double[] getPoint() { | |
| 86 |
1
1. getPoint : mutated return of Object value for org/apache/commons/math3/stat/clustering/EuclideanDoublePoint::getPoint to ( if (x != null) null else throw new RuntimeException ) → KILLED |
return point; |
| 87 | } | |
| 88 | ||
| 89 | /** {@inheritDoc} */ | |
| 90 | @Override | |
| 91 | public int hashCode() { | |
| 92 |
1
1. hashCode : replaced return of integer sized value with (x == 0 ? 1 : 0) → SURVIVED |
return Arrays.hashCode(point); |
| 93 | } | |
| 94 | ||
| 95 | /** {@inheritDoc} */ | |
| 96 | @Override | |
| 97 | public String toString() { | |
| 98 |
1
1. toString : mutated return of Object value for org/apache/commons/math3/stat/clustering/EuclideanDoublePoint::toString to ( if (x != null) null else throw new RuntimeException ) → NO_COVERAGE |
return Arrays.toString(point); |
| 99 | } | |
| 100 | ||
| 101 | } | |
Mutations | ||
| 56 |
1.1 2.2 |
|
| 57 |
1.1 |
|
| 60 |
1.1 2.2 |
|
| 61 |
1.1 |
|
| 63 |
1.1 |
|
| 68 |
1.1 |
|
| 74 |
1.1 |
|
| 75 |
1.1 |
|
| 77 |
1.1 |
|
| 86 |
1.1 |
|
| 92 |
1.1 |
|
| 98 |
1.1 |


The principal of VTP pruning is if a client sends a broadcast to its connected switch’s access port, that switch will flood the broadcast to all other connected switches in the VTP / Layer 2 domain. Because of VTP, all the other switches would be aware of the client VLAN, and would thus be required to flood the broadcast to all other switches.
But what if the other switches do not have any clients connected to access ports in that VLAN? They are still having to process the request, and the network segment still has to bear the broadcast traffic.
When you enable VTP pruning, you are enabling it for the entire VTP domain.
NEED TO FINISH