The following document represents a short guide to running the Cris-Tasor project, developed in accordance with the tasor (task smart organizer) //8 project requirements.
The project described in this document represents the MVP ("Minimum Viable Product") as understood by the Dev team.
The project is able to register Users and authenticate users and enable each user (authorized via session) to:
The project is split into two separate api's: "public" (the one serving the client) and "private" (the one exchanges data with AzureTables). Both of these api's are contained in their own servers. As such, the install and/or run and/or test sections apply to both api's
The project relies on custom proceenvironmentss variables (e.g.:process.env.PORT
), as such, when running on any environment, we recommend providing
them. These are:
This project was developed and tested with the following Node versions:
Before any deployment or development please install all dependencies by running the following command in project folder:
npm install
For the local environment, the project uses dotenv module to create and read custom
environment variables. To add these variables, add a ".env" file in the api folder and add the variables there. After all this, run the custom
package script: npm run start_local
Test suites using jasmine npm module are provided. These include "Mock" testing as well as "Integration" tests.
ATTENTION: "Integration" tests will attempt to connect to the database and create entities, while "Mock" uses dependency injection to simulate calls.
To run provided tests, use:
npm run test_repotest
npm run test_userrepotest
npm run test_integration_usercontroller
npm run test_projectcontroller
npm run run_tests
Live link: cristasor-public-win.azurewebsites.net
Click Create account ... link
Enter credentials and email. All fields are required.
Password must be a min of 8 characters
To create a new Project, click the "Click to Add Project" button.
This will open the form to add info about the new Project (all field are required) You can choose a color to represent this project
To add a task to a project, click on the project button, and enter the project task list:
Click on the Add new Task .... This will open a Task creation form:
The required fileds are:
After all that, click the "Submit button".
Now the task should be added to the project.
Click on the task to expand or collapse.
At the bottom of any task that you created, there is a button for editing or deleting the task. Clicking the edit will open the form with the current editable data.
Every task has a publicly accessible link. Next to it it's a button that copies the link to the client clipboard.
The link will redirect the user to a page containing the task details. Only logged users can access!
At the bottom there are 3 buttons. Any user can accept any task. Once the task has been accepted by an user, it can't be accepted by others.
Once an user accepts, his/her id will appear unde "Is working"
Once an user accepts, on he/she can abandon or finish.
If user finished, and has evidence, click "Finish" button. The evindece will be available under the "Evidence of Done":
To sign out, click the "Log off" button (if on mobile, the button is under the menu button)
If you are on a mobile device with a supported Browser, you will get a notification asking if you want to add the app to the home screen:
If you accepted, now the web app will run like any other native app.


| 1 | package fr.sii.ogham.core.condition.fluent; | |
| 2 | ||
| 3 | import java.util.ArrayList; | |
| 4 | import java.util.Collections; | |
| 5 | import java.util.List; | |
| 6 | ||
| 7 | import fr.sii.ogham.core.condition.Condition; | |
| 8 | ||
| 9 | /** | |
| 10 | * Implementation that helps writing conditions in a fluent way. | |
| 11 | * | |
| 12 | * For example: | |
| 13 | * | |
| 14 | *
 | |
| 15 | * requiredClass("jakarta.mail.Transport").and(requiredClass("foo.Bar")); | |
| 16 | *
 | |
| 17 | * | |
| 18 | *
 | |
| 19 | * It wraps a real condition in order to provide two new methods: | |
| 20 | *
 | |
| 21 | *
and: to make a AND operator between current condition and | |
| 22 | * the condiions provided in parameter
 | |
| 23 | *
or: to make a OR operator between current condition and the | |
| 24 | * condiions provided in parameter
 | |
| 25 | *
 | |
| 26 | * | |
| 27 | * @author Aurélien Baudet | |
| 28 | * | |
| 29 | * @param <T> | |
| 30 | * the type of the object that is under conditions | |
| 31 | */ | |
| 32 | public class FluentCondition<T> implements Condition<T> { | |
| 33 | /** | |
| 34 | * The original condition | |
| 35 | */ | |
| 36 | private final Condition<T> delegate; | |
| 37 | ||
| 38 | /** | |
| 39 | * Wraps the real condition in order to provide a fluent API. Calling | |
| 40 | * {@link #accept(Object)} will be delegated to the underlying condition. | |
| 41 | * | |
| 42 | * @param delegate | |
| 43 | * the wrapped condition | |
| 44 | */ | |
| 45 | public FluentCondition(Condition<T> delegate) { | |
| 46 | super(); | |
| 47 | this.delegate = delegate; | |
| 48 | } | |
| 49 | ||
| 50 | /** | |
| 51 | * Create a logical AND operator between current condition and conditions | |
| 52 | * provided in parameters. | |
| 53 | * | |
| 54 | * For example: | |
| 55 | * | |
| 56 | *
 | |
| 57 | * requiredClass("jakarta.mail.Transport").and(requiredClass("foo.Bar")); | |
| 58 | *
 | |
| 59 | * | |
| 60 | * Means that the result will be true only if the result of the current | |
| 61 | * condition (requiredClass("jakarta.mail.Transport")) is true | |
| 62 | * and the result provided condition (requireClass("foo.Bar")) | |
| 63 | * is true. | |
| 64 | * | |
| 65 | *
 | |
| 66 | * If one of the condition result is false, then other conditions are not | |
| 67 | * evaluated. | |
| 68 | *
 | |
| 69 | * | |
| 70 | * @param conditions | |
| 71 | * one or several conditions | |
| 72 | * @return the fluent condition | |
| 73 | */ | |
| 74 | @SafeVarargs | |
| 75 | public final FluentCondition<T> and(Condition<T>... conditions) { | |
| 76 | List<Condition<T>> merged = new ArrayList<>(); | |
| 77 | merged.add(delegate); | |
| 78 | Collections.addAll(merged, conditions); | |
| 79 |
1
1. and : replaced return value with null for fr/sii/ogham/core/condition/fluent/FluentCondition::and → RUN_ERROR |
return Conditions.and(merged); |
| 80 | } | |
| 81 | ||
| 82 | /** | |
| 83 | * Create a logical OR operator between current condition and conditions | |
| 84 | * provided in parameters. | |
| 85 | * | |
| 86 | * For example: | |
| 87 | * | |
| 88 | *
 | |
| 89 | * requiredClass("jakarta.mail.Transport").or(requiredClass("foo.Bar")); | |
| 90 | *
 | |
| 91 | * | |
| 92 | * Means that the result will be true if either the result of the current | |
| 93 | * condition (requiredClass("jakarta.mail.Transport")) is true or | |
| 94 | * the result provided condition (requireClass("foo.Bar")) is | |
| 95 | * true. | |
| 96 | * | |
| 97 | *
 | |
| 98 | * If one of the condition result is true, then other conditions are not | |
| 99 | * evaluated. | |
| 100 | *
 | |
| 101 | * | |
| 102 | * @param conditions | |
| 103 | * one or several conditions | |
| 104 | * @return the fluent condition | |
| 105 | */ | |
| 106 | @SafeVarargs | |
| 107 | public final FluentCondition<T> or(Condition<T>... conditions) { | |
| 108 | List<Condition<T>> merged = new ArrayList<>(); | |
| 109 | merged.add(delegate); | |
| 110 | Collections.addAll(merged, conditions); | |
| 111 |
1
1. or : replaced return value with null for fr/sii/ogham/core/condition/fluent/FluentCondition::or → RUN_ERROR |
return Conditions.or(merged); |
| 112 | } | |
| 113 | ||
| 114 | @Override | |
| 115 | public boolean accept(T obj) { | |
| 116 |
2
1. accept : replaced boolean return with false for fr/sii/ogham/core/condition/fluent/FluentCondition::accept → RUN_ERROR 2. accept : replaced boolean return with true for fr/sii/ogham/core/condition/fluent/FluentCondition::accept → RUN_ERROR |
return delegate.accept(obj); |
| 117 | } | |
| 118 | ||
| 119 | @Override | |
| 120 | public String toString() { | |
| 121 |
1
1. toString : replaced return value with "" for fr/sii/ogham/core/condition/fluent/FluentCondition::toString → NO_COVERAGE |
return delegate.toString(); |
| 122 | } | |
| 123 | | |
| 124 | } | |
Mutations | ||
| 79 |
1.1 |
|
| 111 |
1.1 |
|
| 116 |
1.1 2.2 |
|
| 121 |
1.1 |


:: DeveloperApi :: A stream for reading serialized objects.
:: DeveloperApi :: A stream for reading serialized objects.
:: DeveloperApi :: A Spark serializer that uses Java's built-in serialization.
:: DeveloperApi :: A Spark serializer that uses Java's built-in serialization.
This serializer is not guaranteed to be wire-compatible across different versions of Spark. It is intended to be used to serialize/de-serialize data within a single Spark application.
Interface implemented by clients to register their classes with Kryo when using Kryo serialization.
A Spark serializer that uses the Kryo serialization library.
A Spark serializer that uses the Kryo serialization library.
This serializer is not guaranteed to be wire-compatible across different versions of Spark. It is intended to be used to serialize/de-serialize data within a single Spark application.
:: DeveloperApi :: A stream for writing serialized objects.
:: DeveloperApi :: A stream for writing serialized objects.
:: DeveloperApi :: A serializer.
:: DeveloperApi :: A serializer. Because some serialization libraries are not thread safe, this class is used to create org.apache.spark.serializer.SerializerInstance objects that do the actual serialization and are guaranteed to only be called from one thread at a time.
Implementations of this trait should implement:
1. a zero-arg constructor or a constructor that accepts a org.apache.spark.SparkConf as parameter. If both constructors are defined, the latter takes precedence.
2. Java serialization interface.
Serializers are not required to be wire-compatible across different versions of Spark. They are intended to be used to serialize/de-serialize data within a single Spark application.
:: DeveloperApi :: An instance of a serializer, for use by one thread at a time.
:: DeveloperApi :: An instance of a serializer, for use by one thread at a time.
It is legal to create multiple serialization / deserialization streams from the same SerializerInstance as long as those streams are all used within the same thread.
Pluggable serializers for RDD and shuffle data.
org.apache.spark.serializer.Serializer


Design Overview
This design documentation describes the packages of the Node Grader software
system. The system is comprised of two application programs:
-
The Node Grader web interface, for regular users to manage and view their calendars.
-
the Node Grader Server, which runs in the background on central hosts to
control communication among users' local computers and the host.
See the companion
requirements specification document
has complete details of grader tool functionality.


