What to do
Your options here are either a mixed (pre-recorded + live) or completely live seminar. Your decision is best made on the basis of your own personal style and the content you are working with. In general, we...
Tools to use
Why do this
The mixed option (our preferred approach) ensures that you don’t have to spend much time on instruction during the live session in Zoom and, instead, students can spend more time working on an assignment in the breakout rooms. But, if you want to explain (more) subject matter in an interactive way, then definitely go the complete Live approach.
Breakout Rooms can be very effective to engage, practice, discuss, and collaborate in subgroups. As with offline settings, you can visit each group to see how they are doing and to make sure they are still on task. With the Canvas Collaboration tool, students work together in one Google doc per breakout room and you can track their progress. By adding a short assignment to the Breakout Room session for the final plenary reflection, you increase the students’ focus in the breakout rooms.
Tips
- Add a personal start of the week (video) message with Kaltura in Canvas in which you announce this week’s seminar and link it to the previous week. You can also use this to address questions posted by students on Canvas after the last seminar.
- Add teaching assistants to supervise the breakout rooms and increase the hands-on feedback.
- Add individual practical assignments prior to the Zoom session (student self-study), so students can compare, share and discuss their findings in the Breakout Rooms.
- If you use the mixed option, add a short quiz to a pre-recorded instruction video with Feedback Fruits. For example, to assess students’ understanding of the subject matter or to raise a question. This way you activate your students while prior to the seminar. Plus, you get feedback on what students (mis)understand and provide them with feedback during the seminar.
- Add team competition to the Breakout Rooms. Let them work on a topic and find out which team has the best results with a quiz in the final plenary setting.


|
TTK
|
Classes | |
| class | Allocable |
| struct | ArcData |
| class | AtomicUF |
| Union find compliant with parallel find and maintaining the current local propagation inspired by ttk::UnionFind. More... | |
| struct | Comp |
| class | DynamicGraph |
| TTK fTRGraph dynamic graph tracking the evolution of level sets. More... | |
| struct | DynGraphNode |
| class representing a node of a tree and the link to its parent if not the root More... | |
| struct | DynGraphs |
| class | FTRGraph |
| TTK FTRGraph processing package. More... | |
| class | Graph |
| TTK FTRGraph graph skeleton. More... | |
| class | Lazy |
| TTK DynamicGraph lazyness. More... | |
| class | LocalForest |
| struct | LocalForests |
| class | Mesh |
| TTK FTRGraph mesh related operations. More... | |
| class | Node |
| TTK FTRGraph node of the Graph. More... | |
| struct | NodeData |
| struct | ObjectData |
| struct | Params |
| class | Propagation |
| TTK fTRGraph propagation management with Fibonacci heaps. More... | |
| class | Propagations |
| manage propagations for FTR Graph More... | |
| class | Scalars |
| class | Segment |
| TTK classes for the segmentation of an arc in the Reeb Graph. More... | |
| struct | SegmInfo |
| struct | Star |
| class | SuperArc |
| TTK FTRGraph graph arc. More... | |
| struct | TaskChunk |
| class | Tasks |
| TTK FTRGraph tasks management tools. More... | |
| struct | triScheme |
| struct | Valences |
| struct | Vert |
| struct | VertData |
| struct | Visit |
| struct | Visits |
Typedefs | |
| using | idRoot = int |
| using | idSuperArc = long unsigned int |
| SuperArc index in vect_superArcs_. More... | |
| using | idNode = unsigned int |
| Node index in vect_nodes_. More... | |
| using | idVertex = SimplexId |
| Vertex index in scalars_. More... | |
| using | idEdge = SimplexId |
| Edge index in vect_edgeList_. More... | |
| using | idCell = SimplexId |
| Cell index in vect_cellList_. More... | |
| using | idPropagation = idNode |
| for task identifiers More... | |
| using | idThread = idNode |
| for threads identifiers More... | |
| using | valence = SimplexId |
| for vertex up/down valence More... | |
| using | idSegmentation = long int |
| retains history More... | |
| using | orderedEdge = std::tuple< idVertex, idVertex > |
| Edge represented by its 2 vertices, lower then upper. More... | |
| using | orderedTriangle = std::tuple< idEdge, idEdge, idEdge > |
| Triangle represented by its 3 edges Edges are sorted by their starting vertex (see orderedEdge) More... | |
| using | VertCompFN = std::function< bool(const idVertex, const idVertex)> |
| using | EdgeCompFN = std::function< bool(const idEdge, const idEdge)> |
| using | linkEdge = std::pair< idEdge, idEdge > |
| using | LinkCompFN = std::function< bool(const linkEdge &, const linkEdge &)> |
| using | segm_it = std::vector< idVertex >::iterator |
| using | segm_rev_it = std::vector< idVertex >::reverse_iterator |
| using | segm_const_it = std::vector< idVertex >::const_iterator |
| using | segm_const_rev_it = std::vector< idVertex >::const_reverse_iterator |
| using | edgeScheme = char |
Enumerations | |
| enum | vertPosInTriangle : char { vertPosInTriangle::Start = 0, vertPosInTriangle::Middle, vertPosInTriangle::End } |
| position of a vertex in a trianlge More... | |
| enum | GraphComponent { GraphComponent::Arc = -1, GraphComponent::Local_minimum, GraphComponent::Saddle1, GraphComponent::Saddle2, GraphComponent::Local_maximum } |
| enum | ArcType : char { ArcType::Min_arc = 0, ArcType::Max_arc, ArcType::Saddle1_arc, ArcType::Saddle2_arc, ArcType::Saddle1_saddle2_arc } |
| enum | NodeType { NodeType::Local_minimum = 0, NodeType::Saddle1, NodeType::Saddle2, NodeType::Degenerate, NodeType::Local_maximum, NodeType::Regular } |
| enum | PriorityLevel { Min = 0, Low, Average, High, Higher, Max } |
Functions | |
| template<typename Iterator > | |
| void | parallel_sort (Iterator begin, Iterator end) |
| template<typename Iterator , typename el > | |
| void | parallel_sort (Iterator begin, Iterator end, std::function< bool(el, el)> comp) |
| template<typename Iterator > | |
| void | sort (Iterator begin, Iterator end) |
| template<typename Iterator , typename el > | |
| void | sort (Iterator begin, Iterator end, std::function< bool(el, el)> comp) |
| using ttk::ftr::EdgeCompFN = typedef std::function<bool(const idEdge, const idEdge)> |
Definition at line 56 of file FTRDataTypes.h.
| using ttk::ftr::edgeScheme = typedef char |
| using ttk::ftr::idCell = typedef SimplexId |
Cell index in vect_cellList_.
Definition at line 33 of file FTRDataTypes.h.
| using ttk::ftr::idEdge = typedef SimplexId |
Edge index in vect_edgeList_.
Definition at line 31 of file FTRDataTypes.h.
| using ttk::ftr::idNode = typedef unsigned int |
Node index in vect_nodes_.
Definition at line 27 of file FTRDataTypes.h.
| using ttk::ftr::idPropagation = typedef idNode |
for task identifiers
Definition at line 35 of file FTRDataTypes.h.
| using ttk::ftr::idRoot = typedef int |
Definition at line 28 of file DynamicGraph.h.
| using ttk::ftr::idSegmentation = typedef long int |
retains history
Definition at line 41 of file FTRDataTypes.h.
| using ttk::ftr::idSuperArc = typedef long unsigned int |
SuperArc index in vect_superArcs_.
Definition at line 25 of file FTRDataTypes.h.
| using ttk::ftr::idThread = typedef idNode |
for threads identifiers
Definition at line 37 of file FTRDataTypes.h.
| using ttk::ftr::idVertex = typedef SimplexId |
Vertex index in scalars_.
Definition at line 29 of file FTRDataTypes.h.
| using ttk::ftr::LinkCompFN = typedef std::function<bool(const linkEdge &, const linkEdge &)> |
Definition at line 58 of file FTRDataTypes.h.
| using ttk::ftr::linkEdge = typedef std::pair<idEdge, idEdge> |
Definition at line 57 of file FTRDataTypes.h.
| using ttk::ftr::orderedEdge = typedef std::tuple<idVertex, idVertex> |
Edge represented by its 2 vertices, lower then upper.
Definition at line 44 of file FTRDataTypes.h.
| using ttk::ftr::orderedTriangle = typedef std::tuple<idEdge, idEdge, idEdge> |
Triangle represented by its 3 edges Edges are sorted by their starting vertex (see orderedEdge)
Definition at line 48 of file FTRDataTypes.h.
| using ttk::ftr::segm_const_it = typedef std::vector<idVertex>::const_iterator |
Definition at line 31 of file FTRSegmentation.h.
| using ttk::ftr::segm_const_rev_it = typedef std::vector<idVertex>::const_reverse_iterator |
Definition at line 32 of file FTRSegmentation.h.
| using ttk::ftr::segm_it = typedef std::vector<idVertex>::iterator |
Definition at line 29 of file FTRSegmentation.h.
| using ttk::ftr::segm_rev_it = typedef std::vector<idVertex>::reverse_iterator |
Definition at line 30 of file FTRSegmentation.h.
| using ttk::ftr::valence = typedef SimplexId |
for vertex up/down valence
Definition at line 39 of file FTRDataTypes.h.
| using ttk::ftr::VertCompFN = typedef std::function<bool(const idVertex, const idVertex)> |
Definition at line 55 of file FTRDataTypes.h.
|
strong |
| Enumerator | |
|---|---|
| Min_arc | |
| Max_arc | |
| Saddle1_arc | |
| Saddle2_arc | |
| Saddle1_saddle2_arc |
Definition at line 95 of file FTRDataTypes.h.
|
strong |
| Enumerator | |
|---|---|
| Arc | |
| Local_minimum | |
| Saddle1 | |
| Saddle2 | |
| Local_maximum |
Definition at line 87 of file FTRDataTypes.h.
|
strong |
| Enumerator | |
|---|---|
| Local_minimum | |
| Saddle1 | |
| Saddle2 | |
| Degenerate | |
| Local_maximum | |
| Regular |
Definition at line 103 of file FTRDataTypes.h.
| Enumerator | |
|---|---|
| Min | |
| Low | |
| Average | |
| High | |
| Higher | |
| Max |
Definition at line 83 of file FTRTasks.h.
|
strong |
position of a vertex in a trianlge
| Enumerator | |
|---|---|
| Start | |
| Middle | |
| End |
Definition at line 51 of file FTRDataTypes.h.
| void ttk::ftr::parallel_sort | ( | Iterator | begin, |
| Iterator | end | ||
| ) |
Definition at line 80 of file FTRCommon.h.
| void ttk::ftr::parallel_sort | ( | Iterator | begin, |
| Iterator | end, | ||
| std::function< bool(el, el)> | comp | ||
| ) |
Definition at line 90 of file FTRCommon.h.
| void ttk::ftr::sort | ( | Iterator | begin, |
| Iterator | end | ||
| ) |
Definition at line 102 of file FTRCommon.h.
| void ttk::ftr::sort | ( | Iterator | begin, |
| Iterator | end, | ||
| std::function< bool(el, el)> | comp | ||
| ) |
Definition at line 107 of file FTRCommon.h.


