GenCycle v0.1.0 GenCycle View Source
An event-driven task manager to design GenServer lifecycles.
The recipes model applies to any process that wants to execute independent tasks (in parallel) without becoming cluttered with task logic and having a state machine of executed tasks.
Recipes are wrappers for simple actions to be performed in parallel.
Each action runs in a supervised task and recipes can be pipelined via events.
Processes like GenServer can import the RecipeManager
to implement the recipes model.
Creating a Recipe
Recipes lie in lib/recipes
. To start create a new file there, e.g., trace_recipe.ex
.
First step is to tell it to follow the GenCycle.RecipeBehavior
:
defmodule GenCycle.Recipe.MyRecipe do
@moduledoc false
@behaviour GenCycle.RecipeBehavior
end
If you check the RecipeBehavior
you will see it requires the following callback function:
@callback start(state, event, message, return) :: :noevent | {:event, event, message} | {:event, event, message, return}
So lets implement it:
defmodule GenCycle.Recipe.MyRecipe do
@moduledoc false
require Logger
@behaviour GenCycle.RecipeBehavior
def start(_state, _event, _message, _return) do
Logger.info "Invoked MyRecipe.start"
:noevent #return this if there isnt another recipe waiting for this to conclude
end
end
Note the four parameters received:
- state - copy of the owner’s state when this got invoked.
- event - event that triggered the start method (e.g.,
:event
) - message - event message that triggered the start method (e.g.,
:done
) - return - if the triggering event passed a return value, then it is passed to start via the return parameter. Otherwise the parameter is set as :no_return. We will discuss this later.
Now we have a recipe ready to be registered. Recipes run whenever the event/message combination they are registered to is triggered. In this case we want them to run whenever an app is put foreground.
Note that putting an app in the foreground is in itself a recipe.
Unlike our MyRecipe
, the ForegroundRecipe
launches an event upon conclusion.
To do so it returns {:event, :foreground, :done}
.
This is how recipes are pipelined between them, via returned events.
So lets register MyRecipe
to be launched on this event in the virtual_device.init1
of VirtualDevice
:
state = state |> add_recipe(:foreground, :done, Patata.Recipe.MyRecipe)
Done! Now whenever an app is put on foreground, MyRecipe
executes.
Recipe Events
With our recipe created and added via add_recipe3
(or add_recipes3
), if we want to launch it ourselves we can do it by launching the event they expect.
For the previous example it could be achieved by:
state |> launch_event({:foreground, :done})
In the case of a timed event, one could do:
state |> schedule_event(time_in_ms, {:foreground, :done})
Occasionally one might want to cancel an event, to do so scheduled events can be named. E.g.:
state |> schedule_event(time_in_ms, {:foreground, :done}, [name: foreground_event_name])
And canceled using their event name:
state |> cancel_event(foreground_event_name)
Pipelining recipes
As we have seen, recipes can wait on one another by generating their own events. E.g., by returning:
{:event, :your-event, :your-message}
and registering the recipe on that event and message/status:
state |> add_recipe(:your-event, :your-message, Patata.Recipe.YourRecipe)
Additionally state can also be passed with the events by returning four fields instead:
{:event, :your-event, :your-message, :your-state}
Two important notes:
- Both the event and message need to be matchable, i.e., something constant, either an atom or a string.
- Recipes’ start method is executed in its own task and its state and return parameters are copies and therefore any change to them is not propagated.
- Do not generate atoms automatically since these are not garbage collected. Try to reuse atoms.
Waiting for recipes
In many cases you might want to wait for a few recipes to conclude before launching a new event/recipe.
To do this we have introduced gather_events4
:
data_events = [ # List of events to be matched
{:event_one, :message_one},
{:event_two, :message_two}
]
state
|> gather_events(
data_events, # List of events to be matched
{:event_start, :message_start}, # Starts matching events from this event
{:event_out, :message_out}) # On matching all events launches this event
This function waits on the completion of group of recipes by listening to their returning events (as specified by data_events
).
It only considering events since the occurrence of a starting event (event_start
) to support repeating gathers over time.
On successfully matching all the events it launches a completion event that can be used to start other recipes.
Internally, the gather_events4
function registers a listener on all the awaited events (data_events
). Whenever one of these events occurs, a specialized recipe (GatherRecipe
) checks for the occurrence of the starting event (event_start
) in the event history and tries to match the awaited events in the subsequent events in history.
Important note:
- If your gather depends on recipes that might fail it is up to you to make sure that either the matching events occur nonetheless, otherwise the gather will never output its event.
Link to this section Summary
Functions
Returns true if an event (e.g., {:event,:status}) occurred before
Method to be invoked with GenServer state in init1, it adds the required state to run GenCycle
Launches an {event, status} that can trigger an existing recipe. If your recipe does not require any state invoke launch_event2, otherwise launch_event3 can be called, where the third argument is the state to be passed to the recipe
Link to this section Functions
Returns true if an event (e.g., {:event,:status}) occurred before.
Examples
iex> event_in_history?(state, {:new_event, :new_status}) false
Method to be invoked with GenServer state in init1, it adds the required state to run GenCycle.
Examples
def init(:ok) do
{:ok, init_recipes(%{})}
end
Launches an {event, status} that can trigger an existing recipe. If your recipe does not require any state invoke launch_event2, otherwise launch_event3 can be called, where the third argument is the state to be passed to the recipe.
Examples
def handle_cast({:launch_recipe}, state) do {:noreply, launch_event(state, {:new_event, :new_status}) end


At ByeByeBuggy, we believe that bugs are an important part of the ecosystem. Just not your home’s ecosystem. Our product provides a humane alternative to the traditional and deadly flyswatter. Using ByeByeBuggy, you can trap bugs, identify them, and then release them back into nature.


@*
* Copyright 2021 HM Revenue & Customs
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*@
@import uk.gov.hmrc.cataloguefrontend.ViewMessages
@import uk.gov.hmrc.cataloguefrontend.service.ConfigService
@import uk.gov.hmrc.cataloguefrontend.service.ConfigService.{ConfigByKey, ConfigEnvironment, ConfigSourceValue}
@import scala.collection.immutable.ListMap
@this(viewMessages: ViewMessages)
@(serviceName: String, configByKey: ConfigByKey)(implicit messages: Messages, request: Request[_])


Treatment ID: {{ treat.TreatmentID }}, Appointment ID: {{treat.AppointmentID}}, Doctor ID: {{treat.DoctorID}} Update Delete Treatment Plan: {{ treatment['TreatmentID'] }} Appointment #{{ treat['AppointmentID'] }} Patient: {{ appointment['FirstName'] }} {{ appointment['LastName'] }} Doctor: {{ doctor['FirstName'] }} {{ doctor['LastName'] }} Treatment Description: {{ treat['Description'] }}


The most important thing about a style guide is that it exists and is enforced. Consistency, even to a suboptimal standard, means that it is easy and simple to navigate a code base. Of course, we think this standard makes a lot of sense.
In order to be consistent with most exiting ActionScript codebases, we use the Adobe Flex Coding Conventions. These are the core of our style guide, and the rest of this document merely notes where we differ or expand on their guidelines.
This section defines how all elements in your code should be named, as well as some special cases for specific types of classes.
DefinitionsAbbreviations should not be used. Extremely common abbreviations, such as min or max, are okay.
AcronymsAcronyms are okay. If the acronym is treated like a word, and the first letter should be capitalized, capitalize every letter in the acronym, otherwise, leave all letters lowercase.
Component NamesAll components should have the word 'Component' appended to their name.
Event NamesAll events should have the word 'Event' appended to their name.
Callback Names and Event HandlersThe first word should always be 'on'.
There are several different ways to indicate runtime problems with the execution of the engine. This section defines the situations in which these different methods should be used. Additionally, the errors should be dispatched at the highest possible level in the call stack. For instance, a lookup method should not report that it failed to find an object. Instead, it should return null, and leave the reporting up to the calling method.
Log MessagesThese should be used to report general information about the state of the engine.
Log WarningsThese should be used to report problems that don't inhibit the engine's ability to run, but could potentially be a problem.
Log ErrorsThese should be used to report problems that could impact the ongoing stability of the engine.
ExceptionsThese should be used in situations that cannot be recovered from.


News story
PowerPoint presentations from speakers at the Higher Education Admissions Seminar
The HE Admissions Seminar was held on Tuesday 8 March at The Royal Society, St James’s, London. The presentations used on the day are available below.
Richard is the Associate Director for General Qualifications Policy at Ofqual. He has been involved in GCSE and A level reform for three years and has worked for Ofqual for seven years, previous to which he worked for QCA.
AS and A level reform - Richard Garrett, Ofqual ( MS Powerpoint Presentation , 1.13MB )
Education Manager for Qualifications and Skills, CCEA.
A levels in Northern Ireland - Clare McNicholl, CCEA ( MS Powerpoint Presentation , 574KB )
Emyr joined Qualifications Wales in September 2015 as Associate Director, General Qualifications. He previously worked in Regulatory Implementation and General Qualifications Policy for Ofqual.
Changes to AS and A levels in Wales - Emyr George, QW ( MS Powerpoint Presentation , 88.6KB )
Rosalind is responsible for the Royal Society’s work in education policy in schools and universities. This includes work on education research, curriculum and qualifications, political engagement and HE. Before joining the Royal Society in 2008, she worked with science museums and centres on informal learning projects. Her academic background is in space physics research.
Science practicals and wider research - Rosalind Mist, The Royal Society ( MS Powerpoint Presentation , 1.14MB )
GCSE reform - Richard Garrett, Ofqual ( MS Powerpoint Presentation , 1.43MB )
GCSEs in Northern Ireland - Clare McNicholl, CCEA ( MS Powerpoint Presentation , 489KB )
Changes to GCSEs in Wales - Emyr George, QW ( MS Powerpoint Presentation , 72.8KB )
Resits - Richard Garrett, Ofqual ( MS Powerpoint Presentation , 620KB )
Julie is the Acting Executive Director for General Qualifications. She joined Ofqual in December 2008 and currently works on a range of regulatory initiatives, including to remove the QCF regulatory arrangements and on Ofqual’s role in regulating apprenticeship assessments. Julie’s previous roles include as Head of Education and Training for the Law Society of England and Wales and as Director of Development for the Quality Assurance Agency for Higher Education.
Enquiries about Results - Julie Swan, Ofqual ( MS Powerpoint Presentation , 703KB )
Vocational Qualifications and HE entry in England - Jeremy Benson, Ofqual ( MS Powerpoint Presentation , 2.39MB )


Update Course Details
×
Course ID
Course Name
Lecture ID
Class Size
Start Date
Duration
Course Status
Credit
Delete Course
×
Are you sure you want to delete these Records?
This action cannot be undone.


Frustration at work!
What I could have done?
9th May, 2015
The last major conflict, I was forced to confront, happened with my previous employer. I use to be on a technical analysis who was part of a team in-charge of the network connections and making sure the application was running without any issues.
As part of my contract I was told that I would be working nights and weekends once or twice a month. I agreed to this arrangement but I did not expect that instead of working once or twice a month it would be two to three times a week. It was ok at first because I thought it would be only during the busy part of the year even though I did not get any compensation of working overtime. This however was not the case. I got upset after this happened for a month straight and I decided to confront my manager about the problem. He agreed with my situation and told me that he was in the same boat as me and that he would submit my complaint to the team director.
The one thing I learned from this conflict situation was that I needed to speak up when I don't feel that something is right. I should have gone to my manager much before and I could have resolved my issues with what was expected of me. I also felt that I need to practice improving my volume when I speak so that I am better heard.


Former After School member Kaeun to kick off her acting career in upcoming web drama, airing next year
by beansssFormer After School member and former 'Produce 48' contestant Kaeun will be kicking off her acting career soon, after being cast as the female lead of a new web drama airing next year!
Kaeun has been cast in the role of Lee Ri Ah in a web drama titled 'Another Peaceful Day in Secondhand Nation' (literal translation). The romantic comedy revolves around individuals who buy and sell goods on an online secondhand sales/exchange platform. Kaeun's character Lee Ri Ah is a popular beauty surrounded by men, but she isn't quite interesting in serious dating.
Back in July of this year, Kaeun left her debut label Pledis Entertainment to seek new opportunities under a new agency, High Entertainment. Look forward to Kaeun's web drama 'Another Peaceful Day in Secondhand Nation', airing in 2020!


Hey there !
Hailey is an open-source software, based on OpenAI's GPT2.
It takes your thoughts and make a story out of it. It is really helpful for those who want their thoughts to be noted down but apparently they aren't that good with writing skills.
Also It'll help my 12 year old self with the language homework :)


Ordinary Citizen, Extraordinary Passion
It was when Jacob started to joke about the ulcer he had — he had nicknamed it something like “Ulcy” — that the romance of cuisine-as-career finally became more than just a televised drama for me.
Like Jim Carrey as Andy Kaufman, laughing off his own mortality as though he were method-acting rather than living, Jacob’s grin and chuckle belied a deeper pain.
He was dying for his art, quite literally.
It may sound cliché, but all too often we downplay the authenticity of real-life experiences deemed “too melodramatic” when in fact those around us live the lives we see on screen every day.
This first drama in particular belongs to executive chef Jacob Wigglesworth. Together with sous chef brother Simon and head-of-service beau Sara, the three are headlining at The Citizen, one of downtown Toronto’s hot spots and a poster child of the city’s ongoing “cuisine over clubbing” revolution.
This drama is admittedly a personal one. I’ve history with the Wigglesworth brothers. The Wigglesworths and Carons, playing at Clintons and Bushs, hail from the same pre-secondary teenage alma mater.
Simon and I are the same age and shared many classes. Jacob was a year younger, and my brother years younger still, but the four of us criss-crossed paths throughout high-school and thereafter in a way that underscores how little the age-gap divide matters post-graduation.
That only proved more true as we spent Tuesday night catching up on location at owner Johnny’s venue, with little effort and lots of laughs.
It was with great pleasure that Jacob walked me through not only his life but his menu. Here I was able to see what all of those years of watching the UK’s Kitchen Nightmares and reading Kitchen Confidential were really worth. As you might expect, not a whole lot.
I’ve never worked in the food service industry; my family was one scornful of both restaurants and the idea of paying others for food preparation. We were raised in a house where eating out was an annual, Mandarin rarity.
And so, because of that upbringing, complemented by a relevant career shift ahead, I sought out in earnest the opportunity to learn of that which I have so taken for granted since the dawn of my rebellious dining out deluge, which has been a bi-daily affair for me since I left mom for university.
Jacob began my lesson not by showing me his menu, nor by demonstrating his excellent spoon-smearing and glaze-clad reductionist skills. Instead, he took me through his inventory management process.
“Each night, I’ll come into the system here”, he explained as he bandied around the different screens of his inventory management tool. “I go through the entire menu and punch in how many of each dish we’re up for selling based on what we have prepped and what’s on-hand raw.”
One of the servers encroached as he tutored me. I looked to her as I inquired about her role.
“So I imagine it’s your job to manage expectations and the customer around what meals are gone for the night should something get 86'd?”
(I’d googled some restaurant terms before I went to visit.)
“You got it,” he responded with the enthusiasm of an earnest teacher watching his ignorant student grow slightly less so.
Perhaps what was most fascinating, though, was his segue into his victories in wholesale costing and retail pricing. He rattled off the profit margins of and the strategies behind his dishes as though they were high scores; he cared just as deeply about the business of cooking as he did the art.
The differentiating factor between a simple cook and an owner-operator of the future, my ignorance suggested.
Of course, it didn’t take long before he was pulling me toward the kitchen and through the stations, and the menus, and the machine he built, a Rube Goldberg of gouda and guacamole and git-’er done.
In line with the stereotype TV taught me, his team stood to attention ever-so-perceivably as he burst into the back and roused his team in my name as they celebrated a friendly coming to visit.
Simon was quick to approach as I saw him for the first time, and he greeted me with a strong shake and a smile. The prospect of the six additional ulcers in the making notwithstanding, the general mood of the kitchen was bright.
 But it was with his girlfriend Sara’s techniques, demeanour, and candor that I was the most taken.
After a stint in the kitchen, I was again led to the front-of-house bar, where Jacob handed me off to Sara. She did not hesitate, and in seconds we were off to learn the front-of-house operations.
Driven in her desire to educate me, she took me through screen after screen and workflow after workflow.
As Jacob was to his menu so too was Sara to the workflow for her staff. She talked me through the nuances of how she’d configured everything in order to streamline as much of the process for her staff as possible.
And like Jacob, she had no time for dawdling. She flung me around the restaurant from section to section, scenario to scenario, with a latent trust that suggested I could keep up with her supersonic pace, which was flattering if not fear-inducing.

I was left with an impression of her as the consummate and confident leader, which was underscored by the stream of interruptions from servers and the general manager alike. Yet, she aided them in running the restaurant whilst never leaving my side nor slowing her lesson plan’s stride.
The romantic image of back-of-house strategist and figurehead with front-of-house commander-in-chief was not lost on me, nor the writer in me. I was smitten with the two of them, and, truthfully, the operation as a whole.
After a tough day of school, I settled in for a meal. And, as should have been expected by that point, the team at Citizen saw fit to fill my stomach the way they’d filled my mind.
Jacob joined my wife and I and, playing more to his traditional role, proceeded to walk us through our meal while Simon and team in the back worked diligently to produce that which Jacob was quick to pass back the credit for.
We started with an opening salvo of Toronto-mandated tacos, including a shrimp and pulled chicken pairing that lived up to the street cred of a city obsessed with the form factor. The third taco, though, gave he and I pause.
Having a weakness for my beloved “Kung Pao Cauliflower” at my equally beloved Thoroughbred, I went in with hushed anticipation for Jacob’s crispy cauliflower offering. He’d before him a mountain to climb for my affection.
I’m far from an objective eater; my wife calls me an “emotional” one, and I’d happily trade the to-die-for food of a shitty-but-trendy restaurant (increasingly commonplace in Toronto) for the superior service and handiwork of an actual human being.
Thankfully, I was left satisfied with its initial crunch and tingly finish, born from the unique merquén spice.
“Oh man, you’ve got to hear this,” Jacob squealed with glee as he saw my face turn from normal to bruh in celebration of his work. “So this spice, we’re one of the only places in Toronto working with this spice now.”
“Huh, that’s interesting,” I responded. “What’s the deal?”
“We found out about it at this chef’s battle thing.  It’s called ‘The Cartel’, and it was one of the secret ingredients from a previous night. I’m on tap to compete there soon. The dude who sourced it was trying to sell it around, and we jumped right on it!”
Underground chef battles. Rare Chiliéan spice blends. Supply-chain shenanigans. It was a lot to take in, and before I could even begin to process it all, the next dish came — and, with it, another story.
Topped with shredded carrot that was paired with sweet poached pear and savoury scallion-studded hoisin sauce, the duck flatbread serenaded us with its salty-sweet symphony.
“Dude, you don’t even understand. We go through this crazy process with the duck that takes 36 hours to get from prep to your plate.”
He proceeded to walk me through some of the more obtuse but inventive ways his kitchen works with the ingredients to produce the flavours we enjoyed. Fermentation, for example, was a technique they were increasingly leaning on to achieve different results from simple ingredients.
All those episodes of “Cooked” couldn’t hammer home what Jake did for me in that moment. The flatbread I was eating took two days to make, and suddenly, it went from mere cooked food to complex fabrication.
The lot of them — Jacob, Simon, and Sara — had dazzled me, and the staff at the Citizen are due whatever success they’ve had and will have as a result of what can only be considered a young-and-hungry attempt to make a mark on a scene that is increasingly competitive and increasingly challenging.
The rest of the meal, and the night, stands in a haze of three-cheese, cornflake-topped mac and chorizo, superfood salad, deep-friend tequila shots, and from-scratch strawberry-banana sorbet.
And while the food was great, it was the fact that, in just a few hours, I’d learned so much about the business and the people in it that I found myself starving — not just for more of the food but for the chance to meet and learn from amazing people like Jacob and Simon and Sara.
I can’t wait to meet more food folk and hear about their stories and successes and suffering and obscure spices.
That’s exactly why I started this new blog: to profile the food and friends and families I’m setting out to meet as I dive head-first in the restaurant biz to learn and grow and appreciate.


Students+Tech
LuTech is Loyola University Chicago's student organization for technology lovers interested in the interesection of computing and social good. We host events like hackathons and workshops so the Loyola student body and our community can benefit in meaningful ways from student-developed technology projects.
We specialize in hosting student-led hackathons at Loyola - events where software developers and smart creatives come together to produce interesting projects that solve real problems. Our events in the past have focused on Chicago sustainability and local hunger issues. Our events in the future will continue to apply student ideas to real-world issues in interesting ways. Care to check out our events?
Lutech+You
LuTech is made up of thoughtful, inquisitive students and faculty at Loyola Chicago driven by a desire to help others through software, hardware, and cool tech in general. Have a hankering for helping with a side of geeky curiosity?


Jenson Button plans WEC return for hypercar era
by Jamie Klein and Rachit ThukralJenson Button, the 2009 Formula 1 world champion, wants to rejoin the World Endurance Championship for the new hypercar rules and could use a Le Mans 24 Hours LMP2 bid next year to prepare.
Button ended his SUPER GT stint after two seasons earlier this month, and said during his farewell press conference he would "definitely race in Le Mans again" because he was "very excited about the new regulations" and thought "in the future it will be a great series".
Though his sights are set on the hypercar rules that will be introduced for the 2020-21 season, he revealed he might try to return for the 2019-20 season finale at Le Mans next June.
- Boost for WEC's hypercar plan
- Peugeot to return to Le Mans with hypercar
"If I did it next year, it would be to get used to Le Mans again and just gain more experience," he told Autosport.
"Probably in LMP2, because that's the pace the hypercar is supposed to be.
"And at least you're racing in competition. Unless you're in a Toyota, you can't win [outright].
"It's going to be boring for Toyota really, no competition.
"So LMP2 is a great category and maybe that's an option. Apart from that I've got no plans at all.
"For me the direction I'd like to go is WEC in 2020-21, that season."
- 10 years since Button's F1 title
- How Brawn became Mercedes
Button contested the start of the 2018-19 WEC season with the SMP Racing LMP1 squad alongside his SUPER GT programme.
But he pulled out of the final three WEC races as he said he was finding it impossible to juggle it with his SUPER GT commitments.
SMP hired another ex-F1 driver Stoffel Vandoorne as his replacement for Le Mans, where Button's old car finished third overall.
Button said he had no regrets about skipping Le Mans even though he might have had a podium.
"You don't go to Le Mans to finish third," he said. "Fair play to [Vandoorne], he did a great job.
"But I wouldn't have stood on the podium and been happy with third.
"You know you've got no chance of winning, and third is kind of a win for you, but it's not, so it's a bit weird.
"Finishing Le Mans is good in itself. But when I get to Le Mans, I want to be in a car that can actually win Le Mans."


This application lists the current number of cases reported across the globe
Total cases reported as of today.
New cases reported since previous day


Add here all the addresses used by KrakenD to retrieve the data and if they are resolved by a service discovery:
The address where KrakenD connects to. Some valid examples can be https://myapi
, amqp://host
, <IP_ADDRESS>:25
, my.service.tld
.
Choose disable sanitization when the address string doesn't need to be checked for the protocol.


These subroutines gathers the values of the halo elements:
where:
| α, x | Subroutine |
| Integer | psb_halo |
| Short Precision Real | psb_halo |
| Long Precision Real | psb_halo |
| Short Precision Complex | psb_halo |
| Long Precision Complex | psb_halo |
call psb_halo(x, desc_a, info)
call psb_halo(x, desc_a, info, work, data)
Usage Example Consider the discretization mesh depicted in fig. 3, partitioned among two processes as shown by the dashed line; the data distribution is such that each process will own 32 entries in the index space, with a halo made of 8 entries placed at local indices 33 through 40. If process 0 assigns an initial value of 1 to its entries in the x vector, and process 1 assigns a value of 2, then after a call to psb_halo the contents of the local vectors will be the following:
| Process 0 | Process 1
| ||||
| I | GLOB(I) | X(I) | I | GLOB(I) | X(I) |
| 1 | 1 | 1.0 | 1 | 33 | 2.0 |
| 2 | 2 | 1.0 | 2 | 34 | 2.0 |
| 3 | 3 | 1.0 | 3 | 35 | 2.0 |
| 4 | 4 | 1.0 | 4 | 36 | 2.0 |
| 5 | 5 | 1.0 | 5 | 37 | 2.0 |
| 6 | 6 | 1.0 | 6 | 38 | 2.0 |
| 7 | 7 | 1.0 | 7 | 39 | 2.0 |
| 8 | 8 | 1.0 | 8 | 40 | 2.0 |
| 9 | 9 | 1.0 | 9 | 41 | 2.0 |
| 10 | 10 | 1.0 | 10 | 42 | 2.0 |
| 11 | 11 | 1.0 | 11 | 43 | 2.0 |
| 12 | 12 | 1.0 | 12 | 44 | 2.0 |
| 13 | 13 | 1.0 | 13 | 45 | 2.0 |
| 14 | 14 | 1.0 | 14 | 46 | 2.0 |
| 15 | 15 | 1.0 | 15 | 47 | 2.0 |
| 16 | 16 | 1.0 | 16 | 48 | 2.0 |
| 17 | 17 | 1.0 | 17 | 49 | 2.0 |
| 18 | 18 | 1.0 | 18 | 50 | 2.0 |
| 19 | 19 | 1.0 | 19 | 51 | 2.0 |
| 20 | 20 | 1.0 | 20 | 52 | 2.0 |
| 21 | 21 | 1.0 | 21 | 53 | 2.0 |
| 22 | 22 | 1.0 | 22 | 54 | 2.0 |
| 23 | 23 | 1.0 | 23 | 55 | 2.0 |
| 24 | 24 | 1.0 | 24 | 56 | 2.0 |
| 25 | 25 | 1.0 | 25 | 57 | 2.0 |
| 26 | 26 | 1.0 | 26 | 58 | 2.0 |
| 27 | 27 | 1.0 | 27 | 59 | 2.0 |
| 28 | 28 | 1.0 | 28 | 60 | 2.0 |
| 29 | 29 | 1.0 | 29 | 61 | 2.0 |
| 30 | 30 | 1.0 | 30 | 62 | 2.0 |
| 31 | 31 | 1.0 | 31 | 63 | 2.0 |
| 32 | 32 | 1.0 | 32 | 64 | 2.0 |
| 33 | 33 | 2.0 | 33 | 25 | 1.0 |
| 34 | 34 | 2.0 | 34 | 26 | 1.0 |
| 35 | 35 | 2.0 | 35 | 27 | 1.0 |
| 36 | 36 | 2.0 | 36 | 28 | 1.0 |
| 37 | 37 | 2.0 | 37 | 29 | 1.0 |
| 38 | 38 | 2.0 | 38 | 30 | 1.0 |
| 39 | 39 | 2.0 | 39 | 31 | 1.0 |
| 40 | 40 | 2.0 | 40 | 32 | 1.0 |


First, don't panic, BBLog is still available and will be until the last Battlelog user will hoist the flag.
I decided to stop development for Better Battlelog.
The reason is pretty simple, the userbase shrink every day because of the outrunning battlelog system.
Better Battlelog work pretty great since a long time, without known bugs or awaiting features. So, developing new things make no real sense anymore.
There already tons of features in the addon.
I'm still here, i'm still watching, also parts of the team are still active and watching, you can expect support until the very end.
On the other hand, there is a new extension for the new companion system for BF1.
https://greaterfield.com
Have a nice day.
Greetz Brain
RicoSchulz
hi,Brain.
greaterfield.com doesnt work.
Firefox told me , that 404 Error - Server not found
is there another way to get that extension?
and if , please let me know.
thx from Berlin
Topicstarter
BrainFooLong
Administrator
Greaterfield has been discontinued since 1. October 2017.
This source code is available at


Use The Logo
You have HTML5 on the brain. Tell the world.
Show Some Love
This HTML5 logo is licensed under Creative Commons Attribution 3.0 — all are free to use and reimagine as they see fit. Stickers and T-Shirts are available now; more stuff to come.
HTML5 in the Wild
The HTML5 logo gallery (below) shows off community creativity. We invite you to submit your sightings, whether screen shots or movies or cupcakes.


You do not need to apply to get help
You can claim health costs because [you get] [you or your partner gets] one of these benefits:
- income support
- Pension Credit Guarantee Credit
- Universal cCedit
You can claim health costs because [you get] [you or your partner gets] one of these benefits:


Chapter 7 Research Design
Before you decide how you will conduct your research, read through the list of research designs in the USC library guide.
7.1 Action
7.2 Case Study
7.3 Case-Control Study
- Case-Control Studies
- The diagram on the first page provides a clear overview of case-control study design.
- Overview of Case-Control Design
7.4 Causal
7.5 Cohort
- Sample a cohort of people from a population of interest
- Follow this cohort for many years (often decades)
- Record their attributes and exposures.
- Record who develops outcome of interest (ongoing process).
- This method can be costly, both monetarily and time-wise.
- Compare this method with case-control studies, which are a type of observational study often used in epidemiology.


All around the world, entrepreneurs are creating thriving businesses. In London, Josh Babarinde created
Cracked It
, a social enterprise that trains at-risk youth to repair cracked smartphone screens, giving them an alternative to crime. In Seoul, Yeram Kwon is transforming the CPR training experience with improved, smarter manikins through
HeartiSense
. And in Israel, Oded Ben-Dov created
Sesame Enable
, the first touch-free smartphone designed for people who have limited or no use of their hands due to disabilities.
As a company created by two graduate students in a garage, we know just how powerful an entrepreneur with an idea can be. We also know theres more that companies, governments, and communities can do to help those entrepreneurs succeed. Thats why we
created
Google for Entrepreneurs
nearly four years agoto support startup communities around the world and connect entrepreneurs to resources and to each other.
This week, were excited to participate in and sponsor the
Global Entrepreneurship Summit
, hosted by President Barack Obama and the U.S. government, building upon summits previously hosted by the governments of Turkey, the United Arab Emirates, Malaysia, Morocco, and Kenya. The summit showcases entrepreneurs and investors from around the world who are creating new opportunities for investment, partnership, and collaboration. Our CEO Sundar Pichai is speaking at Fridays closing session, and a number of other Google leaders will be there to discuss the state of entrepreneurship around the world and ways that we can all support startups and encourage innovation.
Helping entrepreneurs succeed also means building and investing resources in the communities where they live and work. Thats why Google for Entrepreneurs partners with more than 50 organizations worldwide, and runs six
Campus
spacesin London, Tel Aviv, Seoul, Madrid, Warsaw, and So Paulowhere local entrepreneurs can work and learn. Altogether, we work with entrepreneurs in 125 countries, who have raised more than $1 billion in funding and created 5,000+ new jobs.
Our support of the Global Entrepreneurship Summit is another way we hope to help entrepreneurs build and create the technology that will shape our future. To the 1,500 attendees joining from around the world, we warmly welcome you to Silicon Valley and hope to meet you! If youre attending the Summit, please stop by the Google for Entrepreneurs lounge, where you can sign up for 1:1 mentorship from dozens of Googlers and industry experts, explore product demos, and more. Were also hosting an interactive portal experience to connect attendees from the event to entrepreneurs around the world at Campus London, Campus Seoul,
Centraal
in Mexico, and in Iraq and Afghanistan. And for those that cant join us in person, you can catch the action via
live stream
.


It all started in 2010. Our first store was opened in Mombasa.Our Pizza stores have opened since. Since we opened our first store in 2010, we’ve been making our thin crust pizza from scratch when you order it. And we still use stone hearth ovens. That’s one of the reasons our unique pizzas are worth the wait! We pride ourselves in offering you the very best pizza with a side of our famous House dressing.


Filter Request By Status
Options
Manager Main Menu
View All Reimbursement Requests
Update Reimbursement Status
Logout


|
ZIA
|
http::IResponse is a interface that encapsulates a http response More...
#include <IResponse.hpp>
Public Member Functions | |
| virtual | ~IResponse ()=default |
| Default destructor. | |
| virtual int | statusCode () const noexcept=0 |
| Returns the status code of the response. More... | |
| virtual bool | statusCode (int statusCode) noexcept=0 |
| Set the status code of the response. More... | |
| virtual std::string | statusMessage () const noexcept=0 |
| Returns the status message of the response. More... | |
| virtual bool | statusMessage (std::string statusMessage) noexcept=0 |
| Set the status message of the response. More... | |
| virtual bool | setCookie (std::string name, std::string value, CookieOptions options=CookieOptions()) noexcept=0 |
| Return the value of the cookie 'name' In header there are an header parameter name 'Cookie' who has all cookies of the request ex: "Cookie: yummy_cookie=choco; tasty_cookie=strawberry" He can have options like Expires, Domain, Max-Age, ... Return false if the name or the value are invalids. | |
| Public Member Functions inherited from http::IBasicObject | |
| virtual | ~IBasicObject ()=default |
| Default destructor. | |
| virtual std::string | protocol () const noexcept=0 |
| Return the protocol of the object. | |
| virtual bool | headerParameterExist (const std::string &key) const noexcept=0 |
| Checks if in object, there are a named 'key' header parameter. More... | |
| virtual std::string | headerParameter (const std::string &key) const noexcept=0 |
| Return the header parameter "key" found in the object. More... | |
| virtual bool | headerParameter (std::string key, std::string value) noexcept=0 |
| Add / Update a header parameter. More... | |
| virtual std::string | body () const noexcept=0 |
| Return the body of the object. More... | |
| virtual bool | body (std::string body) noexcept=0 |
| Set / Add a new body in the object. More... | |
| virtual bool | bodyAppend (std::string body) noexcept=0 |
| Append data in the body or create it if not exist. More... | |
| virtual std::string | serialize () const noexcept=0 |
| Transform this object in a true http object. | |
http::IResponse is a interface that encapsulates a http response
|
pure virtualnoexcept |
Returns the status code of the response.
In http response there are always status code like 200 or 404 To describe if the request is executed correctly
Implemented in HttpResponse.
|
pure virtualnoexcept |
Set the status code of the response.
In http response there are always status code like "200" or "404" To describe if the request is executed correctly Return false if the status code isn't valid
Implemented in HttpResponse.
|
pure virtualnoexcept |
Returns the status message of the response.
In http response there are always status message after the status code like "200 OK" or "404 Not found"
Implemented in HttpResponse.
|
pure virtualnoexcept |
Set the status message of the response.
In http response there are always status message after the status code like "200 OK" or "404 Not found" Return false if the status message isn't valid
Implemented in HttpResponse.


#include <DampedSpring.h>
Public Member Functions | |
| DampedSpring (Body *a, Body *b, float stiffness, float restLength, float failLength=DampedSpringDoNotFail) | |
| ~DampedSpring () | |
| void | solve (float dt) |
| void | setCallBack (std::function< void(DampedSpring *)> failCallBack) |
| Public Member Functions inherited from Constraint | |
| Constraint (Body *a, Body *b) | |
| ~Constraint () | |
| Body * | getA () |
| Body * | getB () |
| Public Member Functions inherited from Object | |
| Object () | |
| virtual | ~Object () |
| void | retain () |
| void | release () |
| int | getRetainCount () |
Static Public Attributes | |
| static const float | DampedSpringDoNotFail = INFINITY |
Additional Inherited Members | |
| Protected Attributes inherited from Constraint | |
| Body * | a |
| Body * | b |
A constraint that acts like a damped spring allowing a body to be attached to a static point or another body.
| DampedSpring::DampedSpring | ( | Body * | a, |
| Body * | b, | ||
| float | stiffness, | ||
| float | restLength, | ||
| float | failLength = DampedSpringDoNotFail |
||
| ) |
Constructs a new damped spring that attaches two bodies.
| a | The first body. |
| b | The second body. |
| stiffness | The stiffness of the spring. |
| restLength | The length at which the spring is at rest. |
| failLength | The length at which the spring should fail and call the fail callback. The spring can not remove itself when it fails; the specfied failCallBack must remove it. |
| DampedSpring::~DampedSpring | ( | ) |
Damped Spring Desctructor.
|
virtual |
Solve the constraint.
| dt | The delta time to solve the constaint for. |
Implements Constraint.
|
static |
The value to give as fail length if you do not want the damped spring to ever fail.


In Short, It's a Party!
Baccus was the god of wine and revelry, and Ypsilanti is in revival, instead of tents and preaching there'll be burlesque, risque art and spirits to enliven the mood at the Ypsilanti Riverside Arts Center. This is the first annual party to mark the importance of wine and revelry in our lives.
This is event is organized by the Ypsilanti Jaycees which is an organaztion dedicated to training young people to be leaders, we do this by doing stuff, some of it fun, some of it necessary, all of it is a learning experience.
Help us make an outstanding event, get exposure and hopefully sell some of your pieces, our hope is get more exposure for artists that portray the more daring parts of life not meant for family friendly venues.
This Event has Been Canceled
We are currently accepting artists registrations, please fill out the form linked below.
Tickets are Ready get them here
Keep in mind that this is a party as such we have special pricing for those of us that are willing to meet new people. To support the hope of supporting revelry we offer a discount to those that promise to talk with 5 people they don't already know.
Email questions to Chad Crabtree


{% from 'footer.html' import footer %} {% from 'tag_cloud.html' import tagCloud %} {% extends "layout.html" %} {% block content %}
This video marks the beginning of the PostgreSQL or Postgres series. We will master the fundamentals of this powerful yet awesome database so that you can find it comfortable enough to work with and apply it in your projects. So, the next time when it comes to handling of data, you already know you got it covered.
In this video, we would be installing the PostgreSQL in our system. Installing this powerful DB is relatively easy and straightforward, Also, we will cover the difference between two popular DB frontends for Postgres: PSQL and Pgadmin4. I personally prefer PSQL and have cited the reasons for it as well. Moreover, we will have a basic overview of PSQL Commands.
This video will teach you how to create database in PostgreSQL. We also go through the basic overview of SQL commands and will primarily use PSQL to execute them. Moreover, this section will give you a sneak peek on how to create tables in Postgres. Although I've covered about this in the Working With Table section.
In this video, we will be covering the core concept before you start delving deeper into Postgres. Datatypes and Constraints will be encountered every time you set out to create a table. These guys cannot be ignored at all. This video will help you understand them through examples.  Rest of the topics more or less revolve around this topic itself.


??NE.W
BOTANICAL
New
York
Botanical
Garden
it.2
msb
EX
HERB.
HORT.
BOT.
REG.
KEW.
1/
Rhizophora
racemosa
&.F.W.
Mey.
Trinidad:
Caroni
River,
Caroni
swamp.
River
bank
in
mangrove
swamp,
sea
level*
Tree
35
ft.
tall.
Midrib
reddish
beneath
on
young
leaves.
With
Acrostichum
aureum.
Rare.
J.R.
Charter
3
in
Herb.
Trin.
no.
18866
28-7-1966
1624126
Legend -
Level of confidence that token is an accurately-transcribed word
extremely low
very low
low
undetermined
medium
high
very high


Syllabus
Introduction to Data Science
CS 109A, STAT 121A, AC 209A, CSCI E-109A
Syllabus - Fall 2019
Welcome to CS109a/STAT121a/AC209a, also offered by the DCE as CSCI E-109a, Introduction to Data Science. This course is the first half of a one‐year introduction to data science. The course focuses on the analysis of messy, real life data to perform predictions using statistical and machine learning methods.
The material of the course is divided into 3 modules. Each module will integrate the five key facets of an investigation using data:
1. data collection ‐ data wrangling, cleaning, and sampling to get a suitable data set;
2. data management ‐ accessing data quickly and reliably;
3. exploratory data analysis – generating hypotheses and building intuition;
4. prediction or statistical learning; and
5. communication – summarizing results through visualization, stories, and interpretable summaries.
Only one of CS 109a, AC 209a, or Stat 121a can be taken for credit. Students who have previously taken CS 109, AC 209, or Stat 121 cannot take CS 109a, AC 209a, or Stat 121a for credit.
Course Logistics
Prerequisites
You are expected to have programming experience at the level of CS 50 or above, and statistics knowledge at the level of Stat 100 or above (Stat 110 recommended). HW0 is designed to test your knowledge on the prerequisites. Successful completion of this assignment will show that this course is suitable for you. HW0 will not be graded but you are required to submit.
Course Components
Lectures
The class consists of two weekly lectures. Lectures are held Mon and Wed 1:30pm ‐ 2:45 pm in Northwest Building (NW), Lecture Hall B-103.
Attendance to lectures is mandatory for FAS students. We will have in class quizzes to assess your understanding of the material and to help us identify gaps.
Labs
Labs are designed as hands-on in-class activities. The instructor will go over practice problems similar to the homework problems and review difficult material. Attendance to labs is optional but strongly encouraged.
Lab sessions are held Thur 4:30-5:45 pm in Pierce 301.
Sections
Lectures and labs are supplemented by 1 hour sections led by teaching fellows. There are two types of sections:
a) Standard Sections: which will be a mix of review of material and practice problems similar to the HW
Standard Sections are held Fri 10:30-11:45 am at 1 Story St. Room 306 and Mon 4:30-5:45 pm in Science Center 110
Note: Sections are not held every week. Consult the course calendar for exact dates.
The material covered on Friday and Monday is identical.
b) Advanced Sections which will cover advanced topics like the mathematical underpinnings of the methods seen in lecture and lab and extensions of those methods. The material covered in the Advanced Sections is required for all AC 209A students.
Advanced Sections are held Weds 4:30-5:45 pm at Maxwell Dworkin G115
Note: Advanced Sections are not held every week. Consult the course calendar for exact dates.
Video Recordings
All learning instances—lectures, labs, and sections—will be recorded. DCE students can stream these events in real time with a TF monitoring the accompanying chat room. Recordings will then be made available to all students within 24 hours via Canvas.
Instructor Office Hours
Pavlos & Kevin: Monday 3-5pm, IACS lobby
Chris: Wednesday 3-4pm, Maxwell-Dworkin B125
Assignments
There will be an initial self-assessment homework called HW0 and 8 more graded homework assignments. Some of them will be due in a week (1, 2, 5, 8) and some of them in two weeks (3, 4, 6, 7).
You have the option to work and submit in pairs for all the assignments except HW4 and HW7 which you will do individually.
You will be working in Jupyter Notebooks which you can run in your own environment or in the SEAS JupyterHub cloud.
Instructions for Setting up Your Environment
Instructions for Using JupyterHub
On weeks with new assignments they will be released by Wednesday 3 pm.
Standard assignments are graded out of 5 points.
AC209a students will have additional homework content for most assignments worth 1 point.
Quizzes
Quizzes will be taken at the end of class and the material will be based on what was discussed in lecture; there will be no AC209a content in the quizzes. DCE students' quizzes will not count toward their final grade.
50% of the quizzes will be dropped from your grade.
Final Project
There will be a final group project (2-4 students) due during Exams period. See Calendar for specific dates.
Participation
Students as expected to be actively engaged with the course. This includes:
- attending lectures
- making use of resources such as office hours, labs, and sections
- participating in the Ed discussion forum — both through asking thoughtful questions and by answering the questions of others
DCE students will not be penalized for the inability to attend lectures, labs, etc. live.
Recommended Textbook
An Introduction to Statistical Learning by James, Witten, Hastie, Tibshirani.
The book is available here:
Free electronic version: http://www-bcf.usc.edu/~gareth/ISL/ (Links to an external site).
HOLLIS: http://link.springer.com.ezp-prod1.hul.harvard.edu/book/10.1007%2F978-1-4614-7138-7
Course Policies
Getting Help
For questions about homework, course content, package installation, JupyterHub, and after you have tried to troubleshoot yourselves, the process to get help is:
1. Post the question in Ed and hopefully your peers will answer. Note that in Ed questions are visible to everyone. The TFs monitor the posts.
2. Go to Office Hours, this is the best way to get help.
3. For private matters send an email to the Helpline<EMAIL_ADDRESS>The Helpline is monitored by TFs.
4. For personal and confidential matters send an email to the instructors.
Grading Guidelines and Regrading Policy
Homework will be graded based on:
1. How correct your code is (the Notebook cells should run, we are not troubleshooting code)
2. How you have interpreted the results — we want text not just code. It should be a report.
3. How well you present the results.
The scale is 1-5.
For more details, check out The CS109A Grade.
Questions on Graded Homework and Regrading Policy
We take great care in making sure all homework assignments are graded properly. However, if you find that your assignment has grading oversights/errors you may: Email the helpline with subject line “Regrade HW1: Grader=johnsmith” within 48 hours of the grade release (the grader’s name can be found at the end of your notebook). If still unsatisfied with first regrading outcome, you may submit a reason via email to the Helpline with subject line “Regrade HW1: Second request” within 2 days of receiving the initial regarding response.
NOTE: once regrading is done, you may receive a grade that could be lower than the initial grade.
Collaboration Policy
We encourage you to talk and discuss the assignments with your fellow students (and on Piazza), but you are not allowed to look at any other student’s assignment or code outside of your pair. Discussion is encouraged; copying is not allowed. Please refer to the Academic Honesty section in The CS109A Grade.
Late Day Policy
Homework is due on Wednesdays. There are no late days. Late submissions will not be accepted.
Communication from Staff to Students
Class announcements will be through Canvas. All homework and quizzes will be posted and submitted through Canvas, as well as all feedback forms.
NOTE: make sure you adjust your account settings so you can receive emails from Canvas.
Submitting an assignment
Please consult Homework Policies & Submission Instructions
Course Grade
Your final score for the course will be computed using the following weights:
Non-Extension Students
| Assignment | Final Grade Weight |
|---|---|
| Homework0 | 1% |
| Paired Homework (6) | 39% |
| Individual Homework (2) | 17 % |
| Quizzes | 10% |
| Project | 30% |
| Participation | 3% |
| Total | 100% |
Extension Students
| Assignment | Final Grade Weight |
|---|---|
| Homework0 | 1% |
| Paired Homework (6) | 43% |
| Individual Homework (2) | 19% |
| Project | 33% |
| Participation | 4% |
| Total | 100% |
Software
We will be using Jupyter Notebooks, Python 3, and various python modules. You can access the notebook viewer either on your own machine by installing the Anaconda platform (Links to an external site) which includes Jupyter/IPython as well all packages that will be required for the course, or by using the SEAS JupyterHub from Canvas. Details in class.
Accommodations for Students with Disabilities
Students needing academic adjustments or accommodations because of a documented disability must present their Faculty Letter from the Accessible Education Office (AEO) and speak with Kevin by the end of the third week of the term: Friday, September 15. Failure to do so may result in us being unable to respond in a timely manner. All discussions will remain confidential.
Diversity and Inclusion Statement
Data Science, like many fields of science, has historically only been represented by a small sliver of the population. This is despite some of the early computer scientist pioneers being women (see Ada Lovelace and Grace Hopper for two examples). Recent initiatives have attempted to overcome some barriers to entry: Made /w Code.
We would like to attempt to discuss diversity in data science from time to time where appropriate and possible. Please contact us (in person or electronically) or submit anonymous feedback if you have any suggestions to improve the diversity of the course materials. Furthermore, we would like to create a learning environment for our students that supports a diversity of thoughts, perspectives and experiences, and honors your identities (including race, gender, class, sexuality, religion, ability, etc.) To help accomplish this:If you have a name and/or set of pronouns that differ from those that appear in your official Harvard records, please let us know!
If you feel like your performance in the class is being impacted by your experiences outside of class, please don’t hesitate to come and talk with us. We want to be a resource for you. Remember that you can also submit anonymous feedback (which will lead to me making a general announcement to the class, if necessary to address your concerns). If you prefer to speak with someone outside of the course, you may find helpful resources at the Harvard Office of Diversity and Inclusion.
We (like many people) are still in the process of learning about diverse perspectives and identities. If something was said in class (by anyone) that made you feel uncomfortable, please talk to us about it. (Again, anonymous feedback is always an option.)
As a participant in course discussions, you should also strive to honor the diversity of your classmates.
Academic Honesty
Ethical behavior is an important trait of a Data Scientist, from ethically handling data to attribution of code and work of others. Thus, in CS109 we give a strong emphasis to Academic Honesty.
As a student your best guidelines are to be reasonable and fair. We encourage teamwork for problem sets and allow submission in pairs for most problem sets, but you should not split the homework and you should work on all the problems together.
For more detailed expectations, please refer to the Academic Honesty section in The CS109A Grade.


