thảo luận Tin Tức Xe Đạp 2023

  • Người tạo chủ đề Người tạo chủ đề MonTori
  • Ngày bắt đầu Ngày bắt đầu
Đúng là chênh lệch tuổi tác của Igor với Riku. Đánh giá cao sự cống hiến của 17, 2 ông già thì mấy chục km chỉ nằm núp đợi về đích rút :confused:
số 17 kéo mấy chục km tới khúc cuối Loic mắm môi mắm lợi rút như đúng rồi, về hạng 3 mà ham hố chi ko biết nữa
 
Giải này thấy 1 chiều sao đó, năm nào tổ chức cũng thấy áo vàng chung cuộc được định đoạt từ những vòng đầu tiên luôn rồi, mấy tay đua người Việt thì không có khả năng cạnh tranh áo vàng
 
Tốp 1: 4:18:30
tốp 2: GAP + 4p
tốp 3: GAP + 10p
tốp 4: GAP + 11p
Tốp 5: GAP +13p (hình như có Bình tốp này, ko thấy Kiệt lặc)

Vậy là áo cam chưa xe được rồi, quá tiếc
 
Kiệt lặc thật rồi
9S282dK.png
 
Giải này thấy 1 chiều sao đó, năm nào tổ chức cũng thấy áo vàng chung cuộc được định đoạt từ những vòng đầu tiên luôn rồi, mấy tay đua người Việt thì không có khả năng cạnh tranh áo vàng
có năm nay áo vàng với áo xanh mặc từ chặng 1 -> giờ thôi thím, chứ năm ngoái thì áo vàng tới đèo Hải Vân mới xé, còn mấy năm trước nữa thì chặng đồng đội tính giờ hoặc phải lên đèo về Đà Lạt mới xác định được áo vàng chung cuộc
 
