CTQ
Home
(current)
Sign-in
This email or this password is invalid.
Email
Password
Slide to the right =>
Sign-in
Forgot password ?


Progressive Web Apps
@nolanlawson
@nolanlawson
What is a
"progressive web app"?
Nebulous term, somewhat like:
- Ajax
- Responsive
- Mobile-first
- etc.
Coined by Alex Russell of Google
https://infrequently.org/2015/06/progressive-apps-escaping-tabs-without-losing-our-soul/
Alex Russell
What makes a progressive web app?
- Native-like characteristics
- Promoted by browser chrome
Native-like characteristics
- Works offline
- Launches from home screen
- Hides URL bar
- Branded colors
- "First class" treatment in OS
- Push notifications (optional)
- Background sync (optional)
Promoted by browser chrome
- "Add to home screen?" popup
(aka the "carrot")
<EMAIL_ADDRESS>Chrome
Opera
Firefox
How do we eat that sweet, sweet carrot?
Requirements for the install banner
- Web Manifest file
- Service Worker
- HTTPS
https://developers.google.com/web/updates/2015/03/increasing-engagement-with-app-install-banners-in-chrome-for-android
Say goodbye to this garbage
Web Manifest file
<head>
<!-- ... -->
<link rel="manifest" href="manifest.json">
<!-- ... -->
</head>
http://w3c.github.io/manifest/
Manifest JSON file
{
"short_name": "Pokedex.org",
"name": "Pokedex.org",
"display": "standalone",
"start_url": "index.html?launcher=true",
"theme_color": "#a040a0",
"background_color": "#EEEEEE",
"icons": [
{ "src": "img/icon-48.png", "sizes": "48x48", "type": "image/png" },
{ "src": "img/icon-96.png", "sizes": "96x96", "type": "image/png" },
{ "src": "img/icon-144.png", "sizes": "144x144", "type": "image/png" },
{ "src": "img/icon-196.png", "sizes": "196x196", "type": "image/png" }
]
}
Bad old days: App Cache
CACHE MANIFEST
# rev 2016-04-28 08:44:48 -0400
CACHE:
/adapters.html
/api.html
/static/css/pouchdb.css
/static/favicon.ico
/static/js/code.min.js
/static/img/fauxton.png
/static/img/kittens.jpg
http://code.jquery.com/jquery.min.js
http://fonts.googleapis.com/css?family=Lato:400,700|Open+Sans:400,700
NETWORK:
*
Service Worker in a nutshell
- Web Worker on steroids
- Process/security of Shared Worker
- Programmable client-side proxy
- HTTPS required (except localhost)
Web Workers vs Service Workers
Useful SW tools
- sw-precache
- sw-toolbox
- offline-plugin (webpack)
- UpUp
Soft requirements for PWAs
- Theme color
- App shell
- IndexedDB
- 60FPS animations
http://stackoverflow.com/tags/progressive-web-apps/info
Theme color
<head>
<!-- ... -->
<meta name=theme-color content=#a040a0>
<!-- ... -->
</head>
https://github.com/whatwg/html/commit/05e4a1f6c4941273baa647b8e889d2db7fd9bd88
Dynamic theme color
var meta = document.head.querySelector('meta[name="theme-color"]');
meta.content = '#4169E1';
https://developers.google.com/web/updates/2015/11/app-shell
AKA:
- Progressive rendering
- Progressive enhancement
- Not showing a blank screen w/o JS
Strategies
- Server-side HTML
- React
- Ember Fastboot
- Hyperscript (virtual-dom)
- etc.
- Turn off JS to see effect
- Load in 2G to see progressive loading
IndexedDB/WebSQL for data storage
Pokédex IDB
4.0M Chrome / 5.6M Firefox
Why IDB + WebSQL?
IndexedDB libraries
- LocalForage
- PouchDB
- Dexie
- YDN-DB
- indexeddb-promised
Extra credit: web workers
- IDB is fast, but blocks the DOM
- Web Workers mitigate this
- No IDB+WW in Safari; use pseudo-worker
http://nolanlawson.github.io/database-comparison/
http://nolanlawson.com/2015/09/29/indexeddb-websql-localstorage-what-blocks-the-dom/
https://www.npmjs.com/package/pseudo-worker
Only use hardware-accelerated:
http://www.html5rocks.com/en/tutorials/speed/high-performance-animations/
FLIP animations
- Flexibility of JS, performance of CSS
- Technique, not a library
- First - Last - Invert - Play
https://aerotwist.com/blog/flip-your-animations/
Workshop time!
https://github.com/google/web-starter-kit
Offline Star Wars app
https://github.com/nolanlawson/star-wars-offline
Extra credit
- Multiple tabs
- Detail page with animations
- IndexedDB
- Web Workers
Thanks!
http://nolanlawson.github.io/pwas-2016-05/


[username]
We recommend using at least an image that's no larger than 10MB
If an image is not uploaded, a default image will be used


Rode212.github.io
Learn about the available ports and an explanation of the status lights on a Cisco DPC3000 cable modem. Cisco Model DPC3000 DOCSIS 3.0 Cable Modem Front Panel . Table 1. Front Panel Features . Feature Description . Indicators POWER, DS, US, ONLINE
Cisco DPC3000 - Cox Communications. 4027702 Rev A Cisco Model DPC3000 Cable Modem Installation and Operation Guide.
Cisco Model DPC3000 or EPC3000 DOCSIS 3.0 Cable Modem Model: DPC3000 and EPC3000 Manufactured by: Cisco Systems, Inc. 5030 Sugarloaf Parkway. CISCO DPC3000 USER MANUAL Pdf Download.
Find great deals on eBay for cisco dpc3008. Shop with confidence. Skip to main AC Adapter For Cisco Linksys DPC3000 DPC3008 DPC3010 Modem Power Supply. Find great deals on eBay for cisco dpc3000. Shop with confidence. View and Download Cisco DPC3000 user manual online. DOCSIS 3.0 4x4 Cable Modem. DPC3000 Modem pdf manual download. Also for: Dpc3010, Epc3010, Epc3000. Cisco DPC3000 Pdf User Manuals. View online or download Cisco DPC3000 User Manual.
Default Password, Login and IP for your Cisco DPC3000 router. User Manuals and How to Factory Reset your Cisco DPC3000 router. Cisco Model DPC3000 Cable Modem Installation Operation Guide. Cisco DPC3000 Default Password Login, Manuals and Reset. Cisco Model DPC3000 DOCSIS 3.0 Cable Modem Data Sheet. Cisco Model DPC3000 and EPC3000 DOCSIS 3.0 4x4 Cable Modem.


Sign Up Form
Analysis Of US Accidents Dataset
This is a website that counts traffic accidents in the United States
Sign Up Here
Sign Up
Already Have an account..?
Login Here


Quick fix removes underscores from numeric literals. For example 1_000_000 will be converted to 1000000.
1_000_000
1000000
This inspection only reports if the language level of the project or module is 7 or higher
New in 2020.2


Validators
isNotEmpty
If the input is not empty, this returns true, otherwise it returns false.
Verify if input is empty
Alphabetic
Check to see that the input value is purely alphabetic, no numeric characters.
Verify input is text only.
Numeric
Verify is numeric value
Alpha-numeric
Verify is alpha-numeric
Username
Must contain at least 6 characters
Must be alphabetic or alpha-numeric
Verify username
Matching Passwords
Passwords must match and contain mixed, alpha-numeric characters and have at least 6 characters
Verify Passwords
Email Address
Verify email address
US/Canada Phone Number
Verify phone number
International Phone Number
Verify phone number
URL
A valid url should being with http, https or ftp
Veritfy URL
Age
Includes a minimum age requirement (18)
Verify age
Checkbox
Should be selected
Agree to terms
Verify checkbox selection
Radio Buttons
One should be selected
Apples
Oranges
Bananas
Verify checkbox selection
Select Box
Make a selection
Select a fruit...
Apple
Orange
Banana
Validate select box