Home
Account
Logout
Toggle navigation
Dashboard
Add Event
List Event
Search
Register
Logout
Login
Login
Help
Setting
About


Hashes to Hashes
Reflecting on Arrays and Hashes
February 13, 2016
Overview
This post aims to provide a simple yet memorable look at two powerful ruby objects, namely arrays and hashes. There are many differences and similarities between the two, and there are established use cases for when each should be used, but before getting into such trade-offs and details, it's helpful to understand what each is in the most basic sense.
Arrays
It is no secret that we all love to talk about the weather. It is a subject that comes up when you share a 20 second elevator ride with that colleague from the 7th floor you rarely see, or when you find yourself alone with your siblings awkward in-laws at a family picnic. Whenever we do this, we are talking about a few climatic parameters such as temperature, wind-speed, and humidity. Each of these are ever-changing and while we are comfortable talking about them in passing and in the present tense, weather stations across the world collect and store a universe of historic climatic data.
What do you think historic rainfall data looks like? It is typically an hourly reading of the volume of rainfall in the unit of inches. Whether we are talking about the overnight rainfall last Wednesday, or the rainfall for the entire month of December, the data stored by weather stations is in the form of inches/hour for every hour in the duration of interest. If you are wondering what a good way to store this data is, then you are already thinking about an array.
An array is basically a stored list of data. So, in the case of rainfall at any given location, an array could store all the hourly rainfall data recorded, ever! Similarly, a temperature array could store all the temperature data, and a humidity array could store all the humidity data. In computer (specifically Ruby) terms, an array for the temperature for the last 24 hours could be set up as follows:
>> temp_last_12 = [11.4, 10.9, 8.6, 10.0, 12.5, 14.2, 15.8, 17.4, 18.5, 19.3, 20.2, 19.6]
Storing data in an array like this allows for easy access of the data using a variety of queries. For example, if we were interested in knowing the temperature of only the first three hours and the last three hours within the above array, we could use the following commands:
>> temp_last_12[0, 3]
=> [11.4, 10.9, 8.6]
>> temp_last_12[-3, -1]
=> [19.3, 20.2, 19.6]
Similarly, if we were interested in knowing how many hours the temperatures was above 18.0 degrees, we could use the following command:
>> (temp_last_12.find_all {|n| n > 18}).count
=> 4
Now just imagine how easy it would be to get any weather of your choice, for any duration, with any upper and lower bounds, all because it was stored in a the convenient array object. Not to be overly-climatic (pun-intended) but it certainly helps me to think of a thermometer when I try to define an array. The thermometer only ever reads out 1 type of data (i.e. temperature) and an array is a great place to store that data!
A note about the array/weather analogy
While it is helpful for me to think of single-dimension data when I try to define an array, it is important to note that the elements stored in an array can also be strings, boolean values, and even other arrays. Below is an example of a perfectly legitimate mixed data-type, multi-dimensional array.
>> [3, -4, false, [5, "five"], ["true", true, [false, 46]], "end_of_array"]
Hashes
If like me you found it helpful to associate a thermometer with an array (hey, it works!), then you may also find it is useful to associate a dictionary with a hash. Yes a dictionary! This is because while we use a thermometer to tell us the temperature (and only the temperature), we use a dictionary to tell us the definition of whatever word we are looking up.
That may seem like a subtle difference, but it makes all the difference in the world of coding.  In a dictionary, the "keys" are the words, and the "values" are the definitions. In a hash, the "keys" can be set up to represent whatever we like (say statistic categories for your favorite sports team) and the values could be the corresponding data (say the statistics themselves.)
Lets take a look at how a hash would be used in the above example of sports team statistics. Below I am setting up a hash for my favorite soccer team: Bayern Munich!
>> bayern_munich = { :home_jersey => "White", :away_jersy => "Red", :german_championships => 25, :euro_championships => 5, :fifa_club_winner => 1, :manager => "Pep Guardiola", :captain => "Philipp Lahm"}
=> bayern_munich{
:home_jersey => "White",
:away_jersy => "Red",
:german_championships => 25,
:euro_championships => 5,
:fifa_club_winner => 1,
:manager => "Pep Guardiola",
:captain => "Philipp Lahm"
}
Retrieving or adding information to a hash is as easy as it is to create one. Let's say we wanted to know how many German championships Bayern Munich has won, and who their current captain is. This could be achieved with the following code.
>> bayern_munich[german_championships]
=> 25
>> bayern_munich[captain]
=> Philipp Lahm
Let's say Bayern Munich lift the Champions League trophy this year (fingers crossed), and we also wanted to start tracking the number of team yellow cards. In that case our hash would need some updating which is extremely easy to do (perhaps unlike an actual dictionary!) Both these changes could be achieved with the following code.
>> bayern_munich[euro_championships] = 6
=> 6
>> bayern_munich[yellow_cards] = 17
=> 17
At this point our hash would be updated with the new Champions league count, as well as with an entirely new field that tracks the number of team yellow cards.
Conclusion
The array and the hash are both extremely powerful ruby objects. Other programming languages such as Python and Javascript have similar objects that go by different names, but their purpose and benefits are the same. With dozens of built-in Ruby methods that can be applied to arrays and hashes, their proper set-up and use can make data management and querying a dream. The basic analogies in this post helped me keep them straight when I first dove in and started using them, and I am pretty excited to be diving deeper next week. See you on the other side (assuming it doesn't rain!)


--- layout: single author_profile: true classes: wide permalink: /projects/ ---
NYU, SPRING 2021 Deep Learning Systems Project, Mar2021-May2021
Python, Pytorch, Pytorch lightning, Electra, Neptune, HPC
Experimented cutting-edge regularization techniques(label smoothing, stochastic weight averaging, wasserstein losses) for text scoring through the sentiment analysis on Amazon reviews corpus. Devised an ordinal distance-based label smoothing technique and achieved 4% better accuracy compared to the paper.
ReportNYU, SPRING 2021 Natural Language Processing, Mar2021-May2021
Python, Pytorch, transformer, HPC
Conducted multi-dimensional gender bias classification using text data from multiple sources(Wikipedia, Wizard, Yelp, Opensubtitles, Convai, Light) and finetuned pre-trained DistilBert. Developed the end-to-end model pipeline and experimented regularization techniques(label smoothing, data augmentation, mixout) on HPC.
Github linkInfoLab, DGIST, Mar2019-Dec2019
Python, Pytorch
Developed a customized AI agent for predicting user behaviors on the computer. Developed the end-to-end ML model to predict user intentions from keyboards and mouse input data. More about this project
Signal Processing Lab, DGIST, Mar2018-Dec2018
Python, Keras
Semantic segmentation of surgery images using Unet, a deep convolutional neural network(CNN),
for the intelligent surgical robot vision system. Improved the model accuracy by 32% of Unet(deep convolutional neural network) for multi-class segmentation of laparoscopy
surgery images by optimizing the model structure and applying data augmentation techniques.
See the poster


A heatmap is a graphical representation of data where the individual values contained in a matrix are represented as colors. This page displays many examples built with R, both static and interactive.
heatmap()
functionThe heatmap()
function is natively provided in R. It produces high quality matrix and offers statistical tools to normalize input data, run clustering algorithm and visualize the result with dendrograms. It is one of the very rare case where I prefer base R to ggplot2
.
geom_tile()
from ggplot2
ggplot2
also allows to build heatmaps thanks to geom_tile()
. However, I personally prefer the heatmap()
function above since only it offers option for normalization, clustering and Dendrogram.
Three options exist to build an interactive heatmap from R
:
plotly
: as described above, plotly allows to turn any heatmap made with ggplot2
interactive.d3heatmap
: a package that uses the same syntax as the base R heatmap() function to make interactive version.heatmaply
: the most flexible option, allowing many different kind of customization. See the code of the chart beside here.Heatmaps can be a very good alternative to visualize time series, especially when the time frame you study is repeating, like weeks. Here is a customized example, but visit the time series section for more.
Code Time series sectionlevelplot()
function of lattice


Selecting Third Party means you are a recruiter or staffing agency representing a tech professional to apply for Contract Corp-to-Corp and/or Contract-to-Hire Corp-to-Corp jobs.
If you are a tech professional who wants to directly apply for jobs, do NOT select Third Party.


{{ customerData['customer_name']}} ({{ customerData['customer_id']}})
{{customerData['external_id'] }}
{{ customerData['first_name'] }}
{{customerData['ownername'] }}
{{ customerData['phone'] }}
{{ customerData['name'] }}
{{customerData['email'] }}
| Project Name | Status | Start Date | End Date | Estimated Cost | Estimated Revenue | Committed Revenue | |
|---|---|---|---|---|---|---|---|
| {{ pro.project_title }} | {{ pro.project_status }} | {{ pro.project_start_date }} | {{ pro.project_end_date }} |
{{currency}}{{ pro.estimated_cost }}
| - |
|
{{currency}}{{ pro.estimated_revenue }}
|
{{currency}}{{ pro.committed_revenue }}
|
| No projects found. |


Current Address
Current Pin code
If Residencial address is as address
Parmanent Address
Parmanent Pincode


Selecting linear and generalized linear models for large data sets using modified stepwise procedure and modern selection criteria (like modifications of Bayesian Information Criterion). Selection can be performed on data which exceed RAM capacity.
| Version: | 1.0.0 |
| Depends: | R (≥ 3.5.0) |
| Imports: | bigmemory, magrittr, matrixStats, methods, R.utils, RcppEigen, speedglm, stats, utils |
| Suggests: | devtools, knitr, rmarkdown, testthat |
| Published: | 2018-09-12 |
| Author: | Piotr Szulc [aut, cre] |
| Maintainer: | Piotr Szulc <piotr.michal.szulc at gmail.com> |
| BugReports: | http://github.com/pmszulc/bigstep/issues |
| License: | GPL-3 |
| URL: | http://github.com/pmszulc/bigstep |
| NeedsCompilation: | no |
| Materials: | README |
| CRAN checks: | bigstep results |
| Reference manual: | bigstep.pdf |
| Vignettes: |
The stepwise procedure for big data |
| Package source: | bigstep_1.0.0.tar.gz |
| Windows binaries: | r-devel: bigstep_1.0.0.zip, r-release: bigstep_1.0.0.zip, r-oldrel: bigstep_0.7.4.zip |
| OS X binaries: | r-release: bigstep_1.0.0.tgz, r-oldrel: bigstep_0.7.4.tgz |
| Old sources: | bigstep archive |
Please use the canonical form https://CRAN.R-project.org/package=bigstep to link to this page.


The primary means of obtaining help with EMEWS is the EMEWS mailing list and the accumulated list archives. To post a question about EMEWS, please subscribe to the EMEWS Mailing List.
Jonathan Ozik is the EMEWS project lead. Please contact him through the Argonne Staff Directory if you have project-related questions.


--- layout: post authors: ["Aleksandra Pawlik"] title: "Learning to Teach Never Ends" date: 2014-05-28 time: "10:00:00" tags: ["Instructor Training"] ---
A month ago I took part in the first face-to-face Software Carpentry Instructors Training run by Greg Wilson from Software Carpentry and Warren Code from University of British Columbia. Unlike most of 40 participants, I had already completed the instructors course which Greg regularly runs online. My primary aim to attend the face-to-face training was to observe and learn how to run it because the plan is that the Software Sustainability Institute (which I work for) will support running such training in the future. So I attended the training in Toronto as a certified instructor and also as a Software Carpentry co-admin in the UK. Wearing different hats allowed me to look at the event from different perspectives and this is probably why it took me so long to write this post.
Others were much quicker:
Here is what I gained from the training.
Learning how to teach never ends
As said I completed the second round of online instructors training in 2013. But over the course of 3 days at the Mozilla office where the training was hosted I learnt yet a number of things that help me reflect on my teaching:
"Impostor syndrome stays with you forever"
That's what Greg said and at first it got me really depressed. But then actually, it made me feel more comfortable with myself. It means that the fact that at every bootcamp I feel like "I don't have the qualification to teach this" is just a natural symptom of the impostor syndrome. There are a number of ways to deal with it. But I realized that the more I feel like an imposter, the more motivated I am to improve my knowledge and skills.
"Those who can't do it go into teaching" is a lie
I've heard that statement a number of times - not at the training in Toronto, no. Sometimes it was said just as a joke. Sometimes, with a bit of a cringy smile, it was said by Those Who Can Actually Do It - genius programmers and scientists. So yeah, maybe I can't do it and so I teach. But the people I met at the training in Toronto, they can definitely do it! They want to teach to pass on the useful skills to others and not because they are incapable of working with software and science. That sweeping statement is simply not true.
We need to work on Software Carpentry administration
Together with Giacomo Peru of SSI, I co-administer Software Carpentry bootcamps in the UK. Having the experience of being an instructor and an administrator allows me to move around the Software Carpentry infrastructure pretty smoothly. But at the last session on Day 3 in Toronto when we discussed the practicalities of running a bootcamp, it was clear that even with the comprehensive operations guides, the instructors may get lost. And indeed, as it was discussed during the recent lab call, the work on improving the bootcamp management process are soon to start.
Software Carpentry folks are a great bunch :-)
That is something I already knew before I went to Toronto. I have taught at over 12 bootcamps and writing this blog post made me realized that I always worked with different instructors! I've never taught with the same people twice. The same applies to the helpers. And, apart from instructing twice at the University of Manchester where I work, I went to different venues in the US and Europe and met a number of different hosts. Software Carpentry people are fun, inspirational, impressive and very friendly. I'm really lucky to have an opportunity to hang out with them. As an co-admin in the UK, I get to work with even larger pool of Software Carpentry folks - although, most of the interaction happens online. With Software Carpentry growing internationally bringing people together in one place is always going to be a major challenge but it's well worth it. We all had a great time in Toronto!


