CERTIFIED COST PROFESIONAL (CCP) ONLINE DEL AACE
GESTIÓN DE PROYECTOS / 7 lecciones
401 inscritos
4.9
(80 valoraciones)
401 inscritos
5
star
92%
4
star
7%
3
star
0%
2
star
0%
1
star
0%
Filtrar por:
Giancarlo Ormachea
Perú / Lima
Junior Cost Engineer Stantec
El curso cumplió mis expectativas, los docentes tienen un alto conocimiento de la teoría y prácticas planteadas por la AACE aplicadas en proyectos reales, compartiendo sus experiencias. Recomiendo 100% este curso tanto para poder obtener una certificación internacional o entender las practicas recomendadas de la AACE.
Edgar Challapa
Chile
Senior project controls Wood
Gran curso, con excelentes docentes, material y contenido seleccionado con precisión para lograr el objetivo de la certificación CCP, lamentablemente por temas de tiempo no pude participar activamente, pero con el acceso al material y videos en forma asíncrona podré certificarme sin duda alguna.
André Valencia
Arequipa - Peru
Ingeniero de costos y programación
Excelente curso, perfectamente elaborado para lograr los objetivos trazados, sumamente recomendable.
Pamela Cuba
Perú/Cusco
Ing. de oficina técnica
Excelente curso, muy profesionales y cumplidos con lo ofrecido. La preparación es de alto nivel con profesores de gran experiencia, quienes comparten sus conocimientos de manera muy abierta, con clases muy amenas. El curso requiere de mucha predisposición por parte de los alumnos para aprender y practicar lo aprendido para posteriormente poder rendir el examen del CCP ante el AACE. Muy recomendado!
Fernando Hidalgo
Ecuador / Quito
Superintendente Fiscalización REVO ENAP
Es un curso 100% recomendado, excelente, muy bien preparado con profesionales de alta experiencia, saben compartir sus experiencias y enseñar los conocimientos completamente aplicables, en especial en mi ámbito de Oil and Gas. Muchas gracias por las enseñanzas del SK - TCM - AACE.
Teresa Ramirez
Perú
Project Controls Engineer
Curso 100% recomendado. Es una gran oportunidad contar con profesores con amplia experiencia quienes además comparten contenido excelente y preciso. Las clases son muy dinámicas e interactivas.
Rafael Guanipa
Santiago de Chile
Jefe de Costos en Acciona
Excelente curso. La dinámica y el contenido del curso son excelentes, definitivamente nos da una visión más centrada y aterrizada para enfrentarnos a la certificación. La experiencia de cada uno de los instructores es la clave para el funcionamiento de este curso. Definitavamente es recomendable para quien busque conseguir la certificación AACE. Gracias. RG
Rafael Guanipa
Chile/ Santiago de Chile
Jefe de Costos. Acciona Infraestructuras
Excelente curso, totalmente recomendado para quien esté buscando la certificación AACE. Para resaltar, la experiencia de cada uno de los instructores y su amplio dominio de los temas, excelentes profesionales con una gran disposición de enseñarnos. Gracias.
Yilmer Arce
Arequipa Peru
Sr. Project Control
Excelente curso. Muy buena preparación de los docentes y los materiales del curso muy buenos. Muy recompensable para quienes quieran rendir el examen CCP y para quienes quieren expandir con los conceptos del TCM, S&K, y demás.

123456789

