Regular expressions

^ och $
^ betyder att texten som söks endast får finnas i början av en rad.
$ betyder att texten som söks endast får finnas i slutet av en rad.
^hej$ hittar endast hej om hej står själv på en egen rad.

[Character classes]
Om tecken är inom klamrarna så betyder det: vilket som.
[ab] betyder att både a och b söks.
så gr[ea]y kommer att hitta både gray och grey.

Inom en character class så är ett bindestreck – endast ett bindestreck, och ingen metakaraktär.
Inom character class (alltså inom []) är betyder ^ negation. Alltså
[^6] betyder alla karaktärer som inte är 6
Du kan tänka på Character Classes som ett subspråk inom regex. Där finns det egna regler för hur de olika symbplerna ska tänkas.
Alternatation
Ibland vill man söka this or that. Det ena eller det andra. det kan man enkelt göra med hjälp av parenteser och | or.
gr(a|e)y
| betyder här OR. så antingen a eller e.
Så detta problem kan alltså antingen lösa med hjälp av alternation () eller Character Classes []. Det finns dock en viktig skillnad. En character class kan endast skilja enskilda tecken åt, men med alternation så kan man skila flera bokstäver som sitter samman åt.
(Bob|Robert) kommer söka efter båda.
Till skillnad från Character Classes så har inte Alternation sitt eget subspråk, utan följer de vanliga reglerna för regex.

Endast ord som inte finns inom andra ord
Om jag vill hitta ordet “you”, men inte när det är inom “youtube”. Då kan man sätta upp word-boundries.
såhär: byoub

Antal gånger
{4} – betyder antalet gånger något skall försekomma. exempel:

/[0-9]{4}/gi
//Betyder 0345 eller 5336. Alltså fyra nummer.

{3} Exactly 3 occurrences;
{6,} At least 6 occurrences;
{1,5} Mellan en till 5 gånger.

Ett annat sätt är att använda plustecknet.
+ – betyder att karaktären innan ska repitera 1-oändligt antal gånger.
/y+/ fångar yyyyyyy

OOP – Javascript

Fundamentals av OOP-Javascript

Det finns en skillnad mellan primitiv och object-data.

Såhär fungerar primitiva data.

var test1 = 0;
var test2 = test1;
console.log(test2);//loggar 0
test2 = 10;
console.log(test2);//loggar 10

Såhär fungerar object-data

var test1 = {
a: 0};

var test2 = test1;
console.log(test2.a);//loggar 0
test2.a = 10;
console.log(test1, test2);//båda loggar 10

Som vi kan se i det här exemplet så hänger alltså “kopian” av objektet ihop med orginalet, så om du ändrar kopian så ändras orginalet.

App-idé: JavaScript-frågor

Prepare for JS-job

Att göra en app som jag gjorde när jag pluggade inför dippen. Göra ett frågespel med javascript-frågor. Med olika kategorier: typ fundamentals, challenges, olika koncept.

Sen kan användaren göra frågorna och bli bättre. Om en person inte kan frågan så markeras den med en viss poäng. Frågorna med lägsta poängen kommer upp först. Så att man hela tiden tränar på de frågorna som man är sämst på. Vid varje fråga finns en länk till en sida som förklarar konceptet mer utförligt.

Type såna här frågor: https://www.codementor.io/javascript/tutorial/top-ten-things-beginners-must-know-javascript

http://www.skilledup.com/articles/20-must-know-javascript-interview-qa

 

Frågor

Closure

What is lexical scoping?
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures

Is an Object mutable or imutable?
Ett objekt är mutable. Detta innebär att objektets innehåll kan förändras. En primitiv data, så som string eller nummer kan inte ändras. Detta innebär att om du ändrar en variabels innehåll, så ändrar du det egentligen inte. Du lägger bara till det. Men det gamla värdet ligger fortfarande kvar i minnet. Detta gör att det kan vara mer krävnade. Det gamla värdet försvinner först när det är dags för garbage collection.
Ett object däremot, om du ändrar det så ändras värdet i minnet.