FOR A FREE CAR INSURANCE RATE QUOTE THAT COULD SAVE YOU SUBSTANTIAL MONEY WWW.GEICO.COM OR CALL 1-888-395-6349, 24 HOURS A DAY
If you have any comments about our WEB page, you can either write us at the address shown above or e-mail us at<EMAIL_ADDRESS>However, due to the limited number of personnel in our corporate office, we are unable to provide a direct response.
If you have any comments about our WEB page, you can either write us at the address shown above or e-mail us at<EMAIL_ADDRESS>However, due to the limited number of personnel in our corporate office, we are unable to provide a direct response.


Server
Console
Settings
Script
User
Admin
Logout
Loading...
No Server
Start
Stop
Restart
Reload
Status:
Contacting server...
Send
Save
Save
Editor
Console
Docs


ABOUT
I'm a full stack web developer.
Highly self-driven professional with experience in financial domain with a technical design/programming background.
Hands-on experience in Web design/development, front-end and back-end programming using javascript, jQuery, HTML, CSS, Bootstrap, firebase, AJAX and Node.js.
Large project implementation, migration and support experience. Expertise in Mainframe skill sets with experience in SDLC, waterfall and Agile methodologies.
SKILLS
Front-End
HTML5
CSS3
Javascript
React
jQuery
Bootstrap
Material
AJAX
Back-End
Node.js
NPM
Express
Handlebar
Database
SQL
MySQL
ORM
Sequelize
Firebase
DB2
Other
Github
Gitlab
HeroKu
VS Code
Slack
MVC
PORTFOLIO