Peaky Blinders series six begins filming as Cillian Murphy returns to set in Liverpool
Pictures from the set have revealed a major spoiler about the next season — as Cillian Murphy is officially coming back
by Molly Pike, https://www.mirror.co.uk/authors/molly-pike/Peaky Blinders series six is officially underway as filming began in Liverpool this week.
And pictures from the set have revealed a major spoiler about the next season — as Cillian Murphy is officially coming back.
The actor, who plays main character Tommy Shelby, was reunited with his co-star Paul Anderson as they shot scenes in the city's Stanley Dock.

But he appears to be alive and well if pictures of Cillian in the gangster's famous flat cap are anything to go by.
Paul, who plays Tommy's brother Arthur Shelby, was seen heading to the set in full costume.
Fans had suspected that Tommy may return as the show is rumoured to be carrying on until its seventh season.
Series five ended on a disastrous note for Tommy as his plan to assassinate his fascist political rival Sir Oswald Mosley (Sam Claflin) ended in close allies being killed, while his cousin Michael Gray (Finn Cole) revealed his ambitions to take over from Tommy before leaving for America.
So, with threats still out there, including from the Scottish gang the Billy Boys who remain at large, what kind of problems will plague the Shelby family in the sixth season?
Season 5 director Anthony Byrne revealed what to expect from the next season while speaking on the BBC podcast Obsessed With Peaky Blinders .
"Gina, and whoever her family are, will make themselves known," revealed Byrne, who will return to direct the sixth run of the show.
Fans were very distrustful of Michael's wife Gina Gray (Anya Taylor-Joy) when watching the fifth run, as she proved to be very ambitious for her husband's - and her own - interests.
The finale also revealed that Gina's family are heavily involved in drug trafficking in America, meaning they are surely some dangerous enemies for Tommy to deal with.
Byrne also revealed on the podcast that we can expect further focus on "Oswald Mosley and some people around him and his world."
The show will likely cover the period when Mosley married his wife Diana Guinness at the home of leading Nazi Party member Joseph Goebbels
Nazi leader Adolf Hitler was also a guest at the wedding, so don't be surprised if we see some other notorious historical figures appearing.
The show is expected to return late next year.


About Me
Info about me
BIO
24 years old
Education: High
Degree: Master
University: KNEU Kryvyi Rih economics institute, Economic Cybernetic (2012-2018)
Courses: Web Academy Programming Courses (2018)
Direction of Courses: Front End Development (3 months)
Mentor: Senior Front End Developer - Ilya Lytvynov (EGT Ukraine)
I have a passion for IT and wanna to learning so much more and improve my skills in this area
I am a very communicative person
I am responsible person and love to learning something new
Thank you for your attention 😉


Elm-azing
Find your way to the red X before the AI does
User WASD or the arrow keys to navigate
Select a difficulty and press go to begi!


Continuing on my data collection and analysis streak, I’ve got a little project to throw out into the wild and see what happens.
Student response systems are expensive and can be clunky. Google Forms are taking over the role of the stand-alone response system because of their flexibility in the wild during collection (device agnostic) and during analysis.
I like using forms, but they don’t work so well when students don’t have access to an Internet-ready device. So, I came up with a way to allow students (or anyone, really) to respond to a poll using either a form input or a text message.
The challenging part of this is getting the message into the spreadsheet. I have a Google Voice number, so I looked into Apps Scripts for Voice. Unfortunately, there is no way to access Voice using Google Scripts. There is an API for Hangouts, but it’s not documented very well and doesn’t look like it would even work with Apps Scripts or Spreadsheets. Maybe I’ll head back down that road someday, but not right now.
I decided to go with IFTTT, which has some benefits (easy to set up and manage) and drawbacks (only checks every 15 minutes-ish, so you need to manually run it during a session). It’s clunky and adds a breakpoint in the flow, but it works.
You need to start by making a Google Form. For this, I want to allow students to send in four things: Their name, a multiple choice answer, a confidence rating, and any comments. Create the form with your collection in mind.
| In IFTTT, you have to tell the script which cells to populate in the sheet with three straight bars, “ | ”. Knowing your form setup is really important before you make the IFTTT recipe because it’ll save you a headache later. My recipe puts the responses into the first three columns and then I use a Google Apps Script to break them into the correct columns. |
Method 1 – Pure Google Forms
The audience opens the Form and answers the question displayed live. They hit submit.
Easy.
Method 2 – Text Message to IFTTT
First, in Voice, you set up email notifications for text messages. Then, in Gmail, set up a filter to catch the emails and do two things: add a label (I used “text”) and then mark it as “read” (mostly for your inbox-zero sanity). Now, have the audience send a text to your Google Voice number (see below for formatting).
In IFTTT, set up a trigger which uses Gmail -> Google Drive. The Gmail trigger should do a search for your new Gmail label. When it finds that email, it appends a row to your form input spreadsheet.
More complicated, but now we have a way to get raw text data into the spreadsheet. Now, you need to make sure the text message is formatted correctly.
Google forms split fields into their own columns. You can’t do that with a text because IFTTT puts the whole message into one cell. To split it, you need a way for a script to find the individual components. For this, I have participants do the following:
Name [comma] MC answer [comma] Confidence (1-4) [comma] comments
IFTTT dumps this into a placeholder cell in the spreadsheet and it can now be broken up at each comma using the following script:
function splitCells(from) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
var colC = sheet.getRange(2, 3, sheet.getLastRow()).getValues(); // C2:C, only non-blank rows
//Logger.log(colC);
for(var i=0; i< colC.length; i++){
if(colC[i][0] != ''){
// If we received a SMS response, set a formula to parse it
sheet.getRange(2+i,4).setValue('=if(istext(C2:C),split(C2:C,",",true),"")')
}
}
}
After running this script, you now have all the responses in the correct column and you can play with the data more and look for patterns in the responses.
I’ll follow this up with the data analysis sheet explanation.
Written on May 1st , 2015 by Brian Bennett Categorized in: All Creative How To Technology
Leave a comment


{% extends "net_delib_20181221_start/Page.html" %} {% load otree static %} {% block title %} Group Discussion Study {% endblock %} {% block content %}
In this study, you will be asked for your opinion on a policy question. You will then be given an opportunity to discuss the policy question with other participants in an online chat room. This will take approximately 45 minutes in total.
If at any point you have questions or wish to withdraw from the study, you may notify the study administrator.
Press the “Next” button to begin.
{% next_button %} {% endblock %}