Is a primitive data mutable or imutable?
http://stackoverflow.com/questions/3200211/what-does-immutable-mean

When is Javascript used outside of the browser?
http://www.programmerinterview.com/index.php/javascript/javascript-outside-the-browser/

What is ECMA-Script?
ECMAScript is a standard for a scripting language, and the Javascript language is based on the ECMAScript standard.
http://www.programmerinterview.com/index.php/javascript/javascript-what-is-ecmascript/

Which are the five primitve datas in javascript?

Which are the six primitive data-types in Javascript?
Boolean
Null
Undefined
Number
String
Symbol (new in ECMAScript 6)

Which data-type is Object data?
Objects
Arrays and functions are also Objects.

What is the difference between undefined and null?
Undefined is a value that has been declared but not given a value.
Any variable that has not been given a specific value by default gets the value of undefined.
Null is a value. The value of nothing.

What is the difference between “==” and “===”?
== checks for equality of the value.
=== checks for the equality of the value and type.
“3” and 3 == true
“3” and 3 === false

Whats the difference between “var a = 1” and “a = 1”?
var defines the variable locally, and it can not be used outside of that context.
With the var the variable is defined globally, and can thus be used outside of that scope. This might be bad practice as it can pollute the global scope.

What does “1”+2+4 evaluate to?
Since the first element is a string, the other value are also evaluated as strings.

What does 1+2+”4″ evaluate to?
Evaluates to 34, because the first two numbers are evaluated arithmiacaly.

What boolean operator do JavaScript support?
Or: ||
And: &&
Not: !

What would be the output of the following statements?
var object1 = { same: ‘same’ };
var object2 = { same: ‘same’ };
console.log(object1 === object2);

False.
Because they are two different objects. They are not equal because they point at different objects.

What would be the output of the following statements?
var object1 = { same: ‘same’ };
var object2 = object1;
console.log(object1 === object2);

True. Because they reference the same object.

What is this?
var arr = [[[]]];

A three dimensional array.

What do you get if you do -10 / 0?
-Inifinity
Known as negative infinity.

What is the difference between an undeclared variable and an undefined variable?
An undeclared variable is a variable that does not exist. An undeclared variable will result in an runtime error.

What different type of loop do javascript support?
For
for…in
while
do/while

Mention the three ways to to convert a string to a number?
Number();
parseInt();
parseFloat();

What does null mean?
The NULL value is used to represent no value or no object. It implies no object or null string, no valid boolean value, no number and no array object.

What is an anonymous function?
It is a function that has not been given a name, for example:

var test = function(){
console.log(“Hello world”)}

This, on the other hand is not a anonymous function:
test(){
console.log(“Hello world”)}

Is javascript case sensitive?
Yes.
These are two different variables:
var test = 0;
var TEST = 1;

Explain what hoisting is?
Hoisting means that a function that is initialized will always be send to the top of the scope/function, but not with it’s value, but just as a declared.
For example:

var test = 10;
function myFunction(){
console.log(test);
var test = 20;
}
//Consoles undefined

One would think that this function would console 10. But in fact it consoles undefined. Why is that then?
Because even though the variable is initliaized after the console.log-statement, is autamaticallys becomes declared in the beginning of the function.

http://code.tutsplus.com/tutorials/javascript-hoisting-explained–net-15092
What is the difference between declared variable and an initialized variable?
A declared variable is a variable that has been declared with var. it could be:
var a;
But an initialized variable is a variable that has been given a value.

What is the difference between break, continue and return?
break stops the loop and the continues after the loop.
continues stops the loop and then restart from the beginning.
return stops and leaves the function all together.

Mentiona three different programming paradigms?

How do you create a default parameter in a function?
This is a ECMA6-script. So at the moment it can only be used in firefox. But it works like this:

function test(arg1, optionalArg = 23){
}
So if you don’t put in any optional arg the default argument will be 23.