Hot Restaurant
We only have 5 tables!
View Tables
Make Reservation
API Table Link
API Wait List


Library: Foundation
Package: Streams
Header: Poco/StreamTokenizer.h
Description
A stream tokenizer splits an input stream into a sequence of tokens of different kinds. Various token kinds can be registered with the tokenizer.
Member Summary
Member Functions: addToken, attachToStream, next
Constructors
StreamTokenizer
Creates a StreamTokenizer with no attached stream.
StreamTokenizer
StreamTokenizer(
std::istream & istr
);
Creates a StreamTokenizer with no attached stream.
Destructor
~StreamTokenizer
virtual ~StreamTokenizer();
Destroys the StreamTokenizer and deletes all registered tokens.
Member Functions
addToken
void addToken(
Token * pToken
);
Adds a token class to the tokenizer. The tokenizer takes ownership of the token and deletes it when no longer needed. Comment and whitespace tokens will be marked as ignorable, which means that next() will not return them.
addToken
void addToken(
Token * pToken,
bool ignore
);
Adds a token class to the tokenizer. The tokenizer takes ownership of the token and deletes it when no longer needed. If ignore is true, the token will be marked as ignorable, which means that next() will not return it.
attachToStream
void attachToStream(
std::istream & istr
);
Attaches the tokenizer to an input stream.
next
const Token * next();
Extracts the next token from the input stream. Returns a pointer to an EOFToken if there are no more characters to read. Returns a pointer to an InvalidToken if an invalid character is encountered. If a token is marked as ignorable, it will not be returned, and the next token will be examined. Never returns a NULL pointer. You must not delete the token returned by next().