class ItunesTrackAdapter : ListAdapter<ItunesItem, ViewHolder>
Adapter for the RecyclerView in ItunesItem. responsible for displaying all the ItunesItem |
|
interface MasterDetailTabletInterface
interface used for listening to when the view is clicked for navigation or display of detail view |
fun bindCircleImageFromUrl(view: ImageView, imageUrl: String?): Unit
Binds the image from the url to the imageview as a circle |
|
fun bindImageFromUrl(view: ImageView, imageUrl: String?): Unit
Binds the image from the url to the imageview |
|
fun bindIsGone(view: View, isGone: Boolean): Unit
TODO : unused |
|
fun bindTrackGenre(view: TextView, text: String?): Unit
Binds the text label with given track genre |
|
fun bindTrackPrice(view: TextView, text: String?): Unit
Binds the text label with given track price |


A day in the life
After a few weeks in Singapore, I began feeling really at home. At first I moved around alot: from my hostel in Chinatown to Liz and Arif’s apartment in Bishan, to Patricia’s apartment where I live now. I found Liz and Arif through AirBnB just in time to have an accomodation ready for my Mom’s arrival. The apartment was beautiful, and Liz and Arif kindly suggested places in and out of Singapore that I could visit. I really enjoyed talking with them in the mornings and evenings. I would have loved to stay longer, but Liz’s parents were coming to visit and they needed the room.
It was a little difficult to find a place that would be willing to rent a room for such a short period of time. Thankfully I found Patricia, who welcomed me to her condo near Holland Village. The morning after I arrived, Patricia walked with me around the neighborhood to show me the nearby grocery stores, MRT stations, and resturaunts. It was so nice of her to spend so much time showing me around! The condo has a gym and a beautiful pool. I use the gym and meditate by the pool in the morning before work. LOL ok I meditated once. For seven minutes. But I do actually use the gym when I wake up on time :)
Life at Work
The IHPC is at Fusionopolis, a modern building at the one-north MRT. Most of the tennants are research institutions. Lucas Films is also somewhere in the building. There are a variety of eateries and coffee shops downstairs, including two food courts and a full grocery store. I love having Cold-Storage, the grocery store right downstairs. I usually get a salad there for lunch and buy apples, cherries, or blueberries to snack on. Sometimes I get thai food at one of the food courts.
I’ve made friends with some of the other students who are interning at the IHPC: Pat, Vee, and Nop from Thailand, Eric from Singapore, Yesim from Turkey, and Rektah and Ayush from India. Meeting and colaborating with students from around the world has been the coolest experience. Even though most of us are working on seperate projects, we often ask eachother questions. Or atleast I ask them questions lol. I lucked out being assigned to share a desk with Eric. He helped me so much with my program and even took the time to talk me through some critical C++ concepts. I was so grateful for his help when I was hitting the learning curve. Eric is doing a semester at USC this spring, so I’m excited to see him in California :)
Singlish Eric Taught Me
English is Singapore’s official language, but it is considered overly formal and weird to speak “proper english”. Still, pretty much nobody speaks singlish to me because I am so obviously a foreign. Lol. I kept seeing the word “lah” everywhere but I didn’t know what it meant so I had to ask Eric.
Lah:
It’s kind of like an exclamation mark. You just throw it in at the end of your sentence lah! You can pretty much use it whenever you want. I think.
Whenever someone says lah to me I get excited because I would really like to be included in this singlish thing!!
Other cool stuff my new friends told me
I have really enjoyed learning about how student life is different in other countries. Ayush told me about what the whole college admission process in India is like while we were riding the MRT. Students there study for years to do well on a qualifying exam. The students who score the highest get the choice of what and where they want to study. It is similar to SATs in the US, except that admission is based exlusively on that test. The universities don’t care about your essays (there are none), work experience, challenges overcome, or extra curricular activities. Ayush explained that it is actually atypical for teenagers who intend to go to college to work or play competitive sports, since they have to devote all of their after school hours to studying for the exam. Hopefully I’m getting this right.
I had so much fun spending time with Ayush and learning about his country. Admittedly, I was surprised at how well we could relate despite being from such different places and cultures. I actually asked him if he knew what sarcasm was. It seems ridiculous now but at the time I wasn’t sure if they use sarcasm in India. Sometimes we got confused by eachother’s accents. Like one time when I was asking if his room had windows, and he kept looking at me like I was crazy. He thought I was asking about “mentos”. I finally started admitting when I couldn’t understand him when he called me out, saying “I think you only get 50% of what I say but you still laugh”!
Here are some more photos from the things I’ve been doing :)


Tierra is built as a FREE app. This app is provided by the developer at no cost and is intended for use as is.
This page is used to inform visitors regarding my policies with the collection, use, and disclosure of Personal Information if anyone decided to use my Service.
If you choose to use my Service, then you agree to the collection and use of information in relation to this policy. The Personal Information that I collect is used for providing and improving the Service. I will not use or share your information with anyone except as described in this Privacy Policy.
For a better experience, while using our Service, a plant name and photo are required. The information that I request will be retained on your device and your iCloud and is not collected by me in any way.
The app does not collect real information from you. All information required by Tierra is a name of your plants and an image for the plant.
Cookies are files with a small amount of data that are commonly used as anonymous unique identifiers. These are sent to your browser from the websites that you visit and are stored on your device's internal memory.
This Service does not use these “cookies”.
No service providers are used besides Apple's iCloud. More information on iCloud can be found on Apple's website here: apple/iCloud
These Services do not address anyone under the age of 13. I do not knowingly collect personally identifiable information from children under 13. In the case I discover that a child under 13 has provided me with personal information, I immediately delete this from our servers.
I may update our Privacy Policy from time to time. Thus, you are advised to review this page periodically for any changes. I will notify you of any changes by posting the new Privacy Policy on this page.
This policy is effective as of 2020-06-19
If you have any questions or suggestions about my Privacy Policy or the app itself, do not hesitate to contact me: Contact
This privacy policy page was created at privacypolicytemplate.net and modified/generated by App Privacy Policy Generator
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.


Before Change
Lists all addresses under the current build root.
build_root = get_buildroot()
source_roots = SourceRoots(build_root, tuple())
symbol_table_cls = LegacyTable
address_mapper = AddressMapper(build_root,
symbol_table_cls=symbol_table_cls,
parser_cls=LegacyPythonCallbacksParser)
// Create a Scheduler containing only the graph tasks, with a single installed goal that
// requests an Address.
goal = "list"
tasks = create_graph_tasks(address_mapper, symbol_table_cls, source_roots)
scheduler = LocalScheduler({goal: Address}, symbol_table_cls, tasks)
// Execute a request for the root.
build_request = BuildRequest(goals=[goal], spec_roots=[DescendantAddresses(build_root)])
After Change
// Create a Scheduler containing only the graph tasks, with a single installed goal that
// requests an Address.
goal = "list"
tasks = create_fs_tasks(build_root) + create_graph_tasks(address_mapper, symbol_table_cls)
scheduler = LocalScheduler({goal: Address}, symbol_table_cls, tasks)
// Execute a request for the root.
build_request = BuildRequest(goals=[goal], subjects=[DescendantAddresses("")])


Sylvanian Families Ballet Lesson
From the box:
Jane Apple-Blossom teaches ballet. Her star student is her daughter Justina, who wants to practise all
the time. Jane
loves watching her daughter dance so they move all the furniture to the sides of the
room creating enough
space for Justina to dance freely while Jane accompanies her at the piano.
Their
favourite music is from The Nutcracker
and they love to swirl and spin around the room together.