Built in javascript functions

What built in function would you use to find the index of a ascii symbol?
indexOf()

What built in function would you use to get the index of a ascii symbol, starting from the end?
lastIndexOf();

What function would you use to combine to lines of text?
text.concat(“hej”);

What’s the difference between throw err and console.error(“msg”);

Skillnaden är att throw err exit current clode block. Stops the execution. Medan console.log bara printar ut meddelandet i konsollen.

What does IIFE stand for? And what is it for
Det står för Immediately-invoked Function Expression.

Det är en funktion som är anonym och som executas direkt efter att den har skrivits. Den behöver alltså inte kallas för att den ska executa.

Här är en vanlig funktion. Den skulle inte executa eftersom den aldrig har blivit kallad.

function testFunk(){
console.log("I am called now")};

Men om vi istället wrappar funktionen inom en IIFE, så kommer den automatiskt att kallas när den laddas.

(function testFunk(){
console.log("I am called now")}());

För att undvika hoisting så kan det vara bra att använda IIFE.

Här är ett exempel på hoisting.

var v = 1;
var getValue = function(x){
	console.log(x);
}
v = 2;

getValue(v);//Printar ut 2

Om vi här istället vill att funktionen ska printa ut det utsprungliga värdet så måste vi få funktionen att executa direkt när den skapas. Så här ser det ut:

var v = 1;
var getValue = (function(x){
	return function(){console.log(x)}
	
}(v));
v = 2;

getValue();//Printar ut 1

Det är ett design pattern för att undvika variable hoisting.

What six values are falsey in javascript?

0 == false
undefined == false
null == false
NaN == false
“” == false << Alltså en tom string.
false == false