|
Nano102_112 Series BSP
V3.03.002
The Board Support Package for Nano102_112 Series
|
#include <Nano1X2Series.h>
Data Fields | |
| __IO uint32_t | CTL |
| __IO uint32_t | STATUS |
| __IO uint32_t | CLKDIV |
| __IO uint32_t | SSR |
| __I uint32_t | RX0 |
| __I uint32_t | RX1 |
| uint32_t | RESERVE0 [2] |
| __O uint32_t | TX0 |
| __O uint32_t | TX1 |
| uint32_t | RESERVE1 [3] |
| __IO uint32_t | VARCLK |
| __IO uint32_t | DMA |
| __IO uint32_t | FFCTL |
| uint32_t | RESERVE2 [4] |
@addtogroup SPI Serial Peripheral Interface Controller(SPI) Memory Mapped Structure for SPI Controller
Definition at line 8460 of file Nano1X2Series.h.
| __IO uint32_t SPI_T::CLKDIV |
| Bits | Field | Descriptions |
|---|---|---|
| [7:0] | DIVIDER1 | Clock Divider 1 |
| The value is the 1th frequency divider of the PCLK to generate the serial clock of SPI_SCLK. | ||
| The desired frequency is obtained according to the following equation: fsclk = feclk / (DIVIDER1 + 1) | ||
| Where feclk is the SPI peripheral clock source. | ||
| It is defined in the CLK_SEL2[21:20] in Clock control section (CLK_BA + 0x18). | ||
| [23:16] | DIVIDER2 | Clock Divider 2 |
| The value is the 2nd frequency divider of the PCLK to generate the serial clock of SPI_SCLK. | ||
| The desired frequency is obtained according to the following equation: fsclk = feclk / (DIVIDER2 + 1) |
Definition at line 8625 of file Nano1X2Series.h.
| __IO uint32_t SPI_T::CTL |
| Bits | Field | Descriptions |
|---|---|---|
| [0] | GO_BUSY | SPI Transfer Control Bit And Busy Status |
| 0 = Writing this bit "0" will stop data transfer if SPI is transferring. | ||
| 1 = In Master mode, writing "1" to this bit will start the SPI data transfer; In Slave mode, writing '1' to this bit indicates that the salve is ready to communicate with a master. | ||
| If the FIFO mode is disabled, during the data transfer, this bit keeps the value of '1'. | ||
| As the transfer is finished, this bit will be cleared automatically. | ||
| Software can read this bit to check if the SPI is in busy status. | ||
| In FIFO mode, this bit will be controlled by hardware. | ||
| Software should not modify this bit. | ||
| In slave mode, this bit always returns 1 when software reads this register. | ||
| In master mode, this bit reflects the busy or idle status of SPI. | ||
| Note1: When FIFO mode is disabled, all configurations should be set before writing "1" to the GO_BUSY bit in the SPI_CTL register. | ||
| Note2: When FIFO bit is disabled and the software uses TX or RX PDMA function to transfer data, this bit will be cleared after the PDMA controller finishes the data transfer. | ||
| [1] | RX_NEG | Receive At Negative Edge |
| 0 = The received data is latched on the rising edge of SPI_SCLK. | ||
| 1 = The received data is latched on the falling edge of SPI_SCLK. | ||
| [2] | TX_NEG | Transmit At Negative Edge |
| 0 = The transmitted data output is changed on the rising edge of SPI_SCLK. | ||
| 1 = The transmitted data output is changed on the falling edge of SPI_SCLK. | ||
| [7:3] | TX_BIT_LEN | Transmit Bit Length |
| This field specifies how many bits can be transmitted / received in one transaction. | ||
| The minimum bit length is 8 bits and can be up to 32 bits. | ||
| 00000 = 32 bits are transmitted in one transaction. | ||
| 01000 = 8 bits are transmitted in one transaction. | ||
| 01001 = 9 bits are transmitted in one transaction. | ||
| 01010 = 10 bits are transmitted in one transaction. | ||
| --— | ||
| 11111 = 31 bits are transmitted in one transaction. | ||
| [10] | LSB | Send LSB First |
| 0 = The MSB, which bit of transmit/receive register depends on the setting of TX_BITLEN, is transmitted/received first. | ||
| 1 = The LSB, bit 0 of the SPI_TX0/1, is sent first to the the SPI data output pin, and the first bit received from the SPI data input pin will be put in the LSB position of the SPI_RX register (SPI_RX0/1). | ||
| [11] | CLKP | Clock Polarity |
| 0 = The default level of SCLK is low. | ||
| 1 = The default level of SCLK is high. | ||
| [15:12] | SP_CYCLE | Suspend Interval (Master Only) |
| These four bits provide configurable suspend interval between two successive transmit/receive transaction in a transfer. | ||
| The suspend interval is from the last falling clock edge of the current transaction to the first rising clock edge of the successive transaction if CLKP = "0". | ||
| If CLKP = "1", the interval is from the rising clock edge to the falling clock edge. | ||
| The default value is 0x3. The desired suspend interval is obtained according to the following equation: | ||
| (SP_CYCLE[3:0) + 0.5) * period of SPICLK | ||
| Ex: | ||
| SP_CYCLE = 0x0 .... 0.5 SPICLK clock cycle. | ||
| SP_CYCLE = 0x1 .... 1.5 SPICLK clock cycle. | ||
| ...... | ||
| SP_CYCLE = 0xE .... 14.5 SPICLK clock cycle. | ||
| SP_CYCLE = 0xF .... 15.5 SPICLK clock cycle. | ||
| If the Variable Clock function is enabled, the minimum period of suspend interval (the transmit data in FIFO buffer is not empty) between the successive transaction is (6.5 + SP_CYCLE) * SPICLK clock cycle | ||
| [17] | INTEN | Interrupt Enable Control |
| 0 = SPI Interrupt Disabled. | ||
| 1 = SPI Interrupt Enabled. | ||
| [18] | SLAVE | Slave Mode |
| 0 = SPI controller set as Master mode. | ||
| 1 = SPI controller set as Slave mode. | ||
| [19] | REORDER | Byte Reorder Function Enable Control |
| 0 = Disable byte reorder function. | ||
| 1 = Enable byte reorder function and insert a byte suspend interval among each byte. | ||
| The setting of TX_BIT_LEN must be configured as 00b ( 32 bits/ word). | ||
| The suspend interval is defined in SP_CYCLE. | ||
| Note: Byte Suspend is only used in SPI Byte Reorder mode. | ||
| [21] | FIFOM | FIFO Mode Enable Control |
| 0 = FIFO mode Disabled (in Normal mode). | ||
| 1 = FIFO mode Enabled. | ||
| [22] | TWOB | 2-Bit Transfer Mode Active |
| 0 = 2-bit transfer mode Disabled. | ||
| 1 = 2-bit transfer mode Enabled. | ||
| [23] | VARCLK_EN | Variable Clock Enable Control |
| 0 = The serial clock output frequency is fixed and only decided by the value of DIVIDER1. | ||
| 1 = The serial clock output frequency is variable. | ||
| The output frequency is decided by the value of VARCLK (SPI_VARCLK), DIVIDER1, and DIVIDER2. | ||
| [28] | DUAL_IO_DIR | Dual IO Mode Direction |
| 0 = Date read in the Dual I/O Mode function. | ||
| 1 = Data write in the Dual I/O Mode function. | ||
| [29] | DUAL_IO_EN | Dual IO Mode Enable Control |
| 0 = Dual I/O Mode function Disabled. | ||
| 1 = Dual I/O Mode function Enabled. | ||
| [31] | WKEUP_EN | Wake-Up Enable Control |
| 0 = Wake-up function Disabled. | ||
| 1 = Wake-up function Enabled. | ||
| Note: When the system enters Power-down mode, the system can be wake-up from the SPI controller when this bit is enabled and if there is any toggle in the SPICLK port. | ||
| After the system wake-up, this bit must be cleared by user to disable the wake-up requirement. |
Definition at line 8551 of file Nano1X2Series.h.
| __IO uint32_t SPI_T::DMA |
| Bits | Field | Descriptions |
|---|---|---|
| [0] | TX_DMA_EN | Transmit PDMA Enable Control |
| 0 = Transmit PDMA function Disabled. | ||
| 1 = Transmit PDMA function Enabled. | ||
| Note1: Two transaction need minimal 18 APB clock + 8 SPI peripheral clocks suspend interval in master mode for edge mode and 18 APB clock + 9.5 SPI peripheral clocks for level mode. | ||
| Note2: If the 2-bit function is enabled, the requirement timing shall append 18 APB clock based on the above clock period. | ||
| Hardware will clear this bit to 0 automatically after PDMA transfer done. | ||
| [1] | RX_DMA_EN | Receiving PDMA Enable Control |
| 0 = Receiver PDMA function Disabled. | ||
| 1 = Receiver PDMA function Enabled. | ||
| Note: Hardware will clear this bit to 0 automatically after PDMA transfer done. | ||
| In Slave mode and the FIFO bit is disabled, if the receive PDMA is enabled but the transmit PDMA is disabled, the minimal suspend interval between two successive transactions input is need to be larger than 9 SPI peripheral clock + 4 APB clock for edge mode and 9.5 SPI peripheral clock + 4 APB clock | ||
| [2] | PDMA_RST | PDMA Reset |
| It is used to reset the SPI PDMA function into default state. | ||
| 0 = After reset PDMA function or in normal operation. | ||
| 1 = Reset PDMA function. | ||
| Note: it is auto cleared to "0" after the reset function has done. |
Definition at line 8804 of file Nano1X2Series.h.
| __IO uint32_t SPI_T::FFCTL |
| Bits | Field | Descriptions |
|---|---|---|
| [0] | RX_CLR | Receiving FIFO Counter Clear |
| 0 = No clear the received FIFO. | ||
| 1 = Clear the received FIFO. | ||
| Note: This bit is used to clear the receiver counter in FIFO Mode. | ||
| This bit can be written "1" to clear the receiver counter and this bit will be cleared to "0" automatically after clearing receiving counter. | ||
| After the clear operation, the flag of RX_EMPTY in SPI_STATUS[0] will be set to "1". | ||
| [1] | TX_CLR | Transmitting FIFO Counter Clear |
| 0 = No clear the transmitted FIFO. | ||
| 1 = Clear the transmitted FIFO. | ||
| Note: This bit is used to clear the transmit counter in FIFO Mode. | ||
| This bit can be written "1" to clear the transmitting counter and this bit will be cleared to "0" automatically after clearing transmitting counter. | ||
| After the clear operation, the flag of TX_EMPTY in SPI_STATUS[2] will be set to "1". | ||
| [2] | RXINT_EN | RX Threshold Interrupt Enable Control |
| 0 = Rx threshold interrupt Disabled. | ||
| 1 = RX threshold interrupt Enable. | ||
| [3] | TXINT_EN | TX Threshold Interrupt Enable Control |
| 0 = TX threshold interrupt Disabled. | ||
| 1 = TX threshold interrupt Enable. | ||
| [4] | RXOVINT_EN | RX FIFO Over Run Interrupt Enable Control |
| 0 = RX FIFO over run interrupt Disabled. | ||
| 1 = RX FIFO over run interrupt Enable. | ||
| [7] | TIMEOUT_EN | RX Read Time Out Function Enable Control |
| 0 = RX read Timeout function Disabled. | ||
| 1 = RX read Timeout function Enable. | ||
| [26:24] | RX_THRESHOLD | Received FIFO Threshold |
| If RX valid data counts large than RXTHRESHOLD, RXINT_STS (SPI_STATUS[8]) will set to 1,. | ||
| [30:28] | TX_THRESHOLD | Transmit FIFO Threshold |
| If TX valid data counts small or equal than TXTHRESHOLD, TXINT_STS (SPI_STATUS[10]) will set to 1. |
Definition at line 8842 of file Nano1X2Series.h.
| uint32_t SPI_T::RESERVE0[2] |
Definition at line 8722 of file Nano1X2Series.h.
| uint32_t SPI_T::RESERVE1[3] |
Definition at line 8764 of file Nano1X2Series.h.
| uint32_t SPI_T::RESERVE2[4] |
Definition at line 8843 of file Nano1X2Series.h.
| __I uint32_t SPI_T::RX0 |
| Bits | Field | Descriptions |
|---|---|---|
| [31:0] | RDATA | Receive Data FIFO Bits(Read Only) |
| The received data can be read on it. | ||
| If the FIFO bit is set as 1, the user also checks the RX_EMPTY, SPI_STATUS[0], to check if there is any more received data or not. | ||
| Note1: The SPI_RX1 is used only in TWOB bit (SPI_CTL[22]) is set 1. | ||
| The first channel's received data shall be read from SPI_RX0 and the second channel's received data shall be read from SPI_RX1 in two-bit mode. | ||
| SPI_RX0 shall be read first in TWOB mode. | ||
| In FIFO and two-bit mode, the first read back data in SPI_RX0 is the first channel data and the second read back data in SPI_RX0 is the second channel data. | ||
| Note2: These registers are read only. |
Definition at line 8703 of file Nano1X2Series.h.
| __I uint32_t SPI_T::RX1 |
| Bits | Field | Descriptions |
|---|---|---|
| [31:0] | RDATA | Receive Data FIFO Bits(Read Only) |
| The received data can be read on it. | ||
| If the FIFO bit is set as 1, the user also checks the RX_EMPTY, SPI_STATUS[0], to check if there is any more received data or not. | ||
| Note1: The SPI_RX1 is used only in TWOB bit (SPI_CTL[22]) is set 1. | ||
| The first channel's received data shall be read from SPI_RX0 and the second channel's received data shall be read from SPI_RX1 in two-bit mode. | ||
| SPI_RX0 shall be read first in TWOB mode. | ||
| In FIFO and two-bit mode, the first read back data in SPI_RX0 is the first channel data and the second read back data in SPI_RX0 is the second channel data. | ||
| Note2: These registers are read only. |
Definition at line 8721 of file Nano1X2Series.h.
| __IO uint32_t SPI_T::SSR |
| Bits | Field | Descriptions |
|---|---|---|
| [1:0] | SSR | Slave Select Active Register (Master Only) |
| If AUTOSS bit (SPI_SSR[3]) is cleared, writing "1" to SSR[0] bit sets the SPISS[0] line to an active state and writing "0" sets the line back to inactive state.(the same as SSR[1] for SPISS[1]) | ||
| AUTOSS = 0. | ||
| 00 = Both SPISS[1] and SPISS[0] are inactive. | ||
| 01 = SPISS[1] is inactive, SPISS[0] is active. | ||
| 10 = SPISS[1] is active, SPISS[0] is inactive. | ||
| 11 = Both SPISS[1] and SPISS[0] are active. | ||
| If AUTOSS bit is set, writing "1" to any bit location of this field will select appropriate SPISS[1:0] line to be automatically driven to active state for the duration of the transaction, and will be driven to inactive state for the rest of the time. | ||
| (The active level of SPISS[1:0] is specified in SS_LVL). | ||
| AUTOSS =1. | ||
| 00 = Both SPISS[1] and SPISS[0] are inactive. | ||
| 01 = SPISS[1] is inactive, SPISS[0] is active on the duration of transaction. | ||
| 10 = SPISS[1] is active on the duration of transaction, SPISS[0] is inactive. | ||
| 11 = Both SPISS[1] and SPISS[0] are active on the duration of transaction. | ||
| Note1: This interface can only drive one device/slave at a given time. | ||
| Therefore, the slaves select of the selected device must be set to its active level before starting any read or write transfer. | ||
| Note2: SPISS[0] is also defined as device/slave select input in Slave mode. | ||
| And that the slave select input must be driven by edge active trigger which level depend on the SS_LVL setting, otherwise the SPI slave core will go into dead path until the edge active triggers again or reset the SPI core by software. | ||
| [2] | SS_LVL | Slave Select Active Level |
| It defines the active level of device/slave select signal (SPISS[1:0]). | ||
| 0 = The SPI_SS slave select signal is active Low. | ||
| 1 = The SPI_SS slave select signal is active High. | ||
| [3] | AUTOSS | Automatic Slave Selection (Master Only) |
| 0 = If this bit is set as "0", slave select signals are asserted and de-asserted by setting and clearing related bits in SSR[1:0] register. | ||
| 1 = If this bit is set as "1", SPISS[1:0] signals are generated automatically. | ||
| It means that device/slave select signal, which is set in SSR[1:0] register is asserted by the SPI controller when transmit/receive is started, and is de-asserted after each transaction is done. | ||
| [4] | SS_LTRIG | Slave Select Level Trigger |
| 0 = The input slave select signal is edge-trigger. | ||
| 1 = The slave select signal will be level-trigger. | ||
| It depends on SS_LVL to decide the signal is active low or active high. | ||
| [5] | NOSLVSEL | No Slave Selected In Slave Mode |
| This is used to ignore the slave select signal in Slave mode. | ||
| The SPI controller can work on 3 wire interface including SPICLK, SPI_MISO, and SPI_MOSI when it is set as a slave device. | ||
| 0 = The controller is 4-wire bi-direction interface. | ||
| 1 = The controller is 3-wire bi-direction interface in Slave mode. | ||
| When this bit is set as 1, the controller start to transmit/receive data after the GO_BUSY bit active and the serial clock input. | ||
| Note: In no slave select signal mode, the SS_LTRIG (SPI_SSR[4]) shall be set as "1". | ||
| [8] | SLV_ABORT | Abort In Slave Mode With No Slave Selected |
| 0 = No force the slave abort. | ||
| 1 = Force the current transfer done in no slave select mode. | ||
| Note: It is auto cleared to "0" by hardware when the abort event is active. | ||
| [9] | SSTA_INTEN | Slave Start Interrupt Enable Control |
| 0 = Transfer start interrupt Disabled in no slave select mode. | ||
| 1 = Transaction start interrupt Enabled in no slave select mode. | ||
| It is cleared when the current transfer done or the SLV_START_INTSTS bit cleared (write 1 clear). | ||
| [16] | SS_INT_OPT | Slave Select Interrupt Option |
| It is used to enable the interrupt when the transfer has done in slave mode. | ||
| 0 = No any interrupt, even there is slave select inactive event. | ||
| 1 = There is interrupt event when the slave select becomes inactive from active condition. | ||
| It is used to inform the user to know that the transaction has finished and the slave select into the inactive state. |
Definition at line 8685 of file Nano1X2Series.h.
| __IO uint32_t SPI_T::STATUS |
| Bits | Field | Descriptions |
|---|---|---|
| [0] | RX_EMPTY | Received FIFO_EMPTY Status |
| 0 = Received data FIFO is not empty in the FIFO mode. | ||
| 1 = Received data FIFO is empty in the FIFO mode. | ||
| [1] | RX_FULL | Received FIFO_FULL Status |
| 0 = Received data FIFO is not full in FIFO mode. | ||
| 1 = Received data FIFO is full in the FIFO mode. | ||
| [2] | TX_EMPTY | Transmitted FIFO_EMPTY Status |
| 0 = Transmitted data FIFO is not empty in the FIFO mode. | ||
| 1 =Transmitted data FIFO is empty in the FIFO mode. | ||
| [3] | TX_FULL | Transmitted FIFO_FULL Status |
| 0 = Transmitted data FIFO is not full in the FIFO mode. | ||
| 1 = Transmitted data FIFO is full in the FIFO mode. | ||
| [4] | LTRIG_FLAG | Level Trigger Accomplish Flag (INTERNAL ONLY) |
| In Slave mode, this bit indicates whether the received bit number meets the requirement or not after the current transaction done. | ||
| 0 = The transferred bit length of one transaction does not meet the specified requirement. | ||
| 1 = The transferred bit length meets the specified requirement which defined in TX_BIT_LEN. | ||
| Note: This bit is READ only. | ||
| As the software sets the GO_BUSY bit to 1, the LTRIG_FLAG will be cleared to 0 after 4 SPI engine clock periods plus 1 system clock period. | ||
| In FIFO mode, this bit is unmeaning. | ||
| [6] | SLV_START_INTSTS | Slave Start Interrupt Status |
| It is used to dedicate that the transfer has started in Slave mode with no slave select. | ||
| 0 = Slave started transfer no active. | ||
| 1 = Transfer has started in Slave mode with no slave select. | ||
| It is auto clear by transfer done or writing one clear. | ||
| [7] | INTSTS | Interrupt Status |
| 0 = Transfer is not finished yet. | ||
| 1 = Transfer is done. The interrupt is requested when the INTEN(SPI_CTL[17]) bit is enabled. | ||
| Note: This bit is read only, but can be cleared by writing "1" to this bit. | ||
| [8] | RXINT_STS | RX FIFO Threshold Interrupt Status (Read Only) |
| 0 = RX valid data counts small or equal than RXTHRESHOLD (SPI_FFCTL[27:24]). | ||
| 1 = RX valid data counts bigger than RXTHRESHOLD. | ||
| Note: If RXINT_EN(SPI_FFCTL[2]) = 1 and RX_INTSTS = 1, SPI will generate interrupt. | ||
| [9] | RX_OVER_RUN | RX FIFO Over Run Status |
| 0 = No FIFO is over run. | ||
| 1 = Receive FIFO over run. | ||
| Note1: If SPI receives data when RX FIFO is full, this bit will set to 1, and the received data will dropped. | ||
| Note2: This bit will be cleared by writing 1 to it. | ||
| [10] | TXINT_STS | TX FIFO Threshold Interrupt Status (Read Only) |
| 0 = TX valid data counts bigger than TXTHRESHOLD (SPI_FFCTL[31:28]. | ||
| 1 = TX valid data counts small or equal than TXTHRESHOLD. | ||
| [12] | TIME_OUT_STS | TIMEOUT Interrupt Flag |
| 0 = There is not timeout event on the received buffer. | ||
| 1 = Time out event active in RX FIFO is not empty. | ||
| Note: This bit will be cleared by writing 1 to it. | ||
| [19:16] | RX_FIFO_CNT | Data counts in RX FIFO (Read Only) |
| [23:20] | TX_FIFO_CNT | Data counts in TX FIFO (Read Only) |
Definition at line 8607 of file Nano1X2Series.h.
| __O uint32_t SPI_T::TX0 |
| Bits | Field | Descriptions |
|---|---|---|
| [31:0] | TDATA | Transmit Data FIFO Bits(Write Only) |
| The Data Transmit Registers hold the data to be transmitted in the next transfer. | ||
| The number of valid bits depends on the setting of transmit bit length field of the SPI_CTL register. | ||
| For example, if TX_BIT_LEN is set to 0x8, the bit SPI_TX[7:0] will be transmitted in next transfer. | ||
| If TX_BIT_LEN is set to 0x0, the SPI controller will perform a 32-bit transfer. | ||
| Note1: The SPI_TX1 is used only in TWOB bit (SPI_CTL[22]) is set 1. | ||
| The first channel's transmitted data shall be written into SPI_TX0 and the second channel's transmitted data shall be written into SPI_TX1 in two-bit mode. | ||
| SPI_TX0 shall be written first in TWOB mode. | ||
| In FIFO and two-bit mode, the first written into data in SPI_TX0 is the first channel's transmitted data and the second written data in SPI_RX0 is the second channel's transmitted data. | ||
| Note2: When the SPI controller is configured as a slave device and the FIFO mode is disabled, if the SPI controller attempts to transmit data to a master, the software must update the transmit data register before setting the GO_BUSY bit to 1. |
Definition at line 8743 of file Nano1X2Series.h.
| __O uint32_t SPI_T::TX1 |
| Bits | Field | Descriptions |
|---|---|---|
| [31:0] | TDATA | Transmit Data FIFO Bits(Write Only) |
| The Data Transmit Registers hold the data to be transmitted in the next transfer. | ||
| The number of valid bits depends on the setting of transmit bit length field of the SPI_CTL register. | ||
| For example, if TX_BIT_LEN is set to 0x8, the bit SPI_TX[7:0] will be transmitted in next transfer. | ||
| If TX_BIT_LEN is set to 0x0, the SPI controller will perform a 32-bit transfer. | ||
| Note1: The SPI_TX1 is used only in TWOB bit (SPI_CTL[22]) is set 1. | ||
| The first channel's transmitted data shall be written into SPI_TX0 and the second channel's transmitted data shall be written into SPI_TX1 in two-bit mode. | ||
| SPI_TX0 shall be written first in TWOB mode. | ||
| In FIFO and two-bit mode, the first written into data in SPI_TX0 is the first channel's transmitted data and the second written data in SPI_RX0 is the second channel's transmitted data. | ||
| Note2: When the SPI controller is configured as a slave device and the FIFO mode is disabled, if the SPI controller attempts to transmit data to a master, the software must update the transmit data register before setting the GO_BUSY bit to 1. |
Definition at line 8763 of file Nano1X2Series.h.
| __IO uint32_t SPI_T::VARCLK |
| Bits | Field | Descriptions |
|---|---|---|
| [31:0] | VARCLK | Variable Clock Pattern Flag |
| The value in this field is the frequency patterns of the SPICLK. | ||
| Note: It is used for CLKP = 0 only. |
Definition at line 8778 of file Nano1X2Series.h.