Bonfire: Search and Replace

Soluția găsită de mine:

function myReplace(str, before, after) {
// convert before & after to array
if ( before.charAt(0) == before.charAt(0).toUpperCase() ) {
after = after.charAt(0).toUpperCase() + after.slice(1);
//after = after.split('');
//after[0] = after[0].toUpperCase();
//after = after.join('');
}
return str.replace(before, after);
}
console.log(myReplace("His name is Tom", "Tom", "john"));

Bonfire: Where art thou

În sfârșit am priceput cum funcționează array.filter in Javascript. Un lucru e clar pentru mine, cam greu funcționează cerebelul după o anumită oră. Mai jos e codul care funcționează pentru bonfire-ul în 18 Oct. 2015.

function where(collection, source) {
var arr = [];
// * loop through array to get the objects
// * loop through object for var prop in obj
arr = collection.filter(function(el, id){

for ( var prop in source ) {
console.log(Object.keys(el).indexOf(prop) + prop);
if ( Object.keys(el).indexOf(prop) < 0 ) {
return false;
}
if ( el[prop] != source[prop] ) {
return false;
}
}
return true;

});
// What's in a name?

return arr;
}

console.log(where([{ first: "Romeo", last: "Montague" }, { first: "Mercutio", last: null }, { first: "Tybalt", last: "Capulet" }], { last: "Capulet" }));

Convertire număr decimal în latin

Azi am rezolvat un bonfire care cere convertirea unui număr din decimal (arab) în latin: http://freecodecamp.com/challenges/bonfire-roman-numeral-converter și am vrut să reușesc pe cont propriu. Am avut nevoie totuși de câteva resurse ca să înțeleg mai bine algoritmul ce stă la baza conversiei și am dat peste exemplul următor: http://www.aivosto.com/visustin/sample/roman.pdf iar aici sunt câteva variante de rezolvare în mai multe limbaje de programare: http://rosettacode.org/wiki/Roman_numerals/Encode însă am ajuns și eu la același rezultat ca cel de pe http://wulkan.me/bonfire-roman-numeral-converter/ însă ideea era să ajung la un rezultat de genul https://github.com/StrongeLeeroy/freecodecamp-solutions/blob/master/bonfires/basic-algorithm-scripting/21-roman-number-converter.js

function convert(num) {
 var roman = ['I', 'V', 'X', 'L', 'C', 'D', 'M'];
 var decimal = [1, 5, 10, 50, 100, 500, 1000];
 var closest = 1;
 var counter = 0;
 var temp = "";
 console.log('Converting ' + num);
 if (decimal.indexOf(num) > 0) {
 return roman[decimal.indexOf(num)];
 }
 
 for (var i = decimal.length - 1; i >= 0; i--) {
 if (num >= decimal[i] - 1) {
 closest = decimal[i];
 break;
 }
 }
 
 if (num == closest - 1) {
 return 'I' + roman[decimal.indexOf(closest)];
 }
 while (num % closest !== 0) {
 num--;
 counter++;
 }
 var amount = num / closest;
 for (var j = 0; j < amount; j++) {
 temp += roman[decimal.indexOf(closest)];
 }
 if (counter !== 0){
 return temp + convert(counter);
 } else {
 return temp;
 }
}

console.log(convert(29));

chiar dacă sunt mai multe linii de cod.

function convert(num) {
 var romans = ["M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"];
 var decimals = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1];
 var numarr = num.toString().split('');
 var output = '';
 
 for ( var i = 0; i < romans.length; i += 1 ) {
 while ( num >= decimals[i] ) {
 output += romans[i];
 num -= decimals[i];
 }
 }
 
 return output;
}

console.log(convert(116));

Web Developer wannabe sau pe românește vreau să fiu un programator mai bun

Îmi doresc de mult timp să devin un full-stack web developer care să știe HTML, CSS (Sass), PHP (Laravel poate) & MySQL(i) plus, de ce nu, și MEAN (MongoDB, ExpressJS, AngularJS, Node.js) însă pentru a ajunge acolo sus e nevoie de mult efort susținut (adică perseverență) fără de care e greu tare.

După o pauză de 4 ani în care n-am reușit să studiez mare lucru din acest domeniu, m-am decis să recuperez și uitându-mă puțin pe internet, am devenit foarte repede confuz și puțin dezorientat din cauza plenitudinii de resurse / informații disponibile (care gratuite, care plătite). Problema mea cea mai mare este că trebuie să aleg resursele cele mai bune sau potrivite pentru mine, care sunt intr-adevăr folositoare și de la care pot învăța ceva. Așadar, am găsit pe udacity un program (nano-degree) pentru $200/lună care cică te învață timp de 6-9 luni să faci chestii folositoare și am văzut review-uri destul de bune: https://www.udacity.com/course/full-stack-web-developer-nanodegree–nd004 totuși sunt atât de mulți developeri (și nu numai) care au învățat singuri deci cred că trebuie să existe o altă cale. Am cumpărat câteva cărți, am abonament pe http://laracasts.com și http://lynda.com însă simt că îmi trebuie un mentor. Probabil voi căuta unul prin țară înainte să cumpăr acel nanodegree de la udacity. Buuun. Până acolo totuși am dat peste http://freecodecamp.com – un site destul de bunicel din punctul meu de vedere care își propune să te învețe multe, să devii un full-stack JS developer – http://freecodecamp.com/map. Cu câteva luni înainte m-am apucat de citit o carte scrisă de Zakas, Professional JavaScript for Web Developers, 3rd Edition pe care n-am apucat să o termin deoarece e destul de stufoasă însă trebuie neapărat să o citesc pentru a înțelege mai bine javascript. Acum mulți mi-au spus că învățarea vine prin exercițiu. Bun, înțeleg asta și sunt total de acord DAR pentru a exersa trebuie să știi ce să exersezi. Tot legat de JS am găsit pe YouTube o serie de video-uri în care Crockford vorbește despre acest limbaj de programare:

Am văzut un site al unui developer http://wulkan.me care scrie pe site cam ce face și ce are de gând să facă legat de programare și m-am gândit că m-ar ajuta și pe mine dacă mi-aș face un fel de jurnal public în care să am un fel de plan după care să mă ghidez.

Deci, la drum 🙂