| DOSE: |
15 nuts |
oral |
Nutmeg |
(ground / crushed) |
To this day I NEVER want to smell or taste nutmeg again.
It all started about 5 pm when after reading a book of herbs, trying to find legal means of altering my mind, nutmeg popped up. It never discussed the dose though. I went to the local supermarket and purchased 1 small bottle of whole nutmeg. It probably contained about 15 small nutmeg nuts. I took it home, ground it in a food processor until it was nothing but dust. I downed it the hardcore way..... There was probably about 1/2 cup of the powder, and spoonfull by spoonfull I shoveled it down my throat followed by guzzling water to get it down with. That was about 7:00pm. By 9 pm, I felt ... wierd. I can't explain it. I went to bed with my (now x-wife) and started feeling horny as fuck. I mounted her like there was no tomorrow, and needless to say, REALLY got into it... After another hour or so of just pure passionate fucking, I suddenly stopped. I didn't know where I was, and I didn't know who she was.
After thinking about it, I didn't know who I was either.  Then the worst part.... I felt my heart racing. (Duh... of course it would be after what I had just done...), and decided to take my own pulse while highly disoriented... Not the smartest thing to do, considering that I counted 240 beats a minute. I remember slap freaking out. Going bezerk. I KNEW I was having a heart attack. We were staying at my parents at the time, (I was out of work, and we had just had a baby 2 weeks earlier, so sex shouldn't have been going on to begin with...) I burst in my parents room screaming 'CALL 911 !!! CALL 911 !!!! I'm having a heart attack!!!) So......... yup...... my parents call 911, and the paramedics rush to my parents house.
 One paramedic had to go outside he was laughing so hard. They took my vitals..... I was fine. They made a call to the hospital Emergency Room and spoke to a doctor, who in returned called poison control.  And I did... I slept for about 20, yes 20 hours.... straight. The reason I remember this so well, is the next day was my birthday. My mom baked me a cake (which I couldn't even eat).. I was up for about 20 minutes, and then...back to bed. The next morning about 10 am I awoke. Every muscle and bone in my body ached. I mean REALLY hurt....  I can honestly say I spent the next week of my life recovering from physical and emotional trauma.
The medics may have breezed it off, but I felt closer to death than I ever have.  My advice.. Nutmeg.. don't say no...say HELL NO!!!!!!!!
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


| 17 Nov | KBFC | 20:00 | ATK |
| 18 Nov | NEUFC | 20:00 | JFC |
| 19 Nov | CFC | 17:30 | FCG |
| 19 Nov | BFC | 20:00 | MCFC |
| 22 Nov | FCPC | 20:00 | DDFC |
The Indian Super League (ISL) is a men's professional football league in India. For sponsorship reasons, the league is officially known as the Hero Indian Super League. One of the top football leagues in the country, it currently shares the top spot in the Indian football league system with the I-League. The league comprises 10 teams and will run for five months from November to March starting with the 2017–18 season.
Founded on 21 October 2013 in partnership with IMG, Reliance Industries, and Star Sports, the Indian Super League was launched with the goal of growing football in India and to increase exposure to the sport in the country. The league's first season took place in 2014 with eight teams. During the first three seasons of the Indian Super League, the league operated without official recognition from the Asian Football Confederation, the governing body for the sport in Asia. The league also operated along the same lines of the Indian Premier League, the country's premier Twenty20 cricket competition, with the league campaign lasting for only two to three months and matches being held every day. However, before the 2017–18 season, the league earned recognition from the AFC, expanded to ten teams, and extended it's schedule to five months, with matches played mainly on weekends.
Unlike most football leagues around the world, the Indian Super League does not use promotion and relegation, instead choosing to grow the league through expansion, similar to Major League Soccer in the United States.Since the league's inaugural season, two teams have been crowned champions. ATK won the title for the second time during the 2016 season. The title meant that they have the most championships in ISL history as they were also crowned champions in 2014. Chennaiyin are the only other club to be crowned champions after they won in 2015. Read more->


Graduation rates slump
by Colin DacreGraduation rates within the Okanagan Skaha School District for the 2018/19 year fell below 80 per cent, according to new data going before the board Monday.
Of 643 students, 79.4 per cent of students achieved graduation within six years of entering Grade 8, down from 85.3 per cent the previous year. The six year completion rate has hovered near that figure, but was as high as 87.1 per cent in 2014/15.
The data shows that 91 per cent of students that entered Grade 12 last year graduated in the same school year, indicating many students that drop out do so before their senior year.
The numbers improve if international students and non-residents are excluded from the mix: 85.7 per cent of resident students graduated within six years, with 92 per cent of seniors completing Grade 12.
Six-year completion rates for Indigenous students slid last year to 65.4 per cent, down from a high of 75.5 per cent in 2016/17. Eighty-six per cent of Indigenous Grade 12 students last year graduated.
SD 67 includes schools in Penticton, Summerland, Naramata and Kaleden.
Also included in this week's agenda, the school district published its annual required "sunshine list," disclosing salaries for everyone over $75,000 a year. The top five earners at SD 67 are:
- Wendy Hyer, Superintendent: $185,000
- Kevin Lorenz, Secretary Treasurer: $161,000
- Todd Manuel, ?Assistant Superintendent: $149,000
- Jason Corday, Human Resources Director: $141,000
- Susan Thomson, Director of Instruction: $140,000


{% extends "base.html" %} {% block breadcrumb %}{{ home }}{% endblock breadcrumb %} {% block pagelist %} {% for item in content.files %}
CherryGlass generates a static site from your existing site source code and lets you add elements of managed content.


There’s a lot of things I want to write about, but I fear that I’m running out of time. I’m always spending my time learning, reading and working on projects. I haven’t really spent time on myself in so long. I have like 50 blog topics piled up that I want to write about and I’m worried that if I don’t write them now, I’ll never get to.  I’ve been dreaming deeply for so long now. There’s so much still buried within me that’s never made it out. I’m not sure, but I feel like some of what was within me has made a pretty big difference in the world.
So I’ve spent some time meditating. Not a lot and not enough, that’s for sure. But enough to have experienced some amazing things I can’t explain. I sincerely believe that most believe float through life without any experiences like these. In our world it’s very hard to truly relax. There’s always something to think about and stress over or meaningless new information to consume, which leads our minds to being chaotic and hard to quiet. Monkey Mind is the the Buddhist term for this. And if someone does have an meditative experience like these, they aren’t aware of what it is because they aren’t intentionally working towards conditioning their mind.
My Introduction to Buddhism in High School
Since high school I’d always been interested in Buddhism. Mr. Oliver, my IB History I teacher, was the first to focus my attention on it. As a teacher, he couldn’t really explain much. One concept he mentioned that intrigued me at the time was that of a Bodhisattva - a powerful being of compassion leads others to lead others further. That was how he explained it. A Bodhisattva, in particular the Shepherd Bodhisattva, eschews buddhahood and vows to stay behind to plant the seeds of enlightment for as many others as possible.
So Buddhism seemed very interesting to me. In high school and early college, I tried to seek it out online, but didn’t really understand how to “be a Buddhist.” I thought to be a member of a religion, you would have to go to their place of worship and partake in their rituals. Once a week, like Christianity. And because I didn’t know any Buddhists at the time, I didn’t know where to start or who to ask. I didn’t understand the tools I found and articles I read online, so I quickly gave up.
At the time, I didn’t understand that studying Buddhism has a lot more to do with studying yourself than partaking in rituals and reading verses from a religious book. That said, there is significant purpose and meaning in Buddhist rituals of all three vehicles, but they are like tools that help evoke understanding of the world and our relation to others in it. The sutras are also powerful tools to help you understand important concepts. But every Buddhist I’ve studied from has directed me to meditation first. For the most part, they didn’t mention their religious texts.
Meditation in Virginia Beach
So, while I was living in Virginia Beach in 2011, I had another sudden inspiration to learn more about Buddhism. I’m not sure what it was. I found a meditation group on Meetup.com and I wanted to check it out. The first time I went was the first time I had truly meditated. I had tried before of course, but I focused to much on the technique of body postures and hand positions. I didn’t understand that meditation has moreso to do with getting your mind in the correct position than your body. When I meditate today, I tend to do better if I lay down, which isn’t really “correct” per se.
The meditation group met in an old ferry boat that had been relocated to a park in Norfolk, VA. I didn’t realize it at the time, but this is very symbolic. Of the three types of Bodhisattva, the second is the boatman, who strives to achieve enlightenment along with all other beings.  So, I wouldn’t realize until later how the ferry boat we met in was symbolic.
On the first meeting I attended, I told the teacher what I knew about meditation. He advised me more on the mental technique that is necessary for cultivating the right mindset. He was was good at listening to what I said to understand how I thought, as well as articulating what I didn’t know yet and should focus on next. He stress that I shouldn’t actively “try” to attain a particular mindstate. That instead, I should relax and try to quiet my mind. If thoughts arose, I should attend to them only passively. Observe them, but not actively react to them.
Towards the end of our first meditation session, I had an interesting experience. We were sitting in chairs around a table. I had released the tension from my body and quieted my mind. I didn’t know what to expect, so I wasn’t expecting anything. Suddenly, a vision arose that seemed to come from outside myself. I saw a man and woman holding hands. I was looking from behind them and far in front of them, the sun was setting, but brightly piercing through. I didn’t consciously think to conjure this picture, which was very symbolic of compassion. It was very visual and just happened to pop into my awareness.
This lasted about a second before I actively started trying to comprehend what I saw. When it happened I lost the balance of my upper body a bit because I hadn’t been consiously focusing on maintaining it. When I did, I instantly fell out of meditation and quietly gasped for breath like I had just woken up from a dream – I definitely had not fallen asleep though. It felt like I had literally woken up. Both actively trying to comprehend what I was seeing and focusing on regaining my balance after I lost it out of surprise knocked me out of that mindstate.
I went to the meditation group once or twice more. The experience I had intrigued me, especially how it seemed to come from outside myself. I wanted to know if I could do it again and go further, or if it was just a figment of my imagination. Unfortunately, the mostly unconscious expectation of getting this to happen again seemed to prevent me from stilling my mind into a passive state. I was “trying” too hard, which I’ve learned will prevent my mind from entering certain states. However, this one experience has stuck with me.
Learning More About Buddhism
In the next two years, I occasionally spent time learning about Buddhism. I watched videos of the Dalai Lama speaking and read a few of his books. I was inspired by his message of compassion. In particular, I learned that I could observe my own thought processes and, in doing so, I could remove the negative and strengthen the positive. Instead of stressing about something that had happened to me or something negative that had been done to me, I could shift my perspective and focus on the positive. Even if I didn’t have control over certain things, I didn’t have to let them affect me. Some of these cognitive tools that I acquired from Buddhism have helped me greatly.
However, it takes a huge amount of self-control and discipline to maintain habits like these when you’re tested by abnormally negative events in your life. I’m by no means a great example. I can stay level and balanced when confronted with minor setbacks. Even shrugging off some major ones. But, in some particular episodes, I fell off and sacrificed my inner peace. So, it’s not easy.
“Yeh, I tried Buddhism once. But it was a little too much.”
Someone I met once said that to me. And I didn’t quite understand what he meant at the time, but now I do. Fortunately, he said it in such a way that didn’t discourage me from pursuing it myself and gaining insights that would help me out.
What he meant though is that Buddhism necessitates compassion towards those around you. Compassion of people around requires awareness and mindfulness. To practice this well, your mind needs to process a lot more information than it would if you were just selfishly thinking about yourself. You need to think about how your words and actions affect others, both now and in the future. You have to pay attention to how others interact and be mindful of their mistakes, but not judgemental. You have to be incredibly creative in responding to negative situations. And when you make mistakes, you actually have to care.
For me, this is actually great because I was fairly selfish growing up. It was harder than normal for me to be aware of others. So learning about Buddhism actually opened up the world for me and allowed me to be more empathetic. It explained certain things to me in a way that I could understand and allowed me to make certain insights that have been invaluable.
In particular, it underscored the Golden Rule: if we are all one, then treat others as though you literally are them.
Meditation on Boulder Creek
So while I was living in Boulder, the insights I had made with Buddhism paid off in spades. I would not have been able to tolerate the level of BS in my life otherwise.
In Boulder, early in June 2013, I was working out of Boulder Fuse, this great coworking space right beside the Boulder Creek. It was in an amazing location right beside Central Park. I would occasionally take breaks and meditate beside the creek. I had found this artist Maneesh de Moor, who uses Indian rhythms, Sitar and sanskrit in his music. Pretty heady stuff. Though it’s probably best to practice without music, I found that I enjoyed meditating with this music. The artist used phrasing, progressions and rhythms that made it difficult for my conscious mind to latch onto patterns in the music. The songs are all very laid back and mellow.
Anyways, I had been meditating for awhile, listening to this music on my Sennheiser Momentum headphones, which are superb by the way. You can hear everything, which also made this artist’s music stand out. I had a few visual meditative experiences by this time, especially that summer. By this time, I understood that I should only witness what I am experiencing and not try to reflect on it as it’s happening. Doing so would knock me out of the experience every time.
I’m meditating laying down by the creek. It’s important to note that I’m not asleep and dreaming when I’m meditating. I start noticing some visual phenomena springing from my subconscious. And suddenly this girl starts dancing around me. She has blue skin and she’s naked, like a Hindi goddess or a depiction of a dark bodhisattva from the Tibetan Book of the Dead. It’s as if she’s trying to tempt my consciousness to focus towards her and either get me to fall out of meditation or to resist and strengthen my abilities.
After what seemed like a few seconds, I became so interested with what I was seeing that I couldn’t resist. And no, it’s not because she was naked. I didn’t become distracted out of desire. I was happy that I was experiencing something like this and so I started looking around as she was circling me. It was as if I was moving my head to look around, but obviously I was laying still. Shortly after I started interacting with her, I fell out. This is another experience that stuck with me.
One thing I’ve noticed when successfully getting into mindstates like this is that time seems to pass very quickly. Sometimes, I meditate and nothing happens. Other times, experiences like this stream for a while. After it happens, I’ve noticed that a lot more time has passed than I realize, sometimes thirty minutes and sometimes over ninety when it seems like fifteen minutes.
Meditation at Mipham Shedra
Another experience in Boulder occured at Mipham Shedra, which is a Vajrayana Buddhist Meditation Center founded by Guru Lhoppon Rinpoche. This was a directed group meditation and Rinpoche asked us to focus on our own awareness. As we started, he explained it as visualizing ourselves looking back at our own thoughts. I took this a step further and wanted to visualize myself looking back at my thoughts of looking back at my thoughts. I found if I took this another step further again and again, it would form a spiral pattern. If each point in the spiral began growing at a constant rate, you’d end up with something resembling a lotus flower. The pedals of a lotus spiral outward as it blooms, so I made a connection here.
We began meditating and instead of quieting my mind, I began focusing on this concept of recursively looking back at my own awareness and visualizing it as a spiral, then a lotus. Visualizing this was different than the other experiences I’ve mentioned because it very clearly came from within myself. I meditated on what it would mean to be aware of my thoughts and cognitive processes. And then what it would mean, conceptually, if I recursively expanded on this. I began visualizing the spiral and eventually the lotus.
When we finished, the first question Rinpoche asked was “Who saw the lotus?” Immediately, my hand shot up. I’m not really sure if there’s a correlation between this thought process and the symbol of the lotus, but that’s what I started visualizing as I expanded my awareness. Because of all the stress in my life at that time, I only went to Mipham Shedra once.
I’ve got a few other meditative experiences to share and I’ll write those up soon.


Privacy Anonymity And Identity Group
Transcript By: Bryan Bishop
Tags: Security
Category: Workshop
Anonymous identity
Another part of it is that all of those IoT things have firmware that can update. The moment that someone gets a key to update this, you can hack the grid by making rapid changes on power usage which actually destroys the …. do the standards make things less secure? It should be illegal to design broken cryptosystems. Engineers should go to jail. It’s too dangerous. Do you think there should be smart grids at all?
Well if the designs are based on digital security, then no. If you design these things well, no matter what the devices do, they will end up acting up in a way that fails gracefully. They will be able to suggest, but not control. Baking all of this digital stuff into the devices is just dangerous. Analog command-and-control stuff, it’s easy to understand the liabilities of. The devices are simple. We had a rule where anything safety related, had to be done with an analog system becaus you could understand how it works, and you can’t do that for digital.
I agree with that a model to a large degree. The security has to be susceptible to analysis. I do work on smart grid systems. It’s sort of like, well, how do you… people were asking me to build stuff that I’m sure people are incapable of evaluating. I don’t know as a community how do we get people to, vendors, to not do this? How do you get contract developers to not write buggy contractors? False flags maybe.
100 years ago, bridges fell down all the time. Well, then we figured out how to engineer bridges. And now the thing is that we know when they are going to fall down, we just don’t fix them. Graceful failure is important. You have to design bridges s otha twhen they are about to fall down, you get a warning. Suspension bridges should have stop lights to prevent cars from going on the bridge when a suspension wire fails. They should have sensors for each of the suspension wires.
Well, if the cost is so prohibitive, then perhaps that’s a good pitch for joining blackhat organizations. For power distribution, centralization is broken. If that things go out, that thing loses power.
Please have 3-4 points to give a 5 minute presentation. An overview of what you have been talking about. Okay? Thank you. You’re encouraged to talk more, you don’t have to finalize your discussion or anything. You have 90 minutes still.
Everything is broken. We have to create systems as a governance model where we allow people to have weak identities. I have two vectors. You have weak and strong, and good and bad. When you turn 16 and start using the network, you have a weak identity. When you get older, you have a stronger identity. What you’re talking about is the ablity to maintain a weak identity. Don’t have identities, make them up out of thin air. Non-traceable.
Identity inherently has a cost to it. You end up impacting privacy. The default should be, in any system, try to design it without identity. Only use identity as a last resort. When is identity actually necessary? One of my favorite examples is AML/KYC literally led to ISIS as they were going across the territory they were taking over. One of the main ways they were getting funding, was to go to the local banks, get the records, then go off and get money from those people.
Their security model for AML/KYC did not take into account the need for security. ISIS was able to walk in there and take the data. When these things fail, there aren’t systems to hold people responsible. Agents were literally killed in foregin countries due to an NSA backdoor in the Officers Management hack… So who is going to be responsible? They think it was the juniper routers that were hacked.
Maybe you only need identity when you need to be able to punish people. So identity is for punishment? Politicians need to be transparent. They need to have money at stake that we can take away from them.
I think the goal is to create good standards, evangelize those standards. Apache software foundation has a bank-in-a-box software project. Perhaps they should be using it instead of random stuff that banks create on their own.
Do we need identity? The sets of systems where really what we need is purely anonymous identity, where we don’t care about tracking you, but still the participants– but there is still an identity variable in the software stack, it’s ust ephemeral and not persistent. Versus systems where there is no concept of identity. Should the electricity system have wires and electron?
Ephemeral identity, persistent identity. What bits of data are you leaking to the other side of the connection? You have to make it cost to the user do something. This is how you prevent sybil attacks. Proof-of-work is a very epheremal identity.
The reason why identity plays differently in each application domain is that there’s a different threat model, there’s a different use model and there’s a different economic model. In application models, it’s expensive to create identity, which has cascading implications ofr what the threat model is. Sometimes you don’t need a specific identity, you need set inclusion. Multisig threshold signatures, or where you know some number of the group signed but not all of them.
Identity-related information has a very high cost. It’s dangerous to have it around. It’s a liability. So since it’s a liability, here’s a hierarchy of solutions you could use for least risky and most risky. You could do one-shot batch web shopping, or you could a session cookie, or you could login and register your credit card and have a profile. There’s a hierarchy of, the less ephemeral identity willing to put into the system, the more kinds of applications you have, but the more risky it is.
Arguably, some of the stronger identity case like wanting to register your credit card, is obsoleted by new payment tech where you don’t have to register all that info. You just give them a QR code or something. How do we find those boundaries? What are the space of threat models? What use cases are obsoleted by technology? Shopping should go from here, to there. A lot of set inclusion things, where I’m ordering a burrito online and a drone is going to deliver it, and I don’t know where it’s coming from, it’s anonymous burrito delivery and it’s FDA approved by proof. Or maybe Motion Machines should have their machine stamp their hamburgers and burritos with a unique hash to show that it has an audit trail. Your receipts should have an audit trail for your food and for health maintenance reasons.
Ideal scenario is that you show that you are a member of a group, you use a group signature, and then you can show you are a part of the set.
You can have an audit trail on every receipt for every food purchase, whether groceries or restaurants, so that you can see the entire trail where the food has been and how it has been processed, and then figure out elements in common that might be causing food-borne illness.
Who are these people and why do they want my identity? Data is pollution, it never goes away. If you trust the government with your data, do you trust the next politicians to manage the data? Data is a liability. EFF should tell companies to not be storing data. In fact, you should audit your company and then calculate data as a liability.
Data loss insurance. So would an insurer insure a company against data loss? The goal is to minimize the amount of data that a company is storing. If the repercussions are to osmall, then there’s no way that people are going to go after them anyway. Without this liability, they might not worry as much.
You can’t assign liability after something goes wrong. You have to just get rid of the data upfront. A first step would be, you’re responsible for losses.
Wow, these two people just did a trade for cookies without using a blockchain.
For something to be standardized, people should be looking for academic involvement to decide whether something is secure. Academic consensus is one form of consensus that might be required here, more so than the typical IETF crypto discussions.
I am trying to start a new phrase: “Welcome to my threat model.”
We want to get your summaries on the identity stuff. We want to start in 10 after the hour. We want to get back on track. We want to hear summaries and get going. Neha, if you are here, can you find me, because I can’t see you.


{% from "govuk-jinja-components/button/macro.jinja" import govukButton -%} {% extends "base.html" %} {% block title %}Platform documentation - {{config.PROJECT_NAME}}{% endblock %} {% block content %}
The {{config.PROJECT_NAME}} helps charities and support groups meet the needs of the public using a shared platform. It also provides better data to organisations listed as 'super complainants' under the government's proposed online harms legislation.
Our guides help explain people's rights and options for resolving issues they are having online. These guides are maintained collaboratively by charities and support organisations with different areas of expertise using GitHub.
We also send anonymous statistics to relevant charities and support groups to help them monitor the types of problems people are having online and to campaign for change.


If you have any questions about our products or the wood used, please use the form below. We appriciate any comments, views or ideas. We prefer not to give a phone number as it interupts our daily work and causes delays in the workshop. If you do want to speak to us please send an email first so that we can then forward our phone deatils. Many thanks.
Please type your text or inquiry here:
Upload your file


Zebra Users Guide
Column Security
NOTE: THIS FEATURE IS EXPERIMENTAL AND SUBJECT TO CHANGE IN THE FUTURE
Since Zebra supports reading and writing data in a column-oriented fashion, you can store secure and non-secure data in separate columns. Then, using the HDFS file system, you can enable access control by setting the appropriate permissions on the columns containing secure data.
About the data:
- All the files and directories containing secure data will have the same permissions and groups within a table.
- If no security information is provided, then the HDFS file system default behavior applies.
About the users:
- The user who creates the data will set the file permissions.
- If a permissions-related error happens, it will be communicated to the user as a normal IO exception.
- A user running a client application needs to have chgrp permissions to execute the "secure by group" operations on a table.
- If a user running a client application does not have read permissions for a secure column group, an IO exception is issued.
One simple Pig example:
a = load '/path_to_input_table' as (a:int, b:float,c:long,d:double); b = store a into '/path_to_output_table' using org.apache.hadoop.zebra.pig.TableStorer('[a, b] secure by group:secure perm:640');
One simple MapReduce example:
zStorageHint = ZebraStorageHint.createZebraStorageHint(“[a, b] secure by group:secure perm:640”); zSchema = …; zSortInfo = …; setStorageInfo(jobConf, zSchema, zStorageHint, zSortInfo);
Drop Column Groups
NOTE: THIS FEATURE IS EXPERIMENTAL AND SUBJECT TO CHANGE IN THE FUTURE
Zebra allows you to delete a column group (CG) using the column group name. For examples, see Drop Column Groups.
Please note the following:
- Any failures during a drop will leave the table in consistent state (either with or with out the column group). While success of a column group removal guarantees a column removal, a failure does not imply the column group is not removed. In rare cases, you might receive an error but the column could still be deleted.
- MapReduce jobs and other clients that are currently accessing the table might fail with exceptions. It is recommended that column groups be dropped when there are no accesses to a table. It might not be feasible to ensure that there are no readers for a table; in these cases the readers should handle the exception.
- Once a column group is dropped, the column group data is deleted from the underlying file system. In the case of the HDFS filesystem, it may not imply that physical data is actually removed because of earlier snapshot of the file system; handling this is out side the scope of Zebra.
- Concurrent column group deletions are supported and their access is serialized.
- Deleting a non-existant column group or a column group that is already deleted is not allowed.
- If you delete all the remaining columns in a table, it logically leaves an empty null table. The difference between a non-existant table and a table with zero columns is that opening a non-existant table causes an error.
Order-Preserving Sorted Table Union
With Zebra you can group all records from all "delta tables" on some sort key to form an output set of records while preserving the sorted ordering of the records in the original tables. For instance, if the client application wants to fetch records from a union of tables of T1, T2 on a column "C1", then all records from T1 with a particular value of column "c1" and all records from T2 with that value of column "C1" will be output. The ordering of the rows of the output set of the same value of column "C1" is undefined. As a prerequisite, both T1 and T2 must be sorted on column "C1". More specifically the input and results could be as follows:
Table T1:
C1 C2 ------------- A 11 A 12 B 21 B 22 D 41
Table T2:
C1 C2 ------------- A 101 A 102 C 301 D 401
T1 Sort-Unioned with T2:
source_table C1 C2 ------------------------------ 0 A 11 1 A 101 0 A 12 1 A 102 0 B 21 0 B 22 1 C 301 1 D 401 0 D 41
Note that the sortness is guaranteed per mapper and among all mappers arranged with certain ordering, but not among mappers arranged in any ordering. For instance, the outputs generated by four mappers, m1, m2, m3 and m4, could be in total ordering between m1, m3, m2 and m4, but not in any other arrangements.
Indexing Sort-Unioned Results
The order-preserving sort-unioned results above can be further indexed by the component tables if the projection contains column(s) named "source_table". If so specified, the component table index is output at the position(s) as specified in the projection list. If the underlying table is not a union of sorted tables, the use of the special column name in a projection will cause an exception. If an attempt is made to create a table of a column named "source_table", an exception will be thrown as the name is reserved by zebra for the virtual name.
MapReduce Jobs
TableInputFormat has static method, requireSortedTable, that allows the caller to specify the behavior of a single sorted table or an order-preserving sorted table union as described above. The method ensures all tables in a union are sorted. For more information, see TableInputFormat.
One simple example: A order-preserving sorted union B. A and B are sorted tables.
... TableInputFormat.setInputpaths("path_to_A, path_to_B"); TableInputFormat.requireSortedTable(); TableInputFormat.setProjection(conf, "f1, f2, source_table"); ...
Pig Scripts
Pig takes an extra string argument of "sorted" indicating the desire to load from a sorted table or an order-preserving sorted table union. For more information, see Zebra Pig Examples.
One simple example:
... T = load ('path_to_A, path_to_B') using TableLoader('f1, f2, source_table', 'sorted'); ...
Merge Join and Sorted Tables
In data pipelines, there is often a need to join datasets. Zebra supports merge join on Zebra tables. For more information, see Merge Join.
One simple example:
class myMapper extends Mapper<…> { … Object keyGenerator; … public void map(…) { bytesKey = BasicTableOutputFormat.getSortKey(keyGenerator, userKey); … output.collect(bytesKey, valueTuple); … } public void configure(JobConf job) { keyGenerator = BasicTableOutputFormat.getSortKeyGenerator(job); … } }


Inicio
Dashboard
Graphics
Parameter configuration
Accepted Suggestions
(current)
Rejected Suggestions
Suggestions taking support
Suggestions on vote
Accepted Suggestions
Suggestion
Description
Title
Description


Javascript Calculator
Notes
Keyboard/Number pad can be used
Only supports real numbers
AC(All Clear) or ESC key removes all data
CE,(Clear Entry) Backspace, or Delete keys remove last inputted value
For example an input of 123 CE will result with an input of 12
CE can be used multiple times in succession but the keyboard buttons associated may have alternative functionality inside the browser


{% extends 'email_base.html' %} {% block body %} {% load i18n %} {% if not web %}
In this issue: Highlights from the past three weeks
{% endif %}{{ start_date }} {% trans "to" %} {{ end_date }}
News goes here
| {% trans 'Total number of learning circle meetings' as chart_title %} {% with total_meetings=total_meetings_count|stringformat:'i' total_learners_reached=total_learners_reached_count|stringformat:'i' %} {% include "studygroups/measurement_card.html" with title=chart_title chart=meetings_chart description="Since January 2016, "|add:total_learners_reached|add:" people participated in "|add:total_meetings|add:" learning circle meetings." fullwidth=web %} {% endwith %} |
| {% trans 'Current learning circles by country' as chart_title %} {% include "studygroups/measurement_card.html" with title=chart_title chart=countries_chart fullwidth=web%} |
| {% trans 'Current learning circles by topic' as chart_title %} {% include "studygroups/measurement_card.html" with title=chart_title chart=top_topics_chart fullwidth=web %} |
| {% trans "Learning Circle" %} | {% trans "Goal for signing up?" %} |
| {{ signup.study_group.name | title }} | {% with answers=signup.get_signup_questions %}{{ answers.goals }} | {% endwith %}
{% trans "For more, go to the" %} {% trans "full thread" %} 👉
| {% trans "Facilitator" %} | {% trans "Course" %} | {% trans "Location" %} | {% trans "Team" %} |
| {{ studygroup.facilitator.first_name | title }} | {{ studygroup.course.title }} | {{ studygroup.city | title }} | {{ studygroup.team.name }} |
{% trans "The following learning circles have reports available. Click to view the report:" %}
{% trans "To see all the courses, check out the" %} {% trans "courses page" %} 👉
{% trans "Come chat with us on the" %} {% trans "forum" %} 👉
{% trans "Note: Learning circle data comes from P2PU’s registration system, survey results, and online community discussion." %}
{% if not web %}{% trans "You can also" %} {% trans "view this digest online" %}


General
Is it fast?
Yes, pretty much. Kaitai Struct is not a runtime interpreter, but a compiler — thus it imposes no additional runtime performance penalty. Code that it generates is about as fast as one can write in a particular language to parse a certain data format.
That said, note that Kaitai Struct is all about producing a clean API for parsing binary data. That means that general usage plan is:
-
Create object (structure) in memory and parse stream into it
-
Use it via API afterwards
This pattern is generally a good fit for most applications, but for some types of workloads you might want a completely different approach: acting as soon as every particular chunk of data stream is parsed based on that chunk only. This calls for an event-based parsing model (i.e. you define some code that will be executed on each particular state of the parser) and thus, probably, you’ll find that other tools like parser combinators, finite-state machine generators or even plain lexer/parser generators will suit that approach better than Kaitai Struct. In these cases, Kaitai Struct’s approach "read-then-use" might be slower than event-based "read-and-act-simultaneously" approach.
Is output of KS readable?
Yes, Kaitai Struct compiler generates very human-readable files, which can be examined with naked eye, debugged if needed, etc. For example, reading a two-byte signed little-endian integer is usually translated into something like:
field = _io.readS2Le();
Does it support writing (generation, serialization) of structures into stream, or only reading (parsing, deserialization) of structures from the stream?
So far Kaitai Struct focuses on reading (parsing) only. There are plans to support writing, but don’t hold your breath for it — it’s a pretty major change and it’ll probably happen after 1.x.
There is a relevant issue in our issue tracker, which sports a proof-of-concept compiler branch that has some writing support (Java only).
Does it support mmap
(memory-mapped) to access files?
Some languages runtimes support so-called "memory mapped" files. The idea is simple: using OS-provided mechanism, one marks up a certain memory area to reflect exactly contents of a file. After that, one can parse the file by accessing that memory area (as it would be using normal in-memory buffer).
Right now, mmap support is available:
-
In Java — by using ByteBufferKaitaiStream
-
in C# — by:
-
opening a file using MemoryMappedFile object
-
calling MemoryMappedFile.CreateViewStream method on it to get MemoryMappedViewStream
-
passing that MemoryMappedViewStream as a Stream into a KaitaiStream constructor
-
-
In all other languages — by invoking mmap operation manually (getting a pointer to in-memory buffer), and then wrapping that buffer into KaitaiStream
Note that memory-mapped files are not "the silver bullet" and have both their pros and cons, namely:
-
Organizing a memory map is relatively slow operation in comparison to simple file opening. If you want to process lots of small files, chances are memory-mapped approach would be slower just because of the per-file mmap overhead.
-
Memory-mapped files work by specifying exact file size to do a memory map operation. File size must be known a priori and must remain constant during the parsing timeframe. That means that one can’t use mmap on:
-
Files that get appended to during parsing, i.e. live packet capture stream file, live log files, etc
-
Virtual files on unknown size (such as majority of Linux procfs / sysfs files)
-
-
Concurrent access of different processes to the same file using mmap might be non-trivial.
How does it compare to …
… Python library Construct?
Actually, Construct is the closest analog to Kaitai Struct. It is also a declarative and symmetric binary parsing library, but there are significant differences:
-
Construct does both parsing and serialization, instead of only parsing (feature #27).
-
Construct is a Python-only module, instead of supporting multiple languagues.
-
Construct is "declarative" in sense that it defines data structures instead of parsing code. The structures are still defined using Python language, instead of YAML.
-
Construct aims at offering more sophisticated building blocks, including those only available on Python like Pickle and Numpy protocols, instead of most basic/common elements.
In fact, there is an open and active collaboration between Construct and Kaitai Struct. There are (currently being implemented) import/export tools, that allow translating schemes between the two frameworks.
Main documentation site: https://construct.readthedocs.io/en/latest/
… Google Protocol Buffers, ASN.1, Apache Thrift, Apache Avro, BSON, MessagePack, Microsoft Bond, Hessian, ZeroC ICE, etc?
In short: these projects and Kaitai Struct solve completely different problems.
Protobuf, ASN.1, Apache Thrift, etc, are designed to take a certain block of data in memory, serialize it, transfer to other system, and deserialize it there. Binary representation is driven by the data and encoded according to particular standard of a given protocol, which usually has a fixed representation for integers, for strings, for arrays, for dictionaries, etc. Most of these project allow generated formats to be automatically extensible, carry versioning information, automatically embed typing information of some sort, etc.
However, you can’t read an arbitrary binary format (like, for example,
.gif
, .wav
, or .zip
) with any of these tools, and they’re not
really architected to do that job.
KS approach is almost the exact opposite: given some sort of existing (or planned) binary representation, build a set of classes that the data inside this representation can be held in and generate a parser for it.
You can totally read an arbitrary binary format (or enjoy diverse library of ready-made format specifications, including .gif, .wav and .zip). To some extent, you can use KS in a task "send block of data from point A to point B", if you prefer to have more control over your serialization scheme — but, obviously, you’ll have to add features like backwards compatibility, versioning, etc, in your protocol manually.
So, to summarize:
-
"Have data in memory, need binary protocol" ⇒ use Protobuf & company
-
"Have binary protocol, need data in memory" ⇒ use Kaitai Struct
Note that you can actually use Kaitai Struct to parse most of the mentioned protocols. It will typically give you many low-level implementation details, which you might care about if you’re interested in digital forensics (DFIR) or digital preservation. You can find some of these protocols already specified under "Serialization Protocols" section in Kaitai Struct Format Gallery.
… Cap’N Proto, FlatBuffers?
Most of the arguments from the previous answer (for Google Protocol Buffers, ASN.1, Apache Thrift, Apache Avro, BSON) apply here as well. Both Cap’N Proto and FlatBuffers are not a tool for reading or writing arbitrary formats. Instead, they uses a couple of clever tricks to make serialization and deserialization more efficient (casting binary structures as blocks, not assigning individual fields), but, essentially, they emphasize content, and offer very limited control over serialization format.
In theory, Cap’N Proto encoding scheme is well documented and can be implemented in .ksy to parse Cap’N Proto encoded messages.
… GNU Bison, Yacc, Lex, Flex, ANTLR, etc?
All these tools actually work on parsing text (most usually, source code)
using context-free grammars. The core problem they solve is ambiguity of
whatever was read. For example, a single letter a
might be part of
string literal, part of an identifier, part of a tag name, etc. In most
cases, parsers that they generate have a concept of state and a fairly
complex ruleset to change states. On the other hand, binary files are
usually structured in a non-ambiguous way: there’s no need to do complex
backtracking, re-interpreting everything in a different fashion just
because we’ve encountered something near the end of the file. There’s
usually no state beyond the pointer in the stream and pointer the code
that does parsing.
… SweetScape 010 Editor, Synalysis, Hexinator, Okteta, iBored?
All these tools are advanced hex editors with some sort of template
language, which is actually pretty close to .ksy
language. One major
difference is that .ksy
files, unlike per-editor templates, can be
compiled right into parser source code in any supported language.
… Preon?
-
Both Preon and KS are declarative
-
Preon is Java-only library, KS is a cross-language tool
-
Preon’s data structure definitions are done as annotations inside
.java
source files, KS keeps structure definitions in separate.ksy
file -
Preon interprets data structure annotations in runtime, KS compiles
.ksy
into regular.java
files first, then they’re compiled normally by Java compiler as part of the project -
Preon supports unaligned bit streams, KS does not (yet)
Format specification: how to …
… use variable-length integer quantities (AKA VLQ, varint, vint, LEB128/ULEB128, 7-bit encoded int, Base-128 encoding)?
In most cases, you can just import existing implementation from our stdlib:
-
vlq_base128_be for big-endian VLQ (as used in ASN.1 BER encoding, standard MIDI file format, etc)
-
vlq_base128_le for little-endian VLQ (as used in DWARF debugging info, Google Protocol Buffers, Apache Lucene, Apache Avro, etc)
Typical usage example:
meta:
id: test_vlq
imports:
- /common/vlq_base128_le
seq:
- id: len
type: vlq_base128_le
- id: buf
size: len.value
… binary-coded decimals (BCD)?
There’s lot of variety when it comes to BCD representations:
-
Number of decimal digits is different
-
BCDs that use byte per digit or nibble (half-of-a-byte) per digit
-
Endianness: might be little or big
Kaitai Struct stdlibs include a parameterized type bcd which supports majority of these BCD versions using parameters (available in Kaitai Struct v0.8+):
-
num_digits
— integer, number of digits (valid values: 1..8) -
bits_per_digit
— integer, number of bits per digit (valid values: 4 or 8) -
is_le
— boolean, specifies order of digits: true if little-endian, false if big-endian
Typical usage example:
meta:
id: test_bcd
imports:
- /common/bcd
seq:
- id: len # In stream: 03 02 01 00 00
type: bcd(5, 8, true)
- id: buf # Buffer of 123 bytes
size: len.as_int
|
Note
|
If you don’t need to access BCD value as an integer or a string (for example, it is very often used to store serial numbers and identifiers in hardware protocols), consider just treating it as an opaque byte array. |


Awilix
A PWA to show all the movies agenda in my city, it uses Java with Spring as backend and Reactjs as frontend.
A passionate developer who really enjoys developing solutions with creativity and efficiency with more than 4 years experience.
A PWA to show all the movies agenda in my city, it uses Java with Spring as backend and Reactjs as frontend.
A photo enhancer website that mixes a style from one picture to another using machine learning running fully inside the browser using React and TensorFlowJs.
Simple project to control your work hours/overtime, it uses Ruby on Rails as backend and Angular as frontend.
Go face unlock is a script created to provide similar functionality as Windows Hello but without a IR emitters to validate you using facial regonition on linux machines. It uses PAM(Pluggable Authentication Modules) so it works on login screen, sudo and su on the terminal.


Rocket Rides was established in 1963 just after the first rocket car was tested on the Bonneville Salt Flats. A group of well heeled individuals got together and thought about how cool it would be give regular folk insanely fast rides in the rocket cars that they built. One evening over a few beers and burgers at a local diner in Yuma, AZ, four people decided to share their passion for speed with the general public.
Today Rocket Rides has grown into a hugely successful team of rocket car racers sharing their passion and building ever faster vehicles. We have access to the fastest cars on earth, and now, so do you. Jump over to our Ride Scheduler and reserve your ride today.


Request Sent...
Your request to join this game has been sent to the creator.
You will be redirected back to the game page you were originally viewing.
5
Click here if you don't want to wait.


Created by James Wang / @wangbus
var hello = function() {
console.log('Hello world!');
}
hello();
FOB without the freshness
Geek, gamer, doer, professional (I think...)
Node.js, Rails, iOS, JVM, M$
Co-Founder at HI Capacity
Founder/CTO at Slickage
Senior Software Engineer at Splashtop
What do you do on your Computer?
Fundamentals
Discrete Math =)
Algorithms
Software Engineering Introductions
Programming Languages - Java, C, C++, etc
Technologies NOW
Frameworks - Rails, etc
Working in Teams a LOT.
Goes ON AND ON
OUDL - This Thursday
Code Retreat - Aloha.rb
Rails Rumble
Node Knockout
UH Hackathon
Community Workshops
Preparation for Hackathons
Local Makerspace and Hackerspace
Sponsor for OUDL
Coding is social.
Connect with the community.
Learn from others.
Get on Github.
Getting yourself exposure.
Collaboration. You're NOT the sh!t.
Talks: Javascript, Clojure, Rails, Node, etc...
Sessions for hackathon prep.
Demo oriented meetups.
OUDL Javascript talk - March 14 @7pm at HI Capacity
Sessions for hackathon prep. Christopher Sass (Aloha.rb) and Myself
Demo oriented meetups.
Hawaii Open Data
data.honolulu.gov
Infochimps Data Marketplace - http://www.infochimps.com/marketplace
Public social networking APIs.
Life-long learning
Ever changing tech landscape
Keep up!


--- layout: archive title: Zulip Chat Archive permalink: /stream/113488-general/topic/equality.20by.20components.html ---
If my goal is of the form ⟨x, y⟩ = ⟨x', y'⟩
, is there a tactic that will replace it with two new goals x = x'
and y = y'
?
oh, congr
did it.
I'm also wondering how I could do this when the left and/or right hand side is not already a constructor application, and I want to eta expand first. (But in my actual case the right hand side was just a variable, and I could use induction
.)
Lean doesn't have definitional eta for products fyi
{% endraw %}Last updated: Apr 24 2020 at 19:02 UTC


