My design team was tasked with merging of two of IBM's key strategic projects, IBM Multicloud Manager and IBM Cloud Private, into a single unified solution. I was assigned to design the information architecture (IA) that would glue the two products together and provide a great experience for users. The high visibility of the project and its many stakeholders made it a challenging task that required me to loop through multiple feedback sessions and design iterations. The IA that I designed is currently live and being used by our customers. My work was done under a NDA, so certain details have been excluded.
IBM Cloud Private (ICP) is IBM's flagship Kubernetes product. However, ICP is a single-cluster solution, and as IBM recognized the customer need to manage multiple clusters, the company released a beta of their new IBM Multicloud Manager (MCM) that could handle this task. Since ICP provided a big chunk of the initial functionality of MCM, the two products had to be merged into one solution. The beta version of MCM included multiple design compromises that made the user experience quite challenging. We were tasked with designing a cohesive unified platform.
There are two primary personas that we focused on during the merger. Todd is a systems administrator, who would use the platform to provision and setup clouds/clusters. Jane, the developer, is responsible for developing and deploying workloads (like applications) to the provisioned clouds. As both personas represent important user groups for our platform, we needed to consider the key scenarios for both personas, and ensure that our platform is designed effectively.
As a team, we conduced and discussed a UX audit and was able to notice that the MCM beta introduced a number of design challenges that we faced. Here are some of the key issues that we were able to discover at first glance:
To get diverse ideas and get a sense of what other approaches have been taken, I did a competitive analysis. Through this activity, I was able to see that there are various organization schemes and that some of the considerations I had made might be assumptions. The various approaches showed me that I have to look deeper and question the early decisions that I had made. Throughout my process, I would use the data I gathered as a reference and an aid to my design.
I was tasked with redesigning the information architecture, which was in a pretty bad shape. This included the main menu and header, among other areas. To get user insight, I ran a tree tests with the current ICP and MCM main menu architectures. The goal of these tests was to gave me a baseline of how the two IAs were performing with target users. I also ran an open card sort with mixed menu options from both products to see if I could get some ideas from users on how to group menu items.
The tests revealed shortcomings of the two individual information architectures and suggested potential ways that menu items could be grouped. After we synthesized and analyzed our research results, we constructed a merge IA solution that was aided by the insights we gathered.
Next, I created low-fidelity prototypes using stickies. This allowed me to move quickly and get some good design critique. I was able to iterate on the stickies a few times and get to a more desirable result.
Then, we conducted 2 rounds of tree test research with iterations of the undated design. This was need to give us enough confidence in our updated design. These tests also showed us that people's past experiences, as well as their specific use cases, strongly bias their preferences in terms of labels grouping of categories. The challenge with our information architecture is that we are a platform, and our target users have many varying needs.
One of the major challenges of the project was that we had to align a lot of stakeholders that represented the various perspectives from both the IBM Cloud Private and IBM Multicloud Manager teams. Product managers, engineers, designers, and executives all had to agree on what the new information architecture would look like. I had to ensure that everyone was happy, while still managing to keep the discussion focused providing a great customer experience. As the new IA was inevitably going to pose technical challenges, we had to demonstrate great patience and align every key stakeholder to our vision. We presented the iterations of our design multiple times and got feedback from our product managers and technical leadership.
The alignment did not come easy, as we had to present to multiple stakeholder teams. We also had to make a number of tradeoffs, in order to ensure that deadlines are met and the stakeholders are aligned. During this phase of the project, I had to make 4 major - with multiple small nuances in between - iterations of the IA (using Mural) and get feedback a number of times. Finally, we were able to arrive at a solution that satisfies the core technical, business and experience requirements we had as a collective group.
Next, we prototyped the new architecture of the proposed merged product. At this stage we focused mostly on the IA and only did the bare minimum to redesign the details of all the individual screens and pieces. We approach was that we need to align on how the pieces work together first, before we dive deep into all the details for each screen.
I learned many lessons during this project, but the following stand out as key takeaways:
Though the unified product is now live in production, its usage over time will be the criteria for how effectively it was designed. The information architecture will continue to evolve and meet the needs of our customers. In many ways, how we observe our users going forward and how we react to their needs is even more important than what we did during our first release.


Uzair
CNNs use weight sharing amongst translations.
Same filter is used in each “stride” or translation.
The reason this works is because the same features can appear at any location in an image.
But features can also appear in different orientations (rotations)...
Group theory is important in CNNs
When we are doing convolutions and sliding our kernel across the image, we are taking convolutions under the translation group
But we can take convolutions under any group
If a feature in an image is translated then the result of the convolution of the image with a filter is also translated
This applies to convolutions over other groups also.
Diffusion data is defined on a hemisphere
So we use an icosahedron representation of the data, 5 charts and appropriate padding to convert to a 2d image
Convolutions are done with a hexagonal filter and the group is the dihedral group.
This gives us a gauge equivariant network
| gConv (16x7 weights) | group batch norm | gConv(8x7 weights) | group batch norm | orientation pool | max pool | fully connected |
Training samples: 25000, Test samples: 2500
gConv (8x7 weights) | group batch norm | gConv(16x7 weights) | group batch norm | gConv(32x7 weights) | group batch norm | orientation pool | fully connected |.
The loss function is the abs(1-cos(theta)) where theta is angle between predicted and true. Training samples = 10000 and test samples = 2500.
Training samples: 10000, Test samples: 2500


Postdoctoral Fellow, Karsan Lab, Michael Smith Genome Sciences Centre, Vancouver, Canada
2014
Ph.D. (Bioinformatics) University of British Columbia, Vancouver, Canada
2008
M.Sc. (Computer Science) University of KwaZulu-Natal, Pietermaritzburg, South Africa
2004
B.Sc.(Hons), University of KwaZulu-Natal, Pietermaritzburg, South Africa
2015
Postdoctoral Fellowship, Michael Smith Foundation for Health Research
Poster Prize, ISMB 2015
2012
Student Travel Award, CYTO 2012
2005
Prestigious Masters Award, National Research Foundation (South Africa)
2004
Special Honours Award, National Research Foundation (South Africa)
2015
Deep profiling of multitube flow cytometry data, Bioinformatics
2014
Enhanced flowType/RchyOptimyx: a Bioconductor pipeline for discovery in high-dimensional cytometry data, Bioinformatics
2008
OntoDas - a tool for facilitating the construction of complex queries to the Gene Ontology, BMC Bioinformatics
2016
Publishing code is essential for reproducible flow cytometry bioinformatics, Cytometry A
2013
Flow Cytometry Bioinformatics, PLoS Computational Biology
2016
MiR-139-5p is a potent tumor suppressor in adult acute myeloid leukemia, Blood Cancer Journal
2013
Critical assessment of automated flow cytometry data analysis techniques, Nature Methods
BAIT: Organizing genomes and mapping rearrangements in single cells, Genome Medicine
2012
RchyOptimyx: Cellular hierarchy optimization for flow cytometry, Cytometry A
2010
Developing Ontologies within Decentralised Settings, Semantic e-Science
2008
Dasty2, an Ajax protein DAS client, Bioinformatics
2016
ContiBAIT
2013
flowBin
2011
flowType
2008
OntoDAS
2010
Scientific Technical Advisor, Twentieth Century Fox, Vancouver, Canada
2008
Web Developer, ReportLab, London, UK
2001
Gap Year, Various Positions, London, UK


This collage was created through photoshop. The image was inspired by the aerial levels in the video game "Super Mario." The concept of this work draws from the desire for escapism in today's world as well as contrasting the most convenient outlet being games and the more respected travel and exploration of the real world.


Students, Alumni, Professors, Companies, Leaders, And Everyone
Else: Get Involved!
Regardless of what you are or where you want to go, the UWB ACM
wants you to be involved and contribute to our positive impact!


economic climate people causal knowledge change growth task people’s effects participants response warming targets Experiment dynamics task. goal variables accumulation {border-style Fig effect human-climate information px;} time #ffffff;} < Informed ability emissions global index task, achieve results atmospheric changes levels performance responding dynamic stabilization decision end environmental optimal shown studies system, trial (i.e., Sterman data different mental responses systems Sci. mitigation providing set setting size study way Uninformed carbon change. concentration cover economy explicit general high increased level negative public rate relationship relevant role system. using Atmospheric Clim Data However, Research Sciences University Writing achieving delays experimental goal. models px; review stock warming. {font-family Change. Participants Psychol behavior conditions experiment feedback font-size human manage mitigation. model observe previous problem provided reasoning result trajectories used (see Causal Cogn Information Risk Science additional analysis better bias complex concentration, conditions. conservative course current decision-making decisions double; editing emissions, experiment. follows given improve increase index. informed iterated key learning make mean novel participant presented profile reduce research sample stabilize story temperature. values Australian Booth Condition David Earth Economics Gonzalez Mechanical Psychol. Text [], accumulated activities affect analogy associated border-color border-width change: control doubling drive early excess expect expected experiments factors generates harmful important increases increasing influence managing pattern produce produced productivity question showed solid; tasks temperature terms understanding {font-style {font-weight ./a Anal. Australia Bostrom Climate Council Dutt Economic Environ Given Guy Human Investigation Kashima Melbourne Melbourne, Rev. School Sewell Social Syst Trial able actions activities, activity adopt affected affects approach avoid behavioral benefits bold causes change? clear complexity condition condition. conducted consider courier; demand e-, em; experiment, group grow growth, growth. higher hypothesis-testing identify improved index, initial interacting interactions investigated involved involving knowledge, known manipulation opportunity optimization outcomes outset parameter persist possible pt;} quite readily reason receiving recent recruited relations standard strong successful supported systems, target that, underlying understand university version views vs. warming,