Detta kan vi enkelt testa genom att skriva:
if (!0){console.log("False"};
Denna kod innebär alltså att om 0 inte är true så printa False.

Eller för att det inte ska vara lika förvirrande kan man skriva:

if(NaN){console.log(&amp;amp;amp;amp;amp;amp;quot;I am true&amp;amp;amp;amp;amp;amp;quot;)}
else {console.log(&amp;amp;amp;amp;amp;amp;quot;I am false&amp;amp;amp;amp;amp;amp;quot;)};

Ett annat sätt att skriva samma sak är:

!0 &amp;amp;amp;amp;amp;amp;amp;&amp;amp;amp;amp;amp;amp;amp; console.log(&amp;amp;amp;amp;amp;amp;quot;False&amp;amp;amp;amp;amp;amp;quot;);
!NaN &amp;amp;amp;amp;amp;amp;amp;&amp;amp;amp;amp;amp;amp;amp; console.log(&amp;amp;amp;amp;amp;amp;quot;False&amp;amp;amp;amp;amp;amp;quot;);
!undefined &amp;amp;amp;amp;amp;amp;amp;&amp;amp;amp;amp;amp;amp;amp; console.log(&amp;amp;amp;amp;amp;amp;quot;False&amp;amp;amp;amp;amp;amp;quot;);

Allting annat är true.
Objekt, arrays, funktioner.
Nummer som är inte är noll.
All strings som inte är tomma.
True är true

För mer om detta läs här

What is the difference between function-expression and function declaration?

Function expression = var functionName = function(){};
Function declaration = function functionName(){};

Vad betyder varje siffra i versionen 4.3.0?
Major.Minor.Patch

^4.3.0 – Version mellan 4 och 5. För att det inte ska bryta med versionen.

What is a ternary operations and how does it work?
Ternary operations are shorthand way to write an if/else statement.

if(hello){
console.log(&amp;amp;amp;amp;amp;quot;It is true&amp;amp;amp;amp;amp;quot;)
}
else {
console.log(&amp;amp;amp;amp;amp;quot;it is false&amp;amp;amp;amp;amp;quot;);
}

//This can be written as following:
console.log(hello ? &amp;amp;amp;amp;amp;quot;It is true&amp;amp;amp;amp;amp;quot; : &amp;amp;amp;amp;amp;quot;It is false&amp;amp;amp;amp;amp;quot;);

So question-mark means “if”, and : means “else”;

Does javascript have blockscope or function scope and what does that mean?
It has function-scope but not block scope. One would think that it has block-scope since it has that type of syntax, but in fact it only has function-scope.
This means that a variable that is defined within a

Which are the ways you can create an Object?

//Object literal
var myObj = {name: &amp;amp;amp;amp;quot;My Object&amp;amp;amp;amp;quot;};
//Constructor
var myObj2 = new Object();
myObj2.name = &amp;amp;amp;amp;quot;My Object 2&amp;amp;amp;amp;quot;;

What is a potential pitfall with using typeof bar === “object” to determine if bar is an object? How can this pitfall be avoided?
Problemet är att null också betraktas som ett objekt. Desamma gäller för arrays också.

What will the code below output to the console and why?

(function(){
  var a = b = 3;
})();

console.log(&amp;amp;amp;quot;a defined? &amp;amp;amp;quot; + (typeof a !== 'undefined'));
console.log(&amp;amp;amp;quot;b defined? &amp;amp;amp;quot; + (typeof b !== 'undefined'));

Här tror man lätt att var a = b =3; är likvärdigt med:
var a = b;
var b = 3;
Men det gör det inte. Egentligen står det:
var a = b;
b = 3;
Vilket gör b till en global variabel.

What is the significance, and what are the benefits, of including ‘use strict’ at the beginning of a JavaScript source file?
use stric introducerades i ECMA5.
1. Det tvingar scripet till striktare parsing och error handling. Dessa errors skulle annars kanske ignoreras, eller eller failed silently. Nu genererar de istället ett error. So in det är good practice.

2. Det gör det därmed enklare att debugga. Eftersom man får upp fler errors.

3. Ett enkelt exempel är om man gör en variabel global när den redan är global.
minVar = “test”;
Dette generar ett fel när man kör i “use strict” men inte annars.

What is closure?
Closure är en inre funktion som har tillgång till de yttre funktionernas variables.

What is Const?
en constant variables

What is a lambda function?
It is a anonymous function that is saved in a variable.
Example:


var lambda = function(saludos)
{
console.log(saludos);
}

lambda(&amp;quot;hola&amp;quot;);

Node

What is the difference between console.log/console.error and throw err?
The main difference is that throw err breaks the event loop and leaves the function. Console.log(err)/console.error(err) doesn’t break the function. It used prints our the error and then moves on.

What is the event handler in node?

What’s the difference between token-based authentication and cookie-based authentication?
För att en användare inte ska behöva verifiera sig själv, eller alltså att logga in varje gång en ny sida besökt så använder man cookies eller tokens.
Så när en användare för första gången loggar in på en sida så svarar servern med att skicka en cookie, som innehåller ett sessions-ID. Det kan vara en lång string med nummer och bokstäver. För varje gång som användaren sedan går till en ny sida så skickas cookien tillbaka till servern och den verifieras. På så sätt behöver inte användare skriva in sina uppgifter varje gång hen besöker en ny sida. Det blir både säkrare mer användarvänligt.

Så, det finns alltså två huvudsakliga sätt att verifiera en användare. Det ena är med coookies och den andra med tokens. De har både sina för och nackdelar.

Cookies

Tokens
https://auth0.com/blog/2014/01/07/angularjs-authentication-with-cookies-vs-token/

Algoritmer

Kan du skriva ett program som tar reda på om ett tal är ett prim-tal eller inte?

//Check to se if a number is a prime number
function isPrime(num){
	var divisor = 2;
	while (num &amp;amp;gt; divisor){
		if (num % divisor == 0){
			return console.log(false);
		}
		else {
			divisor++;
		}
	}
	return console.log(true);
}
isPrime(15);

Kan du skriva ett program som skriver ut fibonacci-sekvensen med x antal?

//How to get the nth fibonacci-number
function fibonacci(n){
  var fibo = [0, 1];
  
  if (n &amp;amp;lt;= 2) return 1;

  for (var i = 2; i &amp;amp;lt;=n; i++ ){
   fibo[i] = fibo[i-1]+fibo[i-2];
   //fibo.push[i];
  }

 return console.log(fibo);
} 

fibonacci(12);

Data structures | Strures of data

Vad är en data-struktur? Vad används de till och ge exempel på några vanliga datastrukturer i javascript?
Här är en fantastiskt serie om datastrukturer.
http://code.tutsplus.com/tutorials/data-structures-with-javascript-whats-a-data-structure–cms-23347

Så en datastruktur är helt enkelt en viss slags struktur av data. Data kan struktureras på många olika sätt. Ett exempel som tas upp i tutorialen som jag länkar till ovan använder sig av exemplet med böcker. Vara bok är en data, och tillsammans är de data (i pluralis). Denna data, alltså dessa böcker, kan organiseras och struktureras på olika sätt. Ett sätt är att ställa alla böckerna i bokstavsordning i en bokhylla. Böckerna kan därefter struktureras efter författarens för ellere efternamn eller efter titel. Fördelen med detta sätt är att vi kan ta ut en bok hur som helst, från vilket position som helst i strukturen.

Om vi däremot ställer upp böckerna på en hög (stack). Så kan vi inte bara dra ut den bok vi vill ha, för då faller ju hela högen. Så om vi vill ta fram en av böckerna som är längst ner i stacken så måste vi ta bort alla böcker ovan, en i taget.

Bra css/jQuery/js trix

Smooth-scroll till en sektion

Gör smooth-scroll till en sektion.
Lägg till den här koden i din .js-fil. Och ankra sedan länkarna till deras ID. Ex. Koden är copypastad här.

<section id="portfolio-section">
</section>
$(function() {
  $('a[href*=#]:not([href=#])').click(function() {
    if (location.pathname.replace(/^//,'') == this.pathname.replace(/^//,'') && location.hostname == this.hostname) {
      var target = $(this.hash);
      target = target.length ? target : $('[name=' + this.hash.slice(1) +']');
      if (target.length) {
        $('html,body').animate({
          scrollTop: target.offset().top
        }, 1000);
        return false;
      }
    }
  });
});

Fade in från vänster eller höger när man skrollar ner

Här finns filerna och dokumentationen.

Appidé: Konstnärsthesis abstrakt

1. En app där användaren får klicka på knappar för vilka ord som dom vill ha med i thesisen. De ska vara indelade i verb, pronomen, adjektiv, substantiv. Under varje ordklass-rad så finns ett antal ord, som till exempel:

concept, precarious, ciudad contemporanio,

2.Ett annat alternativ är att göra som den här bilden i den här länken. Kanske någon blandning vore bra, och mer omfattande. Eller så gör man det så det blir som en slags labyrint. Man klickar på något ord, så får man upp en ny kolumn med möjliga nyah val.

http://www.artishock.cl/2013/02/27/%C2%A1eh-artista-contemporaneo-%C2%BFaun-no-sabes-como-explicar-tu-obra/

3. Sedan printas det ut en hel text där det står typ. “Abstract” och sedan hela texten. Man kanske kan göra så att om man klickar på till exempel “concept” för att ha med det ordet, så kopplas det ordet automatiskt mot tre andra helt random ord. Detta göra så att massor av ord byter plats, vilket gör att det enkelt kan skapas miljontals-kombinationer, vilket gör att varje text i princip blir unik. Vilket gör att man kan kalla konceptet för “Create a unique Abstract for your thesis.

4. Sedan ska projektet läggas in i olika forum på reddit, och grupper på facebook och så vidare. Se hur det får en helt fenomenal spridning. Mitt namn ska sen stå med på sidan, så att folk hittar till min linkedin och så vidare.

5. Sedan skriva upp vart projektet omnämnts.