Server
Introduction
The server API endpoints can be configured with the server
property. Only after these have been configured can FilePond upload files to a server using XMLHttpRequest
.
We’ll first go over the different end points and what they do before discussing how to configure them.
Process
Asynchronously uploading files with FilePond is called processing. In short, FilePond sends a file to the server and expects the server to return a unique file id. This unique id is then used to revert uploads or restore earlier uploads.
Along with the file object, FilePond also sends the file metadata to the server, both these objects are given the same name
.
The upload process described over time:
- FilePond uploads file
my-file.jpg
asmultipart/form-data
using aPOST
request - server saves file to unique location
tmp/12345/my-file.jpg
- server returns unique location id
12345
intext/plain
response - FilePond stores unique id
12345
in a hidden input field - client submits the FilePond parent form containing the hidden input field with the unique id
- server uses the unique id to move
tmp/12345/my-file.jpg
to its final location and remove thetmp/12345
folder
FilePond uses unique file ids to prevent showing information about the server file structure to the client.
Process Chunks
To process files in chunks set chunkUploads
to true
.
FilePond will then slice up files bigger than the set chunkSize
into parts.
Custom headers used in requests
| header | value |
|---|---|
| Upload-Length | The total size of the file being transferred |
| Upload-Name | The name of the file being transferred |
| Upload-Offset | The offset of the chunk being transferred |
| Content-Type | The content type of a patch request, set to 'application/offset+octet-stream' |
In short:
- FilePond will send a
POST
request (without file) to start a chunked transfer, expecting to receive a unique transfer id in the response body, it’ll add theUpload-Length
header to this request. - FilePond will send a
PATCH
request to push a chunk to the server. Each of these requests is accompanied by aContent-Type
,Upload-Offset
,Upload-Name
, andUpload-Length
header. - FilePond will send a
HEAD
request to determine which chunks have already been uploaded, expecting the file offset of the next expected chunk in theUpload-Offset
response header.
In detail:
- FilePond requests a transfer id from the server, a unique location to identify this transfer with. It does this using a
POST
request. The request is accompanied by the metadata and the total file upload size set to theUpload-Length
header. - server create unique location
tmp/12345/
- server returns unique location id
12345
intext/plain
response - FilePond stores unique id
12345
in file item - FilePond sends first chunk using a
PATCH
request adding the unique id12345
in the URL, eachPATCH
request is accompanied by aUpload-Offset
,Upload-Length
, andUpload-Name
header. TheUpload-Offset
header contains the byte offset of the chunk, theUpload-Length
header contains the total file size, theUpload-Name
header contains the file name. - FilePond sends chunks until all chunks have been uploaded succesfully.
- server creates the file if all chunks have been received succesfully.
- FilePond stores the unique id
12345
as the server id of this file. - client submits the FilePond parent form containing the hidden input field with the unique id
- server uses the unique id to move
tmp/12345/my-file.jpg
to its final location and remove thetmp/12345
folder
If one of the chunks fails to upload after the set amount of retries in chunkRetryDelays
the user has the option to retry the upload.
- FilePond As FilePond remembers the previous transfer id the process now starts of with a
HEAD
request accompanied by the transfer id (12345
) in the URL. - server responds with
Upload-Offset
set to the next expected chunk offset in bytes. - FilePond marks all chunks with lower offsets as complete and continues with uploading the chunk at the requested offset.
Everything continues like normal.
Revert
There’s one way the client can deviate from the previous path and that is by reverting the upload. Let’s go back to step five and switch to this alternate reality.
This is another reason why FilePond uses unique ids. If we’re going to give the client the power to influence the server file system that power should be very minimal.
Restore
FilePond uses the restore
end point to restore temporary server files. This might be useful in a situation where the user closes the browser window but hadn’t finished completing the form. Temporary files can be set with the files
property.
Step one and two now look like this.
- FilePond requests restore of file with id
12345
using aGET
request - server returns a file object with header
Content-Disposition: inline; filename="my-file.jpg"
Load
The restore
end point is used to restore a temporary file, the load
end point is used to restore already uploaded server files. These files might be located in a database or somewhere on the server file system. Either way they might not be directly accessible from the web.
For situations where a user might want to edit an existing file selection we can use the load
end point to restore those files.
- FilePond requests restore of file with id
12345
or a file name using aGET
request - server returns a file object with header
Content-Disposition: inline; filename="my-file.jpg"
Fetch
The fetch
end point is used to load files located on remote servers. When a user drops a remote link, FilePond asks the server to download it (CORS might otherwise block it). In this situation the server serves as a proxy.
- FilePond requests fetch of file
http://somewhere/their-file.jpg
using aGET
request - server returns a file object as if the file is located on the server
An alternative is to configure FilePond to only do a HEAD
request. The server should then save the file to tmp/12345/my-file.jpg
and return response headers with the required file information.
header('Access-Control-Expose-Headers: Content-Disposition, Content-Length, X-Content-Transfer-Id');
header('Content-Type: image/jpeg');
header('Content-Length: 3965123');
header('Content-Disposition: inline; filename="my-file.jpg"');
header('X-Content-Transfer-Id: 12345');
Remove
The remove
end point is used to remove local
files located on the server. This end point is not enabled by default and can only be set to a custom function.
Configuration
The server
configuration property expects an object or a URL. If it’s not defined, FilePond will not be able to upload file to the server or use fetch functionality.
URL
Setting a single URL is the most basic form of defining a server configuration.
FilePond.setOptions({
server: './'
});
This tells FilePond the api is located at the same location as the current page. It will then assume it can call all methods on this url. Like shown below.
| method | type | path |
|---|---|---|
| process | POST | |
| revert | DELETE | |
| load | GET | ?load= |
| restore | GET | ?restore= |
| fetch | GET | HEAD |
| patch | PATCH | ?patch= |
We can of course supply a path or URL to another location, FilePond will simply append the above default paths to the supplied value. If we want more fine grained control we can use an object to configure the server end points.
Object Configuration
To setup asynchronous uploading only, we pass the location of the process end point.
FilePond.setOptions({
server: {
process: './process',
fetch: null,
revert: null
}
});
This configuration assumes that the process
end point is located on the same server. Reverting a file upload and fetching a remote file have been disabled. Restoring or loading an earlier uploaded file with this configuration is also not possible.
To unlock these features we have to supply FilePond with some more end points using the revert
, fetch
, load
and restore
properties.
FilePond.setOptions({
server: {
process: './process',
revert: './revert',
restore: './restore/',
load: './load/',
fetch: './fetch/'
}
});
FilePond will append the dropped URL to the fetch
method, and the unique file id will automatically be added to the restore
and load
end points. restore
, load
and fetch
are GET
requests while process
is a POST
request and revert
is a DELETE
request.
If the endpoints are located on a different server we can add a url
property to tell FilePond its location.
FilePond.setOptions({
server:{
url: 'http://<IP_ADDRESS>',
process: './process',
revert: './revert',
restore: './restore/',
load: './load/',
fetch: './fetch/'
});
Depending on our project we might have to pass additional information to each request. We can accomplish this by turning the end point into an object which allows for more fine grain control over how FilePond handles each request.
For brevity we’ll only look at the process
property. All other properties can be configured with the same configuration object.
FilePond.setOptions({
server: {
url: 'http://<IP_ADDRESS>',
process: {
url: './process',
method: 'POST',
withCredentials: false,
headers: {},
timeout: 7000,
onload: null,
onerror: null,
ondata: null
}
}
});
| key | description | required |
|---|---|---|
| url | Path to the end point | yes |
| method | Request method to use | no |
| withCredentials | Toggles the XMLHttpRequest withCredentials on or off | no |
| headers | An object containing additional headers to send, or when uploading chunks this can be a function that is expected to return a header object | no |
| timeout | Timeout for this action | no |
| onload | Called when server response is received, useful for getting the unique file id from the server response | no |
| onerror | Called when server error is received, receives the response body, useful to select the relevant error data | no |
| ondata | Called with the formdata object right before it is sent, return extended formdata object to make changes | no |
A more elaborate server configuration is shown below. This configuration reveals the timeout
property as assigned to the server object. This sets it for all end points, it can also be configured per end point.
FilePond.setOptions({
server: {
url: 'http://<IP_ADDRESS>',
timeout: 7000,
process: {
url: './process',
method: 'POST',
headers: {
'x-customheader': 'Hello World'
},
withCredentials: false,
onload: (response) => response.key,
onerror: (response) => response.data,
ondata: (formData) => {
formData.append('Hello', 'World');
return formData;
}
},
revert: './revert',
restore: './restore/',
load: './load/',
fetch: './fetch/'
}
});
If we want to disable certain end points we can pass a null
instead of string or object. Say we only want to use the fetch functionality and not do asynchronous uploading we can disable processing. In that situation revert and restore do not make a lot of sense (since we’re no longer uploading temporary files) so we can remove those.
FilePond.setOptions({
server: {
url: 'http://<IP_ADDRESS>',
timeout: 7000,
process: null,
load: './load/',
fetch: './fetch/'
}
});
Advanced
If we require even more control we can configure each end point as a function instead of an object. FilePond will then run our function and supply callback methods to control the FilePond interface.
Note that in the examples below we make use of arrow functions, these can of course also be written as a classic function.
Process
The custom process
function receives a file
object plus a set of FilePond callback methods to return control to FilePond. The file
parameter contains the native file object (instead of a FilePond file item) access the file item is restricted in the process
function to prevent setting properties or running functions that would would contradict or interfere with the current processing of the file.
The transfer
and options
parameters are only to be used when uploading chunks. Use transfer
to return the transfer id to FilePond, the options
parameter contains the chunk related options.
FilePond.setOptions({
server: {
process:(fieldName, file, metadata, load, error, progress, abort, transfer, options) => {
// fieldName is the name of the input field
// file is the actual file object to send
const formData = new FormData();
formData.append(fieldName, file, file.name);
const request = new XMLHttpRequest();
request.open('POST', 'url-to-api');
// Should call the progress method to update the progress to 100% before calling load
// Setting computable to false switches the loading indicator to infinite mode
request.upload.onprogress = (e) => {
progress(e.lengthComputable, e.loaded, e.total);
};
// Should call the load method when done and pass the returned server file id
// this server file id is then used later on when reverting or restoring a file
// so your server knows which file to return without exposing that info to the client
request.onload = function() {
if (request.status >= 200 && request.status < 300) {
// the load method accepts either a string (id) or an object
load(request.responseText);
}
else {
// Can call the error method if something is wrong, should exit after
error('oh no');
}
};
request.send(formData);
// Should expose an abort method so the request can be cancelled
return {
abort: () => {
// This function is entered if the user has tapped the cancel button
request.abort();
// Let FilePond know the request has been cancelled
abort();
}
};
}
}
});
Revert
Custom revert methods receive the unique server file id and a load and error callback.
FilePond.setOptions({
server: {
revert: (uniqueFileId, load, error) => {
// Should remove the earlier created temp file here
// ...
// Can call the error method if something is wrong, should exit after
error('oh my goodness');
// Should call the load method when done, no parameters required
load();
}
}
});
Load
Custom load methods receive the local file source
, and the callback methods: load
, error
, abort
, and headers
.
FilePond.setOptions({
server: {
load: (source, load, error, progress, abort, headers) => {
// Should request a file object from the server here
// ...
// Can call the error method if something is wrong, should exit after
error('oh my goodness');
// Can call the header method to supply FilePond with early response header string
// https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/getAllResponseHeaders
headers(headersString);
// Should call the progress method to update the progress to 100% before calling load
// (endlessMode, loadedSize, totalSize)
progress(true, 0, 1024);
// Should call the load method with a file object or blob when done
load(file);
// Should expose an abort method so the request can be cancelled
return {
abort: () => {
// User tapped cancel, abort our ongoing actions here
// Let FilePond know the request has been cancelled
abort();
}
};
}
}
});
Fetch
The custom fetch method receives the url
to fetch and a set of FilePond callback methods to return control to FilePond.
FilePond.setOptions({
server: {
fetch: (url, load, error, progress, abort, headers) => {
// Should get a file object from the URL here
// ...
// Can call the error method if something is wrong, should exit after
error('oh my goodness');
// Can call the header method to supply FilePond with early response header string
// https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/getAllResponseHeaders
headers(headersString);
// Should call the progress method to update the progress to 100% before calling load
// (computable, loadedSize, totalSize)
progress(true, 0, 1024);
// Should call the load method with a file object when done
load(file);
// Should expose an abort method so the request can be cancelled
return {
abort: () => {
// User tapped abort, cancel our ongoing actions here
// Let FilePond know the request has been cancelled
abort();
}
};
}
}
});
Restore
Custom restore methods receive the server file id of the file to restore and a set of FilePond callback methods to return control to FilePond.
FilePond.setOptions({
server: {
restore: (uniqueFileId, load, error, progress, abort, headers) => {
// Should get the temporary file object from the server
// ...
// Can call the error method if something is wrong, should exit after
error('oh my goodness');
// Can call the header method to supply FilePond with early response header string
// https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/getAllResponseHeaders
headers(headersString);
// Should call the progress method to update the progress to 100% before calling load
// (computable, loadedSize, totalSize)
progress(true, 0, 1024);
// Should call the load method with a file object when done
load(serverFileObject);
// Should expose an abort method so the request can be cancelled
return {
abort: () => {
// User tapped abort, cancel our ongoing actions here
// Let FilePond know the request has been cancelled
abort();
}
};
};
}
});
Remove
The custom remove method receives the local file source
and a load
and error
callback.
This method is null
by default as giving clients the power to remove files from the server in this way might not be very secure. But, because of popular demand the method has been added.
FilePond.setOptions({
server: {
remove: (source, load, error) => {
// Should somehow send `source` to server so server can remove the file with this source
// Can call the error method if something is wrong, should exit after
error('oh my goodness');
// Should call the load method when done, no parameters required
load();
}
}
});
Conclusion
We can set the server location, end point paths, configure end point request parameters or override them with methods to finaly control how data is sent to the server. This gives us all the control we need to finely tune our connection to the server.


Account Menu
Profile
Settings
Create an account
Singapore Zoo
Facilities
Restaurant
Animals
Image
Name
Distance from Entrance
Panda
200 m
Elephant
300 m
Lamb
50 m


Trying to build up a little RPG Game with the stuff i found on GAME Grid´s Youtube Channel. Theres a lot to learn from it.
It is really useful to know how to create a custom gamelauncher application that has nothing to do with Unity at all.
Basic funktionality is in place now, but there is still a lot of work to do.


Getting Started
Getting started with MaterialFields is very easy! There are 2 example projects, one programmatic and one using storyboards showing you the implementation.
You can check out the repo here
Essentially there are only 4 things you need to do to get the basic functionality going:
- Instantiate the field
- Set its placeholder (this is the title label) and data array (if PickerField)
- Set its delegate
- Implement the didEndEditing delegate method to get the value when the users done!
You should start by looking at the guide for the Field class. This is the class that all the field components subclass.


|
Class Imlib2::Color::HlsaColor
|
|
Returns a new Imlib2::Color::HlsaColor.
Examples:
h, l, s, a = 255, 0, 0, 255
border = Imlib2::Color::HlsaColor.new h, l, s, a
values = [255, 0, 0, 255]
border = Imlib2::Color::HlsaColor.new values
Get the hue element of a HlsaColor object.
Examples:
amount = color.hue
amount = color.h
Set the hue element of a HlsaColor object.
Examples:
color.hue = 255
color.h = 255
Get the hue element of a HlsaColor object.
Examples:
amount = color.hue
amount = color.h
Set the hue element of a HlsaColor object.
Examples:
color.hue = 255
color.h = 255
Get the lightness element of a HlsaColor
object.
Examples:
amount = color.lightness
amount = color.l
Set the lightness element of a HlsaColor
object.
Examples:
color.lightness = 255
color.l = 255
Get the lightness element of a HlsaColor
object.
Examples:
amount = color.lightness
amount = color.l
Set the lightness element of a HlsaColor
object.
Examples:
color.lightness = 255
color.l = 255
Get the saturation element of a HlsaColor
object.
Examples:
amount = color.saturation
amount = color.s
Set the saturation element of a HlsaColor
object.
Examples:
color.saturation = 255
color.h = 255
Get the saturation element of a HlsaColor
object.
Examples:
amount = color.saturation
amount = color.s
Set the saturation element of a HlsaColor
object.
Examples:
color.saturation = 255
color.h = 255
Get the alpha element of a HlsaColor object.
Examples:
amount = color.alpha
amount = color.a
Set the alpha element of a HlsaColor object.
Examples:
color.alpha = 255
color.a = 255
Get the alpha element of a HlsaColor object.
Examples:
amount = color.alpha
amount = color.a
Set the alpha element of a HlsaColor object.
Examples:
color.alpha = 255
color.a = 255


Username:
Favorite Food:
Favorite Color:
Friend Lookup:Enter a friend's username to get their information!


179,1565030770,537254438,05da2600000000000000000000000000,2.57321538,3.08034084
180,1565030843,536910090,00990a00000000000000000000000000,25.19003012,3.34148761
181,1565030851,537341893,072fc500000000000000000000000000,2.09540300,3.05818609
182,1565030854,521036009,000e60e9000000000000000000000000,268.11167839,3.67409506
183,1565030863,537253517,05d68d00000000000000000000000000,2.57940957,3.39540557
184,1565030974,526117643,005beb0b000000000000000000000000,41.94012995,4.09177412
185,1565030980,537242865,05acf100000000000000000000000000,2.65327877,3.76758009
186,1565030988,523026768,002cc150000000000000000000000000,86.13669218,4.80261909
187,1565030997,537440563,08b13300000000000000000000000000,1.73245549,4.21627476
188,1565031101,536911230,009d7e00000000000000000000000000,24.47777668,4.62894170
189,1565031105,537116576,03bfa000000000000000000000000000,4.01725528,4.30877608
190,1565031302,523006702,002c72ee000000000000000000000000,86.73003763,5.03754313
191,1565031307,537634299,0ba5fb00000000000000000000000000,1.29278466,4.19393154
192,1565031363,536936658,0100d200000000000000000000000000,15.01072309,4.82435901
193,1565031369,537663892,0c199400000000000000000000000000,1.24453958,3.93099122
194,1565031411,536938795,01092b00000000000000000000000000,14.53817598,4.52521459
195,1565031418,537232251,05837b00000000000000000000000000,2.73121639,3.97850091
196,1565031561,528431669,007f3a35000000000000000000000000,30.30054427,4.33923978
197,1565031571,537820051,0e7b9300000000000000000000000000,1.03977921,3.52520414
198,1565031621,536971685,0189a500000000000000000000000000,9.79324819,3.84653911
199,1565031625,537284846,0650ee00000000000000000000000000,2.38418444,3.51303199
200,1565031728,527015210,00699d2a000000000000000000000000,36.50142440,3.79906688
201,1565031737,537562369,0a8d0100000000000000000000000000,1.42726880,3.22119951
202,1565031759,536917437,00b5bd00000000000000000000000000,21.21214401,3.48096377
203,1565031763,537142379,04246b00000000000000000000000000,3.63541425,3.27687021
204,1565031850,525974487,0059bbd7000000000000000000000000,42.96107786,3.64212247
205,1565031857,537264179,06003300000000000000000000000000,2.50947829,3.31457561
206,1565031900,536916009,00b02900000000000000000000000000,21.88382819,3.53975746
207,1565031902,537010876,0222bc00000000000000000000000000,7.05106313,3.43760450
208,1565032104,521863021,001aff6d000000000000000000000000,142.79181044,4.02893220
209,1565032111,537745593,0d58b900000000000000000000000000,1.12829134,3.33712618


60 minutes
Here are links to lessons that should be completed before this lesson:
Learn a commonly used testing tool.
Jasmine is a Behavior-Driven Development testing framework for JavaScript. It does not rely on browsers, DOM, or any JavaScript framework. Thus it’s suited for websites, Node.js projects, or anywhere that JavaScript can run.(stackshare.io)
Which companies use Jasmine testing?
Participants will be able to:
expect
& matchers like toBe
, toContain
, and toBeDefined
Jasmine is a behavior-driven development (BDD) framework for testing JavaScript code. (Note: BDD is a specific style of testing that tests the behavior of the code from the user’s perspective, rather than testing implementation details. It is often used with TDD! Learn more.) Jasmine has no external dependencies and does not require a DOM, which means that it’s good for getting tests up and running quickly.
As we learned in the last lesson on test-driven development (TDD), one way to ensure that your code is well-tested is to start by writing a test for the behavior you want, watch it fail, and finally write the code to make it pass (the Red-Green-Refactor pattern). Though working in a TDD style may feel slower at first, it can save you time in the long run by ensuring that your code won’t break. We’ll be working in a TDD style through this lesson.
Let’s get started by setting up a new project with Jasmine tests.
Create a new project
mkdir jasmine-practice
- create a folder for your new projectcd jasmine-practice
- change directories to that folderInstall Jasmine
npm install --global jasmine
Initialize Project
jasmine init
/spec
directory in your project! This is where your tests will go.Create Files
/spec
folder that end with “.spec.js” so that Jasmine knows which files are the test files.spec/string.spec.js
.string.spec.js
, because we’ll be testing some string functionality! In general, try to name your test files for the behavior that they’re testing.Start Test
jasmine
from the command line to run your tests! Since we haven’t added any tests yet, you’ll see something like this:Started
No specs found
Finished in 0.004 seconds
Incomplete: No specs found
Jasmine Syntax
string.spec.js
file:describe('A string', function() {
it('containing 4 letters should have length 4', function() {
WORD = 'word';
expect(WORD.length == 4).toBe(true);
});
});
describe
, provides context for a group of tests. describe
is a function that takes 2 arguments (“STRING”, FUNCTION(){}). The “STRING” should describe the context for what we are testing, and the “FUNCTION” will contain one or more tests.describe
, you can add multiple it
statements. Each it
will contain tests for a specific behavior (also known as “specs”).expect
statement within the it
.
"word".length == 4
evaluates to true
!describe
and it
statements together, they form the sentence “A string that contains 4 letters should have length 4”. It’s good practice to write Jasmine tests that read like sentences and clearly state what they are trying to test.jasmine
in the command line. You should see something like this:Started
.
1 spec, 0 failures
Finished in 0.006 seconds
WORD
to something with 5 letters, e.g. WORD = "words"
. You’ll now see something like this:Started
F
Failures:
1) A string containing 4 letters should have length 4
Message:
Expected false to be true.
Stack:
Error: Expected false to be true.
at <Jasmine>
at UserContext.<anonymous> (/path_to_project/jasmine-practice/spec/string.spec.js:4:34)
at <Jasmine>
1 spec, 1 failure
toBe
.Adding more tests
it
statement.describe('A string', function() {
it('containing 4 letters should have length 4', function() {
WORD = 'word';
expect(WORD.length == 4).toBe(true);
});
// New spec!
it('should be equal to an identical string', function() {
WORD = 'word';
expect(WORD == 'word').toBe(true);
});
});
WORD
twice. Multiple it
statements can use the same variables if they are declared under the describe
scope.describe('A string', function() {
let WORD = 'word';
it('containing 4 letters should have length 4', function() {
expect(WORD.length == 4).toBe(true);
});
it('should be equal to an identical string', function() {
expect(WORD == 'word').toBe(true);
});
});
Other matchers
toBe
, which tests that the actual value in the expect
evaluates to the expected value. However, Jasmine provides a lot of different matchers that can help us test different behaviors. These matchers can also help by printing out more specific error messages when tests fail. Check out the documentation: https://jasmine.github.io/api/3.5/matcherstoBeGreaterThan
matcher.describe('A string', function() {
let WORD = 'word';
// ... previous tests
// New test
it('should be more than 5 characters long', function() {
expect(WORD.length).toBeGreaterThan(5);
});
});
jasmine
, we now get the failure message:Failures:
1) A string should have a length greater than 5
Message:
Expected 4 to be greater than 5.
Stack:
Error: Expected 4 to be greater than 5.
at <Jasmine>
at UserContext.<anonymous> (/Users/brookeangel/Code/jasmine-practice/spec/string.spec.js:13:27)
at <Jasmine>
WORD.length
is 4 - let’s provide a different value so that our test passes:describe('A string', function() {
// ... previous tests
it('should have a length greater than 5', function() {
expect('elephant'.length).toBeGreaterThan(5);
});
});
Including modules in Jasmine tests
.spec.js
file, so you’ll want to import it modules into your spec file.module.exports
in them.// src/myFunction.js
function myFunction() {}
module.exports = myFunction;
// spec/myFunction.spec.js
const myFunction = require('../src/myFunction');
Local Installation
npm init --yes
- Makes a package.json
file, for projects that don’t already have one.npm install --save-dev jasmine
will save Jasmine locally in your current project. Notice that this creates a package-lock.json
file in the project. You don’t need to understand everything in this file - just know that it specifies exactly which verion of Jasmine you downloaded to the project.jasmine init
. With a local installation, you can initialize Jasmine by running node node_modules/jasmine/bin/jasmine init
. (We don’t have to run this for our project, since Jasmine is already initialized.)"test": "jasmine"
jasmine
from the command line, run npm test
to run all the specs.expect
to every it
function, or you could end up with this false positive.expect
inside of asynchronous code is ignored, therefore passing. (false positive)
done
- this signals to the test engine this is asynchronous code and it must wait. Learn more.Remember the Basic JavaScript practice that we completed a few lessons ago? We’re going to rewrite a few of those functions, TDD style!
FizzBuzz (from basic JS practice, challenge 4)
We’re going to TDD a slight twist on fizzBuzz
. The function will:
/spec
directory named fizzBuzz.spec.js
. Our tests will go here.fizzBuzz.spec.js
, add a describe
to add some context.fizzBuzz
is defined.
it
within the describe. Make sure it states what you are testing.toBeDefined
. See documentation.npm test
. If all goes well, you should see the following failure:1) fizzBuzz should be defined
Message:
ReferenceError: fizzBuzz is not defined
// spec/fizzBuzz.spec.js
describe("fizzBuzz", function(){
it("should be defined", function(){
expect(fizzBuzz).toBeDefined();
});
});
/src
in the project, and make a fizzBuzz.js
file within the directory. Add a fizzBuzz function to the file, and export it from the file so that we can import it in our test. Don’t add any functionality to fizzBuzz
just yet! All that our function has to do to make the test pass is “be defined”.fizzBuzz
function into the spec file. (Hint: see the “Including modules in Jasmine tests” section above.)
// src/fizzBuzz.js function fizzBuzz() {};
module.exports = fizzBuzz;
// spec/fizzBuzz.spec.js describe(“fizzBuzz”, function(){ it(“should be defined”, function(){ expect(fizzBuzz).toBeDefined(); }); });fizzBuzz
function.
// src/fizzBuzz.js function fizzBuzz(num) { return “fizz”; };
module.exports = fizzBuzz;
// spec/fizzBuzz.spec.js describe(“fizzBuzz”, function(){ // older tests
it(“should return ‘fizz’ when given a multiple of 3”, function(){ expect(fizzBuzz(3)).toBe(“fizz”); expect(fizzBuzz(6)).toBe(“fizz”); }); });Notice that we haven’t implemented all the functionality for fizzBuzz
yet - we don’t have to for the test to pass. That means we should add more tests!
fizzBuzz
.
// src/fizzBuzz.js
function fizzBuzz(num) {
if (num % 15 === 0) {
return "fizzbuzz";
} else if (num % 3 === 0) {
return "fizz";
} else if (num % 5 === 0) {
return "buzz";
} else {
return num;
}
};
module.exports = fizzBuzz;
// spec/fizzBuzz.spec.js
const fizzBuzz = require('../src/fizzBuzz');
describe("fizzBuzz", function(){
it("should be defined", function(){
expect(fizzBuzz).toBeDefined();
});
it("should return 'fizz' when given a multiple of 3", function(){
expect(fizzBuzz(3)).toBe("fizz");
expect(fizzBuzz(6)).toBe("fizz");
});
it("should return 'buzz' when given a multiple of 5", function(){
expect(fizzBuzz(5)).toBe("buzz");
expect(fizzBuzz(10)).toBe("buzz");
});
it("should return 'fizzbuzz' when given a multiple of 3 and 5", function(){
expect(fizzBuzz(15)).toBe("fizzbuzz");
expect(fizzBuzz(30)).toBe("fizzbuzz");
});
});
Exploring new matchers:
toBeTruthy
and toBeFalsy
in your tests.mySplit
that takes a string, and returns an array of its letters, using TDD. Use the matcher toContain
in your test.
mySplit("dog") => ["d","o","g"]
Challenge 1: Read the docs on beforeEach
and afterEach
. Try to write a test that uses beforeEach
to set up tests. There’s a good example in the Jasmine Tutorial.
Challenge 2: You can also run Jasmine tests in the browser for a nicer UI! Follow the installation instructions on Jasmine’s github repo to make your tests run in the browser instead of the command line.
Question: What is Jasmine and how does it work in your project?
Exercise: Each student should pick a matcher, like toBeNull()
. Then describe that matcher to the class and how it should be used.


