Kompas.com - 12/11/2016, 17:11 WIB
Lihat Foto
Tagliatelle with ragu alla bolognese(SHUTTERSTOCK)
Penulis Sri Anindiati Nursastri
|
EditorNi Luh Made Pertiwi F
KOMPAS.com - Jika liburan ke Italia, jangan nekat memesan spaghetti bolognese. Olahan pasta ini tidak ada di Italia. Hidangan paling mendekati adalah Ragu alla Bolognese, saus tomat dan daging yang disajikan bersama pasta.
Pasta yang digunakan pun bukan spaghetti melainkan tagliatelle, sejenis pasta mirip fettucine. Tagliatelle adalah pasta yang berasal dari wilayah Emilia-Romagna dan Marche. Pasta ini berbentuk pita pipih yang mirip dengan fettuccine, dengan lebar sekitar 6,5 mm-10 mm.
Ragu sendiri adalah sebutan untuk saus daging yang biasa dimasak berjam-jam lamanya. Ragu alla Bolognese berarti ragu yang menjadi sajian khas Bologna, sebuah kota di utara Italia.
Antonio Carluccio, koki Italia kenamaan seperti dikutip dari situs Telegraph menyebutkan bahwa orang Inggris turut andil dalam "merusak" resep spaghetti bolognaise.
Sejarah hidangan ini sendiri tidak jelas. Beberapa sumber menyebutkan bahwa hidangan itu muncul di kalangan orang Amerika Serikat dan Inggris pada masa Perang Dunia II. Penggunaan spaghetti sebagai pasta, serta penambahan rempah sepertioregano dan basil sebenarnya tidak ada dalam sajian Ragu alla Bolognese.
THINKSTOCK Spaghetti Bolognese
Penting untuk diketahui, Ragu alla Bolognese adalah salah satu kekayaan kuliner Italia yang dijunjung tinggi oleh warganya. Asal-usul saus daging-tomat ini pun tak bisa dibilang pendek.
Livio Cerini pernah menjelaskan sejarah Ragu alla Bolognese dalam buku resep masakan Italia yang dirilis pada abad ke-20. Mengutip situs The Local, Rabu (14/9/2016), kata ragu berasal dari bahasa Perancis yakni ragouter yang artinya "menambahkan rasa terhadap sesuatu".
Saat Kekaisaran Romawi menginvasi Galia (Perancis), warga Galia meracik saus yang kini terkenal sebagai ragout. Dulu, ragu merupakan racikan bahan dan bumbu yang biasa disajikan sebagai hidangan utama. Namun kemudian, ragu mulai dimakan bersama hidangan karbohidrat yakni roti.
THINKSTOCK Ragu alla Bolognese
Ragu yang diracik pada zaman pendudukan Romawi itu tidak menggunakan tomat sebagai bahan utama. Tomat baru masuk ke Eropa sekitar tahun 1500. Resep utama ragu yang terbuat dari bahan tomat disinyalir muncul pada akhir 1700-an.
Pelopornya adalah Alberto Alvisi, koki restoran Cardial of Imola yang meracik saus berbahan tomat dicampur dengan daging. Saus tersebut kemudian disajikan bersama sepiring pasta.
Pada awal 1800-an, resep ragu berbahan dasar tomat mulai tersebar lewat buku-buku yang tersebar di wilayah Emilia-Romagna di Italia. Pada masa itu, ragu disajikan hanya pada masa liburan dan momen spesial.
Hingga akhirnya pada 1982, resep ragu 'diresmikan' oleh Italian Academy of Cuisine at the Bologna Chamber of Commerce. Selain tomat, ragu versi 'resmi' ini juga memiliki bahan dasar daging babi asap dan susu.
Kini, di seantero Italia, ragu tak hanya berbahan dasar daging. Di beberapa wilayah, ragu dimasak menggunakan ikan seabass bahkan tahu lunak (tofu). Ragu yang dikenal sebagai saus bolognese adalah Ragu alla Bolognese.
Selain Bologna, resep ragu yang juga tersohor berasal dari Naples. Wilayah yang terkenal sebagai 'tuan rumah' pizza tersebut terbuat dari tomat yang dicampur potongan besar daging. Para koki biasa menggunakan beragam jenis daging mulai dari sapi, sapi muda, dan babi.
Semua bahan dimasak dalam waktu berjam-jam, sehingga bumbu meresap sempurna ke dalam daging.
Oleh karena itu, jika berkesempatan menyambangi Italia, jangan pesan spaghetti bolognese saat makan di restoran. Pesanlah Ragu alla Bolognese dan pelayan akan menanyakan pasta jenis apa yang sesuai dengan selera Anda.
Baiknya pilih pasta jenis tagliatelle yang bentuknya datar dan lebar. Saus pekat seperti bolognese menempel lebih baik pada pasta yang datar.
Dapatkan update berita pilihan dan breaking news setiap hari dari Kompas.com. Mari bergabung di Grup Telegram "Kompas.com News Update", caranya klik link https://t.me/kompascomupdate, kemudian join. Anda harus install aplikasi Telegram terlebih dulu di ponsel.
Baca berita tanpa iklan. Gabung Kompas.com+
Sumber The Local
- Jangan Nekat Pesan "Spaghetti Bolognese" Saat di Italia
- Resep Asli Saus Bolognese Ternyata Tanpa Rempah Khas Italia
Video rekomendasi
Video lainnya
Pilihan Untukmu
`); var wSpecStop = createElementFromHTML(`
Konten disembunyikan.
Muat ulang halaman untuk perbarui rekomendasi.
`); reactionPopup.querySelector('.buttonShare').setAttribute('data-title', item.title); reactionPopup.querySelector('.buttonShare').setAttribute('data-url', item.url); reactionPopup.querySelector('.buttonShare').setAttribute('data-campaign', 'AIML_Widget_Desktop'); let userFeedback = new UserFeedback(resultObj.engine['tracker_algsrc'], item.url + tracker_params, jxRecHelper, index); reactionPopup.querySelector('.buttonBookmark').addEventListener('click', function() { do_bookmark(item.url, index, userFeedback); }); reactionPopup.querySelector('.buttonShare').addEventListener('click', function() { userFeedback.event('share'); }); reactionPopup.querySelector('.buttonNotInterest').addEventListener('click', function() { if (getCookie('kmps_usrid')) { hideThisArt(this); userFeedback.event('not-interested'); } else { const parentAction = this.parentElement.parentElement.parentElement if (!!parentAction) { let indexElement = parentAction.getAttribute('data-index') if (indexElement != 'undefined') { localStorage.setItem('reaction_not_interest_temp', JSON.stringify({ urlpage: items[indexElement].url })) } } window.location.href = "https://account.kompas.com/login/a29tcGFz/" + btoa(window.location.href); } }); /** * trigger action "userFeedback" that user not interest item before, when not interest without login */ if (getCookie('kmps_usrid') && localStorage.getItem('reaction_not_interest_temp')) { const tempUrlNotInterest = JSON.parse(localStorage.getItem('reaction_not_interest_temp')) if (item.url == tempUrlNotInterest.urlpage) { userFeedback.event('not-interested'); localStorage.removeItem('reaction_not_interest_temp'); } } wSpecStop.querySelector('.wSpec-stop-undo').addEventListener('click', function() { showThisArt(this); userFeedback.event('un-not-interested'); }); recItem.appendChild(buttonOption); recItem.appendChild(reactionPopup); recItem.appendChild(wSpecStop); } var recItemWrapperA = createElement('a', null, null, null); recItemWrapperA.setAttribute('href', item.url + tracker_params); var titleDiv = createElement('h4', null, null, [cssClasses.title], item.title); var sourceDiv = null; if (item.hasOwnProperty('method')) { sourceDiv = createElement('div', null, null, [cssClasses.source], resultObj.engine['type'] + ' . ' + item.method.toUpperCase()); } else { var sourceDiv = createElement('div', null, null, [cssClasses.source], resultObj.engine['type']); } var textWrapper = createElement('div', null, null, [cssClasses.text_wrapper]); textWrapper.appendChild(categoryDiv); textWrapper.appendChild(titleDiv); textWrapper.appendChild(sourceDiv); recItemWrapper.appendChild(imgWrapper); recItemWrapper.appendChild(textWrapper); recItemWrapperA.appendChild(recItemWrapper); recItem.appendChild(recItemWrapperA); widgetWrapper.appendChild(recItem); // hook up the click handler for this item // recItem.onclick = handleClick.bind(null, jxRecHelper, item.url + tracker_params, index); recItemWrapperA.onclick = handleClick.bind(null, jxRecHelper, item.url + tracker_params, index); }); } var endDate = new Date(); var loadtime = (endDate.getTime() - startDate.getTime()); trackEventGa('AIML Article Recommendation', 'Content Loaded', 'algsrc='+resultObj.engine['tracker_algsrc']+',site=TRAVEL,device=desktop,loadtime=' + loadtime) let domain = window.location.hostname; if(domain=='www.kompas.com'){ var url=window.location.href.split("/"); domain=url[2]+'/'+url[3] } let subs_type = "No Subscription" let is_lgn = 0; let engine = resultObj.engine['tracker_algsrc']; if(getCookie('kmps_usrid')){is_lgn=1}; let time_load = loadtime; trackMixpanel(domain, subs_type, is_lgn, 'success', time_load, engine); resolve(); /*** * JXRECSDK NOTES 3 of 5 - * pass all the info about the items to the rec helper * each one is an object: ALL MANDATORY * div * id * pos */ jxRecHelper.items(widgetItemArr); /*** * JXRECSDK NOTES 4 of 5 - * Call the ready() of the helper object when the recommendation * results have been populated to the widget * (This will register the action=ready event) */ if (resultObj.engine['type'] == 'api-1') { jxRecHelper.ready(resultObj.options.algo + ":" + resultObj.options.version); } else { jxRecHelper.ready(resultObj.engine['type']); } } else { jxRecHelper.error(204); console.error("Error: no recommendation items"); return; } } catch (err) { jxRecHelper.error(901); console.log(err.stack); let domain = window.location.hostname; if(domain=='www.kompas.com'){ var url=window.location.href.split("/"); domain=url[2]+'/'+url[3] } let subs_type = "No Subscription" let is_lgn = 0; let engine = resultObj.engine['tracker_algsrc']; if(getCookie('kmps_usrid')){is_lgn=1}; let endDate = new Date(); let time_load = (endDate.getTime() - startDate.getTime()); trackMixpanel(domain, subs_type, is_lgn, 'fail', time_load, engine); } }); } const _jxRecSdkURL = 'https://scripts.jixie.media/jxrecsdk.1.0.min.js'; var startDate = new Date(); class OneWidget { constructor() { //this is also the one we will pass to the JX rec helper object when //we instantiate it: //In this implementation most of these come from the options obj //on the publisher page. this._options = { accountid: '9262bf2590d558736cac4fff7978fcb1', pageurl: 'https://travel.kompas.com/read/2016/11/12/171148727/sejarah.panjang.dalam.sepiring.spaghetti.bolognese.', widget_id: '1000183-6xWeiWZFIM', type: 'pages', container: 'rekomendasi-konten-pilihan-untukmu-aiml', keywords: content_tags, title: title, customid: "27", count: 14, }; this._containerId = this._options.container; this._container = document.getElementById(this._containerId); this._engines = [{"url":"https:\/\/recommendation.jixie.media\/v1\/recommendation","method":"GET","pageurl":"https:\/\/travel.kompas.com\/read\/2016\/11\/12\/171148727\/sejarah.panjang.dalam.sepiring.spaghetti.bolognese.","system":"jx","type":"api-1","tracker_params":"?source=widgetML&engine=V","tracker_algsrc":"V","count":14},{"url":"https:\/\/recommendation.kgdata.dev\/api\/v1\/recommendation","method":"POST","pageurl":"https:\/\/travel.kompas.com\/read\/2016\/11\/12\/171148727\/sejarah.panjang.dalam.sepiring.spaghetti.bolognese.","system":"kg","type":"api-2","tracker_params":"?source=widgetML&engine=C","tracker_algsrc":"C","count":14,"page_status":"read"},{"url":"https:\/\/apis.kompas.com\/api\/v2\/related?url=2016\/11\/12\/171148727","method":"GET","pageurl":"https:\/\/travel.kompas.com\/read\/2016\/11\/12\/171148727\/sejarah.panjang.dalam.sepiring.spaghetti.bolognese.","system":"jm","type":"api-3","tracker_params":"?source=widgetML&engine=J","tracker_algsrc":"J","count":14}]; } kickOff() { startDate = new Date(); const rand = Math.floor(Math.random() * 1000); const randSystem = Math.floor(Math.random() * 3); this._engine = this._engines[randSystem] if (location.hostname.indexOf('lestari') != -1) { this._engine = this._engines[1] } this._options.system = this._engine['system'] trackEventGa('AIML Article Recommendation', 'Widget load', 'algsrc=' + this._engine['tracker_algsrc'] + ',site=TRAVEL,device=desktop') let promJXSDK = fetchJSFileP(_jxRecSdkURL); let thisObj = this; // first we wait on the JX REC SDK to be loaded and initialized let recHelperObj = null; let recResults = null; promJXSDK .then(function() { /*** * JXRECSDK NOTES 1 of 5 - INSTANTIATION OF A JX REC HELPER OBJECT * Call this AFTER JX REC SDK is loaded but BEFORE you call your REC * backend. * * param: MANDATORY options object * options object must at a minimal have * accountid: get from jixie * widgetid: get from jixie * container: DIV ID of the destination div to house the widget * (for jixie widget this is just the options object passed from the page) * * (This will also register the action=load event) */ recHelperObj = jxRecMgr.createJxRecHelper(thisObj._options); let basicInfo = thisObj._options; basicInfo.engine = thisObj._engine if (basicInfo.engine.type == 'api-1') { var options = { count: basicInfo['count'], adpositions: "", keywords: basicInfo['keywords'], title: basicInfo['title'], date_published: "2016-11-12", pagecategory: "TRAVEL", algo: "mixed" }; return recHelperObj.getJxRecommendations(options); } else { return fetchRecommendationsP(basicInfo, recHelperObj.getJxUserInfo()); } }) .then(function(resp) { if (thisObj._engine.type == 'api-3') { recResults = new Object recResults.items = resp.docs.result; } else { recResults = resp; } recResults.engine = thisObj._engine; if (!resp || !recResults.items || recResults.items.length == 0) { /*** * JXRECSDK NOTES 2 of 5 - * Call the error() function on the recHelper when either an error * has occured in the fetching or there are no recommended items * * (This will register the action=error event) */ recHelperObj.error(204); throw "no recommendation results"; } }) .then(function() { // everything is ready (recommendation results, css): document.getElementById("rekomendasi-konten-pilihan-untukmu-aiml").classList.remove("-loading"); document.querySelector('.wSpec-list').remove(); createDisplay(rand, thisObj._container, recResults, recHelperObj) .then(function() { toggleDropdown(); //observe lozad // lozad('.lozad', { // load: function(el) { // el.src = el.dataset.src; // el.onload = function() { // el.classList.add('fade') // } // } // }).observe() }) }) .catch(function(error) { console.log(`Unable to create recommendations widget ${error.stack} ${error.message}`); }); } } var limit_gtm_ready = 1; function check_gtm_ready() { if ('ga' in window) { // create a new instance of our widget based on the options const newW = new OneWidget(); newW.kickOff(); } else { const timeout_gtm_ready = setTimeout(check_gtm_ready, 500) limit_gtm_ready += 1; if (limit_gtm_ready > 10) { clearTimeout(timeout_gtm_ready); const newW = new OneWidget(); newW.kickOff(); } } } check_gtm_ready() document.querySelector('.wSpec-secret').addEventListener('click', function(e) { e.preventDefault(); let wSl = document.querySelectorAll('.wSpec-source'); if (wSl.length > 0) { for (let i = 0; i < wSl.length; i++) { wSl[i].classList.toggle('show') } } }) function trackEventGa(category, action, label) { if ("ga" in window) { ga(function() { tracker = ga.getAll()[0]; if (tracker) { tracker.send("event", category, action, label); console.log('track event ', category, action, label) } }) } } function trackMixpanel(domain, subs_type, is_lgn, is_load, time_load, engine){ // if(domain.indexOf("katanetizen") != -1){ // console.log(domain, subs_type, is_lgn, is_load, time_load, engine); mixpanel.track('AIML Widget Loaded', { 'Page Type': 'Read', 'Page Domain': domain, 'Page Subscription Type': subs_type, 'Login Status': is_lgn, 'Load Status': is_load, 'Load Time': time_load, 'Engine': engine, 'Widget Type': 'Article', }); console.log('track mix panel', 'AIML Widget Loaded', 'Read') let kmp_nm = getCookie('kmp_nm'); if(kmp_nm){ distinct_id = mixpanel.get_distinct_id(); mixpanel.identify(distinct_id); mixpanel.people.set({ '$name': atob(kmp_nm), 'Subscription Type': subs_type, }); console.log('track mix panel people', 'AIML Widget Loaded', 'Read') } // } } function formBody(obj) { let formBody = []; for (var property in obj) { let encodedKey = encodeURIComponent(property); let encodedValue = encodeURIComponent(obj[property]); formBody.push(encodedKey + "=" + encodedValue); } return formBody.join("&"); } function getCookie(name) { var name = name + '='; var cookies = decodeURIComponent(document.cookie).split(';'); for (var i = 0; i < cookies.length; i++) { var c = cookies[i]; while (c.charAt(0) == ' ') { c = c.substring(1); } if (c.indexOf(name) == 0) { return c.substring(name.length, c.length); } } } function get_guid(url) { let arrayUrl = url.split('/'); let readPath = arrayUrl.indexOf('read'); if (arrayUrl[readPath + 1] == 'xml') { readPath += 1; } let year = arrayUrl[readPath + 1]; let month = arrayUrl[readPath + 2]; let date = arrayUrl[readPath + 3]; let id = arrayUrl[readPath + 4]; let guid = `.xml.${year}.${month}.${date}.${id}`; return guid; } function toggleDropdown() { let tdd = document.querySelectorAll('[data-dropdown]') if (!!tdd) { tdd.forEach((el) => { el.addEventListener('click', function() { el.parentElement.classList.toggle('-active') let saved = el.parentElement.getAttribute('data-saved') let kmps_usrid = getCookie('kmps_usrid'); if (kmps_usrid && !saved && el.parentElement.classList.contains('-active')) { let url = el.parentElement.getAttribute('data-url'); let guid = get_guid(url); check_bookmark( kmps_usrid, guid ).then(function(resp) { if (resp.hasOwnProperty('total_data')) { if (resp.total_data > 0) { el.parentElement.querySelector('.buttonBookmark').classList.add('-active'); el.parentElement.querySelector('.buttonBookmark').innerHTML = 'Hapus dari tersimpan'; el.parentElement.setAttribute('data-saved', 'true'); } else { el.parentElement.setAttribute('data-saved', 'false'); } } }) } }) document.addEventListener("click", function(e) { // console.log(e.target) if (el.contains(e.target)) { // console.log(tdd) } else { el.parentElement.classList.remove('-active') } }); }); } } function check_bookmark(kmps_usrid, guid) { let url = `https://api.kompas.com/2021/reaction/bookmark/list?kmps_usrid=${kmps_usrid}&guid=${guid}`; return new Promise(function(resolve, reject) { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { resolve(JSON.parse(this.responseText)) } }; xmlhttp.open("GET", url, true); xmlhttp.send(); }); } function do_bookmark(pageurl, pos, userFeedback) { const wSpecItem = document.querySelector(`.wSpec-item[data-index="${pos}"]`); const btnBookmark = wSpecItem.querySelector('.buttonBookmark'); const kmps_usrid = getCookie('kmps_usrid'); const guid = get_guid(pageurl); if (kmps_usrid) { if (btnBookmark.classList.contains('-active')) { set_unbookmark({ guid: guid, kmps_usrid: kmps_usrid, type: 'article' }).then(function(resp) { btnBookmark.classList.remove('-active'); btnBookmark.innerHTML = 'Simpan artikel'; reactionToast('Artikel berhasil dihapus dari list yang disimpan'); userFeedback.event('un-save'); }).catch(function(resp) { // message: "Data doesn't exists" if (resp.hasOwnProperty('message') && resp.message.includes('exist')) { btnBookmark.classList.remove('-active'); btnBookmark.innerHTML = 'Simpan artikel'; reactionToast('Artikel berhasil dihapus dari list yang disimpan'); } }) } else { const user_bookmark_url = "https://activity.kompas.com/saved?order=desc"; set_bookmark({ guid: guid, kmps_usrid: kmps_usrid, type: 'article', publisher: 'kompas', platform: 'desktop' }).then(function(resp) { btnBookmark.classList.add('-active'); btnBookmark.innerHTML = 'Hapus dari tersimpan'; reactionToast('Artikel berhasil disimpan', user_bookmark_url); userFeedback.event('save'); }).catch(function(resp) { // message: "Data already exist" if (resp.hasOwnProperty('message') && resp.message.includes('exist')) { btnBookmark.classList.add('-active'); btnBookmark.innerHTML = 'Hapus dari tersimpan'; reactionToast('Artikel berhasil disimpan', user_bookmark_url); } }) } } else { const login_url = "https://account.kompas.com/login/a29tcGFz/" + btoa(window.location.href); window.location.href = login_url; } } function set_bookmark(data) { const url = "https://api.kompas.com/2021/reaction/bookmark/add"; return new Promise(function(resolve, reject) { const xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 201) { resolve(JSON.parse(this.responseText)); } else if (this.readyState == 4 && this.status == 400) { reject(JSON.parse(this.responseText)); } }; xmlhttp.open("POST", url, true); xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8"); xmlhttp.send(formBody(data)); }); } function set_unbookmark(data) { const url = "https://api.kompas.com/2021/reaction/bookmark/delete"; return new Promise(function(resolve, reject) { const xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { resolve(JSON.parse(this.responseText)); } else if (this.readyState == 4 && this.status == 400) { reject(JSON.parse(this.responseText)); } }; xmlhttp.open("POST", url, true); xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8"); xmlhttp.send(formBody(data)); }); } class UserFeedback { constructor(engine, pageurl, jxRecHelper, pos) { this.engine = engine; this.pageurl = pageurl; this.jxRecHelper = jxRecHelper; this.pos = pos; } event(feedback) { if (this.engine == 'C') { const xmlhttp = new XMLHttpRequest(); let params = { domain: 'kompas.com', ce_userid: getCookie('kmps_usrid'), ce_sessionid: getCookie('ukid'), ce_pageurl: this.pageurl, engine: 'C', ce_feedback: feedback } xmlhttp.open("GET", 'https://apis.kgdata.dev/v1/aiml/feedback-widgetml' + formatParams(params)); xmlhttp.send(); } else if (this.engine == 'V') { if (feedback == 'share') { this.jxRecHelper.shared(this.pos); } else if (feedback == 'save') { this.jxRecHelper.bookmarked(this.pos); } else if (feedback == 'not-interested') { this.jxRecHelper.hidden(this.pos); } else if (feedback == 'un-not-interested') { this.jxRecHelper.unhidden(this.pos); } } } } function formatParams(params) { return "?" + Object .keys(params) .map(function(key) { return key + "=" + encodeURIComponent(params[key]) }) .join("&") }
-
Uji Pengetahuan Travel Berhadiah!
- Kuis Pengetahuan Tanpa Batas
- Tipe Voters yang Manakah Kamu? Cek Personality-nya Sekarang!
- Games Permainan Kata Bahasa Indonesia
- TTS - Teka - Teki Santuy Eps 114 Ragam Obat Sakit Tenggorokan
- TTS - Teka - Teki Santuy Eps 113 Laut yang Mengelilingi Indonesia
- TTS - Teka - Teki Santuy Eps 112 Judul Lagu Daerah Jawa Barat