For many methods, ignoring the result is perfectly
legitimate, but for some it is almost certainly an error. Examples of methods where ignoring
the result is likely an error include java.io.inputStream.read()
,
which returns the number of bytes actually read, and any method on
java.lang.String
or java.math.BigInteger
. These methods do not produce side-effects and thus pointless
if their result is ignored.
The calls to the following methods are inspected:
org.jetbrains.annotations.Contract(pure=true)
CheckReturnValue
javax.annotation.CheckReturnValue
Calls to methods annotated with Error Prone's or AssertJ's @CanIgnoreReturnValue
annotation are not reported.
Use the inspection settings to specify the classes to check. Methods are matched by name or name pattern using Java regular expression syntax. For classes, use fully-qualified names. Each entry applies to both the class and all its inheritors.


{% extends "body.html" %} {% block title %}{{ config.NAME }} - Home{% endblock %} {% block content %}
{{ config.NAME}} is our platform for generating and distributing our partners licence keys, discount codes and free credit.
Just login with you Platform account and you'll be able to access their wide variety of tools!


Display¶
-
class
@display.
display
(varargin)¶ DISPLAY Class for displaying standard STXM and XRF maps.
d = display()
Note, that the display class should be linked to an instance of the nanodiffraction class by using the
display.attach()
function (seehelp attach
for usage information).- The following arguments are accepted:
- axis:: [‘image’]
Default axis of images plotted
Options: Default Matlab options.
- cmap:: [{gray,inverse}]
- Default colormap
- colorbar:: [‘on’]
Adds a colorbar by default
Options: ‘on’|’off’
- caxis:: [‘auto’]
- Automatic color scaling by default. Another useful option is to use the helper function autoc which scales to the 5 - 95 percentile.
- xlabel:: [‘’]
- Standard x-label.
- ylabel:: [‘’]
- Standard y-label.
- zlabel:: [‘’]
- Standard z-label.
- It contains the following functionality:
- add_circle():
- adds circles at certain q_r to the diffraction pattern
- add_line():
- adds a vertical line to a SAXS curve
- add_quiver():
- superimposes a PCA result with quiver lines indicating the orientation of the scattering of the structure orientation.
- autoc():
- Auto-contrast based on the 5% percentile.
- autonorm():
- Normalizes a distribution (z-transform).
- azimuthal_colormap():
- Several colormaps to plot phase angles are available.
- composite():
- displays a composite image.
- diffraction():
- shows a diffraction pattern
- imlap():
- processes an image and then displays it on a log. scale.
- image_overlay():
- Overlays an image with a transparent second image.
- saxs():
- shows one or more 1d saxs curves
- scalebar():
- Adds a scalebar (in pixel units) to an image.
- show_location():
- Highlights a scan point in a map based on its linear index.
- stxm():
- displays darkfield images
- pca():
- shows a darkfield with arrows superimposed to indicate the director of the anisotropic field
Copyright 2017 Institute for X-ray Physics (University of Göttingen)
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ‘’), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
add_circle
(qCircles, varargin)¶ ADD_CIRCLE Superimposes circles on a diffraction pattern. Multiple circle radii can be given to the function. The radii are expected in units of rec. nanometers.
add_circle(qCircles, opts)
- The following arguments are accepted:
- qCircles: [] (required)
- One-dimensional array of circle radii in units of the reciprocal wavevector (inverse nanometers).
- opts: [see default values below]
Structure that can contain the following fields. Note that all fields are optional. Default values that are otherwise used are given as usual in angle brackets below:
- circleColor:: [black]
- Color of the circles to be plotted. Any default Matlab color can be chosen.
- wedge:: [0 360]
- One-dimensional array of circle radii in units of the reciprocal wavevector (inverse nanometers).
Example
See the following example for help:
d = display(); e = nanodiffraction(); frame = e.read(1); d.diffraction(frame); d.add_circle([0.2 0.6 1.2],'white');
- Output arguments:
- This function does not return any arguments.
-
add_line
(qr_values)¶ ADD_LINE plots a vertical line at a specific location given in units of the reciprocal wavevector (inverse nanometers). This function is used to plot vertical lines in SAXS plots. The vertical lines run through the entire y-range.
add_line(qr_values)
The following arguments are supported:
- qr_values: [] (required)
- A one-dimensional vector of values in units of inverse nanometers. Each entry specifies the location of a vertical line that is superimposed onto the current plot.
Example
See the following example for help:
d = display(); d.saxs(some_saxs_data); d.add_line([0.2 0.6 1.2]);
- Output arguments:
- This function does not return any arguments.
-
add_quiver
(orientation, varargin)¶ ADD_QUIVER Adds quiver lines onto an image, based on the orientation.
add_quiver(orientation, opts)
- The following arguments are supported:
- orientation: [] (required)
- 2d-array that contains angles in degrees confined to the interval [-90 90].
- opts: [see default values below] (optional)
Structure that can contain the following fields. Note, that all fields are optional. Default values that are otherwise used are as used given in angle brackets:
- sampling: [1]
- plot quiver lines every n-th pixel/scan point.
- scale: [0.1]
- length of quiver lines.
- selection: []
- display quiver lines only on selected scanpoints. selection is a 2d logical array.
- dir: [‘v2’]
- Can either be set to ‘v2’ or ‘v1’ where ‘v2’ denotes the fiber direction and ‘v1’ the scattering direction, respectively.
Example
See the following example for help:
d = display(); d.add_quiver(orientation,struct('sampling',1,'scale',0.1));
- Output arguments:
- This function does not return any arguments.
-
add_scalebar
(sl_pixel, varargin)¶ ADD_SCALEBAR adds a scale bar to the current figure.
add_scalebar(sl_pixel, opts)
- The following options are accepted:
- sl_pixel: [] (required)
- Scale bar length in pixel units.
- opts: [see default values below] (optional)
Structure that can contain the following fields. Note, that all fields are optional. Default values that are otherwise used are as usual given in angle brackets:
- sb_height: [0.2]
- height of the scalebar in figure units.
- margin_right: [0.05]
- right margin of the scalebar in figure units.
- margin_bottom: [0.05]
- bottom margin of the scalebar in figure units.
Example
See the following example for help:
d = display(); d.stxm(some_map); d.add_scalebar(100); % scale bar length = 100 scan points * 2 µm steps
- Output arguments:
- This function does not return any arguments.
-
add_title
(varargin)¶ ADD_TITLE Adds a title to the image that includes the caxis range and the length of a scalebar.
add_title(opts)
- The following arguments are supported:
- opts: [see default values below] (optional)
Structure that can contain the following fields. Note, that all fields are optional. Default values that are otherwise used are as used given in angle brackets:
- limits: [auto]
- Per default choses the limits of the current axis. Otherwise, a two-element vector with a range can be used, e.g. [1 2].
- sb_len: []
- Length of the scale bar in µm.
- subtitle: [false]
- The information can be plotted as a regular title (false, the default) to a figure or subplot or can be inserted as an xlabel (true).
Example
See the following example for help:
d = display(); d.add_title(struct('sb_len',5,'subtitle',true));
- Output arguments:
- This function does not return any arguments.
-
attach
(nanodiffraction_handle)¶ ATTACH Attaches a nanodiffraction-module to this class.
attach(nanodiffraction_handle)
- The following arguments are supported:
- files_handle: [] (required)
- Handle to a files-module.
Example
See the following example for help:
e = nanodiffraction(...); d = display(...); d.attach(e);
- Output arguments:
- This function does not return any arguments.
-
autoc
= u'@(im) caxis([prctile(reshape(im,1,[]),5) prctile(reshape(im,1,[]),95)])'¶ autocontrast
-
autonorm
= u'@(im) (im - mean(reshape(im,1,[])))/(std(reshape(im,1,[])))'¶ autonormalization
-
azimuthal_colormap
(varargin)¶ AZIMUTHAL_COLORMAP Returns a colormap suitable for orientation visualization. Note, that by default, hsv is used as colormap, however, the more uniform colormap by Peter Kovesi is recommended.
azimuthal_colormap(colormap_name)
- The following arguments are supported:
- colormap_name: [‘hsv’] (required)
The following colormap names are currently implemented:
‘hsv’: default HSV colormap ‘pmkmp’: based on the matlab package ‘Perceptually improved colormaps’ by Matteo Niccoli and the adaptation by Mike Bostock (https://bl.ocks.org/mbostock/310c99e53880faec2434) (https://github.com/d3/d3-scale) ‘isoAz’: uses pmkmp ‘peterkovesi’: Based on “Peter Kovesi. Good Colour Maps: How to Design Them. arXiv:1509.03700 [cs.GR] 2015”
Example
See the following example for help:
d = display(); d.stxm(some_stxm_map); d.remove_axis(); cmap = d.azimuthal_colormap('pmkmp'); colormap(gca,cmap);
- Output arguments:
- new_map:
- Colormap based on the choice made using the colormap name.
-
composite
(comp, p)¶ COMPOSITE shows a collection of diffraction patterns as a composite with default styling.
composite(comp, p)
- The following options are supported:
- composite: [] (required)
- A two-dimensional composite image.
- p: [see default values below] (required)
Parameters that were used for composite calculation. p is obtained as a second argument from e.calculate_composite(). It can also be defined manually. p is a structure that can contain the following fields:
- Ny: [] (required)
- Number of pixels along the horizontal dimension of a single frame.
- Nz: [] (required)
- Number of pixels along the vertical dimension of a single frame.
- imsY: [] (required)
- Number of images displayed along the horizontal dimension of the composite image.
- imsZ: [] (required)
- Number of images displayed along the vertical dimension of the composite image.
- yCrop: [1 obj.scan.SNy] (optional)
- Description. This value is optional, but useful for future reference.
- zCrop: [1 obj.scan.SNz] (optional)
- Description. This value is optional, but useful for future reference.
- ySkip: [1] (optional)
- Description. This value is optional, but useful for future reference.
- zSkip: [1] (optional)
- Description. This value is optional, but useful for future reference.
- correction: [‘off’] (optional)
- Description. This value is optional, but useful for future reference.
- emptySub: [‘off’] (optional)
- Description. This value is optional, but useful for future reference.
- empty: [] (optional)
- Description. This value is optional, but useful for future reference.
- heal: [‘off’] (optional)
- Switch that toggled healing on or off for the calculation of the composite image. This value is optional, but useful for future reference.
- healmask: [] (optional)
- Mask that has been used for healing of the diffraction patterns. This value is optional, but useful for future reference.
- binning: [] (optional)
- Description. This value is optional, but useful for future reference.
- detRoiY: [] (optional)
- Description. This value is optional, but useful for future reference.
- detRoiZ: [] (optional)
- Description. This value is optional, but useful for future reference.
Example
See the following example for help:
e = nanodiffraction(<some settings here>); e.set_scan_info(<some settings here>); [comp,p] = e.calculate_composite(... struct('ySkip',4,'zSkip',4)); d = display(); d.composite(comp,p);
- Output arguments:
- This function does not return any arguments.
-
copy
()¶ COPY Makes a copy of a handle object. This keeps track of all the given parameters so that multiple instances of a display module can be used.
new_instance = copy(display_object)
The following arguments are supported:
- display_object: [] (required)
- This function requires a display object that should be copied.
Example
See the following example for help:
d_generic = display(); d_saxsdata = copy(d_generic); d_waxsdata = copy(d_generic);
- Output arguments:
- new_instance:
- A copy of the initial display_object.
-
diffraction
(data, varargin)¶ DIFFRACTION Displays a diffraction patterns with pre-defined settings. Simplifies the correct addition of labels to the x- and y-axis of the figure. By default, diffraction patterns are shown in log-scale and display in grayscale (a linear scale that does not highlight any particular q-range).
diffraction(data, opts)
- The following arguments are supported:
- data: [] (required)
- A two-dimensional diffraction pattern. By default, this diffraction pattern is automatically processed to be in accordance with the currently active settings for a detector ROI and a binning factor. Processing can however be switched off using the second optional argument ‘opts’.
- opts: [see default values below] (optional)
Structure that can contain the following fields. Note, that all fields are optional. Default values that are otherwise used are as usual given in angle brackets:
- process: [‘on’]
- Either ‘on’ or ‘off’. If activated (‘on’), then data of the size of a raw detector frame is expected and the data will be automatically binned and cropped based on the detector roi and binning settings
- qRange: [-max(max(e.qr)) max(max(e.qr))]
- Lower and upper limit for the detector q-range to be plotted on the axis of the figure. Typically, the full q-range of the detector is used. The q-range of the currently linked nanodiffraction object (shorthand: e) is used for this purpose.
- qSteps: [round((2*max(max(obj.exp.qr)))) / 10]
- Distance between ticks in units of the radial wavevector transfer. The q-range of the currently linked nanodiffraction object (shorthand: e) is used for this purpose.
- alpha: []
- A two-dimensional alpha map.
Example
See the following example for help:
d = display(); e = nanodiffraction(); frame = e.read(1); d.diffraction(frame,struct('process','off','qSteps',5);
- Output arguments:
- This function does not return any arguments.
-
image_overlay
(im1, im2, transp)¶ IMAGE_OVERLAY Overlays two images. The second image is placed on top of the first image, and the transparency channel of the second image can be tuned for overlay. Note, that the images should be given in rgb color. To create rgb images use e.g.:
rgbimage1 = ind2rgb(round(mat2gray(data)*63 + 1),gray);or for a single color overlay
rgbimage2 = ind2rgb(ones(256)*16,gray);a colormap can be defined by e.g.:
d = display(); testColormap = d.single_hue_colormap(265,0.4,gray); ``image_overlay(image1, image2, transparency)``
- The following arguments are supported:
- image1: [] (required)
- Base image.
- image2: [] (required)
- Overlay image.
- transparency: []
- Transparency of image2. Values should range within the interval (0,1).
Example
Example is missing.
- Output arguments:
- This function does not return any arguments.
-
imlap
(frame)¶ IMLAP Displays a detector image in logscale. The detector image is hearby automatically processed, based on the currect setting of the detector ROI and binning factors.
imlap(frame)
- The following arguments are supported:
- frame: [] (required)
- Detector image. The image should have identical dimensions as the detector.
Example
See the following example for help:
d = display(); e = nanodiffraction(); frame = e.read(1); d.imlap(frame);
- Output arguments:
- This function does not return any arguments.
-
lims
= u"@(xlow,xhigh,ylow,yhigh) set(gca,'XLim',[xlow xhigh],'YLim',[ylow yhigh])"¶ wrapper for limits
-
p
= u'struct'¶ holds parameters for plotting
-
pca
(angle, varargin)¶ PCA Creates a visual representation of the map of orientations. By default, angles are visualized using color, however, lines can be superimposed. Color can also be weighted by saturation.
pca(angle, opts)
- The following arguments are supported:
- angle: [] (required)
- Map of angles that is e.g. output from a PCA analysis.
- opts: [see default values below] (optional)
Structure that can contain the following fields. Note, that all fields are optional. Default values that are otherwise used are as usual givin in angle brackets.
- dir: [‘v2’]
- By default, the input angle represents the orientation of the diffraction streak/modulation/peak. However, by default, the angle is rotated by 90 degrees to reflect the orientation of the fibre axis. Using the ‘dir’ option, one can choose ‘v2’ or ‘v1’ as options that indicate which eigenvector direction should be used.
- quiver: [‘off’]
- If set to ‘on’ quiver lines will be superimposed on each data point to indicate fibre or streak orientation. Note, that default quiver arguments are used. For a more custom quiver display, please use display.add_quiver.
- alpha: []
- alpha can be given a map of alpha values that can be used for mapping color saturation to another parameter map. If an alpha map is given, it will be automatically used.
Example
See the following example for help:
d.display(); d.pca(some_orientation_map,struct('quiver','on');
- Output arguments:
- This function does not return any arguments.
-
remove_axis
(varargin)¶ REMOVE_AXIS removes the axis and ticks from the active figure.
remove_axis()
The function does not require any arguments.
Example
See the following example for help:
d = display(); d.stxm(some_map); d.remove_axis();
- Output arguments:
- This function does not return any arguments.
-
round_limits
(varargin)¶ ROUND_LIMITS rounds the caxis limits of the current figure to a given decimal digit level:
e.g.: round(1342,-3) => 1000e.g.: round(0.042,2) => 0.04round_limits(level)
- The following arguments are supported:
- level: [1] (optional)
- The rounding level. The same level as used in the Matlab-round function.
Example
See the following example for help:
d = display(); d.stxm(some_map); d.round_limits(-3);
- Output arguments:
- This function does not return any arguments.
-
saxs
(saxsresult, varargin)¶ SAXS Creates a loglog or semilog plot of the one-dimensional structure factor I(qr) with default labeling of x- and y-axis.
saxs(sf, opts)
- The following arguments are supported:
- sf: [] (required)
- Structure factor, given as a structure that contains at least the fields “dat_1d” and ‘’. Both fields should contain a one-dimensional array that should have the same lengths. A cell array of structures is also supported if multiple one-dimensional saxs curves should be plotted.
- opts: [see default values below] (optional)
Structure that can contain the following fields. Note, that all fields are optional. Default values that are otherwise used are as usual given in angle brackets:
- limits: []
- Limits [xlow xhigh ylow yhigh]. By default, this is set to ‘’.
- pixel: [‘off’]
- If the structure factor should be plotted as a function of detector pixel, ‘pixel’ should be set to ‘’. In this case, the SF should contain a field ‘’.
- mode: [‘semilogy’]
- Either ‘semilogy’ or ‘loglog’ are accepted.
Example
See the following example for help:
d = display(); d.saxs({my_1d_averaged_data,... struct('dat_1d',some_1d_data,'qr',some_qr_axis)},... struct('mode','loglog'));
- Output arguments:
- This function does not return any arguments.
-
show_location
(scanpoint, varargin)¶ SHOW_LOCATION highlights the location of a given scanpoint in a two-dimensional parameter map.
show_location(scanpoint, opts)
- The following options are supported:
- scanpoint: [] (required)
- A single index, corresponding to the location in the scan. Note, that the index starts with 1 in the top-left corner of the scan.
- opts: [] (optional)
Structure that can contain the following field. Note that currently, only a single field can be set, which is likely to be made more flexible in the future.
- dir: [‘row’]
- Specifies the direction along the single index should be incremented. Either ‘col’ or ‘row’ are allowed.
Example
See the following example for help:
d = display(); imagesc(rand(60,21)); d.show_location(150,struct('dir','row'));
- Output arguments:
- This function does not return any arguments.
-
stxm
(data, varargin)¶ STXM plots parameter maps with with pre-defined settings.
stxm(data, opts)
The following options are supported:
- data: [] (required)
- Parameter map.
- opts: [see default values below] (optional)
Structure that can contain the following fields. Note, that all fields are optional. Default values that are otherwise used are as usual given in angle brackets:
- sampl: [100]
- A tick is added to every N-th pixel/scan point.
- scale: [1]
- Length of one pixel/scan point in units ‘unit’.
- unit: [mm]
- Either ‘um’ or ‘mm’.
- alpha: []
- An alpha/transparency map, values of the map should range within (0,1).
Example
See the following example for help:
d = display(); d.stxm(data,struct('sampl',100,... 'scale',10,... 'unit','um'));
- Output arguments:
- This function does not return any arguments.


Tennis: Murray a doubt for Britain's clash with Spain
British Davis Cup captain said Andy Murray may be left out of Saturday's Davis Cup semi-final against Spain as the former world number one is not in his best condition.
MADRID: British Davis Cup captain said Andy Murray may be left out of Saturday's Davis Cup semi-final against Spain as the former world number one is not in his best condition.
The 32-year-old Murray, who returned from hip surgery in June, made heavy weather of beating 79th-ranked Dutchman Tallon Griekspoor on Wednesday in Britain's opening group match.
But he did not feature the next day against Kazakhstan and was again only cheering on from the sidelines as Britain beat Germany 2-1 to reach the semi-final by beating Germany on Friday.
Kyle Edmund, who has returned to form after a slump, has won both his singles in place of Murray while Dan Evans secured the winning point by beating Germany's Jan-Lennard Struff 7-6(6) 3-6 7-6(2) at La Caja Magica on Friday.
Murray, who almost single-handedly took Britain to Davis Cup glory in 2015, admitted on Wednesday he had put on 5 kg (11 lb)since winning the European Open in Antwerp last month - his first title since returning to action.
"I thought that where Kyle and obviously Evo are at is ahead of where Andy's just now," captain Leon Smith said when asked whether Murray would return for the semi-final.
"That's where it is in terms of how he's feeling and whatnot. And when you've got two very, very good players like Kyle and Evo that are ready to go, then that's what we do.
"He could play, but I wouldn't say he's in his best condition. He says that's how he's feeling."
Evans, 29, is now the highest-ranked British player at 42nd but lost his opening two matches in Madrid, having won the first set. Struff pegged him back on Friday but Evans hung tough.
"The last two days for me after losing was pretty tough," Evans said. "With Kyle doing a great job, it made it way easier for me to be in such a tight situation tonight."
His next task is likely to be trying to stop Rafael Nadal in front of a Madrid crowd on a Saturday night.
"If it happens I'll go on the court believing I can win otherwise there's no point in walking on," Evans said.
(Reporting by Martyn Herman; Editing by Sandra Maler)


TimeBar
This is a jQuery plugin which enables selecting a period of time on a bar. I needed a simple component which allows the user to click a start and end time,
and I could not find a component that suited my needs, therefor I have build this component.
On this page you will find some documentation and examples (view source to see how it works). Data is filled inside the last node of the bar. When submitted to the server you only need to grab the array which is named: "arrTimeBar[ nodeId ]".
On this page you will find some documentation and examples (view source to see how it works). Data is filled inside the last node of the bar. When submitted to the server you only need to grab the array which is named: "arrTimeBar[ nodeId ]".

A workweek with the days of the week, where you can assign an activities.
Documentation
We will show you briefly: Setup, Options, Methods and dependencies. Furthermore you can find al this example material inside this page as well, just view the source!
Setup
$("#bar3").TimeBar({ strTimeStart : '9:00', strTimeStop : '18:00', intTimeSteps : 5, intOffset : 20, strTimeSelectTitle : 'Kies tijd:', strFrom : 'van', strTill : 't/m', strHour : 'u', intReadOnly : 1, }); // Do some tricks with classes to show different activities when we draw the periods: $('#bar3').TimeBar('strEnabledClassName','fitness'); $('#bar3').TimeBar('Load','10:0','12:30'); $('#bar3').TimeBar('strEnabledClassName','running'); $('#bar3').TimeBar('Load','13:0','16:00');
Options
| Option | Description | Values | Default |
| strTimeStart | time the bar should start | "HH:MM" | "9:00" |
| strTimeStop | time the bar should end | "HH:MM" | "18:00" |
| intTimeSteps | pixels used to step into the next period | 0 .. 60 | 10 |
| intOffset | offsset on begin & end in pixels | 0 .. x | 10 |
| strDirection | Direction the bar is drawn | "horizontal", "vertical" | "vertical" |
| strTimeSelectTitle | Textual string to announce "Selection of time" in tooltip | "Select your time:" | "Select time:" |
| strFrom | Textual string to announce "from" (start time) | "Start Time from" | "from" |
| strTill | Textual string to announce "till" (end time) | "End at time" | "till" |
| strHour | Textual string to announce "h" (shorthand for hour) | "h" | "h" |
| intReadOnly | boolean value to toggle readonly On / Off (readonly means no- editing) | 1 / 0 | 0 |
| intZoomFactor | Zoomfacor to enlarge / shrink the drawing of the bar | < 1 || > 1 | 1 |
| strEnabledClassName | Name of an additional class to use when drawing a period | "my_fitness_class_name" | "" |
| arrIndicators | An array with minutes where to show the indicator lines | "['00','15','30','45']" | "['00']" |
| arrIndicatorTexts | An array with minutes where to show the TEXT on the indicator lines( arrIndicators setting with equal minutes is mandatory) | "['00','30']" | "['00']" |
Methods
| Name | Description | Get / Set | return value | argument 1 | argument 2 |
| Dump | Dump the data from the TimeBar in an array of named arrays with names: from, till, type. | Get | [ ["from" = "10:00", "till" = "15:00", "type" = "fitness"], [...] ] |
||
| Load | Load a period into the TimeBar (using 2 argument strings: from / till) | Set | void | "HH:MM" | "HH:MM" |
| Load | Load a period into the TimeBar (using 1 argument array: ) | Set | void | [ ["from" = "10:00", "till" = "15:00", "type" = "fitness"], [...] ] |
|
| Clear | Clear the drawing on a TimeBar | Set | void | ||
| strEnabledClassName | Name of an additional class to use when drawing a period | Set | void | "fitness" | |
| strEnabledClassName | What is the last Name of an additional class used drawing a period? | Get | the classname |
Dependencies
The TimeBar class relies on "tooltipX". This is a customized tooltip and is included in the download as well.
You can customize this to your needs by modifying the css from "css/TimeBar.css".


Wind Speed Wind speeds at equator are lowest. As one moves away from the equator the wind speeds increase. Comparing, the wind speed are high in the northern hemisphere over sourthern hemisphere.


Learn more about the history of the game, the creators of this site, view high scores, or just start playing already damnit!