One of many ways to breathe new life into something is to change its name. Sometimes the old name is an Artifact Title that no longer fits, or it's just not hip enough for the audiences of today. Maybe it's a Meaningful Rename to signify personal growth or a life-changing event.
But for whatever reason, the name change doesn't fit. Fans may find that the old name fit better than the new one, or was more recognizable, or more iconic. Or maybe the event that precipitated the name change wasn't as life-changing as previously thought. Or maybe nostalgia takes over. So the name gets changed back.
This trope can also apply for when a name change is part of a publicity stunt and is intentionally short-lived. See also Sudden Name Change for when a name is changed but doesn't change back.
Examples:
- International House of Pancakes (better known as IHOP) faced a backlash in 2018 when they announced they were going to change the name of their restaurant chain to "IHOB" (with the "B" standing for "Burgers") to emphasize their burger selection. The name change turned out to be temporary, as they returned to the IHOP name a month later.
- Pizza Hut changed its name to Pizza Hut Hut for Superbowl LIII
- In the run-up to The Simpsons Movie, numerous 7-Eleven Stores in North America renamed themselves "Kwik-E-Mart" with Simpsons-themed signage on and inside the building. After the movie promotion was over the names returned to 7-Eleven
- Action Comics was revamped in 1988 as a weekly anthology series, and was renamed Action Comics Weekly. The format change was dropped a year later, and the book's title was returned to normal.
- Black Panther was created just before the Black Panther organization. For a short time T'Challa changed to "Black Leopard" to avoid Unfortunate Implications, but this didn't last long.
- Jason Todd picked up the Red Robin costume and name while traveling the multiverse only to return to being the Red Hood sometime after returning home.
- The Golden-Age Starman villain The Mist went by the name "Nimbus" in the Will Payton Starman series, but was back to calling himself The Mist by the time of the Jack Knight series.
- Post-Crisis, the first Superman series was renamed Adventures of Superman with issue #424, while a second Superman series was launched. Following Infinite Crisis, the second Superman series was cancelled, and the original title returned to the name Superman with issue #650.
- Beast Boy changed his name to "Changeling" when he joined the Teen Titans in 1980. This change lasted about twenty years, before he went back to the Beast Boy name.
- The main character on The Greatest American Hero was originally named Ralph Hinkley, but after the assassination attempt on Ronald Reagan by John Hinckley, Jr., the character's last name was temporarily changed to "Hanley" during the first season. It was reverted back to "Hinkley" by Season 2.
- On Parks and Recreation, Jerry retires temporarily. When he returns to work, he reveals that his name is actually Gary and they've been saying it wrong all this time. He asks that they call him Gary from then on. Instead, April starts calling him "Larry" and the others join in. In the final season (which takes place three years after the previous one by which time the character is now called "Terry"), Donna intentionally "misprints" his name as "Gary" on a wedding seating chart and the rest of the cast seize on it as another hilarious name change again (having forgotten it's his actual name). He tears up a little at finally being called by his real name by his best friends.
- Saturday Night Live: "Weekend Update" went through a number of name changes (including "SNL NewsBreak" and "Saturday Night News") when Dick Ebersol produced the show in the early 1980s, but returned to its original name when Lorne Michaels returned as producer in 1985.
- Kajagoogoo shortened their name to "Kaja" before breaking up in 1985, but went by their original name when they reunited in the 2000s.
- On their last record before they disbanded in 1994, the New Kids on the Block shortened their name to NKOTB.
- For one album, The J. Geils Band shortened their name to just "Geils". They changed it back on the following record.
- For a time in the 1990s, MC Hammer dropped the "M.C." from his name and went by just "Hammer".
- When he first started in the record business in the mid-1970s, John Mellencamp's name was changed to "Johnny Cougar" by his then-manager. After achieving some success, he was able to refer to himself as "John Cougar Mellencamp" beginning in 1983. Finally, in 1991, he dropped the "Cougar" completely and recorded using his given name.
- Prince changed his name to an unpronounceable symbol in 1993. The public resorted to calling him "The Artist Formerly Known as Prince" until he finally went back to his original name in 2000.
- In 1971, Dionne Warwick added an "e" to the end of her last name on the advice of an astrologer friend, but removed it after a few years.
- When Madonna was into Kabbalah, she wanted to be called "Esther" but it never took and everyone kept on calling her Madonna.
- Rapper Sean Combs can't seem to stick with a stage name for too long....Puff Daddy....Puffy....Sean "Puffy" Combs, P. Diddy, ....
- Aly & A.J. changed their name to 78violet (pronounced "seventy-eight violet") when they returned to making music in 2012, but they only released a single song before going on a hiatus again. They then made a more substantial comeback in 2017 and changed their name back to Aly & AJ.
- The Who had already settled on the name before their manager persuaded them to release their debut single under the name "The High Numbers". They reverted to their preferred moniker after the single flopped. When it was reissued many years later to promote the Quadrophenia movie, it was again credited to The High Numbers as a kind of Mythology Gag, and became a minor hit with that credit.
- Massive Attack shortened their name to "Massive" for the single release of their Signature Song "Unfinished Sympathy", because it came out at the time of the First Gulf War and radio stations weren't keen on playing bands with words like "Attack" in their names.
- Martha And The Muffins changed their name to "M + M" in 1984, partly to reflect a line-up change (shifting from a full band to a core duo of Martha Johnson and Mark Gane plus guests) and partly as Creator Backlash against a whimsical name they felt no longer suited them. A couple of albums later they decided the original name was better after all, and returned to it.
- Neville Staple of The Specials became Neville Staples for the couple of years he was in The Fun Boy Three, then reverted to the singular Neville Staple when they broke up.
- Ty England released his third album Highways & Dance Halls under the name Tyler England, but has gone back to Ty.
- When Big Audio Dynamite unveiled a new lineup in 1991 (featuring only leader Mick Jones from the previous "classic" lineup) with the release of The Globe, they called themselves "Big Audio Dynamite II". On the following record, Higher Power, in 1994, they changed their name again to "Big Audio". On the record following that, F-Punk, they changed back to "Big Audio Dynamite".
- Lily Allen announced in 2012 that she was changing her professional name to Lily Rose Cooper. She only used the new name for a couple of guest spots on other people's records before changing it back.
- It is very common for wrestlers to change their name when moving from one promotion to another, either because that promotion owns the character (WWE and WCW were the most common) or because the wrestler tired from that persona. Notable name changes within the same promotion would include:
- Mick Foley started with the Mankind gimmick in the WWF in the Mid-90s. After a few years, he added a persona called Dude Love, later returning to his Indy/WCW/ECW gimmick of Cactus Jack, and eventually interchanging all 3 with just himself as Mick Foley.
- Owen Hart started, and tragically ended, his career in the WWF as the Blue Blazer.
- Ric Flair and Arn Anderson were in many versions of the Four Horseman in the NWA and WCW.
- Stephanie McMahon became Stephanie McMahon-Helmsley when she married Triple-H until returning to her maiden name after the divorce (though something else happened off-screen).
- The WWF had crowned various wrestlers as "The King" and would wrestle as so until either losing the crown or not winning the next "King of the Ring" tournament. This included Harley Race, Mabel, Owen Hart, "The Macho King" Randy Savage, and Jim Duggan.
- The Legal Name of WCW under Ted Turner/Turner Television/Time Warner/AOL-Time Warner was always "Universal Wrestling Corporation" (Technically still in existence today under the New AT&T), while the on air name of the company would go from Georgia Championship Wrestling, the National Wrestling Alliance (Jim Crockett Promotions), World Championship Wrestling, and WCW Inc.
- When Lance Storm won titles in the later years of WCW, he would rename the titles he won to the "Canadian Heavyweight Championship", "100 Kilos and Under Championship", and "Saskatchewan Hardcore International Title" instead of US, Cruiserweight, and Hardcore titles respectively. Generally this change was reverted back to the old name once he or his stable lost the strap.
- The WWWF/WWF/WWE Women's Title had been the highest female championship in the promotion from 1956 until 2010 when it was merged with and renamed the Divas Championship. In 2016, during the start of the Women's Revolution, the Title was renamed back to the WWE Women's Championship, as the term "Diva" had fallen out of favor with WWE fans and management.
- During the early 90's in WCW, Standards and Practices required certain moves or activities to have less aggressive terms. Most famously were announcers would say an "International Object" was illegally used. This practice thankfully ended once Eric Bischhoff become Executive VP.
- Wrestler's moves and finishes are commonly renamed with a new persona and reverted back once out of said persona.
- Many Sports Venues have a title sponsor that is added to the name, and once the sponsorship ends the original name reappears if no sponsor is found. Frequent Examples would include Dolphins Stadium after sponsorship ending with Pro Player and Sun-Life (the stadium is now sponsored by and with the name Hard Rock) and the Oakland-Alameda County Coliseum after McAfee and Overstock/O.co Deals ended. College Bowl Games have a similar sponsorship issue. A sign the Bowl Game is struggling is if the game reverts back to an original name.
- A special case existed for Giants Stadium in East Rutherford, NJ, which was named for the NFL's New York Giants but also served as the New York Jets' home from 1984-2009. The Jets referred to the stadium as The Meadowlands (sometimes the New Jersey Meadowlands), even when hosting the Giants. This practice was discontinued when both teams moved to a new stadium in 2010, now called MetLife Stadium.
- Predating Giants Stadium, the Los Angeles Angels played at "Chavez Ravine" instead of Dodger Stadium for their home games between 1962-1965.
- Because of Olympic sponsorship rules, host cities have to remove sponsorship names and signage from venues until after the Games are over.
- When the New Orleans Hornets relocated temporarily to Oklahoma City after Hurricane Katrina, the team's official name was New Orleans/Oklahoma City Hornets.
- For decades, the University of Hawai'i named male teams the Rainbow Warriors and female teams the Rainbow Wahine. In 2000, because of University wanting a shorter name (and absolutely nothing to imply being gay), their sports teams were allowed to drop Rainbow from the title. This practice ended in 2013, with the Rainbow restored.
- Major League Baseball's Cincinnati Reds were known as the Redlegs for a few years in the 1950s during that era's Red Scare.
- Chad Johnson of the Cincinnati Bengals legally changed his name to Chad Ochocinco (Spanish for "eight-five") to match his uniform number (85) for a few seasons before legally changing it back.
- At the height of the moral panic about Dungeons & Dragons, devils and demons were renamed in the 2nd Edition as baatezu and tanar'ri. This was reversed in the 3rd edition and the names were Retconed as being of particular races of said devils and demons.
- In the Numberjacks episode "Being 3", Three gets turned into a four so the Numbertaker, who was taking threes, wouldn't take her. She starts calling herself Four, but since this series needs a three to work and there's already a character named Four, she got turned back into a three and was called Three again.
- Parodied as a Running Gag by the last four seasons of Aqua Teen Hunger Force. The show became Aqua Unit Patrol Squad 1, Aqua Something You Know Whatever, Aqua TV Show Show, and Aqua Teen Hunger Force Forever, all without changing any of the actual content.
- Happens to women who change their last name when they get married, but revert to their maiden name when the marriage ends. Some noteworthy celebrity examples include:
- Roseanne Barr changed her name to "Roseanne Arnold" after marrying Tom Arnold, then to "Roseanne" when the marriage ended, then eventually went back to "Roseanne Barr".
- Kaley Cuoco was briefly named "Kaley Cuoco-Sweeting" during her short-lived marriage to Ryan Sweeting.
- British popstar Cheryl went from being Cheryl Tweedy (her birth name) to Cheryl Cole, to Cheryl Fernandez-Versini, before settling on a mononym.
- In 2003, angered at France for not agreeing with their decision to go to war in Iraq, the American House of Representatives decided to stop serving French Fries and French Toast and instead referred to them as "Freedom" Fries and "Freedom" Toast. This was then reversed in 2006.
- Heiress Patty Hearst referred to herself as "Tania" during her time with the Symbionese Liberation Army.
- The Republican Party was founded in 1854 and Abe Lincoln won the White House in 1860. For his reelection in 1864, the party's name was changed to the National Union Party. Once Abe was assassinated and Andrew Johnson was impeached (but narrowly not-convicted in the Senate), the Party returned back to the Republican Party name everywhere. The major reasons the party adopted this name in the first place was because Johnson was a Democrat and a Southerner from formerly rebellious Tennessee.
- Many countries, especially those under authoritarian dictatorships, will rename themselves only to revert back a few years later under new leadership. Famous 20th century examples would include the Democratic Republic of the Congo (as Zaire) and Cambodia (as Kampuchea).
- This can also happen to major cities, like Saint Petersburg (Leningrad), České Velenice (Gmünd-Bahnhof, Czechoslovakia), Santo Domingo (Ciudad Trujillo, Dominican Republic), Bandar-e Anzalī (Bandar-e Pahlavi)