its a PITA to enter each time.... spec on my own pc
are there a workarround?
Archived Forum |
|
make emoncms remember username....Submitted by boelle on Sat, 20/09/2014 - 16:23its a PITA to enter each time.... spec on my own pc are there a workarround? » |
Re: make emoncms remember username....
Set "Remember me"? (Cookies must be enabled in your browser, I think.)
Re: make emoncms remember username....
i tried that... and yes cookies are enabled...
Re: make emoncms remember username....
hmmm, could i create the cookie myself? is it not just pure text file?
Re: make emoncms remember username....
I'm assuming you're running this locally on a Pi ?
Are you "logging" out each time?
I don't & it remembers who I am and that I'm logged in.
Note that if the Pi re-boots then where PHP stores its session data
seems to be in /tmp & hence wiped on a reboot !
Re: make emoncms remember username....
nope my pc is windows...
and the emoncms system runs on a pi
Re: make emoncms remember username....
I've noticed that the "Remember Password" behaves differently in the different browsers. I use a system that IE refuses to remember, but Firefox and Chrome are happy to. I've always used Firefox for my EmonCMS and it does remember the password.
Re: make emoncms remember username....
Can anyone describe how it is supposed to work?
I have never seen any difference in any browser whether I check the 'remember me' or not.
Re: make emoncms remember username....
my running chrome too
from a normal users view its supposed to remember you so that you dont have to login every time
Re: make emoncms remember username....
The remember me feature works by storing a cookie (with an expire time of 1 week), when it works you shouldn't see the login screen at all, when you navigate to your emoncms install it should go straight to the user profile page. Because of the way the login screen uses ajax, i couldnt get the automatic entry of username and password that many browser allow, the remember me feature is meant to be a better alternative.
Lionel, JBecker, are cookies turned off on your browsers, I dont know if IE handles them differently but could be something there
Re: make emoncms remember username....
Thank you very much for the explanation Trystan. After enabling Cookies according to the instructions in Firefox Help it works!
(I already have hundreds of cookies installed already, no idea why I have to 'enable' them now!?!)
Re: make emoncms remember username....
so what do those with chrome and cookies enabled do?
is there a way to create the cookie myslelf?
Re: make emoncms remember username....
tried in "exploder", did not work at all
in chrome i have to double click username and i can select it.... but i still have to enter password each time
it does not matter if i check the remember me or not
Re: make emoncms remember username....
Same here, annoying. There has to be a solution.
Re: make emoncms remember username....
I bodged it using this Chrome extension:
https://chrome.google.com/webstore/detail/form-save-and-restore/jknhanfp...
Dunno why Chrome doesn't offer to save the password for me tho, and haven't had time to look into it further...
Re: make emoncms remember username....
At least I know now I am not the only one having this issue. Very annoying though.


Phil Bradshaw and his dog, Lucky, are taking part in The Christmas Cruise for StreetVet, an animal welfare charity, with the aim to collect donations for homeless people during Christmas.
The journey started from Hemel Hempstead on 26 November and will continue until 10 December, with the final destination at the Imperial Wharf Marina in central London.
Along the way, Phil and Lucky will make 11 stops – with today’s location (29 November) announced as Springwell Lock visitor moorings, Stocker’s Lake.
People are encouraged to hand over dog toys and food vouchers, which will then be distributed by StreetVet to homeless people across the city.
Suggested voucher outlets include Caffé Nero, Greggs, Pets at Home, Starbucks or Sainsbury’s, but other options are welcome, too.
Advertisement Advertisement
Phil and Lucky have first-hand experience of having ‘no fixed abode’.
In 2017, the pair were staying at a hostel when Phil found a lump on Lucky’s mammary gland. As he had no funds to pay for surgery for his beloved pet, he contacted StreetVet to help.
‘I was so grateful for the incredible support we received from StreetVet,’ he said.
’13-year-old Lucky has been my best friend and loyal companion since she was six weeks old, so the relief was overwhelming.’
Since then, Phil has joined the organisation as an ambassador, taking part in various events including The Long Walk in 2018, a fundraising trip around the UK where he pushed a buggy from Cornwall to Scotland, and back to the east coast of Britain.
They did 10 to 20 miles per day, and raised £5,000 for the charity.
For the cruise, Phil and Lucky are using their new home – a 40-year-old vessel named ‘Baloo’, which was given to them by an anonymous donor who met them during The Long Walk.
‘I’m brimming over with the reception we’re getting along our journey,’ he tells Metro.co.uk.
It’s been hard work at times, tackling up to eight locks in a day in the driving rain, but it’s been absolutely worth it.
‘People of all ages, even little children, have been coming up and giving us dog toys, dog coats and vouchers for food and drink too, for the homeless.
‘Pubs and cafés along the way have been putting up posters encouraging people to get involved and doing whip-rounds.
Advertisement Advertisement
‘And dog walkers are always super-keen to hear about what we’re up to!’
‘I’m so proud to be doing this with Lucky. StreetVet means so much to us. They’re all about mending broken hearts, changing lives and being real.’
If you want to donate some goodies, check the Christmas Cruise for StreetVet Facebook page beforehand, as the itinerary could be subject to changes.