có năm nay áo vàng với áo xanh mặc từ chặng 1 -> giờ thôi thím, chứ năm ngoái thì áo vàng tới đèo Hải Vân mới xé, còn mấy năm trước nữa thì chặng đồng đội tính giờ hoặc phải lên đèo về Đà Lạt mới xác định được áo vàng chung cuộc
Không biết Riku nó có nhường áo đỏ không, chứu e thấy các chặng vừa qua gần đỉnh trông vẫn còn sung sức lắm, dư sức tung nước rút :(
 
Giải này thấy 1 chiều sao đó, năm nào tổ chức cũng thấy áo vàng chung cuộc được định đoạt từ những vòng đầu tiên luôn rồi, mấy tay đua người Việt thì không có khả năng cạnh tranh áo vàng
Cái này là chuyện ko tránh khỏi khi muốn chuyên nghiệp hóa và mời ngoại binh về thôi thím. Chỉ tiếc là tiềm lực tài chính của các đội chênh lệch nhiều quá nên lệch kèo
 
/* VOZ — in-thread ad spread, client-side. * * Lives in the Siropu Ads Manager unit on `thread_view_below_messages` (the ad below the * last post), pasted after that unit's own and display() call. This file is the * source of truth; the ACP copy is a paste of it. Ads Manager's user/device/geo criteria * on that unit gate the whole thing. * * What it does: inserts up to `max` ad slots between posts, spaced by screen height rather * than post count. Anchors are post 1 and the first unread post (XF marks it `is-unread`; * it wins over post 1 when the two are closer than a gap) — each only if at least one gap * above the ad below the last post. Every stretch between anchors, and down to that bottom * ad, then gets as many slots as fit at the gap, spread evenly, each on the nearest post * boundary that keeps the gap, up to the cap — stretches below the unread post take their * share first (the reader scrolls down from there). Slot ids, gap, reserved size and backup * are per breakpoint (desktop / mobile). Slots are inserted as empty reserved boxes * (`voz-adSlot`, see extra.less) before PubPower fills them, so nothing shifts when an ad * arrives; the same markup gives them the backup, the hide-on-load and the fit rules. * * Re-runnable: window.vozThreadSpread() removes what it inserted and recomputes. */ (function () { var CONFIG = { max: 3, mobileMaxWidth: 650, label: 'Quảng cáo', // Per breakpoint: PubPower slot ids, one per placement in page order (kept per // device so each device's placements report under their own ids); the minimum // distance between ads (and from the last one to the bottom ad) as viewport heights, // or a string like '1200px'; the reserved size (voz-adSlot--… in extra.less); and the // backup shown until an ad has loaded. The backup keeps class voz-adSlot-backup // (hide-on-load, click-through when unfilled); --raw drops the style's own box so the // markup inside shows as written. desktop: { slots: ['pw_44325', 'pw_44329', 'pw_44331'], gap: 2, sizeClass: 'voz-adSlot--leaderboard', backupHtml: '' + '
AD · 970×90
' + '
' }, mobile: { slots: ['pw_44325', 'pw_44329', 'pw_44331'], gap: 3, sizeClass: 'voz-adSlot--rectangleLarge', backupHtml: '' + '
AD · 336×280
' + '
' } }; var MARK = 'data-voz-spread'; var script = document.currentScript; function pageTop(el) { return el.getBoundingClientRect().top + window.pageYOffset; } function pageBottom(el) { return el.getBoundingClientRect().bottom + window.pageYOffset; } function breakpoint() { return window.matchMedia('(max-width: ' + CONFIG.mobileMaxWidth + 'px)').matches ? CONFIG.mobile : CONFIG.desktop; } function gapPx() { var g = breakpoint().gap; return typeof g === 'string' ? parseFloat(g) : g * window.innerHeight; } function bottomAd() { var el = script; while (el && !(el.classList && el.classList.contains('voz-adSlot'))) el = el.previousElementSibling; return el; } function unit(slotId) { var bp = breakpoint(); var wrap = document.createElement('div'); wrap.className = 'voz-adUnit'; wrap.setAttribute(MARK, ''); wrap.innerHTML = (CONFIG.label ? '
' + CONFIG.label + '
' : '') + '
' + bp.backupHtml + '' + '
'; return wrap; } function run() { var old = document.querySelectorAll('[' + MARK + ']'); for (var k = 0; k < old.length; k++) old[k].parentNode.removeChild(old[k]); var posts = Array.prototype.slice.call(document.querySelectorAll('.block--messages article.message--post')); if (posts.length < 2) return []; var gap = gapPx(); var bottom = bottomAd(); var bottomY = bottom ? pageTop(bottom) : pageBottom(posts[posts.length - 1]); var chosen = []; function fits(y) { if (bottomY - y < gap) return false; for (var i = 0; i < chosen.length; i++) if (Math.abs(chosen[i].y - y) < gap) return false; return true; } function take(post) { var y = pageBottom(post); if (!fits(y)) return false; chosen.push({ post: post, y: y }); return true; } var unread = -1; for (var i = 0; i < posts.length; i++) if (posts[i].classList.contains('is-unread')) { unread = i; break; } // Anchors: the unread post (if a gap above the bottom ad), then post 1 (if a gap // from both). Every stretch between consecutive anchors and the bottom ad then gets // as many slots as fit at the gap, spread evenly, each on the nearest post boundary. if (unread >= 0) take(posts[unread]); take(posts[0]); chosen.sort(function (a, b) { return a.y - b.y; }); var uy = unread >= 0 ? pageBottom(posts[unread]) : -1; var bounds = chosen.map(function (c) { return c.y; }).concat([bottomY]); var segments = []; for (var s = 0; s + 1 < bounds.length; s++) segments.push({ a: bounds[s], b: bounds[s + 1] }); // Stretches below the unread post take their share of the cap first (the reader // scrolls down from there), then the ones above it, top-down. segments.sort(function (x, y) { return (x.a >= uy ? 0 : 1) - (y.a >= uy ? 0 : 1) || x.a - y.a; }); for (var t = 0; t < segments.length; t++) { var a = segments[t].a, b = segments[t].b; var n = Math.min(Math.floor((b - a) / gap) - 1, CONFIG.max - chosen.length); for (var j = 1; j <= n; j++) { var target = a + j * (b - a) / (n + 1), best = null, bestD = Infinity; for (var q = 0; q < posts.length; q++) { var yq = pageBottom(posts[q]); if (yq <= a || yq >= b || !fits(yq)) continue; var d = Math.abs(yq - target); if (d < bestD) { bestD = d; best = posts[q]; } } if (best) take(best); } } chosen.sort(function (a, b) { return a.y - b.y; }); window.powerTag = window.powerTag || {}; var placed = []; var slots = breakpoint().slots; for (var p = 0; p < chosen.length; p++) { var id = slots[p % slots.length]; chosen[p].post.insertAdjacentElement('afterend', unit(id)); placed.push({ afterPost: posts.indexOf(chosen[p].post) + 1, slot: id }); (function (slotId) { (window.powerTag.Init = window.powerTag.Init || []).push(function () { window.powerAPITag.display(slotId); }); })(id); } return placed; } window.vozThreadSpread = run; run(); })();

Thống kê chủ đề

Ngày tạo
MonTori,
Người trả lời cuối
BiNGan,
Trả lời
2.925
Lượt xem
141.736
Quay lại
Lên đầu trang