This application shows a WebRtcEndpoint connected to itself (loopback) with a PlateDetector filter in the middle (take a look to the Media Pipeline) Whenever a plate is detected it is processed and archived in Orion. To run this demo follow these steps:


Procedural Textures
by Patricio Gonzalez Vivo at Mapzen
The Tangrams teams (web and native) are excited about the possibilities of using the OpenGL Shading Language to render maps. As Brett and Peter describe in this article, we use them for everything from geometry extrusion to lighting effects. That’s what makes Tangram’s map engine fast, powerful and highly flexible.
Another use of GLSL Shaders is for generating procedural textures in real time. This allows mappers to make interesting patterns programmatically and apply them to different geometries using custom rules.
This repository and on-line gallery show a small collection of examples to inspire mapmakers to use, code and share generative textures for maps.
Gallery
Shapes
Tile Patterns
Pattern Designs
Animations
How to install this gallery on your local machine?
- Clone this repository locally and run a Python HTTP Server.
git clone https://github.com/tangrams/ProceduralTextures
cd ProceduralTextures
python -m SimpleHTTPServer 8000
Note: in case you have Python 3.x as your default version you should use python -m http.server 8000
instead.
- Then open your web browser to http://localhost:8000/.


{% extends 'users/password_reset/base.html' %} {% block content_block %}
Success
We've e-mailed you instructions for setting your password to the e-mail address you submitted.
You should be receiving it shortly.