search for a city by clicking on that search thingy (yahoo might have changed their api if it doesn't work, hmu)
oopsie!! no data to show ;(


The Hoodie Animals
This project is powered by our humans — and by another great bunch: say hi to our wonderful Hoodie Animals <3
--- layout: layout-animals title: 'hood.ie animals' ---
When thinking about a proper representative of the Hoodie project on the internet, all of a sudden we ended up in an extensive discussion. Of course we had had a dog as a profile picture in Hoodie’s official internet accounts for a long time, but did that even matter?  Or wouldn’t it be far better to hire a cat to do the job, also to gain broader acceptance and support from the general internet audience, which, according to statistics, consists of 95% cats?
Then we stumbled upon a blog post: “Hi, I’m a dog,” it started. We continued reading: “I have been on the internet for more than ten years now. Most of my time on the internet I spent in niches, places which are designed for dogs and other internet animals that are just not cats. I’m aware that the internet is mostly a place for cats, and I’m okay with it.  They’re usually quite decent animals, although their huge visibility (they’re just everywhere!) is sometimes a bit frustrating. Still, I think that the internet is also a place for animals like me, and that we should be more visible here. I, as my kind of animals, am not a high-profile animal on the internet yet, but if there’s a place for me where I could get in touch with a broader audience, please contact me. Oh, and by the way: I love wearing textiles.” Touched by those words, we knew it immediately: this dog just had to be our project representative.
And this is the reason why we now have a dog on all our internet profiles: our beloved Low-Profile Dog.
It was a hot day on an island in the south. We were walking along a long, dusty road towards the sea. The sun was beating down from the sky, the air was shimmering in the heat of the midday. Suddenly we heard a strange noise. “Doc, doc, doc! Doooc, doc, doc!”, someone said behind us. We turned around. And there we saw it: a small, brown chicken, wandering along the road just a few meters behind us. It stood still and looked at us. “Doooc, doc, doc!”, it said, again. We slowly approached it, not sure what it wanted to tell us. “Doooc, doc, doc!” Then we realised the chicken had a small bag with it. It opened the bag, rummaged around it and suddenly fished out – a blue Hoodie. The chicken put its wings into the sleeves, closed the zipper, put on the hood, stood up straight, raised its chin and looked at us proudly. “Doooc, doc, doc!”, it repeated, closed its bag and joined us on our way to the sea.
And then we understood: this chicken is one of us, and it is on a mission: to support us and everyone who wants to get involved into Hoodie. It is the Hoodie-Docs-Chicken.
In a shady pine forest, close to the shore, a bear ambled slowly across a carpet of pine needles.
She stopped, sat back on her haunches, with a little picnic basket next to her. She opened the lid of the basket, took out a slice of strawberry cheesecake, and hooked out a green hoodie. Carefully she slipped her big paws into the sleeves and pulled a little red pencil from one pocket and a spiral-bound notebook from the other.
This was no ordinary bear. No, this was a bear with a lot to say and a lot to convey. The first Wednesday of every month you’ll find her hosting the BIT (Bears in Tech) breakfast with her buddies Baloo, Yogi, Paddington and Iorek Byrnison. She aspires to inspire and empower animals of all species: chickens, dogs, alpacas and more to contribute to making the web a better place. She’s got her ear to the ground and her paw on the pulse; always networking, making connections and gathering information.
Putting up the hood she turned to address us and in a gentle growl she asked, “What would the API of your dreams look like?” We knew we had found our Blog Bear.
With barely a ripple, a beaver surfaced at the lake’s edge.
Making their way up the shore, they took measured steps along the tightly packed sand. They rummaged under a nearby rock for a moment before emerging with a trusty red toolbox. With a practiced tap of their claws, the box sprang open. Inside, a treasure trove of neatly arranged tools lay beside a crisply folded hoodie.
After a quick shake to dry their fur and a crisp zzzzzip into the hoodie, they tapped their tail in excitement: it was time to work. Tightly clutching a sharpened stick in their dainty paws, they began to sketch quickly in the sand. Diagrams, project ideas, problems they still needed to fix...
As we approached, they sat back on their haunches, absentmindedly sharpening the drawing stick with their claws. Glancing up, they caught sight of us, flashed a toothy grin, and raised a paw in welcome. We waved back, greeting our new friend and builder extraordinaire, the Development Beaver.


{% extends 'full_base.html' %} {% load bootstrap4 %} {% block main_content %}
By proceeding, you agree to our Privacy Policy and Terms of Use


In order to enable validation, you must include the JavaScript files. First Luga Common then Luga Validator (in this order)
<script src="js/luga.common.min.js"></script>
<script src="js/luga.validator.min.js"></script>
Then add the data-lugavalidator-validate="true" attribute to the form tag
<form data-lugavalidator-validate="true">
<input type="text" name="name"
data-lugavalidator-required="true"
data-lugavalidator-errorclass="invalid"
data-lugavalidator-message="Invalid!"/>
<input type="submit" value="Submit"/>
</form>
The library initializes all the ajaxforms contained inside the current document as soon as it's loaded. If the DOM structure is not significantly altered at run-time, you don't need to worry about it. If you are working on a single-page application or if you inject new forms inside the document at run-time, you may want to programmatically call luga.validator.initForms()


|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object java.awt.GraphicsDevice
public abstract class GraphicsDevice
The GraphicsDevice
class describes the graphics devices
that might be available in a particular graphics environment. These
include screen and printer devices. Note that there can be many screens
and many printers in an instance of GraphicsEnvironment
. Each
graphics device has one or more GraphicsConfiguration
objects
associated with it. These objects specify the different configurations
in which the GraphicsDevice
can be used.
In a multi-screen environment, the GraphicsConfiguration
objects can be used to render components on multiple screens. The
following code sample demonstrates how to create a JFrame
object for each GraphicsConfiguration
on each screen
device in the GraphicsEnvironment
:
GraphicsEnvironment ge = GraphicsEnvironment. getLocalGraphicsEnvironment(); GraphicsDevice[] gs = ge.getScreenDevices(); for (int j = 0; j < gs.length; j++) { GraphicsDevice gd = gs[j]; GraphicsConfiguration[] gc = gd.getConfigurations(); for (int i=0; i < gc.length; i++) { JFrame f = new JFrame(gs[j].getDefaultConfiguration()); Canvas c = new Canvas(gc[i]); Rectangle gcBounds = gc[i].getBounds(); int xoffs = gcBounds.x; int yoffs = gcBounds.y; f.getContentPane().add(c); f.setLocation((i*50)+xoffs, (i*60)+yoffs); f.show(); } }
GraphicsEnvironment
,
GraphicsConfiguration
| Field Summary | |
|---|---|
static int |
TYPE_IMAGE_BUFFER
Device is an image buffer. |
static int |
TYPE_PRINTER
Device is a printer. |
static int |
TYPE_RASTER_SCREEN
Device is a raster screen. |
| Constructor Summary | |
|---|---|
protected |
GraphicsDevice()
This is an abstract class that cannot be instantiated directly. |
| Method Summary | |
|---|---|
int |
getAvailableAcceleratedMemory()
This method returns the number of bytes available in accelerated memory on this device. |
GraphicsConfiguration |
getBestConfiguration(GraphicsConfigTemplate gct)
Returns the "best" configuration possible that passes the criteria defined in the GraphicsConfigTemplate . |
abstract GraphicsConfiguration[] |
getConfigurations()
Returns all of the GraphicsConfiguration
objects associated with this GraphicsDevice . |
abstract GraphicsConfiguration |
getDefaultConfiguration()
Returns the default GraphicsConfiguration
associated with this GraphicsDevice . |
DisplayMode |
getDisplayMode()
Returns the current display mode of this GraphicsDevice . |
DisplayMode[] |
getDisplayModes()
Returns all display modes available for this GraphicsDevice . |
Window |
getFullScreenWindow()
Returns the Window object representing the
full-screen window if the device is in full-screen mode. |
abstract String |
getIDstring()
Returns the identification string associated with this GraphicsDevice . |
abstract int |
getType()
Returns the type of this GraphicsDevice . |
boolean |
isDisplayChangeSupported()
Returns true if this GraphicsDevice
supports low-level display changes. |
boolean |
isFullScreenSupported()
Returns true if this GraphicsDevice
supports full-screen exclusive mode. |
void |
setDisplayMode(DisplayMode dm)
Sets the display mode of this graphics device. |
void |
setFullScreenWindow(Window w)
Enter full-screen mode, or return to windowed mode. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
public static final int TYPE_RASTER_SCREEN
public static final int TYPE_PRINTER
public static final int TYPE_IMAGE_BUFFER
| Constructor Detail |
|---|
protected GraphicsDevice()
GraphicsEnvironment.getScreenDevices()
,
GraphicsEnvironment.getDefaultScreenDevice()
,
GraphicsConfiguration.getDevice()
| Method Detail |
|---|
public abstract int getType()
GraphicsDevice
.
GraphicsDevice
, which can
either be TYPE_RASTER_SCREEN, TYPE_PRINTER or TYPE_IMAGE_BUFFER.TYPE_RASTER_SCREEN
,
TYPE_PRINTER
,
TYPE_IMAGE_BUFFER
public abstract String getIDstring()
GraphicsDevice
.
A particular program might use more than one
GraphicsDevice
in a GraphicsEnvironment
.
This method returns a String
identifying a
particular GraphicsDevice
in the local
GraphicsEnvironment
. Although there is
no public method to set this String
, a programmer can
use the String
for debugging purposes. Vendors of
the JavaTM Runtime Environment can
format the return value of the String
. To determine
how to interpret the value of the String
, contact the
vendor of your Java Runtime. To find out who the vendor is, from
your program, call the
getProperty
method of the
System class with "java.vendor".
String
that is the identification
of this GraphicsDevice
.public abstract GraphicsConfiguration[] getConfigurations()
GraphicsConfiguration
objects associated with this GraphicsDevice
.
GraphicsConfiguration
objects that are associated with this
GraphicsDevice
.public abstract GraphicsConfiguration getDefaultConfiguration()
GraphicsConfiguration
associated with this GraphicsDevice
.
GraphicsConfiguration
of this GraphicsDevice
.public GraphicsConfiguration getBestConfiguration(GraphicsConfigTemplate gct)
GraphicsConfigTemplate
.
gct
- the GraphicsConfigTemplate
object
used to obtain a valid GraphicsConfiguration
GraphicsConfiguration
that passes
the criteria defined in the specified
GraphicsConfigTemplate
.GraphicsConfigTemplate
public boolean isFullScreenSupported()
true
if this GraphicsDevice
supports full-screen exclusive mode.
public void setFullScreenWindow(Window w)
If isFullScreenSupported
returns true
, full
screen mode is considered to be exclusive, which implies:
Component.enableInputMethods(false)
to make a component
a non-client of the input method framework.
If isFullScreenSupported
returns
false
, full-screen exclusive mode is simulated by resizing
the window to the size of the screen and positioning it at (0,0).
When entering full-screen exclusive mode, if the window to be used as the full-screen window is not visible, this method will make it visible. It will remain visible when returning to windowed mode.
When returning to windowed mode from an exclusive full-screen window, any
display changes made by calling setDisplayMode
are
automatically restored to their original state.
w
- a window to use as the full-screen window; null
if returning to windowed mode. Some platforms expect the
fullscreen window to be a top-level component (i.e., a Frame);
therefore it is preferable to use a Frame here rather than a
Window.isFullScreenSupported()
,
getFullScreenWindow()
,
setDisplayMode(java.awt.DisplayMode)
,
Component.enableInputMethods(boolean)
,
Component.setVisible(boolean)
public Window getFullScreenWindow()
Window
object representing the
full-screen window if the device is in full-screen mode.
null
if the device is
not in full-screen mode.setFullScreenWindow(Window)
public boolean isDisplayChangeSupported()
true
if this GraphicsDevice
supports low-level display changes.
setDisplayMode(java.awt.DisplayMode)
public void setDisplayMode(DisplayMode dm)
dm
- the new display mode of this graphics device
IllegalArgumentException
- if the DisplayMode
supplied is null
, or is not available in the array returned
by getDisplayModes
UnsupportedOperationException
- if
isDisplayChangeSupported
returns false
getDisplayMode()
,
getDisplayModes()
,
isDisplayChangeSupported()
public DisplayMode getDisplayMode()
GraphicsDevice
.
setDisplayMode(DisplayMode)
public DisplayMode[] getDisplayModes()
GraphicsDevice
.
public int getAvailableAcceleratedMemory()
ImageCapabilities
object
associated with a VolatileImage that can be used to determine
whether a particular VolatileImage has been created in accelerated
memory.
VolatileImage.flush()
,
ImageCapabilities.isAccelerated()
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
Copyright © 2004, 2010 Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.


Front-end developer
Vincent Li
Page 2
Experienced with HTML/CSS/Javascript/React.js
page 3
Looking forward to be a Front-end developer!
☐
The best phone ever!!
iPhone5
iPhone5
iPhone5s
iPhone6
iPhone6s
Wiggle
Turn around


--- date: 2013-11-26 15:00:05 author: Colene Chow title: "PhoneGap Day EU 2013: PhoneGap Command-Line" format: html tags: - PhoneGap Day - Community - Event ---
Thank you to everyone who attended PhoneGap Day EU. We've been posting videos from the conference for those of you who couldn't make it. View previous PhoneGap Day talks on our blog or on YouTube.
Our next speaker is Michael Brooks, from the Cordova/PhoneGap team, giving an overview of the PhoneGap Command-Line.


When I
/about
then I should receive
200 OK
and the body contains
{
"buildDate": "{date.anyValid}",
"commitId": "{git.validCommitId}",
"scmBranch": "{git.validBranch}",
"startedAt": "{date.beforeNow}",
"tentativesTTL": "PT24H",
"version": "$version"
}
The tentativesTTL value determines the Time to Live for (unconfirmed) tentative objects.
Tentative objects should be confirmed before their allotted
life span is over as they risk automatic purging by the server any time thereafter.
When I
/
using
text/html
then I should receive
200 OK
When I
/application.wadl
using
application/xml
then I should receive
200 OK
When I
/favicon.ico
then I should receive
204 No Content


My Favourite Read From The Past - Startups, Tech. Life
January 31, 2017
Reading is to the mind what exercise is to the body.
-Joseph Addision
One of the habits I grew in myself which I am really proud of and really goes into making the person I am today is: Learning a lot of things by Reading a lot of things.
In course of time, I’ve consumed many articles (mostly on Internet) and have bookmarked the one I like the most. The following is a list of some of my favourite articles from the past year in no particular order.
I’d encourage you to scroll through the entire list and read the ones that seem interesting to you. And feel free to share what you loved to read this year
Teach yourself programming in 10 years
The key is deliberative practice: not just doing it again and again, but challenging yourself with a task that is just beyond your current ability, trying it, analyzing your performance while and after doing it, and correcting any mistakes. Then repeat. And repeat again.
The reductive seduction of other people’s problem.
A well written, and urgently needed analysis of the relationship between American youth (or say any first world country’s youth) and the world of international development.
How to stop giving f@&% what people think - start living your life
Start standing up for what you believe in — causes, opinions, anything. You’re going to have people that disagree with you anyways, so why not express how you truly feel?
An engineer’s guide to stock option
This guide is an attempt to correct some of the imbalance in information between companies and employees, and explain in plain English the whole stock option process.
So, you want to work in security?
A helpful and insightful article from Parisa Tabriz - head of Google Chrome security team, to anyone who wants to work in security field.
What happens when
An attempt to answer the age old interview question “What happens when you type google.com into your browser’s address box and press enter?
An open guide to equity compensation
More like a small book, trying to explain a rather very confusing topic: Equity Compensation
An introduction to stock market
A very helpful post to make you understand the basics of stock market from none other than Quora Rockstar Balaji Viswanathan
Emotional Intelligence: The Social Skills You Weren’t Taught in School
A helpful guide regarding how to identify or deal with our own emotions, or the emotions of others
How to Negotiate Nicely Without Being a Pushover
How exactly do you drive a hard bargain while also employing soft skills? How do you advocate for what you want without burning important bridges? How? Read the article to find out.
10 tricks to appear smart during meetings
Sometimes meetings can be difficult if you start daydreaming about your next vacation, your next nap, or bacon. When this happens, it’s good to have some fallback tricks to fall back on
How quitting my corporate job for my startup dream f*cked my life up
Day by day, I was getting lonelier and more depressive as I avoided social occasions. My startup progress was not as fast as my social circle imagined it to be and I was fed up with telling people it took years for startups like Facebook and Twitter to arrive at where they are now.
How to start a startup
Startups are emotional roller coasters that one minute make you feel like you’re changing the world and the next minute, that everything is falling apart. This guide about how to start a startup may help.
15 Tricks to Appear Smart in Emails
Your email writing, sending and ignoring skills are just as important as your nodding skills, and even more important than your copying and pasting skills. Here are 15 email tricks that will make you appear smart, passionate, dedicated and most of all, smart.
The science of why you should spend your time on expriences not thing
We know that money can make you happier, though after your basic needs are met, it doesn’t make you that much happier. But one of the biggest questions is how to allocate our money, which is (for most of us) a limited resource.
7 Rules for Creating Gorgeous UI (Part 1)
An UI/UX design guide for nerds - part 1
7 Rules for Creating Gorgeous UI (Part 2)
An UI?UX design for nerds - part 2
How I Learned to Stop Procrastinating, & Love Letting Go
The Zen way to stop Procrastinating, really helpful guide to achieve life long success.
Relearning the Art of Asking Questions
Asking clarifying questions can help uncover the real intent behind what is said. These help us understand each other better and lead us toward relevant follow-up questions.
Google CFO retires with a candid memo about work/life balance
In the end, life is wonderful, but nonetheless a series of trade offs, especially between business/professional endeavors and family/community.
Great Hackers
I know a handful of super-hackers, so I sat down and thought about what they have in common. Their defining quality is probably that they really love to program. Ordinary programmers write code to pay the bills. Great hackers think of it as something they do for fun, and which they’re delighted to find people will pay them for. - Paul Graham, founder of YC
Books worth reading, as recommended by Bill Gates, Susan Cain and more…
A curated list of recommended books from great personalities
Advice for ambitious 19 year olds
From Sam Altman, President of Y Combinator
Good and Bad Reasons to Become an Entrepreneur
Some valuable insights on being Entrepreneur from Dustin Moskovitz, co-founder of facebook
What I tell all new programmers
An assorted set of wisdom to all new programmers.
What is your favourite productivity hack?
Invaluable insights to control your life and get the best out of it.

The real 10 algorithms that dominate our world
Maybe a little more than 10
9 Things I Learned as a Software Engineer
This is a note to the younger self, a list of things author learned, sometimes painfully, in the past three years.


Arrays and hashes are two sides of the same coin. Essentially, an array has values that are used to manipulate the output of a certain section of code. You can run a set of values through code using arrays instead of having to input values in to separate sections of code manually or through the usage of other blocks of code. (If this was the case, we would just develop arrays themselves! Luckily, we don't have to because those smart precursors of ours did it for us.)
An example would be something like:
def array1(x,y,z)
if x == y
puts "Nice!"
elsif x == z
puts "Not nice..."
end
end
array1(1,2,1) # would return "Not nice..."
array1(1,1,2) # Would return "Nice!"
(I will make a div for this later. I need to get it all laid out right now.)
Hashes, in essence, are just the opposite. They are values (usually numeric ones) that are assigned to specific pieces of information such as a name or address. You can call the hash and grab, say, someones name. This is important, because people who are dealing with cyber security often use hash values to help keep names secret. It is similar to having a key for a lock. The values on a sheet are assigned to hash values and don't actually display the information itself. It is a reference to the information, much like the index of a book.
About Me
I am, well I used to be, a college student who has always had an insatiable drive to learn about the world. I am currently attending Dev Bootcamp to learn how to code and develop pretty much anything that my heart desires. That is all anyone can ever truly strive for, right?
-The links below are broken for the time being. I am working on updating all of my blog pages.-


Ragu micro-frontends can be exported rendered at the server side improving the user experience and the load time.
Ragu Server comes with a build system on top of webpack which you can extend though the ragu server configuration.
Share code using private npm package requires project build to apply changes. Ragu enable independent deployment.


{% extends 'transfers/login_base.html' %} {% block content %}
The password reset link was invalid, possibly because it has already been used. Please request a new password reset.


--- title: Select EBSD data sidebar: documentation_sidebar permalink: EBSDSelect.html folder: documentation toc: false ---
In this section we discuss how to select specific EBSD data by certain properties. Let us first import some example EBSD data using the command mtexdata
.
These data consist of three indexed phases, Forsterite, Enstatite and Diopside. The not indexed phase called not Indexed. The phases can be visualized by
{% highlight matlab %} close all; plotx2east plot(ebsd) {% endhighlight %}After import the EBSD data are stored in the variable ebsd
which is essentially a long list of x and y values together with phase information and orientations. In order to restrict this list to a certain phase just use the mineral name as an index, i.e.
contains only the Forsterite measurements. In order to extract a couple of phases, the mineral names have to be grouped in curled parenthesis.
{% highlight matlab %} ebsd({'Fo','En'}) {% endhighlight %} {% highlight plaintext %} ans = EBSD Phase Orientations Mineral Color Symmetry Crystal reference frame 1 152345 (85%) Forsterite LightSkyBlue mmm 2 26058 (15%) Enstatite DarkSeaGreen mmm Properties: bands, bc, bs, error, mad, x, y Scan unit : um {% endhighlight %}As an example, let us plot the Forsterite data.
{% highlight matlab %} close all plot(ebsd('Forsterite'),ebsd('Forsterite').orientations) {% endhighlight %}The data is colorized according to its orientation. By default color of an orientation is determined by its position in the 001 inverse pole figure which itself is colored as
{% highlight matlab %} ipfKey = ipfColorKey(ebsd('Forsterite')); plot(ipfKey) {% endhighlight %}If one is not interested in the whole data set but only in those measurements inside a certain polygon, the restriction can be constructed as follows:
First define a region by [xmin ymin xmax-xmin ymax-ymin]
{% highlight matlab %} region = [5 2 10 5]*10^3; {% endhighlight %}plot the ebsd data together with the region of interest
{% highlight matlab %} close all plot(ebsd) rectangle('position',region,'edgecolor','r','linewidth',2) {% endhighlight %}The command inpolygon checks for each EBSD data point whether it is inside a polygon or not, i.e.
{% highlight matlab %} condition = inpolygon(ebsd,region); {% endhighlight %}results in a large vector of TRUE
and FALSE
stating which data points are inside the region. Restricting the EBSD data by this condition is done via
plot
{% highlight matlab %} close all plot(ebsd) {% endhighlight %}Note, that you can also select a polygon by mouse using the command
{% highlight matlab %} poly = selectPolygon {% endhighlight %}By MAD (mean angular deviation) in the case of Oxford Channel programs, or by CI (Confidence Index) in the case of OIM-TSL programs
Most EBSD measurements contain quantities indicating inaccurate measurements.
{% highlight matlab %} close all plot(ebsd,ebsd.mad) mtexColorbar {% endhighlight %}or
{% highlight matlab %} close all plot(ebsd,ebsd.bc) mtexColorbar {% endhighlight %}Here we will use the MAD to identify and eliminate inaccurate measurements.
{% highlight matlab %} % plot a histogram close all hist(ebsd.mad) {% endhighlight %}


Sign up
Company Name
GLN
Amount
Email
Password
Your password must be at least 6 characters.
done
Done
clear
Cancel


ASCollectionNode Class Reference
| Inherits from | ASDisplayNode : ASDealloc2MainObject |
|---|---|
| Conforms to | ASRangeControllerUpdateRangeProtocol |
| Declared in | ASCollectionNode.h |
Overview
ASCollectionNode is a node based class that wraps an ASCollectionView. It can be used as a subnode of another node, and provide room for many (great) features and improvements later on.
– initWithCollectionViewLayout:
Initializes an ASCollectionNode
- (instancetype)initWithCollectionViewLayout:(UICollectionViewLayout *)layout
Parameters
layout |
The layout object to use for organizing items. The collection view stores a strong reference to the specified object. Must not be nil. |
|---|
Discussion
Initializes and returns a newly allocated collection node object with the specified layout.
Declared In
ASCollectionNode.h
– initWithFrame:collectionViewLayout:
Initializes an ASCollectionNode
- (instancetype)initWithFrame:(CGRect)frame collectionViewLayout:(UICollectionViewLayout *)layout
Parameters
frame |
The frame rectangle for the collection view, measured in points. The origin of the frame is relative to the superview in which you plan to add it. This frame is passed to the superclass during initialization. |
|---|---|
layout |
The layout object to use for organizing items. The collection view stores a strong reference to the specified object. Must not be nil. |
Discussion
Initializes and returns a newly allocated collection node object with the specified frame and layout.
Declared In
ASCollectionNode.h
view
Returns the corresponding ASCollectionView
@property (strong, nonatomic, readonly) ASCollectionView *view
Return Value
view The corresponding ASCollectionView.
Declared In
ASCollectionNode.h
delegate
The object that acts as the asynchronous delegate of the collection view
@property (weak, nonatomic) id<ASCollectionDelegate> delegate
Discussion
The delegate must adopt the ASCollectionDelegate protocol. The collection view maintains a weak reference to the delegate object.
The delegate object is responsible for providing size constraints for nodes and indicating whether batch fetching should begin.
Note: This is a convenience method which sets the asyncDelegate on the collection node’s collection view.
Declared In
ASCollectionNode.h
dataSource
The object that acts as the asynchronous data source of the collection view
@property (weak, nonatomic) id<ASCollectionDataSource> dataSource
Discussion
The datasource must adopt the ASCollectionDataSource protocol. The collection view maintains a weak reference to the datasource object.
The datasource object is responsible for providing nodes or node creation blocks to the collection view.
Note: This is a convenience method which sets the asyncDatasource on the collection node’s collection view.
Declared In
ASCollectionNode.h
allowsSelection
A Boolean value that indicates whether users can select items in the collection node. If the value of this property is YES (the default), users can select items. If you want more fine-grained control over the selection of items, you must provide a delegate object and implement the appropriate methods of the UICollectionNodeDelegate protocol.
@property (nonatomic, assign) BOOL allowsSelection
Declared In
ASCollectionNode.h
allowsMultipleSelection
A Boolean value that determines whether users can select more than one item in the collection node. This property controls whether multiple items can be selected simultaneously. The default value of this property is NO. When the value of this property is YES, tapping a cell adds it to the current selection (assuming the delegate permits the cell to be selected). Tapping the cell again removes it from the selection.
@property (nonatomic, assign) BOOL allowsMultipleSelection
Declared In
ASCollectionNode.h
– tuningParametersForRangeType:
Tuning parameters for a range type in full mode.
- (ASRangeTuningParameters)tuningParametersForRangeType:(ASLayoutRangeType)rangeType
Parameters
rangeType |
The range type to get the tuning parameters for. |
|---|
Return Value
A tuning parameter value for the given range type in full mode.
Declared In
ASCollectionNode.h
– setTuningParameters:forRangeType:
Set the tuning parameters for a range type in full mode.
- (void)setTuningParameters:(ASRangeTuningParameters)tuningParameters forRangeType:(ASLayoutRangeType)rangeType
Parameters
tuningParameters |
The tuning parameters to store for a range type. |
|---|---|
rangeType |
The range type to set the tuning parameters for. |
Declared In
ASCollectionNode.h
– tuningParametersForRangeMode:rangeType:
Tuning parameters for a range type in the specified mode.
- (ASRangeTuningParameters)tuningParametersForRangeMode:(ASLayoutRangeMode)rangeMode rangeType:(ASLayoutRangeType)rangeType
Parameters
rangeMode |
The range mode to get the running parameters for. |
|---|---|
rangeType |
The range type to get the tuning parameters for. |
Return Value
A tuning parameter value for the given range type in the given mode.
Declared In
ASCollectionNode.h
– setTuningParameters:forRangeMode:rangeType:
Set the tuning parameters for a range type in the specified mode.
- (void)setTuningParameters:(ASRangeTuningParameters)tuningParameters forRangeMode:(ASLayoutRangeMode)rangeMode rangeType:(ASLayoutRangeType)rangeType
Parameters
tuningParameters |
The tuning parameters to store for a range type. |
|---|---|
rangeMode |
The range mode to set the running parameters for. |
rangeType |
The range type to set the tuning parameters for. |
Declared In
ASCollectionNode.h
– scrollToItemAtIndexPath:atScrollPosition:animated:
Scrolls the collection to the given item.
- (void)scrollToItemAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UICollectionViewScrollPosition)scrollPosition animated:(BOOL)animated
Parameters
indexPath |
The index path of the item. |
|---|---|
scrollPosition |
Where the item should end up after the scroll. |
animated |
Whether the scroll should be animated or not. This method must be called on the main thread. |
Declared In
ASCollectionNode.h
– registerSupplementaryNodeOfKind:
Registers the given kind of supplementary node for use in creating node-backed supplementary elements.
- (void)registerSupplementaryNodeOfKind:(NSString *)elementKind
Parameters
elementKind |
The kind of supplementary node that will be requested through the data source. |
|---|
Discussion
Use this method to register support for the use of supplementary nodes in place of the default
registerClass:forSupplementaryViewOfKind:withReuseIdentifier:
and registerNib:forSupplementaryViewOfKind:withReuseIdentifier:
methods. This method will register an internal backing view that will host the contents of the supplementary nodes
returned from the data source.
Declared In
ASCollectionNode.h
– performBatchAnimated:updates:completion:
Perform a batch of updates asynchronously, optionally disabling all animations in the batch. This method must be called from the main thread. The data source must be updated to reflect the changes before the update block completes.
- (void)performBatchAnimated:(BOOL)animated updates:(nullable __attribute ( ( noescape ) ) void ( ^ ) ( ))updates completion:(nullable void ( ^ ) ( BOOL finished ))completion
Parameters
animated |
NO to disable animations for this batch |
|---|---|
updates |
The block that performs the relevant insert, delete, reload, or move operations. |
completion |
A completion handler block to execute when all of the operations are finished. This block takes a single Boolean parameter that contains the value YES if all of the related animations completed successfully or NO if they were interrupted. This parameter may be nil. If supplied, the block is run on the main thread. |
Declared In
ASCollectionNode.h
– performBatchUpdates:completion:
Perform a batch of updates asynchronously, optionally disabling all animations in the batch. This method must be called from the main thread. The data source must be updated to reflect the changes before the update block completes.
- (void)performBatchUpdates:(nullable __attribute ( ( noescape ) ) void ( ^ ) ( ))updates completion:(nullable void ( ^ ) ( BOOL finished ))completion
Parameters
updates |
The block that performs the relevant insert, delete, reload, or move operations. |
|---|---|
completion |
A completion handler block to execute when all of the operations are finished. This block takes a single Boolean parameter that contains the value YES if all of the related animations completed successfully or NO if they were interrupted. This parameter may be nil. If supplied, the block is run on the main thread. |
Declared In
ASCollectionNode.h
– waitUntilAllUpdatesAreCommitted
Blocks execution of the main thread until all section and item updates are committed to the view. This method must be called from the main thread.
- (void)waitUntilAllUpdatesAreCommitted
Declared In
ASCollectionNode.h
– insertSections:
Inserts one or more sections.
- (void)insertSections:(NSIndexSet *)sections
Parameters
sections |
An index set that specifies the sections to insert. |
|---|
Discussion
This method must be called from the main thread. The data source must be updated to reflect the changes before this method is called.
Declared In
ASCollectionNode.h
– deleteSections:
Deletes one or more sections.
- (void)deleteSections:(NSIndexSet *)sections
Parameters
sections |
An index set that specifies the sections to delete. |
|---|
Discussion
This method must be called from the main thread. The data source must be updated to reflect the changes before this method is called.
Declared In
ASCollectionNode.h
– reloadSections:
Reloads the specified sections.
- (void)reloadSections:(NSIndexSet *)sections
Parameters
sections |
An index set that specifies the sections to reload. |
|---|
Discussion
This method must be called from the main thread. The data source must be updated to reflect the changes before this method is called.
Declared In
ASCollectionNode.h
– moveSection:toSection:
Moves a section to a new location.
- (void)moveSection:(NSInteger)section toSection:(NSInteger)newSection
Parameters
section |
The index of the section to move. |
|---|---|
newSection |
The index that is the destination of the move for the section. |
Discussion
This method must be called from the main thread. The data source must be updated to reflect the changes before this method is called.
Declared In
ASCollectionNode.h
– insertItemsAtIndexPaths:
Inserts items at the locations identified by an array of index paths.
- (void)insertItemsAtIndexPaths:(NSArray<NSIndexPath*> *)indexPaths
Parameters
indexPaths |
An array of NSIndexPath objects, each representing an item index and section index that together identify an item. |
|---|
Discussion
This method must be called from the main thread. The data source must be updated to reflect the changes before this method is called.
Declared In
ASCollectionNode.h
– deleteItemsAtIndexPaths:
Deletes the items specified by an array of index paths.
- (void)deleteItemsAtIndexPaths:(NSArray<NSIndexPath*> *)indexPaths
Parameters
indexPaths |
An array of NSIndexPath objects identifying the items to delete. |
|---|
Discussion
This method must be called from the main thread. The data source must be updated to reflect the changes before this method is called.
Declared In
ASCollectionNode.h
– reloadItemsAtIndexPaths:
Reloads the specified items.
- (void)reloadItemsAtIndexPaths:(NSArray<NSIndexPath*> *)indexPaths
Parameters
indexPaths |
An array of NSIndexPath objects identifying the items to reload. |
|---|
Discussion
This method must be called from the main thread. The data source must be updated to reflect the changes before this method is called.
Declared In
ASCollectionNode.h
– moveItemAtIndexPath:toIndexPath:
Moves the item at a specified location to a destination location.
- (void)moveItemAtIndexPath:(NSIndexPath *)indexPath toIndexPath:(NSIndexPath *)newIndexPath
Parameters
indexPath |
The index path identifying the item to move. |
|---|---|
newIndexPath |
The index path that is the destination of the move for the item. |
Discussion
This method must be called from the main thread. The data source must be updated to reflect the changes before this method is called.
Declared In
ASCollectionNode.h
– reloadDataWithCompletion:
Reload everything from scratch, destroying the working range and all cached nodes.
- (void)reloadDataWithCompletion:(nullable void ( ^ ) ( ))completion
Parameters
completion |
block to run on completion of asynchronous loading or nil. If supplied, the block is run on the main thread. |
|---|
Discussion
Warning: This method is substantially more expensive than UICollectionView’s version.
Declared In
ASCollectionNode.h
– reloadData
Reload everything from scratch, destroying the working range and all cached nodes.
- (void)reloadData
Discussion
Warning: This method is substantially more expensive than UICollectionView’s version.
Declared In
ASCollectionNode.h
– relayoutItems
Triggers a relayout of all nodes.
- (void)relayoutItems
Discussion
This method invalidates and lays out every cell node in the collection view.
Declared In
ASCollectionNode.h
indexPathsForSelectedItems
The index paths of the selected items, or @c nil if no items are selected.
@property (nonatomic, readonly, nullable) NSArray<NSIndexPath*> *indexPathsForSelectedItems
Declared In
ASCollectionNode.h
– selectItemAtIndexPath:animated:scrollPosition:
Selects the item at the specified index path and optionally scrolls it into view.
If the allowsSelection
property is NO, calling this method has no effect. If there is an existing selection with a different index path and the allowsMultipleSelection
property is NO, calling this method replaces the previous selection.
This method does not cause any selection-related delegate methods to be called.
- (void)selectItemAtIndexPath:(nullable NSIndexPath *)indexPath animated:(BOOL)animated scrollPosition:(UICollectionViewScrollPosition)scrollPosition
Parameters
indexPath |
The index path of the item to select. Specifying nil for this parameter clears the current selection. |
|---|---|
animated |
Specify YES to animate the change in the selection or NO to make the change without animating it. |
scrollPosition |
An option that specifies where the item should be positioned when scrolling finishes. For a list of possible values, see |
Discussion
This method must be called from the main thread.
Declared In
ASCollectionNode.h
– deselectItemAtIndexPath:animated:
Deselects the item at the specified index. If the allowsSelection property is NO, calling this method has no effect. This method does not cause any selection-related delegate methods to be called.
- (void)deselectItemAtIndexPath:(NSIndexPath *)indexPath animated:(BOOL)animated
Parameters
indexPath |
The index path of the item to select. Specifying nil for this parameter clears the current selection. |
|---|---|
animated |
Specify YES to animate the change in the selection or NO to make the change without animating it. |
Discussion
This method must be called from the main thread.
Declared In
ASCollectionNode.h
– numberOfItemsInSection:
Retrieves the number of items in the given section.
- (NSInteger)numberOfItemsInSection:(NSInteger)section
Parameters
section |
The section. |
|---|
Return Value
The number of items.
Declared In
ASCollectionNode.h
numberOfSections
The number of sections.
@property (nonatomic, readonly) NSInteger numberOfSections
Declared In
ASCollectionNode.h
visibleNodes
Similar to -visibleCells.
@property (nonatomic, readonly) NSArray<__kindofASCellNode*> *visibleNodes
Return Value
an array containing the nodes being displayed on screen. This must be called on the main thread.
Declared In
ASCollectionNode.h
– nodeForItemAtIndexPath:
Retrieves the node for the item at the given index path.
- (nullable __kindof ASCellNode *)nodeForItemAtIndexPath:(NSIndexPath *)indexPath
Parameters
indexPath |
The index path of the requested item. |
|---|
Return Value
The node for the given item, or @c nil if no item exists at the specified path.
Declared In
ASCollectionNode.h
– indexPathForNode:
Retrieve the index path for the item with the given node.
- (nullable NSIndexPath *)indexPathForNode:(ASCellNode *)cellNode
Parameters
cellNode |
A node for an item in the collection node. |
|---|
Return Value
The indexPath for this item.
Declared In
ASCollectionNode.h
indexPathsForVisibleItems
Retrieve the index paths of all visible items.
@property (nonatomic, readonly) NSArray<NSIndexPath*> *indexPathsForVisibleItems
Return Value
an array containing the index paths of all visible items. This must be called on the main thread.
Declared In
ASCollectionNode.h
– indexPathForItemAtPoint:
Retrieve the index path of the item at the given point.
- (nullable NSIndexPath *)indexPathForItemAtPoint:(CGPoint)point
Parameters
point |
The point of the requested item. |
|---|
Return Value
The indexPath for the item at the given point. This must be called on the main thread.
Declared In
ASCollectionNode.h
– cellForItemAtIndexPath:
Retrieve the cell at the given index path.
- (nullable UICollectionViewCell *)cellForItemAtIndexPath:(NSIndexPath *)indexPath
Parameters
indexPath |
The index path of the requested item. |
|---|
Return Value
The cell for the given index path. This must be called on the main thread.
Declared In
ASCollectionNode.h
– contextForSection:
Retrieves the context object for the given section, as provided by the data source in the @c collectionNode:contextForSection: method.
- (nullable id<ASSectionContext>)contextForSection:(NSInteger)section
Parameters
section |
The section to get the context for. |
|---|
Return Value
The context object, or @c nil if no context was provided.
TODO: This method currently accepts @c section in the view index space, but it should be in the node index space. To get the context in the view index space (e.g. for subclasses of @c UICollectionViewLayout, the user will call the same method on @c ASCollectionView.
Declared In
ASCollectionNode.h


PathFinder
Algorithms
A* Search
Dijkstra
Breadth First Search
Depth First Search
Greedy Best First Search
Start
Throw Obstacles
(current)
Clear
(current)
by
<RUSH/ RAM/>
PathFinder
Source
Destination
Obstacles
Unxplored Nodes
Explored Nodes
Path


This cookie policy ("Policy") describes what cookies are and how and they're being used by the ascii-generator.site website ("Website" or "Service") and any of its related products and services (collectively, "Services"). This Policy is a legally binding agreement between you ("User", "you" or "your") and this Website operator ("Operator", "we", "us" or "our"). You should read this Policy so you can understand the types of cookies we use, the information we collect using cookies, and how that information is used. It also describes the choices available to you regarding accepting or declining the use of cookies. For further information on how we use, store, and keep your personal data secure, see our Privacy Policy.
As is common practice with almost all professional websites this site uses cookies, which are tiny files that are downloaded to your computer, to improve your experience. This page describes what information they gather, how we use it, and why we sometimes need to store these cookies. We will also share how you can prevent these cookies from being stored however this may downgrade or 'break' certain elements of the site's functionality.
For more general information on cookies, please read "What Are Cookies".
We use cookies for a variety of reasons detailed below. Unfortunately, in most cases, there are no industry standard options for disabling cookies without completely disabling the functionality and features they add to this site. It is recommended that you leave on all cookies if you are not sure whether you need them or not in case they are used to provide a service that you use.
You can prevent the setting of cookies by adjusting the settings on your browser (see your browser Help for how to do this). Be aware that disabling cookies will affect the functionality of this and many other websites that you visit. Disabling cookies will usually result in also disabling certain functionality and features of this site. Therefore it is recommended that you do not disable cookies.
In order to provide you with a great experience on this site, we provide the functionality to set your preferences for how this site runs when you use it. In order to remember your preferences, we need to set cookies so that this information can be called whenever you interact with a page that is affected by your preferences.
In some special cases, we also use cookies provided by trusted third parties. The following section details which third party cookies you might encounter through this site.
This site uses Google Analytics which is one of the most widespread and trusted analytics solutions on the web for helping us to understand how you use the site and ways that we can improve your experience. These cookies may track things such as how long you spend on the site and the pages that you visit so we can continue to produce engaging content.
For more information on Google Analytics cookies, see the official Google Analytics page.
We reserve the right to modify this Policy or its terms relating to the Website and Services at any time, effective upon posting of an updated version of this Policy on the Website. When we do, we will post a notification on the main page of the Website. Continued use of the Website and Services after any such changes shall constitute your consent to such changes.
You acknowledge that you have read this Policy and agree to all its terms and conditions. By accessing and using the Website and Services you agree to be bound by this Policy. If you do not agree to abide by the terms of this Policy, you are not authorized to access or use the Website and Services.
Hopefully, that has clarified things for you, and as was previously mentioned if there is something that you aren't sure whether you need or not it's usually safer to leave cookies enabled in case it does interact with one of the features you use on our site.
However, if you are still looking for more information then you can contact us through email: ascii-generator.site@gmail.com.


People - The True Story of the Internet
Communication and the way we connect with one another is changing. Big company used to control the content you would see, how you see it, and how much you have to pay for it. This is all happening in thanks to the web.
The TV industry was nearly impossible to get into for the average person. Big companies were in control of who and what would be on the air. That all changed with the creation of YouTube, giving anyone access to post what they, for a lack of better words, felt like posting. They gave people the power to “broadcast yourself.” But what made this even more important was the reach it had. There was the potential to reach millions all with content that was created at home.
Digg, founded by Kevin Rose, was another company that invested in giving power to people. It was a news company that focused on important stories but in a different way. Rather than someone from the company deciding what would be on the front page, it was decided by its user. The more people that “digged” on a story, the more prominent it became on the site. As Jay Adelson, CEO of Digg said, “what Digg is doing is saying a blog could be on the same plane as the New York Times and it’s up to the people to decide what’s important.”
The ideology behind giving power to the people that YouTube and Digg believed in was known as the wisdom of crowds. They knew that people, more than anything, loved the sound of their own voices. But it was Mark Zuckerberg, founder of Facebook, that understood this better than anyone else at this time.
But before we can understand how all of these big companies like Facebook, Digg, and YouTube came to be, we have to start with how idea of communicating and sharing through the web first began.
It starts with college students David Weekley, Justin Frankel, Cabel Sasser and Steve Frank putting together music on PC’s and the web. With the creation of MP3, it was easier than ever to move music around the net in an easy to understand way. The friends created media players known as Audion and Winamp. These apps allowed music lovers to store and listen to music right from their computers.
This started to become an issue in the music industry. Profits were made from people going out and buying records, not from MP3’s being downloaded and shared on the web. The record industry was not a fan of this, but people didn’t care. They wanted free and easy to access music; they didn’t care about the rules of the industry.
Things were about to get even worse thanks to an 18-year-old named Shawn Fanning. Fanning was the creator of Napster. The idea came from his college roommate spending so much time searching the web to find good, downloadable music- he thought there could be an easier way. He understood that there were people all over the place with existing music libraries and people who would be interested in that music. All there needed to be was a way for people to share music, thus came Napster.
Napster allowed you to search for songs you were interested in and download them right from someone’s hard drive to your own. Fanning started out by giving Napster to 12 people to try out and he asked that they don’t share it with anyone else. But within a week, it had been downloaded 10,000 times. Within four months, it had passed a million downloads. He was not only giving people a way to share music, but he was unintentionally creating one of the first web communities.
Although this new app was loved by many, it was about to create one of the biggest controversies of all time. It had caught the eye of Hilary Rosen, head of the Recording Industry Association of America (RIAA). This company was created to protect the music business from exactly what Fanning had created. She contacted Napster, once it had taken off to Silicon Valley, asking if they knew what they were doing was illegal. The only way they could fix what they had done was by removing all copyrighted music. Which you could imagine, was a majority of what was on the site.
Big names in the music industry were not happy with what Fanning had created. They worked so hard to create music for people to love and buy, and Napster was taking away what they should have been earning. Metallica probably being the biggest artist saying how frustrated they were with what was going on. But all this did was make Napster even more popular and expanded its user base.
Soon enough, Rosen and the RIAA filed a lawsuit against Napster. In July of 2001, the decision was made that Napster needed to be shut down.
Looking back at YouTube, Viacom saw striking similarities with what Napster had done. Viacom thought YouTube needed to be stopped since its users were uploading copyrighted videos. However, unlike Napster, YouTube was not and underfunded startup. It was funded by Google, which acquired the company in 2006. Chad Hurley, co-founder of YouTube, knew that big TV companies were not so much threaten by the copyrighted content being posted but that people would rather watch themselves over what companies like Viacom had to offer. YouTube was just one of the many companies that allowed people to take part in the two-way web. This marked a new era where content was created by users, an era known as Web 2.0./p>
In the wake of the dot com crash, all the pieces of Web 2.0 came together with social networking. The first major social networking site to stick out was MySpcae. MySpace allowed its users to create pages to express who they were. It was meant to almost resemble their bedroom. You could pick from different colors, upload pictures, share and play your favorite song. It was so popular that by 2005, it had over 27 million users.
In the Internet world, there is always something new not too far away. And in the age of social networking, the next new thing was Facebook. Starting off as a way for students at Harvard to connect, Zuckerberg never knew how big Facebook could one day be. That was until, students from other schools started asking for Facebook to come to their campuses. It then quickly spread to all college campuses in the US, to high schools, to companies, to anyone who wanted an account could sign up. It was growing at a rate where the user base would double every six months.
It was now a head to head battle of Facebook against MySpace. At the time this video was released, MySpace still had a larger user base than Facebook. They were doing everything they could to stay ahead of their new rival, but as we can see in today’s world, Facebook ultimately got the best of them.


Simple things should be simple, complex things should be possible. --The Wiki Way: Quick Collaboration on the Web, Bo Leuf, Ward Cunningham [ source]


|
SharpNEAT
C# implementation of NEAT
|
Represents a sorted list of NeuronGene objects. The sorting of the items is done on request rather than being strictly enforced at all times (e.g. as part of adding and removing items). This approach is currently more convenient for use in some of the routines that work with NEAT genomes. More...
Public Member Functions | |
| NeuronGeneList () | |
| Construct an empty list. More... | |
| NeuronGeneList (int capacity) | |
| Construct an empty list with the specified capacity. More... | |
| NeuronGeneList (ICollection< NeuronGene > copyFrom) | |
| Copy constructor. The newly allocated list has a capacity 1 larger than copyFrom allowing for a single add node mutation to occur without reallocation of memory. More... | |
| void | InsertIntoPosition (NeuronGene neuronGene) |
| Inserts a NeuronGene into its correct (sorted) location within the gene list. Normally neuron genes can safely be assumed to have a new Innovation ID higher than all existing IDs, and so we can just call Add(). This routine handles genes with older IDs that need placing correctly. More... | |
| NeuronGene | Remove (uint neuronId) |
| Remove the neuron gene with the specified innovation ID. Returns the removed gene. More... | |
| NeuronGene | GetNeuronById (uint neuronId) |
| Gets the neuron gene with the specified innovation ID using a fast binary search. Returns null if no such gene is in the list. More... | |
| void | SortByInnovationId () |
| Sort neuron gene's into ascending order by their innovation IDs. More... | |
| int | BinarySearch (uint id) |
| Obtain the index of the gene with the specified ID by performing a binary search. Binary search is fast and can be performed so long as the genes are sorted by ID. If the genes are not sorted then the behaviour of this method is undefined. More... | |
| bool | IsSorted () |
| For debug purposes only. Don't call this method in normal circumstances as it is an expensive O(n) operation. More... | |
Additional Inherited Members | |
| Properties inherited from SharpNeat.Network.INodeList | |
| INetworkNode | this[int index] [get] |
| Gets the INetworkNode at the specified index. More... | |
| int | Count [get] |
| Gets the count of nodes in the list. More... | |
Represents a sorted list of NeuronGene objects. The sorting of the items is done on request rather than being strictly enforced at all times (e.g. as part of adding and removing items). This approach is currently more convenient for use in some of the routines that work with NEAT genomes.
Because we are not using a strictly sorted list such as the generic class SortedList[K,V] a customised BinarySearch() method is provided for fast lookup of items if the list is known to be sorted. If the list is not sorted then the BinarySearch method's behaviour is undefined. This is potentially a source of bugs and thus this class should probably migrate to SortedList[K,V] or be modified to ensure items are sorted prior to a binary search.
Sort order is with respect to connection gene innovation ID.
| SharpNeat.Genomes.Neat.NeuronGeneList.NeuronGeneList | ( | ) |
Construct an empty list.
| SharpNeat.Genomes.Neat.NeuronGeneList.NeuronGeneList | ( | int | capacity | ) |
Construct an empty list with the specified capacity.
| SharpNeat.Genomes.Neat.NeuronGeneList.NeuronGeneList | ( | ICollection< NeuronGene > | copyFrom | ) |
Copy constructor. The newly allocated list has a capacity 1 larger than copyFrom allowing for a single add node mutation to occur without reallocation of memory.
| int SharpNeat.Genomes.Neat.NeuronGeneList.BinarySearch | ( | uint | id | ) |
Obtain the index of the gene with the specified ID by performing a binary search. Binary search is fast and can be performed so long as the genes are sorted by ID. If the genes are not sorted then the behaviour of this method is undefined.
Implements SharpNeat.Network.INodeList.
| NeuronGene SharpNeat.Genomes.Neat.NeuronGeneList.GetNeuronById | ( | uint | neuronId | ) |
Gets the neuron gene with the specified innovation ID using a fast binary search. Returns null if no such gene is in the list.
| void SharpNeat.Genomes.Neat.NeuronGeneList.InsertIntoPosition | ( | NeuronGene | neuronGene | ) |
Inserts a NeuronGene into its correct (sorted) location within the gene list. Normally neuron genes can safely be assumed to have a new Innovation ID higher than all existing IDs, and so we can just call Add(). This routine handles genes with older IDs that need placing correctly.
| bool SharpNeat.Genomes.Neat.NeuronGeneList.IsSorted | ( | ) |
For debug purposes only. Don't call this method in normal circumstances as it is an expensive O(n) operation.
Implements SharpNeat.Network.INodeList.
| NeuronGene SharpNeat.Genomes.Neat.NeuronGeneList.Remove | ( | uint | neuronId | ) |
Remove the neuron gene with the specified innovation ID. Returns the removed gene.
| void SharpNeat.Genomes.Neat.NeuronGeneList.SortByInnovationId | ( | ) |
Sort neuron gene's into ascending order by their innovation IDs.


×
WebRT-Graph
Sign In
Sign Up
Username
Password
Log In
Username
Password
Sign Up
WebRT-Graph on GitHub


The Hoppeator is your one-stop shop to explore the world of beer. Our homepage features a short history of beer and we have pages to learn about the types of beer, search breweries and plan your beer crawl. You can save your favorite breweries and access them using the 'Favorites' page.
Are you a Friends series superfan? This quiz is designed to find out! You have two minutes to answer ten questions. If you miss a question, you'll lose ten seconds off the clock. If the time runs down to zero, you won't be able to make the leaderboard. If you can answer all ten questions, you'll find out if you really are a superfan!


What are some of the possibilities? Click below and explore!
Reading a script yourself and following the directions
The first gallery is a short collection of scripts in order, designed to create only a relaxed state of mind and body. If you happen to drowse into trance, fear not; there are only two possible outcomes. You fall into a normal sleep, or you wake up. This option is mostly free, unless you pay for a script to download and follow instead. Those can be $2.00 - $5.00.
Attending a hypnosis show
This is a fun and comedic way to experience being in trance, but you might not be picked as one of the subjects. Typically, these hypnotists will ONLY choose those people who fall into trance in 2-6 seconds, as they can move the show along quickly. Unfortunately, these shows are the most talked about, and are where the stigma that "I can't be hypnotized" originates. This is untrue. Everyone can be hypnotized. It's simply that a 2-6 second instant induction either doesn't work on you OR that your compatibility with that particular hypnotist isn't good enough. Try different people. I don't have perfect luck with everyone either, but those I don't, I refer to other friends, and there are no problems. It is NOT you. The cost is whatever cover there is to attend the show.
Seeing a hypnotherapist
This is by far the most expensive option, but you'll be working with someone in person, in a quiet setting, who has a hypnotherapy certification, and most likely also a doctorate in psychology or psychiatry. This is also the least fun option, but if you have problems, this is the best option to follow.
Working with a (street) hypnotist in person, over the phone, or even in text messages only!
In person is by far the fastest way, ranging from 2-6 seconds to 20 minutes, depending on your focus ability; everyone is different. Over the phone is typically 10 minutes - 30 minutes. Text message and instant messaging chat features ARE possible. However, it can take anywhere from 30 minutes to 2 hours of consistent interaction. This option is usually free. Technically, I am a street hypnotist. I do fun and entertaining spectacles with subjects but I don't charge money for my time. The homepage has a short video of an instant induction I did with a volunteer. Instant inductions can take as few as 2 seconds to 2 minutes. The remaining 3 galleries here are photos I can use to either confuse or over-focus a subject.


The Philosopher's Stone is a fabled relic, capable of taking any phrase and transforming it. To properly use the stones power you must enter your phrase, choose a word in the phrase to change, and then pick the word to transform it with.
Transformation complete:


AllowNesting¶
By default Drawer Attributes can be nested inside structs and classes.
Meta Attributes and Validator Attributes however are not drawers and don’t support nesting out of the box.
If you want to use EnableIf / DisableIf attributes inside structs for instance, you have to use the AllowNesting
attribute like so:
public class NaughtyComponent : MonoBehaviour
{
public MyStruct myStruct;
}
[System.Serializable]
public struct MyStruct
{
public bool enableFlag;
[EnableIf("enableFlag")]
[AllowNesting] // Because it's nested we need to explicitly allow nesting
public int integer;
}
Note
The AllowNesting
attribute is actually a drawer attribute. You can think of it as a DefaultDrawer
attribute.
All it does is draw the serialized field with its default drawer. This is a bit of a hack you see.
The system is implemented in such a way that before a drawer’s OnGUI
function is called it applies the meta and validator attributes.
In order to trigger this behavoir we need some kind of a drawer. The AllowNesting
is that drawer.
If for you are combining EnableIf / DisableIf with MinMaxSlider for instance,
you don’t have to put the AllowNesting
attribute, because you already marked the serialized field with the MinMaxSlider
drawer.


Constructor
new Challenge(I_Oopt, MinInputopt, MaxInputopt)
Create a challenge that randomly create a number of inputs with size between [MinInput,MaxInput] if you don't provide a set of inputs before. and then create the output corresponded to the input generated or set.
Parameters:
| Name | Type | Attributes | Default | Description |
|---|---|---|---|---|
I_O |
I_O |
<optional> |
{} | the inputs and the output of the challenge to be set if its already generated. |
MinInput |
Number |
<optional> |
100 | minimum number of inputs to generate. |
MaxInput |
Number |
<optional> |
150 | maximum number of inputs to generate. |
Properties:
| Name | Type | Attributes | Default | Description |
|---|---|---|---|---|
_InputGenerated |
Boolean |
<optional> |
false | check if the input has been assigned |
_OutputGenerated |
Boolean |
<optional> |
false | check if the output has been assigned |
_Inputs |
Array.<any> |
<optional> |
[] | the input of the challenge |
_Output |
NS |
<optional> |
0 | the output of the challenge |
Methods
CheckOutput(answer) → {Result}
this method checks if the answer given is the correct one
Parameters:
| Name | Type | Description |
|---|---|---|
answer |
NS | the answer of the challenger |
Returns:
the message and the result of the answer
- Type
- Result
(abstract) GetInputs() → {String}
an abstract method to remake when extended made for Generating text version of the inputs for the challenges
Throws:
-
throws an error if this method not re-implemented after extending.
- Type
- NotImplemented
Returns:
the inputs in a string form to be sent to the challenger.
- Type
- String
(abstract) InputsGenerator(InputNum) → {void}
abstract method to remake when extended made for Generating Inputs for the challenges
Parameters:
| Name | Type | Description |
|---|---|---|
InputNum |
Number | Number of inputs to generate |
Throws:
-
throws an error if this method not re-implemented after extending.
- Type
- NotImplemented
Returns:
- Type
- void
(abstract) OutputGenerator() → {void}
an abstract method to remake when extended made for Generating an Output for the challenges
Throws:
-
throws an error if this method not re-implemented after extending.
- Type
- NotImplemented
Returns:
- Type
- void
Random(minmax, maxopt) → {Number}
Random : Creates a random number in [min,max] range
Parameters:
| Name | Type | Attributes | Description |
|---|---|---|---|
minmax |
Number | the minimum of the Random number if max exist else its the maximum and the min became 0 | |
max |
Number |
<optional> |
the maximum of the Random number |
Returns:
a Random integer number between [min,max]
- Type
- Number


---
layout: post
title: PHP Web Development in 2019
date: 2019-07-01 00:00:00.000000000 +08:00
permalink: php-web-development-in-2019
header-img: "img/20586158743_46b96ef40b_k.jpg"
subtitle: "If you are stuck in old-school PHP, you better read this..."
tags:
- best practices
- modern php developer
- old school php
- 90s kids
---
This article is more of "how to think" like a modern PHP developer than "how to write" PHP.
If you are like me who learned PHP 10 years ago (2009), the landscape and ecosystem is entirely different than today.
Before, whenever some functionality is needed, it is pretty common for people to look for a corresponding "script" for that
First things first, a lot of people who calls themselves a "PHP Core Developer" is misusing the term "core"
What they THINK Core PHP means: Writing scripts without using framework or libraries and only using core functions.
What does Core PHP REALLY means: You are C or C++ programmer who is contributing to maintaining and optimization of PHP Interpreter source code
Now, lets say we take the 1st context (writing in php without frameworks), the only situations you should be doing that are:
You should NOT be coding in "Core PHP" if:
If you are one who often browse phpclasses.org whenever you need something,
let me introduce you to Packagist and Composer.
Please know how to use those two tools and you'll see what I mean.
 But hey, check the concepts of Continous Integration and Delivery. And if you are a WP developer, please check Roots.io
There you have it! Sorry if you are expecting some cool PHP syntax, but if that is what you are looking for, I have a post for that :)


Preparation time
over 2 hours
Cooking time
30 mins to 1 hour
Serves
Serves 10
Dietary
This citrus-infused sweet bread, topped with toasted almonds, is based on the flavours of the Italian Colomba di Pasqua (an Easter celebration bread).
To make the dough, combine the flour, salt, sugar, yeast, milk, eggs and butter in a food mixer fitted with a dough hook. Mix on a slow speed for three minutes and then set on a medium speed for five minutes, to work the mixture together into a soft dough. If you haven’t got a mixer, mix the dough ingredients together by hand and knead on a lightly floured surface until you get a soft, elastic dough.
Tip the dough into a clean bowl, cover and leave to rise for one hour.
For the citrus mixture, combine the citrus zest with the toasted almonds, mixed peel, dried cranberries and lemon juice.
Add the citrus mixture to the dough and use your hands to incorporate it into the dough.
Grease a 23cm/9in round deep spring-form cake tin.
Shape the dough into a ball and place it into the prepared tin.
Cover, or place inside a large plastic bag, and leave to rise for three hours, or until the dough has reached the top of the sides of the tin.
Preheat the oven to 200C/400F/Gas 6 (in a fan oven) and bake the bread on the middle shelf for 20 minutes.
For the topping, in a bowl stir together the egg whites, sugar and ground almonds to make a paste.
After 20 minutes of baking, remove the bread from the oven and spread the paste over the top. Sprinkle with flaked almonds and a little more sugar.
Reduce the oven temperature to 180C/350F/Gas 4 and return to the oven for a further 20 minutes. If it is going to brown towards the end of baking then cover it loosely with foil.
Remove from the oven and leave to cool in the tin for 10 minutes; then release the sides of the tin. Remove from the tin and leave to cool completely on a wire rack.


The kitchen timer on our microwave beeps *once* when it finishes instead of beeping until you acknowledge it. Did the designer ever actually cook more than one item in a kitchen?!
6/17/2018, 5:55:38 PM
Favs: 2
Retweets: 0
link--- layout: tweet ---
The kitchen timer on our microwave beeps *once* when it finishes instead of beeping until you acknowledge it. Did the designer ever actually cook more than one item in a kitchen?!
6/17/2018, 5:55:38 PM
Favs: 2
Retweets: 0
link


requestAnimationFrame On Element
By Rory Duncan
View Repository
Canvas Element
Your browser does not support the canvas element.
Hover in and out of the canvas element area to observe the effect.


plasticity flowering trait variation plant annual water mean differentiation populations precipitation local traits species time environmental Table associated leaf population invasive response patterns Supporting SLA adaptation Ecology cicutarium soil source Plasticity growth nutrient {border-style length plants evolution low px;} regions #ffffff;} California Erodium area climate invaded nutrients range seeds sites total Chile conditions cover differences selection stem treatment Information—Fig. families genetic gradients growing models region Fig. consistent strongly treatments using values Gianoli functional greenhouse maternal parallel phenotypic significant data levels model strong ΔAICc Evolutionary different expression included introduced means native rapid rate adaptive associations correlations evolutionary family greater higher relatively responses American Barrett Colautti drought high ratio regions, tests time, used value variables < Figure collected effects environments importance linear multiple px; selected short spread temporal {font-family AICc California, Maron Plant Variation [], [see average font-size leaves limitation racks random randomly regions. season similar size traits, Biology Botany Research biotic climatic conducted contrast, contrasting distributed double; dry fitness interactions likelihood measured plants. plastic ranges seasonality set water, Mean Chevin Desert Evolution Families Fischer Franks Information—Table International Mediterranean Mooney North Phenotypic Plants Rapid Sciences analysis association border-color border-width calculated change characteristics component continents correlated cover, difference earlier evidence expected field flower flowered following habitats heterogeneity highly individual invasion invasions lower maximize mixed populations. produce represent resource shorter significance solid; study temperature tended tested times version week wetter {font-style {font-weight <. Adaptive America Angert Average Baythavong Chile, Chile. Jones Leimu Letters Mean Mediterranean-climate Molina-Montenegro Moran Naturalist Oduor Soil Trait ability additional appears approach area) availability best bold broadly changing characterize coefficient comparison correlations. courier; cycle divergence ecological effect efficiency em; environment exotic expansion experiment, explanatory factors fertigated gallon general generation important including interaction later length, level life little longest low-nutrient models. novel nutrients. observed perennial positive precipitation, principal pt;} rapidly rates region, relationship results shading significantly sites. smaller spatial species. studies suggest suggests test time. top-watered use water. weakly


Form value:{{cityForm.value|json}}
Form value:{{cityForm.get('condition.amble').value|json}}
Form status:{{cityForm.status |json}}
Form value:{{cityForm.value|json}}
Form value:{{cityForm.get('condition.amble').value|json}}
Form status:{{cityForm.status |json}}


DEMs derived from LiDAR data from a number of different elevation projects within MGA zone 54 are contained in this web service. This service will continually be updated with additional datasets.
The current elevation projects in this service are: Murray-Darling Elevation Project 2013-2014 - Namoi1 and Namoi2, Geocat record: 79221, Lower Darling, Geocat record: 78360, Namoi2, Geocat record: 79221