khoe Mỗi tháng 1 cuốn sách

  • Người tạo chủ đề Người tạo chủ đề sundayvt
  • Ngày bắt đầu Ngày bắt đầu

sundayvt

Member
Không nói nhiều, tri thức là kiến thức vô giá , cũng là cơ hội đổi đời cho các volit.
Đặt mục tiêu 1 tháng đọc ít nhất 1 cuốn sách nào, nhiều thì 2-3 cuốn , tính luôn ebook.
Tôi mở bát trước, :byebye:
Mới đọc xong cuốn The Body Language của Kinsey Goman. Nội dung nói về ngôn ngữ cơ thể, nhìn qua dáng vẻ cũng biết người đó đang suy nghĩ hay muốn điều gì, phù hợp để thương thảo , giao tiếp, kết giao ....
181338708_10222619353666526_1820661818260359246_n.jpg
 
Không đọc self-help là ok cả bác ơi
Chắc chắn là bạn chưa từng đọc sách self-help chỉ nghe kể về nó.
Nội dung của sách thì khá giống với chia sẻ của các Winner trên này (khích lệ rằng mọi người đều có thể thành công) khuyên cố gắng nỗ lực - ko bỏ cuộc.
Theo tôi sách ko xấu, là do bản thân không lĩnh hội đc
 
Sửa lần cuối:
Thím nào hứng thú với review sách không? Tôi tính viết review những cuốn sách đã đọc, vừa giúp mình tổng hợp kiến thức đã đọc vừa giúp người khác :D
tóm tắt ý chính với trích dẫn những đoạn hay như kiểu tóm tắt phim trên face hay làm cũng được ấy nhỉ :D
mình cũng đang note lại vài quyển. Mấy thím có làm thớt tổng hợp thì mình cùng up lên
 
Đọc sách để giải trí, lúc nào cũng có một cuốn, thi thoảng gặp sách dày hay ít đọc mình đọc khá lâu chứ không hẳn 1 tháng/cuốn như thớt.
 
Luôn cố gắng dành ít nhất 30p đọc sách mỗi ngày, theo kinh nghiệm cũng bỏ kha khá tiền mua sách thì khuyên cho những ai muốn bắt đầu đọc sách là đọc tầm 20-30 trang trong sách, nếu bạn thấy hay hoặc hiểu ý tác giả thì mới mua về và biết chọn những cuốn về vấn đề mình đang muốn tìm hiểu hoặc vừa tầm với mình, ko đua đòi học theo mua mấy cuốn best seller để làm gì cả, mua mấy cuốn ko hợp hoặc quá tầm về đọc vài trang ko hiểu là bỏ ngay à, sau này rất khó để có hứng đọc sách

Gửi từ Xiaomi Redmi Note 8 Pro bằng vozFApp
 
/* 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
sundayvt,
Người trả lời cuối
hieu2711,
Trả lời
74
Lượt xem
5.631
Quay lại
Lên đầu trang