- Developer tools can be accessed from the browser
- HTML elements can be seen in blocks (boxes). Blocks form around whatever element is inside an HTML document
- Style can be seen in the styles section on the right-hand side of developer tools
- by clicking through the triangles on the left-hand side of Developer tools, you can see most elements in an HTML page
Hint: you can right-click and click "inspect element" to automatically access Developer Tools


Using RFT Object Maps with SAFS Balancing
SAFS\RFT Portability with Performance
Released 2009.06.15
Changing times, Changing tools...
(Skip the pitch)
Over the years IBM Rational® Functional Tester (RFT) has grown in scope and popularity when compared to older tools like IBM Rational® Robot. This has been great for those using RFT to test more technologies, but for those migrating SAFS tests from Robot to RFT it also means a potential impact on performance as RFT sifts through a growing number of technology proxies looking for just the right match to ported Robot recognition strings.
Porting Tests and App Maps
Fortunately, migrating a SAFS test from using Robot to using RFT is not a "start over" scenario. SAFS\RFT was coded to handle most Robot recognition strings allowing the greatest portion of SAFS tests and App Maps to run with few modifications when migrated to RFT.
However, the convenience of using Robot recognition strings in SAFS comes with a price. Under certain test domains like Win, .Net, and Html the tests might run slower than desired--especially if multiple domains are enabled for testing. If these performance issues are significant enough, the tester may wish to leverage RFT Object Map objects within the SAFS App Map.
(See Create RFT App Maps Info for more background.)
Application-Specific Object Map, Application-Specific Project
Normally, when we are not using app-specific resources in RFT we would not have to make a new RFT Datastore or Project. We simply use the one provided by SAFS at C:\SAFS\DatastoreJ. However, as soon as we start needing custom app-specific scripts or Object Maps then we must create a separate RFT Project dedicated to the application or system being tested. One obvious location is to create an RFT project directly in the SAFS project used for the application or system being tested.
So, let's go about the business of creating a new RFT Project associated with a SAFS Project we created for our NextBigApp at C:\automation\NextBigApp:
Short and Sweet Instructions: (sort of)
(Go to Pretty Pictures "for Dummies"TM)
Create the Functional Test Project
- Open the RFT IDE
- Ensure RFT is in the "Functional Test" Perspective
- Select File->New->Functional Test Project
- Provide a RFT Project Name: "MyRFTProject"
- Provide a RFT Project location: "C:\automation\NextBigApp"
- If the Rational Test Login dialog appears Cancel or Login as appropriate.
- Verify your RFT Project exists at: C:\automation\NextBigApp\MyRFTProject
Add JAR files to Project's Java Build Path
- Right-Click Project MyRFTProject in the Navigator view,
- Select Properties from the popup menu,
- Select Java Build Path in the Properties Dialog
- Select button Add External JARs...
- Navigate to C:\SAFS\lib and add 2 JARS:
- safs.jar
- safsrational_ft.jar
- Select button OK to close the Properties dialog.
Create New Test Object Map
- Select File->New->Test Object Map
- Provide the Map name: AppObjectMap
- Select "Set this Test Object Map as default choice for new scripts"
- Select button Finish
- Close the Test Object Map dialog if it appears.
Create New Empty Functional Test Script "TestScript"
- Select File->New->Empty Functional Test Script
- REQUIRED Script Name: TestScript,
- Select button Next,
- Ensure /AppObjectMap.rftmap is assigned to TestScript,
- Select button Finish.
Change the Helper Superclass for TestScript
- Right-Click TestScript.java in the Navigator view,
- Select Properties from the popup menu,
- Change the Helper Superclass to: org.safs.rational.Script
- Select button OK.
Copy real SAFS\RFT TestScript Assets To Project
- If the asset(s) are not available to copy from C:\safs\datastorej then extract the files out of the C:\safs\lib\safsrational_ft.jar using a program like WINZIPTM.
- Copy\Extract TestScript.java to: C:\automation\NextBigApp\MyRFTProject\TestScript.java.
- Refresh the RFT Project with File->Refresh F5.
Capture Objects in AppObjectMap for Use by SAFS\RFT
- DO NOT RECORD IN TestScript.java TO CAPTURE TEST OBJECT MAP OBJECTS!
- Open TestScript.java in RFT to populate the "Script Explorer" view,
- In Script Explorer, under Test Objects, Right-Click on "AppObjectMap.rftmap" and Select "Open",
- For each object you wish to support in SAFS with TestScript do the following:
- In the "Test Object Map" viewer select "Test Object->Insert Object(s)",
- From the "Select an Object" dialog Drag the Hand and Release on the object to capture,
- Right-Click desired items in the Test Object Map and select "Add to Script TestScript..."
- In the "Script Explorer" view of TestScript, Right-Click the newly added Test Objects and "Rename" them, as desired.
- Whenever closing the Test Object Map viewer, Select "Yes" or "OK" to save the changes to AppObjectMap.rftmap,
- Use the Test Object names defined in TestScript in your SAFS App Maps in place of SAFS recognition strings.
Detailed Instructions
Our SAFS project for NextBigApp was originally created at C:\automation\NextBigApp, as shown below:


libs/ngx-editorjs/ngx-editorjs/src/lib/containers/editorjs/editorjs.component.ts
The NgxEditorJSBaseComponent
is a fully implemented Angular component for creating EditorJS instances
within an Angular application or Angular Reactive Form.
The component provides @Input
properties for all the configuration options of
a EditorJS instance and @Output
Event Emitters to listen to changes
The instance also provides an Autosave feature by providing an autosave time in ms
or 0
to disable.
OnDestroy
AfterContentInit
ControlValueAccessor
<ngx-editorjs holder="my-editor"></ngx-editorjs>
| changeDetection | ChangeDetectionStrategy.OnPush |
| providers |
EDITORJS_FORM_VALUE_ACCESSOR
|
| selector | ngx-editorjs |
| styleUrls | editorjs.component.scss |
| templateUrl | editorjs.component.html |
Properties |
|
Methods |
|
Inputs |
Outputs |
constructor(editorService: NgxEditorJSService, focusMonitor: FocusMonitor, changeDetection: ChangeDetectorRef)
|
||||||||||||||||
|
Creates an instance of the NgxEditorJSComponent which provides a Angular Forms-compatible component
Parameters :
|
| autofocus | |
Type : boolean
|
|
|
Boolean, If set to true the EditorJS instance gets autofocus when initialized |
| autosave | |
Type : number
|
|
|
Number, Used with Angular Forms this sets an autosave timer active that calls the EditorJS save
method. This patches the |
| blockPlaceholder | |
Type : string
|
|
|
String, The text to display as the placeholder text in the first block before content is added |
| blocks | |
Type : Block[]
|
|
|
Blocks, An initial set of block data to render inside the component |
| hideToolbar | |
Type : boolean
|
|
|
Boolean, If set to true the toolbar will not show in the EditorJS instance |
| holder | |
Type : string
|
|
|
String, the ID property of the element that the EditorJS instance will be attached to |
| initialBlock | |
Type : string
|
|
|
String, The type of block to set as the initial block type. This needs to match a name in the |
| minHeight | |
Type : number
|
|
|
Number, The minimum height of the EditorJS instance bottom after the last block |
| sanitizer | |
Type : SanitizerConfig
|
|
|
SanitizerConfig, The configuration for the HTML sanitizer |
| hasChanged | |
Type : EventEmitter
|
|
|
Emits if the EditorJS content has changed when |
| hasSaved | |
Type : EventEmitter
|
|
|
Emits if the content from the EditorJS instance has been saved to the component value |
| isFocused | |
Type : EventEmitter
|
|
|
Emits if the component is focused |
| isReady | |
Type : EventEmitter
|
|
|
Emits if the EditorJS component is ready |
| isTouched | |
Type : EventEmitter
|
|
|
Emits if the component has been touched |
| Protected getTimer | |||||||||||||||
getTimer(time: number, timeStart: number)
|
|||||||||||||||
|
Internal method to return a new timer for the autosave support
Parameters :
Returns :
Observable<number>
|
| ngAfterContentInit |
ngAfterContentInit()
|
|
Set up the focus monitor and subscriptions to editor service observables
Returns :
void
|
| ngOnDestroy |
ngOnDestroy()
|
|
Called when the component is destroyed, the focus monitor is destroyed as well as the editor service, also the onDestroy$ subject is completed
Returns :
void
|
| Public onChange | ||||||||
onChange(data: OutputData)
|
||||||||
|
Angular Form onChange method, this is a default method that updates the editor instance with blocks on change
Parameters :
Returns :
void
|
| Public onTouch | ||||||||
onTouch(event?: MouseEvent)
|
||||||||
|
Angular Form onTouch method, this is a default method that updates the touch status on the component
Parameters :
Returns :
void
|
| Public registerOnChange | ||||||
registerOnChange(fn: (change: OutputData) => void)
|
||||||
|
Angular Forms registerOnChange
Parameters :
Returns :
void
|
| Public registerOnTouched | ||||||
registerOnTouched(fn: (event: MouseEvent) => void)
|
||||||
|
Angular Forms registerOnTouched
Parameters :
Returns :
void
|
| Protected setupServiceSubscriptions |
setupServiceSubscriptions()
|
|
Sets up the service subscriptions to @Output value
Returns :
void
|
| Public writeValue | ||||||||
writeValue(data: OutputData)
|
||||||||
|
Angular Forms value writer, updates the editor
Parameters :
Returns :
void
|
| Protected _value |
Type : any
|
|
Form field value if used as a field component |
| Public Readonly editorInstance |
Type : NgxEditorJSDirective
|
Decorators :
@ViewChild('editorInstance', {read: NgxEditorJSDirective, static: true})
|
|
The directive used in this component |
| Protected Readonly onDestroy$ |
Default value : new Subject<boolean>()
|
|
Component Destroy subject, in your component |
| Protected timerSubscription$ |
Type : Subscription
|
|
Subscription holder for the autosave timer subscription |
import { FocusMonitor } from '@angular/cdk/a11y';
import {
AfterContentInit,
ChangeDetectionStrategy,
ChangeDetectorRef,
Component,
EventEmitter,
forwardRef,
Input,
OnDestroy,
Output,
Provider,
ViewChild
} from '@angular/core';
import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';
import { OutputData, SanitizerConfig } from '@editorjs/editorjs';
import { Observable, Subject, Subscription, timer } from 'rxjs';
import { map, switchMap, take, takeUntil, tap, timeInterval } from 'rxjs/operators';
import { NgxEditorJSDirective } from '../../directives/ngx-editorjs.directive';
import { NgxEditorJSService } from '../../services/editorjs.service';
import { Block } from '../../types/blocks';
/**
* The `NgxEditorJSBaseComponent` Provider for `NG_VALUE_ACCESSOR`
*/
export const EDITORJS_FORM_VALUE_ACCESSOR: Provider = {
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef(() => NgxEditorJSComponent),
multi: true
};
/**
* The `NgxEditorJSBaseComponent` is a fully implemented Angular component for creating EditorJS instances
* within an Angular application or Angular Reactive Form.
* The component provides `@Input` properties for all the configuration options of
* a EditorJS instance and `@Output` Event Emitters to listen to changes
* The instance also provides an Autosave feature by providing an autosave time in `ms` or `0` to disable.
* @example
* <ngx-editorjs holder="my-editor"></ngx-editorjs>
*/
@Component({
selector: 'ngx-editorjs',
templateUrl: 'editorjs.component.html',
styleUrls: ['editorjs.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
providers: [EDITORJS_FORM_VALUE_ACCESSOR]
})
export class NgxEditorJSComponent implements OnDestroy, AfterContentInit, ControlValueAccessor {
/**
* The directive used in this component
*/
@ViewChild('editorInstance', { read: NgxEditorJSDirective, static: true })
public readonly editorInstance: NgxEditorJSDirective;
/**
* Component Destroy subject, in your component `ngOnDestroy` method call `.next(true)`
* and then `.complete()` on the `this.onDestroy$` subject
*/
protected readonly onDestroy$ = new Subject<boolean>();
/**
* Boolean, If set to true the EditorJS instance gets autofocus when initialized
*/
@Input()
public autofocus: boolean;
/**
* Boolean, If set to true the toolbar will not show in the EditorJS instance
*/
@Input()
public hideToolbar: boolean;
/**
* String, the ID property of the element that the EditorJS instance will be attached to
*/
@Input()
public holder: string;
/**
* String, The type of block to set as the initial block type. This needs to match a name in the `UserPlugins` object.
* The default value is "paragraph"
*/
@Input()
public initialBlock?: string;
/**
* Number, The minimum height of the EditorJS instance bottom after the last block
*/
@Input()
public minHeight: number;
/**
* String, The text to display as the placeholder text in the first block before content is added
*/
@Input()
public blockPlaceholder: string;
/**
* SanitizerConfig, The configuration for the HTML sanitizer
*/
@Input()
public sanitizer: SanitizerConfig;
/**
* String Array, If empty all tools available via the plugin service will be added. If a string
* array is set only the tools with the provided keys will be added
*/
@Input()
public excludeTools: string[] = [];
/**
* Number, Used with Angular Forms this sets an autosave timer active that calls the EditorJS save
* method. This patches the `FormControl` value with every block change and focus and blur, it also autosaves after
* a set time
* Set to 0 to disable or pass a value in `ms` of the autosave time
*/
@Input()
public autosave: number;
/**
* Blocks, An initial set of block data to render inside the component
*/
@Input()
public blocks: Block[];
/**
* Emits if the content from the EditorJS instance has been saved to the component value
*/
@Output()
public hasSaved = new EventEmitter<boolean>();
/**
* Emits if the component has been touched
*/
@Output()
public isTouched = new EventEmitter<boolean>();
/**
* Emits if the component is focused
*/
@Output()
public isFocused = new EventEmitter<boolean>();
/**
* Emits if the EditorJS content has changed when `save` is called
*/
@Output()
public hasChanged = new EventEmitter<OutputData>();
/**
* Emits if the EditorJS component is ready
*/
@Output()
public isReady = new EventEmitter<boolean>();
/**
* Form field value if used as a field component
*/
protected _value: any;
/**
* Subscription holder for the autosave timer subscription
*/
protected timerSubscription$: Subscription;
/**
* Creates an instance of the NgxEditorJSComponent which provides a Angular Forms-compatible component
* @param editorService The EditorJS service
* @param focusMonitor The Focus Monitor
* @param changeDetection The Change Detection Ref
*/
constructor(
protected readonly editorService: NgxEditorJSService,
protected readonly focusMonitor: FocusMonitor,
protected readonly changeDetection: ChangeDetectorRef
) {}
/**
* Internal method to return a new timer for the autosave support
* @param time Time to do with autosave
* @param timeStart When to trigger the first autosave, default is 0 which triggers an immediate save
*/
protected getTimer(time: number, timeStart = 0): Observable<number> {
return timer(timeStart, time).pipe(
timeInterval(),
map(interval => interval.interval)
);
}
/**
* Angular Form onTouch method, this is a default method that updates
* the touch status on the component
* @param event The mouse event from the touch
*/
public onTouch(event?: MouseEvent): void {
this.isTouched.emit(true);
}
/**
* Angular Form onChange method, this is a default method that updates the
* editor instance with blocks on change
* @param data The data to write
*/
public onChange(data: OutputData): void {
this.writeValue(data);
}
/**
* Angular Forms value writer, updates the editor
* @param data The data to write
*/
public writeValue(data: OutputData): void {
this._value = data;
this.editorService
.update({ holder: this.holder, data })
.pipe(take(1))
.subscribe();
this.changeDetection.markForCheck();
}
/**
* Angular Forms registerOnChange
*/
public registerOnChange(fn: (change: OutputData) => void): void {
this.onChange = fn;
}
/**
* Angular Forms registerOnTouched
*/
public registerOnTouched(fn: (event?: MouseEvent) => void): void {
this.onTouch = fn;
}
/**
* Returns a focus monitor observable with the focus value.
* The side effect of this monitor is to update the saved state and
* start any autosave timers
* @param element The element to monitor
* @param checkChildren If the children should be checked
*/
protected getFocusMonitor(element: HTMLElement, checkChildren = true): Observable<boolean> {
this.hasSaved.emit(false);
return this.focusMonitor.monitor(element, checkChildren).pipe(
map(origin => !!origin),
tap(focused => {
if (focused) {
this.isFocused.emit(true);
if (this.autosave > 0) {
this.timerSubscription$ = this.getTimer(this.autosave, 0)
.pipe(switchMap(() => this.editorService.save({ holder: this.holder }).pipe(take(1))))
.subscribe();
}
} else {
if (this.timerSubscription$) {
this.timerSubscription$.unsubscribe();
}
this.isFocused.emit(false);
}
})
);
}
/**
* Sets up the service subscriptions to @Output value
*/
protected setupServiceSubscriptions() {
this.editorService
.isReady({ holder: this.holder })
.pipe(takeUntil(this.onDestroy$))
.subscribe(isReady => {
this.isReady.emit(isReady);
});
this.editorService
.lastChange({ holder: this.holder })
.pipe(takeUntil(this.onDestroy$))
.subscribe(change => {
this.hasChanged.emit(change);
});
this.editorService
.hasSaved({ holder: this.holder })
.pipe(takeUntil(this.onDestroy$))
.subscribe(saved => {
this.hasSaved.next(saved);
});
}
/**
* Set up the focus monitor and subscriptions to editor service observables
*/
ngAfterContentInit(): void {
this.setupServiceSubscriptions();
this.getFocusMonitor(this.editorInstance.element)
.pipe(takeUntil(this.onDestroy$))
.subscribe(() => {
this.onTouch();
});
}
/**
* Called when the component is destroyed, the focus monitor is destroyed
* as well as the editor service, also the onDestroy$ subject is completed
*/
ngOnDestroy(): void {
this.focusMonitor.stopMonitoring(this.editorInstance.element);
if (this.timerSubscription$ && !this.timerSubscription$.closed) {
this.timerSubscription$.unsubscribe();
}
if (!this.onDestroy$.closed) {
this.onDestroy$.next(true);
this.onDestroy$.complete();
}
this.hasChanged.complete();
this.hasSaved.complete();
this.isFocused.complete();
this.isTouched.complete();
this.isReady.complete();
this.editorService.destroy();
}
}

editorjs.component.scss
:host {
position: relative;
width: 100%;
height: 100%;
display: flex;
flex-direction: row;
}
.editor {
flex: 1;
position: relative;
width: 100%;
height: 100%;
border: 2px solid darkgray;
border-radius: 1em;
text-align: left;
}


Hello! My name is Josh Carnide (in case you didn't already know). I'm currently in my third year of Software Engineering at the University of Waterloo in Ontario, Canada. Programming--and anything tech-related for that matter--has been of high interest to me ever since I was in elementary school. I started programming at the swift age of 10, making simple games and applications in Visual Basic. I now have a knack for Android developement. When I'm not coding away, you can find me playing ping-pong, hockey, or keeping up with the latest hip-hop music.
Complex Computations
Reach


Finances summary
| Total costs | Funding level (%) | Funding sought (£) | Other public sector funding (£) | Contribution to project (£) | |
|---|---|---|---|---|---|
|
Lead organisation
Partner
|
£ |
|
|
|
|
| Total |
£ |
|
|
|


DEAN GRAY CALLE SEVILLA 112, 28001,MADRID- SPAIN TELL:+34 639 446 879 PRIVATE<EMAIL_ADDRESS>PROPOSITION: Dear Sir/Madam, I am Mr.Dean Gray, the Auditor General of a reputable bank in Spain , during the course of our auditing I discovered a floating fund in an account opened in the bank in 1990 and since 1991 till date nobody has operated on this account again, after going through some old files in the records I discovered an abandoned deposit in my bank by one of our foreign customers who died along with his entire family as a result of an automobile crash. He actually made a numbered time (fixed)deposit valued at US$112,000,000.00 (One Hundred and Twelve million united states dollars),for twelve calendar months in my bank.The funds was actually meant for a project our late client wanted to start in the near future (a multi million Dollar steel plant in Canada), I sent a routine notification to his forwarding address but got no reply. After a month, I sent a reminder and finally we discovered that Mr.Cosban died from an automobile accident with his entire family .On further investigation, I found out that he died without making a Will, and all attempts to trace his next of kin was fruitless. I therefore made further investigation and discovered that Mr. Cosban did not declare any next of kin or relations in all his official documents,including his Bank Deposit paperwork in our Bank. Upon this discovery, I now seek your permission to have you stand as a next of kin to the deceased as all documentations will be carefully worked out by me for the funds to be released in your favour as the beneficiary's next of kin. Please acknowledge receipt of this message in acceptance of our mutual business endeavor by furnishing me with the following information's; 1. FULL NAMES AND ADDRESS: 2. DIRECT TELEPHONE NUMBER AND FAX NUMBERS: 3. OCCUPATION AND POSITION: 4. NATIONALITY 5. MARITAL STATUS: 6. AGE /SEX: These requirements will enable me file letter of claim to the appropriate departments for necessary approvals in your favour before i could proceed on the transfer of the funds to the designated account of your choice. I shall be compensating you with 35% of the total money while 65% will be mine on final conclusion of this project If this proposal is acceptable by you, do not take undue advantage of the trust I have bestowed in you, I await your urgent mail. Please reply to my private and confidential email<EMAIL_ADDRESS>Best Regards, Mr. Dean Gray


Select this checkbox to suppress stepping into the specified classes while debugging. The list of classes contains
entries of two types:
java.*
).
By default, the list contains some standard Java SDK class patterns so that you do not have to waste your time
stepping into Java class libraries. Use the checkboxes in the list to disable/enable particular patterns
temporarily.


Preparation time
30 mins to 1 hour
Cooking time
30 mins to 1 hour
Serves
Serves 4
Cooking the mackerel with a blow-torch gives a lovely charred flavour without overcooking the flesh.
To make the blini, mix the yeast, sugar, milk, flours and egg yolk together in a bowl to make a paste.
Whisk the egg whites in a separate bowl until they form stiff peaks, then fold them into the yeast mixture. Cover the bowl and set aside at room temperature for 20 minutes.
Heat a frying pan until medium hot, add a little vegetable oil and small spoonfuls of the blini mixture.
Cook the blini on each side until golden-brown then remove and drain onto kitchen paper. Repeat with the remaining batter and keep the blini warm until ready to serve.
For the beetroot, place the redcurrant jelly, vinegar and cloves into a saucepan and cook until reduced down to a glaze thick enough to coat the back of a spoon.
Pass the mixture through a sieve into a clean bowl, whisk in the mustard then fold the beetroot into the pickle mix and keep warm.
Whisk the crème fraîche until thickened, add the chives and season with salt and freshly ground black pepper.
Cut the mackerel fillets in half lengthways. Drizzle with rapeseed oil, gently blow torch on both sides until cooked through then season with salt and freshly ground black pepper.
To serve, place the mackerel onto the serving plates with a little of the chopped shallots, the warm beetroot pickle, blini, crème fraîche and some Avruga caviar.


abstract class AbstractClient
PhaseanetClient do not handle how access token is stored on client side It's up to you to implement your favorite method (session, database, file etc ..)
Define getAccessToken in the way you want retrieve a previous stored token
Define setAccessToken in the way you want store your access stoken
Methods
| mixed |
getAccessToken()
Retrieve a stored token |
|
|
setAccessToken($token)
Store a fresh acces token return PhraseanetApi |
Details
at line 20
abstract public mixed
getAccessToken()
Retrieve a stored token
at line 26
abstract public
setAccessToken($token)
Store a fresh acces token return PhraseanetApi


Ganymed SSH2 for Java is a library which implements the SSH-2 protocol in pure Java.
It allows one to connect to SSH servers from within Java programs. It supports SSH sessions
(remote command execution and shell access),
local and remote port forwarding, local stream forwarding, X11 forwarding, SCP and SFTP.
There are no dependencies on any JCE provider, as all crypto functionality is included.
Ganymed SSH2 for Java was first developed for the Ganymed replication project and a
couple of other projects at the IKS group at ETH Zurich.
Website: http://www.cleondris.ch/opensource/ssh2/.
Please read the included LICENCE.txt, latest changes can be found in HISTORY.txt.


A Sans Serif variable font, by Vernon Adams.
To learn more about this project, visit https://github.com/googlefonts/RokkittFont.


CSDK Creative Cloud Files API
Log out of Creative Cloud
Upload to Creative Cloud folder
Choose file...
Upload file to Creative Cloud
Download asset rendition from Creative Cloud
Get Creative Cloud Folder Assets


and the Mac Pro (former Power Mac) and XServe in August.
In February 2006, Steve unveiled the iPod hi-fi, a stereo speaker system designed to work only with iPods. He claimed its quality was rivaling with high-end, $10,000 audio systems, while it cost only $349. The market thought otherwise, as the product flopped and was discontinued in September 2007. The company gave it another shot with the Apple TV, originally known as iTV, a wireless set-top box that basically linked your Mac with the widescreen TV in your living room. The Apple TV was officially released at Macworld 2007, but it has yet to prove itself as a successful product.
Since you are such well-informed readers, you probably already know that Apple’s biggest move outside its computer and music businesses was


| Welcome to El Sinaloense@MIT a site dedicated to all things related to my home state in Mexico. I like to think of it as a repository of links, articles, books, music from Sinaloa. I also decided to include my resume, just in case anyone is looking to hire. | |
|
|
Fun Links: Pocho.com - Cool Satire ESPN.com - Sports Info Chalino.com - Music |
|
Copyright © 2003 Cybent Solutions . All Rights
Reserved |


Formerly known as Calicut, Kozhikode is located in Kerala. It was the Capital of Malabar during the Zamorin rule 500 years ago and is famous for its centuries-old trade in cotton and spices with Jews, Arabs, Phoenicians and Chinese. Basking in the idyllic setting of the serene Arabian Sea on the west and the proud peaks of the Wayanad hills on the east, this district with the serene beaches, lush green countryside, historic sites, all combine to make Kozhikode a popular tourist destination. Vasco da Gama had set his foot on the remote beach of Kappad in Kozhikode in 1498 and 'Discovered India' and established spice trade routes with the west. Kozhikode city is the marketing centre for commodities like pepper coconut, coffee, rubber, lemongrass oil etc., produced in Kozhikode and the neighbouring districts of Wayanad, Malappuram and Kannur. Being the major trade centre in Malabar and major exporter to foreign countries, the international travellers christened this district as ‘the noble emporium of India’.
Spread across long stretches of the Arabian water, these beguiling backwater lagoons are a sight to withhold. However, they are well known for its cruises on houseboats which offer an enthralling experience.
Spread across long stretches of the Arabian water, these beguiling backwater lagoons are a sight to withhold. However, they are well known for its cruises on houseboats which offer an enthralling experience.
Lying in the Western Ghats of Kozhikode district in Kerala, Thusharagiri Fall cascades down as three waterfalls. Located in a small tribal village, the name of the falls means ???snow covered mountains'.
Said to be built on the remains of a shipwreck, the Thikkoti Lighthouse is one of the major attractions of Kozhikode. Located on a rocky shoreline, the place is best known for the scenic views it offers as well as several species of nomadic birds.
October-March is the best time to visit Kozhikode. The weather is pleasant during these months. Summers (April-June) are quite hot and Monsoons (July-September) are hot and humid. October-March is the best time to visit Kozhikode. The weather is pleasant during these months. Summers (April-June) are quite hot and Monsoons (July-September) are hot and humid.