INSERTA TU VALORACIÓN
Ingresa tu foto (opcional)
Sube una foto que te identifique
Ingresa una imagen o pantallazo del curso (opcional)
Tu imagen aparecerá al final de tu comentario
Elige tu puntuación del curso
// Init style shamelessly stolen from jQuery http://jquery.com
var Froogaloop = (function(){
// Define a local copy of Froogaloop
function Froogaloop(iframe) {
// The Froogaloop object is actually just the init constructor
return new Froogaloop.fn.init(iframe);
}
var eventCallbacks = {},
hasWindowEvent = false,
isReady = false,
slice = Array.prototype.slice,
playerDomain = '';
Froogaloop.fn = Froogaloop.prototype = {
element: null,
init: function(iframe) {
if (typeof iframe === "string") {
iframe = document.getElementById(iframe);
}
this.element = iframe;
// Register message event listeners
playerDomain = getDomainFromUrl(this.element.getAttribute('src'));
return this;
},
/*
* Calls a function to act upon the player.
*
* @param {string} method The name of the Javascript API method to call. Eg: 'play'.
* @param {Array|Function} valueOrCallback params Array of parameters to pass when calling an API method
* or callback function when the method returns a value.
*/
api: function(method, valueOrCallback) {
if (!this.element || !method) {
return false;
}
var self = this,
element = self.element,
target_id = element.id !== '' ? element.id : null,
params = !isFunction(valueOrCallback) ? valueOrCallback : null,
callback = isFunction(valueOrCallback) ? valueOrCallback : null;
// Store the callback for get functions
if (callback) {
storeCallback(method, callback, target_id);
}
postMessage(method, params, element);
return self;
},
/*
* Registers an event listener and a callback function that gets called when the event fires.
*
* @param eventName (String): Name of the event to listen for.
* @param callback (Function): Function that should be called when the event fires.
*/
addEvent: function(eventName, callback) {
if (!this.element) {
return false;
}
var self = this,
element = self.element,
target_id = element.id !== '' ? element.id : null;
storeCallback(eventName, callback, target_id);
// The ready event is not registered via postMessage. It fires regardless.
if (eventName != 'ready') {
postMessage('addEventListener', eventName, element);
}
else if (eventName == 'ready' && isReady) {
callback.call(null, target_id);
}
return self;
},
/*
* Unregisters an event listener that gets called when the event fires.
*
* @param eventName (String): Name of the event to stop listening for.
*/
removeEvent: function(eventName) {
if (!this.element) {
return false;
}
var self = this,
element = self.element,
target_id = element.id !== '' ? element.id : null,
removed = removeCallback(eventName, target_id);
// The ready event is not registered
if (eventName != 'ready' && removed) {
postMessage('removeEventListener', eventName, element);
}
}
};
/**
* Handles posting a message to the parent window.
*
* @param method (String): name of the method to call inside the player. For api calls
* this is the name of the api method (api_play or api_pause) while for events this method
* is api_addEventListener.
* @param params (Object or Array): List of parameters to submit to the method. Can be either
* a single param or an array list of parameters.
* @param target (HTMLElement): Target iframe to post the message to.
*/
function postMessage(method, params, target) {
if (!target.contentWindow.postMessage) {
return false;
}
var url = target.getAttribute('src').split('?')[0],
data = JSON.stringify({
method: method,
value: params
});
target.contentWindow.postMessage(data, url);
}
/**
* Event that fires whenever the window receives a message from its parent
* via window.postMessage.
*/
function onMessageReceived(event) {
var data, method;
try {
data = JSON.parse(event.data);
method = data.event || data.method;
}
catch(e) {
//fail silently... like a ninja!
}
if (method == 'ready' && !isReady) {
isReady = true;
}
// Handles messages from moogaloop only
if (event.origin != playerDomain) {
return false;
}
var value = data.value,
eventData = data.data,
target_id = target_id === '' ? null : data.player_id,
callback = getCallback(method, target_id),
params = [];
if (!callback) {
return false;
}
if (value !== undefined) {
params.push(value);
}
if (eventData) {
params.push(eventData);
}
if (target_id) {
params.push(target_id);
}
return params.length > 0 ? callback.apply(null, params) : callback.call();
}
/**
* Stores submitted callbacks for each iframe being tracked and each
* event for that iframe.
*
* @param eventName (String): Name of the event. Eg. api_onPlay
* @param callback (Function): Function that should get executed when the
* event is fired.
* @param target_id (String) [Optional]: If handling more than one iframe then
* it stores the different callbacks for different iframes based on the iframe's
* id.
*/
function storeCallback(eventName, callback, target_id) {
if (target_id) {
if (!eventCallbacks[target_id]) {
eventCallbacks[target_id] = {};
}
eventCallbacks[target_id][eventName] = callback;
}
else {
eventCallbacks[eventName] = callback;
}
}
/**
* Retrieves stored callbacks.
*/
function getCallback(eventName, target_id) {
if (target_id) {
return eventCallbacks[target_id][eventName];
}
else {
return eventCallbacks[eventName];
}
}
function removeCallback(eventName, target_id) {
if (target_id && eventCallbacks[target_id]) {
if (!eventCallbacks[target_id][eventName]) {
return false;
}
eventCallbacks[target_id][eventName] = null;
}
else {
if (!eventCallbacks[eventName]) {
return false;
}
eventCallbacks[eventName] = null;
}
return true;
}
/**
* Returns a domain's root domain.
* Eg. returns http://vimeo.com when http://vimeo.com/channels is sbumitted
*
* @param url (String): Url to test against.
* @return url (String): Root domain of submitted url
*/
function getDomainFromUrl(url) {
var url_pieces = url.split('/'),
domain_str = '';
for(var i = 0, length = url_pieces.length; i < length; i++) {
if(i<3) {domain_str += url_pieces[i];}
else {break;}
if(i<2) {domain_str += '/';}
}
return domain_str;
}
function isFunction(obj) {
return !!(obj && obj.constructor && obj.call && obj.apply);
}
function isArray(obj) {
return toString.call(obj) === '[object Array]';
}
// Give the init function the Froogaloop prototype for later instantiation
Froogaloop.fn.init.prototype = Froogaloop.fn;
// Listens for the message event.
// W3C
if (window.addEventListener) {
window.addEventListener('message', onMessageReceived, false);
}
// IE
else {
window.attachEvent('onmessage', onMessageReceived, false);
}
// Expose froogaloop to the global object
return (window.Froogaloop = window.$f = Froogaloop);
})();
view raw froogaloop.js hosted with ❤ by GitHub