| image_uri {knitr} | R Documentation |
This function is the same as xfun::base64_uri()
(only with a
different function name). It can encode an image file as a base64 string,
which can be used in the img
tag in HTML.
image_uri(f)
f |
Path to the image file. |
The data URI as a character string.
Wush Wu and Yihui Xie
https://en.wikipedia.org/wiki/Data_URI_scheme
uri = image_uri(file.path(R.home("doc"), "html", "logo.jpg")) if (interactive()) { cat(sprintf("<img src=\"%s\" />", uri), file = "logo.html") browseURL("logo.html") # you can check its HTML source }


{% macro render_pagination(pagination, endpoint, search) %}
This plugin identifies names in the text of your journal entries and links you to other entries containing the same name.
Visit an entry and look for "Name Search" under Insights to start exploring your name-dropping habits!
You might be surprised how little or how often you mention certain people.
{{annotation.item.contents[:100]}}...


|
by Mark S. Miller, E. Dean
Tribble, Ravi Pandya, and Marc Stiegler Originally published as Chapter 16
of Prospects in Nanotechnology, Somewhat edited OCR, much work needs to be done before this is readable. Electronic media present tremendous opportunities for improving the nature of society. I will first talk about how discourse affects society, and how changes in media may improve societal discourse. Then I will describe the Xanadu[l] system, and how it was built to achieve these goals. 16.1 Improving societyImproving society is a difficult task. More generally, improving complex systems is a difficult task. If you cannot figure out which way is up, see if you can figure out which way is down. Doug Engelbart, back in the early 1960s, wanted to explain to people why interactive systems would make a significant difference to their lives, and to their ability to express ideas. In Figure 16.1, the origin on the axis is what people were doing at the time--writing with pencil and paper. When he found himself unable to communicate to people how much better things could be, he contrasted their current experiences with how much worse things could be. He tied a pencil to a brick, handed it to people and said, "Okay, now write." People found it very difficult. The unwieldy nature of the tool interfered with their ability to express ideas. With the pencil and brick for contrast, he effectively asked two questions: "What made the difference?" and, "How can we move further in the other direction?"[2] This experiment showed people how important their tools and their media were to their effectiveness, and helped them start to see the next brick to remove. Karl Marx performed a similar experiment on society over the course of most of this century. The origin on Figure 16.2 represents where we are now. Karl Marx tied a very large brick to a very large pencil and the last few years have revealed the result to be far worse than the even his harshest critics imagined.[3] What made the difference between the societies? Two important elements were open markets and open media. How can we move farther in the other direction? In this presentation, I will be addressing the nature of open media, how they differ from closed media, and how social hypertext systems can enhance the advantages of those media. Applying information technologies to the further opening of markets is left as a mission for the reader. 16.2 Media matterMedia matter, because it is in media that the knowledge of society evolves. The health of the process by which that knowledge evolves is critical to the way society changes. Karl Popper, the epistemologist, had the insight that knowledge evolves by a process of variation, replication, and selection, much as biology does. "Variation of knowledge" is what we call "conjecture"--hypothesis formation, tossing new ideas out there. "Replication of knowledge" is the spread of ideas through publication and conversation. "Selection of knowledge" is the discrediting of conjectures through the process of criticism.[4] The ability of our knowledge to progress over time depends on an ongoing process of criticism, and criticism of criticism. The ideas that survive the critical process tend, in general, to be better than those that do not. In closed societies, when arguments cannot be spoken, hard truths cannot be figured out. When people cannot openly criticize, cannot openly defend against criticism, or cannot openly propose ideas that conflict with the official truths, then they are left with mistrust and cynicism as their only defense. This leads to the simple heuristic of assuming the official truth is always wrong. For example, because science was promoted by the Soviet propaganda machine, pseudo-science is on the rise in Russia. Because anti-Nazism was promoted by the East German propaganda machine, Neo-Nazism is on the rise in East Germany. The official truth is neither always right nor always wrong. Society needs a more sophisticated process for judging claims. Our society does have open media. Are we in the best of all possible worlds? Are our media good enough? Can they be made significantly better? Among our media, TV is so bad that it is a joke. Only slogan-sized ideas can be expressed. We prize the quality of discourse in our books and journals, but critical discussions in them are only loosely connected. Starting from the expression of an idea, it is hard to find articles that criticize that idea. When arguments cannot be found and navigated, the next harder truths still cannot be figured out. 16.3 XanaduI rejoined Xanadu in 1988 largely because of fear about the dangers of nanotechnology, coupled with incredible excitement about the promises of nanotechnology. In looking at the dangers, I saw that none of us individually is clever enough to figure out how to solve those problems. The only hope that I saw in 1988--1 no longer believe it is the only hope--is that by creating better media for the process of societal discourse and societal decision-making, we stand a much better chance of surviving the dangers posed by new technologies, so that we may live to enjoy their benefits. I am about to go through the elements of the hypertext system we built. Xanadu has frequently been called Golden Vaporware, and many people have wondered whether this is a never-ending project. One of the things I want to emphasize when I go through all of these features is that I am only referring to the features that are now running in the software. We planned on and anticipate other features, some of which will be mentioned in the future plans discussion, but the body of this presentation will only cover what is implemented and running. First, I will discuss the four fundamental features--links, transclusion, versioning, and detectors. Marc Stiegler will then present an example using them. Then, I will describe the remaining four features--permissions, reputation-based filtering, multimedia, and external transclusion, followed by some concluding remarks. 16.4 LinksHypertext links are directly inspired by literary practice. Literature has many different kinds of links connecting documents into a vast web. Textual examples of these links include bibliographical references, marginal notes, quotation, footnotes, and Post-it notes. We propose to build engines of citation, so that people can navigate this vast web of literature at the click of a mouse. Most computer text systems are predicated on a misconception that the meaning of a document is represented purely or primarily by its content. Documents are not islands. Conventional computer text systems put their effort into the appearance of individual documents. My experience in reading documents (especially reading a literature with which I am not familiar) is that it is difficult to understand documents without their context. A context helps answer questions such as, "What were the ongoing controversies that the author had in mind?" "What views was he supporting or attacking?" "What attacks was he guarding against?" We must understand this whole web of connections in order to understand the documents we are reading. The Xanadu system is built to provide as much support for this contextual information as for content. With the ability to follow the links in this vast web of documents, is it not easy to get lost? How does one stay oriented? One answer to these questions is guides, a new kind of document that provides an orienting view together with links into the existing literature. I expect guides to come largely from people making their own organizing views of a literature and then cleaning them up for publication, so others may benefit from their work. 16.5 HyperlinksBecause "nanotechnology" is now used by many to mean any technology approaching the nanometer scale, we have been forced to retreat to the term "molecular nanotechnology." Hypertext terminology has gone through a drift similar to nanotech terminology. The Xanadu project is the one that coined the term "hypertext" and originated the notion of the hypertext "link." However, because the term link has come to be viewed as something much less capable than what we meant by it, we are now calling it the hyperlink. The distinction between the link and the hyperlink is crucial for supporting active criticism in open media. Hyperlinks are fine-grained, bidirectional, and extrinsic. Frequently, an argument is not with a document or chapter as a whole. It is with a particular point that someone made at a particular place in the text. For example, someone refers to the fourth law of thermodynamics, and someone else writes a criticism saying there is no fourth law of thermodynamics, linking it to the original (see Figure 16.3). The fine-grained property allows the link to designate the particular piece of text with which one is taking issue. Bidirectionality enables readers of the original document to find the criticism, enabling them to exercise fine-grained skepticism, and to constantly ask themselves, "What is the best argument against the thing I am reading right now?" and then, "What is the best argument against that, in turn?" Links provided by other hypertext systems generally have been only in the forward direction, enabling a reader to find those documents referenced by a given document. However, to find criticism, the reader must find the documents that refer to the document they are reading. Extrinsic linking is the ability to link into a document without editing it. Several other systems support the creation of links that are fine-grained at the targeted end, but these others do so only by modifying both source and target documents.[5] Critics normally will not have the ability to modify the documents they are criticizing. They could spin off their own version into which they attach these links, but then other readers still cannot find these criticisms from the original documents. Part of what we mean by "open media" is that everyone who is connected to the system can read what they are permitted to read, can write new things, and can make them accessible for others to read. This includes making links to anything that they have read, so that anyone else who reads the original can find the material that has been linked to it. All readers of the system are potential authors. We can think of this process as active reading. Frequently, people make marginal notes to themselves. This is a medium in which readers can share such things with each other. When much writing is commentary about other text, the commented-on text is the best rendezvous point for the authors and readers of commentary to find each other. 16.6 Emergent propertiesThis kind of accessible criticism can provide for decentralized consumer reports. When people post on the system documents that are either products or descriptions of products, customers of those products can post criticisms of them. What did they think of using them? This commentary can guide the purchasing decisions of others.[6] A particular capability we are used to in conversation (one that is almost impossible to successfully attain using paper-based literature) is hearing the absence of a good response to an argument. A reader not only can see what the most compelling arguments are against some statement, but also see when there are none, or when all the seemingly compelling arguments have been successfully refuted. Such absences are quite obvious in conversation. Electronic media can make these absences obvious as well, but in a context where the absence will be much more telling, because the missing argument could have come from a much larger audience over a more extended period of time. Other hypertext systems with their unidirectional links reproduce the asymmetry present in our paper-based media--it is much easier to find something that a document cites, than it is to find those documents that cite a given document. One of the effects of this asymmetry in paper media is the pathological division of scholarly fields into disjoint "schools." Instead of healthy intellectual engagement, debate, and cross-fertilization of ideas, we see a process of increasing inability to communicate between schools, and more preaching to the converted within a school. The terrible irony of attempting scholarship with unidirectional links is that the very attempt to engage in healthy debate across schools accelerates the pathological division process. How does this occur? Let us consider two schools within a discipline. Generally, students within a school see the documents supporting the positions of that school. The students also see criticisms of documents in the other school. Intellectually eager and honest students, seeking to know both sides, occasionally will follow these criticism links forward. The result is that they will see the parts of the other school's literature that is most soundly criticized by their own school, immunizing them more and more against the foreign ideas. With bidirectional links, these students can also find the greatest challenges to their own school. Bidirectional links also enable them to find the most telling criticisms of the ideas they are inclined to accept. 16.7 TransclusionBefore there were modem economies, there were many little villages, each with their own little manufacturers having to go through a large amount of the production process themselves. These economies were, therefore, much less productive. An individual baker or shoemaker, for example, would reproduce the same kind of work that was being reproduced in many other villages, and would have to fashion a shoe, not quite from raw materials, but without intermediate goods. In extended economies, people can build on one another's work, and there can be a finer-grained division of labor and knowledge, with better specialization. Now, with respect to literature, authors are frequently faced with the task of re-explaining and restating background material that has been explained well elsewhere. If you could just borrow that material, those existing good explanations, and incorporate them (with automatic credit where due), your efforts could be spent stating what is new. We introduce the concept of transclusion to separate the arrangement of a document from its content. There is an underlying shared pool of contents, and all documents are just arrangements of pieces from that pool. In Figure 16.4, the three circled appearances of the same text are actually just one piece of text in the underlying shared pool of contents, and it just happens to appear in three different arrangements which constitute three different documents. We refer to the three documents as transcluding that piece of text. The separation of content and arrangement also leads to good support for incremental editing. Different versions of a document are just different arrangements of mostly shared content. This is more than just a hack to avoid the storage cost of making separate copies. Hyperlinks are linked to the content, not to a span in an arrangement. Therefore, when someone writes a criticism of content as it appears in one arrangement, that criticism is visible for the same content as it appears in all other arrangements, including arrangements that were made before the criticism was attached. The normal incremental editing process of a single document is analogous to evolution by point mutation. The ability to transclude text from other documents allows the analog of sexual recombination. Were links visible only from the arrangement into which they were made, both variation processes would destroy selection pressures by leaving criticisms behind. 16.8 Remembering the past: historical trailsAs you are editing, an historical trail gets left behind--bread crumbs in history space. The historical trail is simply a sequential arrangement of the successive arrangements of contents. This is yet another kind of context important for understanding. "Things are the way they are because they got that way."[7] Understanding how they got that way often aids our understanding of what they are. 16.9 Preparing for the future: detectorsIn addition to looking into the past, one also reads a literature knowing it will be changing. How can one keep up? To keep track of what is happening, to keep up with changes, we introduce detectors. One can post a revision detector to find out when things are edited, when new versions of something appear, and then one can use version compare to find out how they are different. With version compare, one can engage in differential reading--reading just the differences between the current version and the version most recently read. Link detectors are a way of finding out when new links are made to existing material. Let us say that you published something, and you want to find out when others post comments on it. You would like to be informed of comments, but you do not want to have to go back and constantly recheck all the things that you have written, so you post a link detector on all the things that you have written, as well as on other documents on which you are interested in seeing further comments. You want to see what people will say about them. As new comments are posted on those documents, you are continually informed. E-mail is just the special case where you establish a canonical point in the literature, for each person--a place others link to in order to send that person a message. That person simply has a link detector there saying, "Show me all new things that are attached to here." This generalizes to treating any shared point of interest in the literature, as in some sense, a "mailbox," or a "meeting room" for further conversation or conferencing about a topic. Canonical documents become meeting places. Should two disjoint discussions about the same topic spontaneously form in two places, anyone who notices can just make a link between them. The link detectors of each community will then inform them of the existence of the other. At this point, 1 will shift over to Mark Stiegler and Dean Tribble, who will demonstrate, using the Xanadu software, an example involving exactly the elements discussed so far. 16.10 The WidgetPerfect sagaThis is a true story about how a hypertext system was able to save several thousand jobs, One special characteristic about this true story is that it is a true story from the year 1997. It is a story about one of the events that took place at the company--most of you have heard of it--called WidgetPerfect. WidgetPerfect is the second largest manufacturer of widgets in the world, second only to their big competitor, Microwidget. The people at WidgetPerfect in the year 1997 had identified a really significant opportunity in the upcoming expanding environment of widget components technology. They were developing the world's first fully modular widget. They had a team working on it. Dan was in charge of the preparation of the marketing materials for the modular widget. Ruth was in charge of the technical work team, and John was in charge of the budget and finance, as well as all the costing. At this point, the modular widget was in prototype stage when a very unfortunate thing happened. Microwidget, the big competitor, came out with a partially modular widget, hitting the marketplace first with an inferior product. It was technically inferior, but nonetheless it was in the marketplace first. Dan was examining this Microwidget, partially modular widget, and it was overall inferior. Nonetheless, it had one really striking improved feature. It had a funculator made out of titanalum, whereas the fully modular widget that was being developed by Ruth only had a duralum funculator. This was an important improvement for certain key market sectors. Even though the partially modular widget did not have anything comparable to a thermoplastic coupler or a hypervelocity rotator, they had to make a change. So, Dan created a new document in the marketing requirements describing this titanalum funculator. He attached a link to the part of the technical plan that specifically referred to the duralum funculator in the current plan. He made that a new requirement (see Figure 16.5). Now, Dan knew that in order to get anything to happen with improving the widget prototype, he would have to talk to Ruth. He was reaching for the telephone to call Ruth when Boeing, the largest purchaser of widgets in the world, called him about a $15 million widget order. He got distracted with this purchase, and he never quite got around to calling Ruth. We have good news. Ruth, knowing that the success of her technical design depended on her being able to respond promptly to new requirements, had attached a link detector to her technical plan. This link detector would be constantly watching for new links of the link-type requirement to be attached. When Dan attached the new requirement to the duralum funculator, Ruth's link detector went off. Ruth was alerted. She followed the link detector out to the link, followed the link back to the new requirement, saw what the required change was, and modified the technical plan to reflect the use of a titanalum funculator. Well, this was all very fine, except for an additional problem. As I think everyone here knows, titanalum is considerably more expensive than duralum, and so this had some significant effect on the manufacturing cost. Ruth knew that this would have an impact on the budget, and she was reaching for the telephone to call John when smoke started billowing from the laboratory where the prototype of the modular widget was being manufactured. She ran off to deal with the emergency and never quite got around to calling John. We have good news. John, knowing the success of his budget was completely dependent on his responding to modifications to the technical plan, had attached a revision detector to the technical plan and this detector was constantly watching for updates. So, when the technical plan was indeed updated, John's revision detector went off. He followed the revision detector up to the technical plan, used the hypertextual version compare capabilities based on the transclusion relations, compared the new version of the plan to the old, and found that the change was deleting duralum and replacing it with titanalum. He then went back into the budget and updated the budget documents to reflect the increased costs caused by the use of titanalum. As a consequence of this, the modular widget program was completed on time with a fully adequate specification. It was a completely superior product. It blew Microwidget off the face of the Earth. As a consequence, thousands of jobs at WidgetPerfect were saved. 16.11 PermissionsA social system, to a large extent, is a system of rights and responsibilities. Xanadu has an extensive permission system called the club system, intended to deal with some of these issues. Figure 16.6 shows a document that Bob can edit. Bob has sent it as a mail message to various people in a blind carbon copy ("bcc") relationship. Alice and Chuck are both members of the bcc club of people who have permission to read this document. Bob, though, is the only member who can read or edit the bcc club. If this were a cc list, Bob would still be the only person who could edit it, but it would be self-reading. Everybody who was a member of such a cc club could see who else was a member of that same club. This demonstrates a principled answer to permissions meta-issues--0ne can distinguish between who can read a document, who can read the list of people who can read a document, and who can read that list, out to any desired degree of distinction (and similarly for the editing dimension). However, infinite regress and needless complexity are avoided by using clubs that are self-reading or self-editing (or both) whenever further distinction is currently not necessary. Should such distinction later become necessary, it can always be introduced by someone with appropriate edit permission to the club in question. Users only grow meta-levels on an as-needed basis. Our permission system also supports the notion of accountability. All actions in the system are taken by someone. When you look at information in the system, you see some identity attached to the actions taken on the information. There are no official truths. There is only who said what, and the structure of the system reflects that. 16.12 Reputation-based filteringOne of the potential pitfalls of an open hypertext system is the junk problem. The ability to find good commentary and criticism will be especially important when reading very important documents, but it is precisely on these documents that one expects to be inundated with tons of worthless or irrelevant links. Without a filtering mechanism, it would be on exactly the documents for which one most needs good commentary that the provision of commentary would be most useless. For example, imagine how many links there would be onto the First Amendment to the Constitution. Links can be endorsed as worth reading by various readers. However, no one may endorse with the identity of another. Different endorsers will establish varying reputations with different readers, much as with movie reviewers. Readers can filter their views of links into a document both by who endorsed as well as by link-type. When even this mechanism gives too coarse an answer, one can rely on documents such as a hypothetical Guide to the Citations to the Bill of Rights, endorsed by a reputable publishing house. This very same link filtering ability is also what allows one to find such guides in the presence of a swamp of links. 16.13 Hypertext + multimedia = hypermediaIncreasingly, ideas are being expressed in media other than text, and increasingly, computers are used to handle these other media. We usually refer to hypertext because text is the most important case and the clearest example. However, nothing I have presented, none of the things you have seen the system do, is in any way specific to text, or even to media that have linear flow to them. It all applies equally well to a variety of other media (such as sound, engineering drawings, Postscript images, and compressed video). In all cases, one can make fine-grained links, edits, transclusions, and version compares ( even if the data is block-compressed or block-encrypted). Although the implementation has some optimizations targeted at text, in no way does the architecture make any special cases for text. Documents can, of course, be composite arrangements in which several media are mixed together. 16.14 External transclusionNo software system is an island. We do not imagine that once the product is available, everyone will instantly take all information to which they want access and transfer it into Xanadu. We have to coexist with many other systems for many good reasons. We handle that with external transclusion. Our documents are able to transclude into arrangements that are within the system. These, in turn, are able to represent transclusions of materials that are stored elsewhere. By perceiving other systems through the window of Xanadu, you can see those other systems as if all those documents were within the Xanadu system. Through Xanadu, I could follow a link from a WAIS document into a Lexis document, even though neither system has any notion that such a link even exists. It is not just that the Xanadu system is not an island, that we have to coexist with everything else, it is that through Xanadu, those systems are able to coexist with each other in a way they are unable to now, making them into non-islands. 16.15 ConclusionsWhen we started building the system, we were thinking purely in terms of paper-based literature-of writing. What we have built is something that has many of the best aspects of both writing and conversation (see Table 16.1). Many of the aspects of each are complementary. Many virtues of conversation make up for flaws in writing and vice versa. We found ourselves building a system that supports the dynamic give-and-take of conversation, and the persistence and thoughtfulness of literature. Our status is that we currently have a working, portable server. It has some bugs in it, including some performance bugs, but we are working on it. However, all the features that I talked about so far, work. We are continuing ahead with the effort on both the server and the front end. The front end is in a preliminary stage. We consider it adequate to show that the server is real, and to exercise its features. We plan to do a much better front end. The protocol between the front end and the server is very stable, and has been stable for a long time now. Our plans are to get investors, and to finish both the front end and the server. The target for our first product is small- to medium-sized workgroups within companies that have a large body of documents they need to be managing and evolving. Our first product lacks one major feature. We provide hypertext because documents are not islands. We make the system interpersonal because people are not islands. We provide for the transparent windowing into other systems because no product is an island. However, for the moment, each server is still an island with respect to the other servers, and so each workgroup is also an island. We have designed the system so that, soon after first product, we will be able to weave all the servers together into a transparent distributed system. When you follow a link from one document to another, if the other document is not here but in some server in Tokyo, it will be transparently fetched for you, and the only thing you will notice is that following that link took longer. For any media to radically improve the process of opinion formation in society, we believe it needs features equivalent to fine-grained, bidirectional, extrinsic, filtered links. These links must not get lost when the documents to which they are attached change. Issues of authority, privacy, and responsibility must be handled in a robust and secure fashion. Open entry of readers and editors is crucial for open discussion. Open entry of server providers is less obvious, but equally important, in order to make centralized control impossible. We will be providing support for people who want to do online services based on our software. All of this is necessary to achieve our open electronic publishing dream. In so doing, we hope to improve the quality of public debate, in order to obtain the benefits of the open society yet again. 16.16 AcknowledgmentsWe thank the whole extended Xanadu team for having struggled together for many years on a project that has been at least as much a cause as a business. We thank Eric Drexler for exploring the relationship of hypertext publishing to evolutionary epistemology.[8] We thank Anita Shreve for extensive help in editing this presentation.
Footnotes[1] The Xanadu TM trademark has since become the sole property of Ted Nelson. [2] Engelbart, D. C., "Augmenting Human Intellect: A Conceptual Framework," SRI Project no.3578, October 1962. [3] Popper, K. R. The Open Society and its Enemies. (Princeton, N.J.: Princeton University Press, 1950) [4] Karl Popper originally proposed that selection proceeds by a process of refutation. See Sir Karl R. Popper, The Logic of Scientific Discovery (New York: Harper & Row, 1959). His student, William Bartley, generalized this to criticism. See William W. Bartley, III, The Retreat to Commitment (Open Court Publishing, 1962). [5] Examples include World Wide Web anchors, Microsoft Word bookmarks, Lotus Notes, and Folio Views Popup text. [6] The use of bidirectional links for decentralized consumer reports is already happening on the American Information Exchange. [7] Weinberg, G. M., The Secrets of Consulting (Dorset House Publishing, 1985) [8] Drexler, K. E., "Hypertext Publishing and the Evolution of Knowledge," Social Intelligence. 1 (1991): Number 2. |


CNRS-AIST JRL (Joint Robotics Laboratory), IRL3218
Department of Information Technology and Human factors
National Institute of Advanced Industrial Science and Technology (AIST)
Address:
AIST Tsukuba Headquarters and Information Technology Collaborative Research Center (AIST Tsukuba Central 1),
1-1-1 Umezono, Tsukuba, Ibaraki, 305-8560, Japan
Phone: +81-29-861-9323
Fax: +81-29-862-6507
Email:
jrl-info-ml_*_aist.go.jp (Please convert "_*_" to<EMAIL_ADDRESS>The JRL is located in the AIST Tsukuba Headquarters and Information Technology Collaborative Research Center, AIST Tsukuba Central 1. You can find general instructions to reach AIST Tsukuba Central 1 in this page. This page provides supplementary information.
The easiest way to come from Narita International Airport to Tsukuba is to take a direct bus. Instructions for coming to Tsukuba by bus are given in this page but the time table in the page is outdated. From Dec. 5, 2022, there are five buses per day from Narita to Tsukuba.
If you cannot take a bus, you need to take trains to reach the Tsukuba station.
The easiest way to come from Haneda Airport to Tsukuba is to take a direct bus. Instructions are given in this page but the time table in the page is outdated. From 29 April 2022, there are four buses per day from Haneda to Tsukuba. The buses departs Terminal3 at 9:20, 12:15, 17:05 and 19:05. These buses arrive at Terminal 2 10 minutes after departing from Terminal 3 and another 5 minutes after arriving at Terminal 1.The bus stop Namiki 2-chome is in front of AIST Tsukuba Central.
If you cannot take a bus, you need to take trains to reach the Tsukuba station.
From Tsukuba Center Bus Terminal, you can take public bus, taxi, or AIST shuttle bus. Instructions are given in this page.


You're viewing a past tournament. Start and Final Rank refer to the poolie's rank before the tournament started, and after it finished, respectively.


--- layout: default title: Organizations permalink: /orgs-total ---
The number of organizations in total.


Howler.js example
This example loads, decode and play sounds using the HowlerJS library
BOOM !
Basic Explosion
Winner!


This is the home page
Server side web development - Labsheet week 6 part 2 (A more advanced Node HTTP server)


Home
Documentation
What is risk?
FoodSpector
Helping Chicago make healthy choices!
Click the arrow below for advanced search options!
Load Open Sourced Data
Filter by name
Filter by risk
Filter by Zip Code
Filter by address
Search


Firefighters rescue girl, 2, trapped in this recalled Argos baby stair gate
Argos recalled their Cuggl range last week
by Tristan CorkA two-year-old has had to be freed by firefighters after getting stuck in a baby stairgate that has just been recalled.
The child, who has not been named, managed to get their leg stuck in the bars of the Cuggl stairgate.
Firefighters said they used ‘muscle power’ to bend the bars apart to release her leg, but added their voice to the calls for parents to check their baby gates and take them back if they are the specific brand.
Argos announced last week that they are recalling seven Cuggl stairgates for failing key EU safety tests, including one which ensures the bars are not too far apart.
A spokesperson for Kingswood Fire Station said they were called to a house in east Bristol by a parent who couldn’t free their child from the stair gate.
“We have just rescued a two-year-old child from this stair gate,” he said.
“We used muscle power to bend the bars apart to release her leg.
“The parent was on her way to take it back due to a recall for the bars being too far apart!” he said, adding that parents should check their stairgate isn’t on the recalled list.
Argos sell the Cuggl stair gates and earlier this year recalled two for failing key tests for EU safety standards.
They removed those models from sale at the time, and after an investigation by the consumer magazine Which?, Argos said it had carried out further ‘intensive independent testing’ of its entire Cuggl range.
An Argos spokesperson said, “We are very sorry to hear about this incident.
"Product safety is our number one concern, which is why we recalled these stairgates after independent testing highlighted potential safety issues.
"We urge parents and carers with one of these stairgates to stop using it immediately and return it to an Argos store for a full refund," he said.
What are the problems?
Argos says there is a risk of the following problems occurring:
- Brackets or wooden slats breaking under high impact
- Regular banging or kicking of the gate, for example the auto-close feature failing
- The gaps between metal bars being wider than the required standard, which could lead to a child getting trapped
What products are being recalled?
Here’s the full list of affected products:
- Cuggl Autoclose Metal Gate: Cat no. 7076879
- Cuggl Metal & Wood Gate: Cat no. 7025112
- Cuggl Wooden Extending Gate: Cat no. 7065426
- Cuggl 7cm Pressure Fit Extension Kit: Cat no. 7063868
- Cuggl Pressure Fit Safety Gate: Cat no. 7036613
- Cuggl Extra Wide Hallway Gate: Cat no. 7060225
- Cuggl Extra Wide Adjustable Gate: Cat no. 6879613
For the latest news in and around Bristol, visit and bookmark Bristol Live's homepage.


Neuroimaging research contains information about experimental design, data acquisition, analysis, and results that are associated with study participants. The culmination and tracking of this information provides insight in to normal and diseased brain states with potential for translation to clinical applications. This document provides an overview of the NIDM Family of Documents that details a framework for data sharing in human brain imaging.
This document is part of the NIDM Family of Documents, a set of documents defining various aspects of neuroimaging research that are necessary to achieve the vision of interoperable interchange of information in heterogeneous environments such as the Web, research consortia, and laboratories. A list of current NIDM documents and the latest revision of this specification can be found in the NIDM specification index. These documents are listed below.
The NIDM Working Group encourages the implementation of the specifications overviewed in this document. Work on this document by the NIDM Working Group is ongoing, errors and suggestions may be reported in the NIDM issue tracker and these may be addressed in future revisions.
This document was published by the NIDM Working Group as a Working Draft. If you wish to make comments regarding this document, please report using the NIDM issue tracker. You can also ask questions at<EMAIL_ADDRESS>All comments are welcome.
This document provides a non-normative overview of the Neuroimaging Data Model (NIDM) Family of Documents and a roadmap to using them. Neuroimaging is a research discipline that uses imaging technologies to observe neurobiology at all levels of analysis, from molecules to organ systems (i.e., the brain). The focus of these documents is currently on human neuroimaging using Magnetic Resonance Imaging (MRI); however, the concepts described herein are intended to generalize to other modalities (e.g., PET, EEG). The goal of NIDM is to enable the wide publication and interchange of provenance information related to neuroimaging research to enable reproducible findings, which ranges from the experimental design and data acquisition of individual participant data to the analysis and results that produce scientific findings.
The design of NIDM stems from the need to address metadata-related barriers to data sharing [[!KEATORNI13]] that impact the reproducibility of scientific discoveries in neuroimaging, which is a focus of the NIDM Working Group. Provenance information is a key aspect of reproducibility, and the NIDM Family of Documents adopted the W3C PROV Working Group's approach to developing data sharing standards by extending the W3C PROV Recommendations. This approach embeds provenance as a fundamental data sharing primitive that captures the details of how a given dataset or analysis was produced. Summarizing, NIDM Working Group recommends that the metadata for a data sharing framework should support:
Figure 1 shows the organization of NIDM and how the specification documents relate to each other.
Underlying the NIDM Core is a conceptual data model called PROV ([[!prov-primer]], which defines a common vocabulary used to describe provenance. The PROV model is extended by the NIDM Core Vocabulary with terms that are used to describe neuroimaging research, and each term is designated as a PROV Entity, Activity, Agent, or Attribute. In the next layer, NIDM defines the Experiment ([[!nidm-experiment]]), Workflow ([[!nidm-workflow]]), and Results ([[!nidm-results]]) Components. Each of the Components in this layer provide additional constraints on PROV to define an arrangement of Entities, Activities, Agents, and Attributes using the NIDM Core Vocabulary, as well as terms specific to the given Component. The models defined in each Component are used to to construct a NIDM document with information within the Component's scope. The NIDM Dataset Descriptor ([[!nidm-dataset-descriptor]] provides a way to describe NIDM documents by adding metadata about the project, principle investigator, license, etc., as well as other important details (e.g., how NIDM documents can be merged together and provide a full study description). The NIDM NIQuery API ([[!nidm-niquery-api]] provides a way to access and query each of the NIDM Components, as well as validate their conformance to a given specification.
NIDM (currently) consists of 5 documents (including this one). In order to use NIDM you do not need to be familiar with every specification, but there are a few that will help you get started quickly depending on your usage. To help navigate NIDM, each document is broadly classified as being intended for a specific audience.
In the table below and Figure 1, we denote the type of each document as a Note or Component of NIDM.
| Part | Audience | Type | Document |
|---|---|---|---|
| 1 | Users | Note | NIDM-Primer is the entry point to NIDM that offers an introduction to key concepts and examples of how NIDM is to be used. |
| 2 | Developers | Component | NIDM-Descriptor defines how to describe metadata about NIDM dataset documents and how to link NIDM components together appropriately. |
| 3 | Developers | Component | NIDM-Experiment defines how to describe metadata about an experiment, which includes a Project, Study, and Acquisitions of data from study participants. |
| 4 | Developers | Component | NIDM-Workflow defines how provenance information and metadata about an analysis is represented, with includes details about the computational environment and software versions used. |
| 5 | Developers | Component | NIDM-Results defines how to describe metadata about the results of a neuroimaging analysis. |
| 6 | Developers | Component | NIDM-NIQuery-API defines how to access metadata and provenance information from NIDM documents describing a neuroimaging analysis. |
All terms defined within NIDM are defined within the namespace http://incf.org/ns/nidash/nidm#. The prefix convention that is used is nidm. Thus, all of the terms defined in these specifications will be accessible at the same namespace for simplicity.
We would also like to refer the interested reader to complementary sources of information:
| Audience | Link | Description and link |
|---|---|---|
| Users | NIDASH page | Main INCF page for NIDASH Task Force, a child of the INCF Program on Standards for Data Sharing page. |
| Developers | NIDASH on Github | Organization hosting various code repositories of NIDASH projects, NIDM in particular. |
| Developers | NIDASH Google group | Wide distribution list for NIDASH activities |
| Modellers | NIDASH wiki | Overview of NIDASH activities; intended for both internal and external users. |
| Modellers | NIDM working group website | Site that hosts current information on the NIDM data model |
| Modellers | NIDASH Google Drive | Shared area for the INCF Neuroimaging task force (NIDASH) activities & NIDM development, including meeting agenda & minutes, specification, etc... |
| All |<EMAIL_ADDRESS>| NIDM mailing list |
This document has been produced by the NIDM Working Group, and its contents reflect extensive discussion within the Working Group as a whole.
Members of the NIDM Working Group at the time of publication of this document were:


An analogy I would use to describe the differences between HTML and CSS would be to look at them as parts of the process of building a house. HTML would define the foundations, framework, windows/doors, how big the rooms are and where they're located. CSS on the other hand would define the style, shapes and colours schemes throught the house - the colour of the exterior, roof, carpet, walls, furniture etc. Also, where in the house any furniture, plants or features etc might be placed and how big they are.
In terms of a webpage, HTML is used to define the structure of a webpage and the text content within it, and CSS is used to add colours, design and style to the webpage.
HTML and CSS each play their part in a finished webpage and Javascript is no different. Javascript is what allows you to add complex features to a webpage such as interactive buttons, animations and much, much more.
Control flow is the order in which the computer executes statements in a script. Loops are used by the script to make decisions based on wether the specified criteria has been met. They use conditional statements such as 'if...'' and 'Else, if...' and looping statements such as 'while...' and 'do... while...'.
An example of an everyday process for a looping statement could be like crossing the street at some traffic lights, e.g.
if (walking signal is red) {
Stop walking
} else if (cars are coming) {
Stop walking
} else if (cyclists are coming) {
Stop walking
} else {
Continue walking
}
The script will work its way down answering each statement with either 'True' or 'False'. If the conditions in the statement are true, the script will loop around and start again until the conditions are false, in which case the script will move on to the next statement and decide if that is true or false, and so on.
The 'DOM', short for Document Object Model is a programming interface that can be used to change the structure, style and content of a webpage. The DOM represents these elements as nodes and objects, so programming languages, such as javascript, can connect to the page and manipulate it. The DOM acts as a bridge between an HTML webpage and Javascript, allowing the script to communicate with the web browser to access the content of the HTML document.
To see the DOM in your own browser, you can right click on the webpage (At least with Chrome and Edge) and click 'Inspect'. This will bring up the interface. From here you can see the webpage in its HTML document form. Amongst all of the amazing (and somewhat overwhelming) features, you can click on a little mouse-pointer button at the top which allows you to hover your mouse over parts of webpage and see information about that element. Clicking that element will take the DOM to that section of the HTML document. This can be very useful for developers for finding out how something on a webpage has been done or for even for bug fixing. Another feature is being able to edit the HTML document's text to display whatever you like on the webpage - Though this is only editing your local page and once you refresh the page, it will change back to normal.
Objects represent 'things' in your code that can be assigned properties and characteristics. Data from 'objects' can be accessed using both 'dot' and 'bracket notation' methods.
Arrays are list-like objects in which you can store data. Data from arrays can be accessed using zero-based indexing, which means the first item in the list will be 0 (the 0th), the second will be 1, third will be 2 etc etc...
 It can be executed by 'calling' or 'invoking' it. Functions are very useful in Javascript as they allow you to automate a process, such as evaluate another piece of code and return the data that from it that you had asked for, to use again. This allows you to put a task together and make it a function, to save you from having to write in the same code time and time again for different inputs.


JWT Tokens verification
Sometimes, it can be pretty useful to verify Jwt tokens coming from other provider on some services. Otoroshi provides a tool to do that per service. In the Service descriptor page, you can find a Jwt token Verification
section dedicated to this topic.
Service descriptor local verifications
in this section you can select the type of verification you can choose if the verifier is local to the Service descriptor
or reference a global one.
You can also enabled/disable jwt verification and activate strict mode. In strict mode, requests will be rejected if the jwt token is not found.
Jwt token location
You can use the Source
selector to specify where the Jwt token can be found.
- in a query string param
- in a header
- in a cookie
Jwt signing
You can use the Algo.
selector to specify the signing algorithm to use to verifiy the token
you can choose between
- Hmac + SHA256
- Hmac + SHA384
- Hmac + SHA512
- RSA + SHA256
- RSA + SHA384
- RSA + SHA512
- Elliptic Curve + SHA256
- Elliptic Curve + SHA384
- Elliptic Curve + SHA512
You can use syntax like ${env.MY_ENV_VAR}
or ${config.my.config.path}
to provide secret/keys values.
Just verify signature and fields value
Using the Verif. strategy
selector, you can choose Verify jwt token
. This will verify if the token is signed using the settings from jwt signing
section and the value of the fields provided in Verify token fields
. Then the token will be send to the target just like that.
Re-sign the token
Using the Verif. strategy
selector, you can choose Verify and re-sign jwt token
. This will verify if the token is signed using the settings from jwt signing
section and the value of the fields provided in Verify token fields
. Then the token will be re-signed using the settings provided in Re-sign algo
and will be send to the target.
Transform the token
Using the Verif. strategy
selector, you can choose Verify, re-sign and transform jwt token
. This will verify if the token is signed using the settings from jwt signing
section and the value of the fields provided in Verify token fields
. Then the token will be re-signed using the settings provided in Re-sign algo
. You can also change the location of the token using Token location
, remove fields using Remove token fields
, set fields value using Set token fields
and even rename fields using Rename token fields
.
You can also use a mini expression language in Set token fields
. You just have to add expressions in values like ${expression}
. Supported expressions are the following :
${date}
=> set the current date${date.format('dd/MM/yyyy')}
=> set the current date formatted with the format you want${token.fieldName}
=> get the value of the field namedfieldName
${token.fieldName.replace('a', 'b')}
=> get the value of the field namedfieldName
and replacea
withb
${token.fieldName.replaceAll('[0-9]', '-')}
=> get the value of the field namedfieldName
and replace digits with-
you can of course use multiple expressions in one field like my-value-is-${date}-with${token.user}
Global verifications
You can create global jwt verifiers and reference them in your services (from the Type
selector). When you set the type of verification to Reference to a global definition
, you can choose an existing global jwt verifier
To create a global verifier, go to Settings (cog icon) / Global Jwt Verifiers
and it will display the list of global verifiers.
you can them create, edit or delete verifiers


Stinky Tofu Projects
projects
About Me
Projects
Contact
Resume
Run Buddy
Website
HTML / CSS / JAVASCRIPT
Mortgages
Website
HTML / CSS
Profile
Website
HTML / CSS
Day Scheduler
Website
HTML / CSS / JAVASCRIPT
Envoy
Website
HTML / CSS / JAVASCRIPT / DATABASE
Tech Blog
Website
HTML / CSS / JAVASCRIPT / DATABASE
Screen Genius
Website
HTML / CSS / JAVASCRIPT / DATABASE
King Seafood
Website
HTML / CSS / JAVASCRIPT / DATABASE


Android SMS Collection App
Copyright 2011 Tao Chen<EMAIL_ADDRESS>This application is a modified version of SMS Backup. It changes the SMS backup to SMS submission to faciliate Android users to submit SMS messages.
The SMS Backup was developed by Chstuder<EMAIL_ADDRESS>This is the notice of original SMS Backup:
------------------------------------------------------------------------------------------
Portions of this software were developed by
Google Inc. and
The Creators of k9mail.
http://code.google.com/p/k9mail/
Parts of this software were created by
The Android Open Source Project.
http://source.android.com/download
The status icons were designed by
iTweek.
http://itweek.deviantart.com/
------------------------------------------------------------------------------------------


{% extends "base.html" %} {% load staticfiles %} {% block main %}
We will contact you as soon as possible. Thanks!
A plain Bootsrap site? Yes, the site is under development and will look better as soon as we finish coding the main functionalities. Special thanks go to the reddit /r/startups community for helping out with the whole conception process.


A Lament for Confederation
—Chief Dan George, 1967
How long have I known you, Oh Canada? A hundred years? Yes, a hundred years. And many, many tides more.
For I have known you when your forests were mine; when they gave me my meat and my clothing. I have known you in your fruits and rivers where your fish flashed and danced in the sun, where the waters said ‘come and eat of my abundance.’ I have known you in the freedom of your winds. And my spirit, like your winds, once roamed this good lands.
But in long the hundred years since the white man came, I have seen that freedom disappear just like the salmon going mysteriously out to sea.
The white man’s strange customs I could not understand, pressed down upon me until I could no longer breathe.
When I fought to protect my home and my land, I was called a savage. When I neither understood nor welcomed this new way of life, I was called lazy. When I tried to rule my people, I was stripped of my authority.
My nation was ignored in your history textbooks – we were less important in the history of Canada than the buffalo that ranged the plains. I was ridiculed in your plays and motion pictures, and when I drank your fire-water, I got drunk – very, very drunk. And I forgot.
Oh Canada, how can I celebrate with you this centenary, this hundred years? Shall I thank you for the reserves that are left me of my beautiful forests? Shall I thank you for the canned fish of my rivers? Shall I thank you for the loss of my pride and authority, even among my own people? For the lack of my will to fight back? No! I must forget what is past and gone.
Oh God in heaven! Give me the courage of the olden chiefs. Let me wrestle with my surroundings. Let me once again, as in the days of old, dominate my environment. Let me humbly accept this new culture and through it rise up and go on.
Oh god, like the thunderbird of old, I shall rise again out of the sea. I shall grab the instruments of the white man’s success – his education, his skills, and with these new tools I shall build my race into the proudest segment of your society. And, before I follow the great chiefs who have gone before us, I shall see these things come to pass.
I shall see our young braves and our chiefs sitting in the house of law and government, ruling and being ruled by the knowledge and freedoms of our great land. So shall we shatter the barriers of our isolation. So shall the next hundred years be the greatest in the proud history of our tribes and nations.


dom-particles examples
(source)
Tap to Go Up
Tap to Attack
Hold to Swarm
Tap to World
Tap to Moons
Hold to Bubble
Hold to Burn
Hold to Trail
Hold to Blossom
Hold to Hyperspace
Hold to 4th of July
Let it snow


Defines | |
| #define | iup_isdigit(_c) (_c>='0' && _c<='9') |
| #define | iup_toupper(_c) ((_c >= 'a' && _c <= 'z')? (_c - 'a') + 'A': _c) |
| #define | iup_tolower(_c) ((_c >= 'A' && _c <= 'Z')? (_c - 'A') + 'a': _c) |
| #define | IUP_FLOAT2STR "%.9f" |
| #define | IUP_DOUBLE2STR "%.18f" |
Functions | |
| int | iupStrEqual (const char *str1, const char *str2) |
| int | iupStrEqualNoCase (const char *str1, const char *str2) |
| int | iupStrEqualNoCaseNoSpace (const char *str1, const char *str2) |
| int | iupStrEqualPartial (const char *str1, const char *str2) |
| int | iupStrEqualNoCasePartial (const char *str1, const char *str2) |
| int | iupStrBoolean (const char *str) |
| int | iupStrFalse (const char *str) |
| int | iupStrLineCount (const char *str, int len) |
| const char * | iupStrNextLine (const char *str, int *len) |
| const char * | iupStrNextValue (const char *str, int str_len, int *len, char sep) |
| int | iupStrCountChar (const char *str, char c) |
| char * | iupStrDup (const char *str) |
| char * | iupStrDupUntil (const char **str, char c) |
| void | iupStrCopyN (char *dst_str, int dst_max_size, const char *src_str) |
| char * | iupStrGetMemory (int size) |
| char * | iupStrGetLargeMem (int *size) |
| void | iupStrLower (char *dstr, const char *sstr) |
| void | iupStrUpper (char *dstr, const char *sstr) |
| int | iupStrHasSpace (const char *str) |
| int | iupStrIsAscii (const char *str) |
| char * | iupStrReturnStrf (const char *format,...) |
| char * | iupStrReturnStr (const char *str) |
| char * | iupStrReturnBoolean (int i) |
| char * | iupStrReturnChecked (int i) |
| char * | iupStrReturnInt (int i) |
| char * | iupStrReturnUInt (unsigned int i) |
| char * | iupStrReturnFloat (float f) |
| char * | iupStrReturnDouble (double d) |
| char * | iupStrReturnRGB (unsigned char r, unsigned char g, unsigned char b) |
| char * | iupStrReturnRGBA (unsigned char r, unsigned char g, unsigned char b, unsigned char a) |
| char * | iupStrReturnStrStr (const char *str1, const char *str2, char sep) |
| char * | iupStrReturnIntInt (int i1, int i2, char sep) |
| int | iupStrGetFormatPrecision (const char *format) |
| void | iupStrPrintfDoubleLocale (char *str, const char *format, double d, const char *decimal_symbol) |
| int | iupStrToRGB (const char *str, unsigned char *r, unsigned char *g, unsigned char *b) |
| int | iupStrToRGBA (const char *str, unsigned char *r, unsigned char *g, unsigned char *b, unsigned char *a) |
| int | iupStrToInt (const char *str, int *i) |
| int | iupStrToUInt (const char *str, unsigned int *i) |
| int | iupStrToIntInt (const char *str, int *i1, int *i2, char sep) |
| int | iupStrToFloat (const char *str, float *f) |
| int | iupStrToDouble (const char *str, double *d) |
| int | iupStrToDoubleLocale (const char *str, double *d, const char *decimal_symbol) |
| int | iupStrToFloatFloat (const char *str, float *f1, float *f2, char sep) |
| int | iupStrToDoubleDouble (const char *str, double *f1, double *f2, char sep) |
| int | iupStrToStrStr (const char *str, char *str1, char *str2, char sep) |
| char * | iupStrFileGetExt (const char *file_name) |
| char * | iupStrFileGetTitle (const char *file_name) |
| char * | iupStrFileGetPath (const char *file_name) |
| char * | iupStrFileMakeFileName (const char *path, const char *title) |
| void | iupStrFileNameSplit (const char *filename, char *path, char *title) |
| int | iupStrReplace (char *str, char src, char dst) |
| void | iupStrToUnix (char *str) |
| void | iupStrToMac (char *str) |
| char * | iupStrToDos (const char *str) |
| char * | iupStrConvertToC (const char *str) |
| void | iupStrRemove (char *value, int start, int end, int dir, int utf8) |
| char * | iupStrInsert (const char *value, const char *insert_value, int start, int end, int utf8) |
| char * | iupStrProcessMnemonic (const char *str, char *c, int action) |
| int | iupStrFindMnemonic (const char *str) |
| int | iupStrCompare (const char *str1, const char *str2, int casesensitive, int utf8) |
| int | iupStrCompareEqual (const char *str1, const char *str2, int casesensitive, int utf8, int partial) |
| int | iupStrCompareFind (const char *str1, const char *str2, int casesensitive, int utf8) |
| #define iup_isdigit | ( | _c | ) | (_c>='0' && _c<='9') |
Checks if the character is a digit.
| #define iup_toupper | ( | _c | ) | ((_c >= 'a' && _c <= 'z')? (_c - 'a') + 'A': _c) |
Converts a character into upper case.
It will work only for character codes <128.
| #define iup_tolower | ( | _c | ) | ((_c >= 'A' && _c <= 'Z')? (_c - 'A') + 'a': _c) |
Converts a character into lower case.
It will work only for character codes <128.
| #define IUP_FLOAT2STR "%.9f" |
maximum float precision
| #define IUP_DOUBLE2STR "%.18f" |
maximum double precision
| int iupStrEqual | ( | const char * | str1, | |
| const char * | str2 | |||
| ) |
Returns a non zero value if the two strings are equal. str1 or str2 can be NULL.
| int iupStrEqualNoCase | ( | const char * | str1, | |
| const char * | str2 | |||
| ) |
Returns a non zero value if the two strings are equal but ignores case. str1 or str2 can be NULL. It will work only for character codes <128.
| int iupStrEqualNoCaseNoSpace | ( | const char * | str1, | |
| const char * | str2 | |||
| ) |
Returns a non zero value if the two strings are equal but ignores case and spaces.
str1 or str2 can be NULL.
It will work only for character codes <128.
| int iupStrEqualPartial | ( | const char * | str1, | |
| const char * | str2 | |||
| ) |
Returns a non zero value if the two strings are equal up to a number of characters defined by the strlen of the second string.
str1 or str2 can be NULL.
| int iupStrEqualNoCasePartial | ( | const char * | str1, | |
| const char * | str2 | |||
| ) |
Returns a non zero value if the two strings are equal but ignores case up to a number of characters defined by the strlen of the second string.
str1 or str2 can be NULL.
It will work only for character codes <128.
| int iupStrBoolean | ( | const char * | str | ) |
Returns 1 if the string is "YES" or "ON".
Returns 0 otherwise (including NULL or empty).
| int iupStrFalse | ( | const char * | str | ) |
Returns 1 if the string is "NO" or "OFF".
Returns 0 otherwise (including NULL or empty).
To be used when value can be "False" or others different than "True".
| int iupStrLineCount | ( | const char * | str, | |
| int | len | |||
| ) |
Returns the number of lines in a string. It works for UNIX, DOS and MAC line ends.
| const char* iupStrNextLine | ( | const char * | str, | |
| int * | len | |||
| ) |
Returns a pointer to the next line and the size of the current line. It works for UNIX, DOS and MAC line ends. The size does not includes the line end. If str is NULL it will return NULL.
| const char* iupStrNextValue | ( | const char * | str, | |
| int | str_len, | |||
| int * | len, | |||
| char | sep | |||
| ) |
Returns a pointer to the next value and the size of the current value. The size does not includes the separator. If str is NULL it will return NULL.
| int iupStrCountChar | ( | const char * | str, | |
| char | c | |||
| ) |
Returns the number of repetitions of the character occurs in the string.
| char* iupStrDup | ( | const char * | str | ) |
Returns a copy of the given string. If str is NULL it will return NULL.
| char* iupStrDupUntil | ( | const char ** | str, | |
| char | c | |||
| ) |
Returns a new string containing a copy of the string up to the character. The string is then incremented to after the position of the character.
| void iupStrCopyN | ( | char * | dst_str, | |
| int | dst_max_size, | |||
| const char * | src_str | |||
| ) |
Copy the string to the buffer, but limited to the max_size of the buffer. buffer is always properly ended.
| char* iupStrGetMemory | ( | int | size | ) |
Returns a buffer with the specified size+1.
The buffer is resused after 50 calls. It must NOT be freed. Use size=-1 to free all the internal buffers.
| char* iupStrGetLargeMem | ( | int * | size | ) |
Returns a very large buffer to be used in unknown size string construction. Use snprintf or vsnprintf with the given size.
| void iupStrLower | ( | char * | dstr, | |
| const char * | sstr | |||
| ) |
Converts a string into lower case. Can be used in-place.
It will work only for character codes <128.
| void iupStrUpper | ( | char * | dstr, | |
| const char * | sstr | |||
| ) |
Converts a string into upper case. Can be used in-place.
It will work only for character codes <128.
| int iupStrHasSpace | ( | const char * | str | ) |
Checks if the string has at least 1 space character.
| int iupStrIsAscii | ( | const char * | str | ) |
Checks if the string has only ASCII codes.
| char* iupStrReturnStrf | ( | const char * | format, | |
| ... | ||||
| ) |
Returns combined values in a formatted string using iupStrGetMemory. This is not supposed to be used for very large strings, just for combinations of numeric data or constant strings.
| char* iupStrReturnStr | ( | const char * | str | ) |
Returns a string value in a string using iupStrGetMemory.
| char* iupStrReturnBoolean | ( | int | i | ) |
Returns a boolean value (as YES or NO) in a string.
| char* iupStrReturnChecked | ( | int | i | ) |
Returns a checked value (as ON, OFF or NOTDEF (-1)) in a string.
| char* iupStrReturnInt | ( | int | i | ) |
Returns an int value in a string using iupStrGetMemory.
| char* iupStrReturnUInt | ( | unsigned int | i | ) |
Returns an unsigned int value in a string using iupStrGetMemory.
| char* iupStrReturnFloat | ( | float | f | ) |
Returns a float value in a string using iupStrGetMemory.
| char* iupStrReturnDouble | ( | double | d | ) |
Returns a double value in a string using iupStrGetMemory.
| char* iupStrReturnRGB | ( | unsigned char | r, | |
| unsigned char | g, | |||
| unsigned char | b | |||
| ) |
Returns a RGB value in a string using iupStrGetMemory.
| char* iupStrReturnRGBA | ( | unsigned char | r, | |
| unsigned char | g, | |||
| unsigned char | b, | |||
| unsigned char | a | |||
| ) |
Returns a RGBA value in a string using iupStrGetMemory.
| char* iupStrReturnStrStr | ( | const char * | str1, | |
| const char * | str2, | |||
| char | sep | |||
| ) |
Returns two string values in a string using iupStrGetMemory.
| char* iupStrReturnIntInt | ( | int | i1, | |
| int | i2, | |||
| char | sep | |||
| ) |
Returns two int values in a string using iupStrGetMemory.
| int iupStrGetFormatPrecision | ( | const char * | format | ) |
Returns the number of decimals in a format string for floating point output.
| void iupStrPrintfDoubleLocale | ( | char * | str, | |
| const char * | format, | |||
| double | d, | |||
| const char * | decimal_symbol | |||
| ) |
Prints a double in a string using the given decimal symbol.
| int iupStrToRGB | ( | const char * | str, | |
| unsigned char * | r, | |||
| unsigned char * | g, | |||
| unsigned char * | b | |||
| ) |
Extract RGB components from the string. Returns 0 or 1.
| int iupStrToRGBA | ( | const char * | str, | |
| unsigned char * | r, | |||
| unsigned char * | g, | |||
| unsigned char * | b, | |||
| unsigned char * | a | |||
| ) |
Extract RGBA components from the string. Returns 0 or 1.
| int iupStrToInt | ( | const char * | str, | |
| int * | i | |||
| ) |
Converts the string to an int. The string must contains only the integer value. Returns a a non zero value if successful.
| int iupStrToUInt | ( | const char * | str, | |
| unsigned int * | i | |||
| ) |
Converts the string to an unsigned int. The string must contains only the integer value. Returns a a non zero value if successful.
| int iupStrToIntInt | ( | const char * | str, | |
| int * | i1, | |||
| int * | i2, | |||
| char | sep | |||
| ) |
Converts the string to two int. The string must contains two integer values in sequence, separated by the given character (usually 'x' or ':'). Returns the number of converted values. Values not extracted are not changed.
| int iupStrToFloat | ( | const char * | str, | |
| float * | f | |||
| ) |
Converts the string to a float. The string must contains only the real value. Returns a a non zero value if successful.
| int iupStrToDouble | ( | const char * | str, | |
| double * | d | |||
| ) |
Converts the string to a double. The string must contains only the real value. Returns a a non zero value if successful.
| int iupStrToDoubleLocale | ( | const char * | str, | |
| double * | d, | |||
| const char * | decimal_symbol | |||
| ) |
Converts the string to a double using the given decimal symbol. The string must contains only the real value. Returns a a non zero value if successful. Returns 2 if a locale was set.
| int iupStrToFloatFloat | ( | const char * | str, | |
| float * | f1, | |||
| float * | f2, | |||
| char | sep | |||
| ) |
Converts the string to two float. The string must contains two real values in sequence, separated by the given character (usually 'x' or ':'). Returns the number of converted values. Values not extracted are not changed. ATENTION: AVOID DEFINING THIS TYPE OF ATTRIBUTE VALUE.
| int iupStrToDoubleDouble | ( | const char * | str, | |
| double * | f1, | |||
| double * | f2, | |||
| char | sep | |||
| ) |
Converts the string to two double. The string must contains two real values in sequence, separated by the given character (usually 'x' or ':'). Returns the number of converted values. Values not extracted are not changed. ATENTION: AVOID DEFINING THIS TYPE OF ATTRIBUTE VALUE.
| int iupStrToStrStr | ( | const char * | str, | |
| char * | str1, | |||
| char * | str2, | |||
| char | sep | |||
| ) |
Extract two strings from the string. separated by the given character (usually 'x' or ':'). Returns the number of converted values. Values not extracted are set to empty strings.
| char* iupStrFileGetExt | ( | const char * | file_name | ) |
Returns the file extension of a file name. Supports UNIX and Windows directory separators.
| char* iupStrFileGetTitle | ( | const char * | file_name | ) |
Returns the file title of a file name. Supports UNIX and Windows directory separators.
| char* iupStrFileGetPath | ( | const char * | file_name | ) |
Returns the file path of a file name. Supports UNIX and Windows directory separators. The returned value includes the last separator.
| char* iupStrFileMakeFileName | ( | const char * | path, | |
| const char * | title | |||
| ) |
Concat path and title addind '/' between if path does not have it.
| void iupStrFileNameSplit | ( | const char * | filename, | |
| char * | path, | |||
| char * | title | |||
| ) |
Split the filename in path and title using pre-allocated strings.
| int iupStrReplace | ( | char * | str, | |
| char | src, | |||
| char | dst | |||
| ) |
Replace a character in a string. Returns the number of occurrences.
| void iupStrToUnix | ( | char * | str | ) |
Convert line ends to UNIX format in-place (one
per line).
| void iupStrToMac | ( | char * | str | ) |
Convert line ends to MAC format in-place (one per line).
| char* iupStrToDos | ( | const char * | str | ) |
Convert line ends to DOS/Windows format (the sequence
per line). If returned pointer different the input, it must be freed.
| char* iupStrConvertToC | ( | const char * | str | ) |
Convert string to C format. Process
, and . If returned pointer different the input, it must be freed.
| void iupStrRemove | ( | char * | value, | |
| int | start, | |||
| int | end, | |||
| int | dir, | |||
| int | utf8 | |||
| ) |
Remove the interval from the string. Done in-place.
| char* iupStrInsert | ( | const char * | value, | |
| const char * | insert_value, | |||
| int | start, | |||
| int | end, | |||
| int | utf8 | |||
| ) |
Remove the interval from the string and insert the new string at the start.
| char* iupStrProcessMnemonic | ( | const char * | str, | |
| char * | c, | |||
| int | action | |||
| ) |
Process the mnemonic in the string. If not found returns str. If found returns a new string. Action can be:
| int iupStrFindMnemonic | ( | const char * | str | ) |
Returns the Mnemonic if found. Zero otherwise.
| int iupStrCompare | ( | const char * | str1, | |
| const char * | str2, | |||
| int | casesensitive, | |||
| int | utf8 | |||
| ) |
Compare two strings using strcmp semantics, but using the "Alphanum Algorithm" (A1 A2 A11 A30 ...).
This means that numbers and text are sorted separately.
Also natural alphabetic order is used: 123...aAáÁ...bBcC...
Sorting and case insensitive will work only for Latin-1 characters, even when using utf8=1.
| int iupStrCompareEqual | ( | const char * | str1, | |
| const char * | str2, | |||
| int | casesensitive, | |||
| int | utf8, | |||
| int | partial | |||
| ) |
Returns a non zero value if the two strings are equal.
If partial=1 the compare up to a number of characters defined by the strlen of the second string.
Case insensitive will work only for Latin-1 characters, even when using utf8=1.
| int iupStrCompareFind | ( | const char * | str1, | |
| const char * | str2, | |||
| int | casesensitive, | |||
| int | utf8 | |||
| ) |
Returns a non zero value if the second string is found inside the first string.
Uses iupStrCompareEqual.


Now you can support OPTC-info project!
How can I Support OPTC-info?
There are few ways to help me with the project:
- Tell your friends about this site, share in social networks
OPTC players and One Piece fans will surely enjoy it!
- Make a donation. Simple and straight way.
See details below
- Contribute to the site
For example: if you know how to work with cookies, you can bring us this long awaited feature to save Checklist \o/
- Simply give me some feedback. You can contact me on Reddit or Discord - Daft Pirate.
I will gather energy from your words and that will keep me going!
Why should I support OPTC-info?
As fan-project, OPTC-info is made in my free time and I simply enjoy doing it.
However, it's very time-consuming to make nice-looking crafts and in order to deliver them before Christmas, I skipped my OPTC play-time, weekends and even sleep last few weeks :D
I polished them good enough for use, but there is room for improvements.
With some community support, I could turn down a bit of extra work and redeem myself time to make things we all enjoy instead :)
You have no obligation to help the project in any way. All content is free for personal use. It's entirely up to you. But I'll be very thankful and keep doing nice stuff.
I'll be clear about my plans on donations:
- Finish 2018 Calendar update and make some sets.
- Print OPTC Playing Cards and Calendar for myself. Can't afford them atm :(
- New Checklist is kinda raw. Need to add instruction, etc.
- Buy Starter set with grd. legend Cabbage or Ace pls *_*
- Feature to save Checklist finally! unless someone help with it on GitHub sooner
- I want to update cards with better typography etc. low priority
Maybe finally pull something decent on anni. Save up for my life-changing plans next year *_*
- New crafts. Have some plans. Will keep them secret :P
How can I donate?
Thanks to my US friends (fellow OPTC players), I could setup fundraising campaign on Fundly.
Donate to OPTC-info
Sadly, other options (easier/faster for contributor) are impossible for me for multiple reasons.
- Donate as much as you want.
- You pay no fees for transaction.
- All payments are secure. Powered by Stripe
- You can Contribute Anonymously. being shy is okay
- If you're not from US, it's no problem, just check "Not In The US?" box and fill all info. your personal info won't be shown to anyone, including me
- There is no goal for campaign (standard is shown) - just any bit helps.
Thank you!


In the text below some words are missing. Drag words from the box below to the appropriate place in the text. To undo an answer choice, drag the word back to the box below the text.
Stars and the material between them are almost always found in gigantic
systems called galaxies. Our own galaxy, the Milky Way System; happens to be one of the two
systems in the Local Group of two dozen or so galaxies_ The other is the Andromeda galaxy; it
more than one hundred thousand light- years from one end to the other, and it is


Annotations that are needed for CDI usage using the extender. Basically, it declares:
The custom component and view scopes
The annotations for using and creating services using CDI


An Metroidvania game I created for both Windows and MacOS. Feel free to download and play.
Features
MacOS and Windows version have some different features:
-
open world
a real open world platform game. -
physics & collision
automatically check for all possible collision. -
level design
all levels design by myself, totally 24 areas, with check point. -
kinds of enemies
different kinds of enemies and behavior, one last boss. -
items
several hidden items that can level up player’s abilities. -
particles system
a particle system for bullet and explosion. -
uv animation
shader based uv animation and effect. -
game object
game object based coding like Unity. -
music and sound
background music and sound effect perfectly fit for every situations. -
full game experience
from title to game over, check point, death punishment, etc. -
tile map editor
support tile map editor. -
hard
very hard, but there always a simple way to clear.
Download
Tiled Map Editor
All levels were created with Tiled Map Editor by Thorbjørn, including enemies, items, checkpoints, colliders, camera behavior, event triggers.
Frameworks
-
OpenGL ES 3.2 & GLM
Core graphic api and core math library for OSX. -
stb
Public domain C image loading library by nothings. -
irrKlang
Cross platform sound library for C++, C# and all .NET languages by Ambiera. -
DirectX 9
For Windows.
Credits
- Design and Code by Haijian Liu.
- Character and Animation by Luis Zuno.
- BGM by SketchyLogic from OpenGameArt.
- SE by Juhani Junkala from OpenGameArt.


[1]
Waterproof; Routing with CityNavigator Europe 9 sucks
[2]
Best features available; Expensive and uses batteries fast
[3]
Nice case, clear display.; Absence of usable maps.


Until {{exhibition.dates}}
{{ exhibition.gallery.name }}
RATING - {{exhibition.rating}}
About this exhibition: {{exhibition.description}}
What people said about this exhibition:
What people said about this exhibition:


{% load humanize %} {% load staticfiles %} {% load cycle_selector %}
All numbers are for the two-year cycle, from {{ cycle_start|date:"N j, Y"}} through {{ cycle_end|date:"N j, Y"}}. For more about how these numbers were calculated, see the methodology below.
Dark money groups are entities—typically 501(c)(4)s, but sometimes corporations, LLC's or individuals—that haven't registered as political groups with the FEC because they do not consider politics to be their "primary purpose". As such, these groups aren't required to report their donors, but do report their independent expenditures. These groups, it should be noted, are not required to report "issue ads" they run supporting or criticizing candidates more than 60 days before a general election or 30 days before a general election if the ads are not considered "express advocacy".
This is just a listing of the top 50 Dark Money groups by independent expenditures. For a more complete list that's sortable, filterable and downloadable, see here.
| Committee Name | Total outside spending | Major Activity | {% for dm in top_darkmoneyers %}
|---|---|---|
| {{ dm.name }} | ${{dm.total_indy_expenditures|intcomma}} | {{dm.major_activity }} |


Joseph
this is a test to se how works this website,
Thousands of products online are ready to be purchased by you
Thousands of products online are ready to be purchased by you
Thousands of products online are ready to be purchased by you
this is a test to se how works this website,
this is a test to se how works this website,
this is a test to se how works this website,
this is a test to se how works this website,