יזם מתחיל? איך להשקיע בעצמך זה בעצם להגדיל את העסק
5 טיפים מעשיים לכל יזם מתחיל שישנו את הדרך שבה אתה עובד, חושב ומייצר תוצאות. כי ההשקעה הכי חשובה היא בעצמך.
רוצה ליווי עסקי אישי?
חוק פארטו - 80/20 לכל יזם מתחיל
כל יזם מתחיל שואל את עצמו: איך במקום לבצע 10 פעולות אבצע רק 2 ועדיין אקבל את אותה תוצאה? התשובה טמונה בחוק פארטו - עיקרון מרכזי שכל יזם מתחיל חייב להכיר.
אחד הדברים החשובים ביותר בחוק הזה הוא הזיהוי - אנחנו צריכים לזהות מהם 20% מהפעולות האפקטיביות ביותר שמביאות לנו את 80% מהתוצאות.
בעולם ההייטק יש שיטה שלמה (AGILE) וזה בגדול אומר שאנחנו צריכים לקחת את המינימום הנדרש על מנת להגיע אל התוצאה הסופית. התכנון שלנו חייב להיות מדויק להפליא עד כדי כך שנדע בדיוק מה יהיו המינימום פעולות אשר יביאו לנו את הכסף הגדול הביתה.
2
דד-ליינים - מה הסיפור איתם?
מי שהיה בעברו שכיר יודע שאין דבר משגע יותר מאשר דד-ליינים רצחניים. יש משהו בדד-ליינים שהופך אותם לכמו מדחסת יכולות - פתאום אנחנו מבינים תוך כדי תנועה מה הדברים החשובים באמת ומבצעים רק אותם.
הטיפ: בפעם הבאה שאתה ניגש למשימה גדולה, נסה לקחת הערכה גסה של זמנים ולתחום את זה בדד-ליין של שליש מהזמן לפחות. עדיף לשים דד-ליין רצחני ולעמוד בו למחצה מאשר להציב דד-ליין רחוק שלא ממצה את היכולות האמיתיות שלנו.
3
זוללי אנרגיה - איך יזם מתחיל יזהה אותם?
הם מתחפשים למשפחה שלך, לחברים הכי טובים שלך ואפילו לשכן מהדירה ממול. זוללי האנרגיה נמצאים בכל רמזור, פינה ומתחת לכל אבן. אנחנו משקפים את הממוצע של 5 האנשים הקרובים אלינו ביותר.
הטיפ: לכו לחפש מעגלים חברתיים - מומלץ מאוד אירועי נטוורקינג כיוון ששם בדרך כלל תמצאו אנשים שדומים מאוד לכם ולשאיפות שלכם. בסיום המפגש אתם יוצאים עם המון מוטיבציה ורעב מטורף להצליח.
4
להבין מתי אנחנו צריכים מנוחה והטענה
קחו יום חופש. זה לא מותרות אלא חובה. תזמנו מראש מחזורי עשייה - אם אתם מוצאים את עצמכם פחות אנרגטיים לקראת סוף החודש, פשוט קחו יום חופש. כל יזם מתחיל שרץ בלי הפסקה יגיע לשחיקה מהר מאוד.
הטיפ: לכו לספא, לטיול בפארק, או סתם לשבת מול הים. תזמנו מראש את יום ההטענה שלכם, תפנו את היומן לגמרי ביום הזה ותודיעו ללקוחות שאתם לא פעילים. תודו לי אחר כך.
5
לשמור על כושר גבוה
לא סתם יש משפט שאומר "נפש בריאה בגוף בריא". כשאני יוצא להליכה אפילו קצרה של 15-30 דקות, אני מוצא את עצמי מכניס חמצן עמוק ומאפשר למוח והגוף להגביר ביצועים.
הטיפ: אם אתה רוצה ביצועים גבוהים אתה צריך לתרגל ביצועי קצה כל פעם מחדש. הגוף שלנו צריך לחיות באינטרוולים גבוהים כדי שנוכל לייצר ממנו ביצועים גבוהים. אנחנו לא יכולים לנסוע בסובארו ולרצות ביצועים של מרצדס.
סיכום - ההשקעה הכי חשובה לכל יזם מתחיל
כשאתה יזם מתחיל, קל לשכוח שהעסק מתחיל ונגמר בך. אתה המנוע, האנרגיה והחזון. בלי שתשקיע בעצמך - בזמן שלך, באנרגיה שלך, בבריאות שלך ובמעגלים החברתיים שלך - העסק לא יוכל לגדול מעבר ליכולות הנוכחיות שלך.
זכור: להגדיל את העסק זה קודם כל להגדיל את עצמך. כל שעה שאתה משקיע בלמידה, במנוחה נכונה, בכושר גופני ובמיקוד - חוזרת אליך פי כמה בתוצאות עסקיות.
רוצה לקחת את זה צעד קדימה? הצטרף ללוח TAB - קבוצת עמיתים של בעלי עסקים שמתכנסת מדי חודש לשיפור ביצועים ועמידה ביעדים.
/* ════════════════════════════════════════════════
Image fetcher — tries WP API then og:image.
If a real photo loads it overlays the SVG.
If nothing loads the SVG stays as the visual.
════════════════════════════════════════════════ */
(function () {
'use strict';
const BAD = ['מתוך','%D7%9E%D7%AA%D7%95%D7%9A','300x221','placeholder'];
function isBad(s) { return !s || BAD.some(b => s.includes(b)); }
function showPhoto(thumb, imgEl, src) {
const t = new Image();
t.onload = () => { imgEl.src = src; thumb.classList.add('rr-has-photo'); };
t.onerror = () => {}; /* SVG stays */
t.src = src;
}
function apiSrc(url, type) {
const slug = url.replace(/\/$/, '').split('/').pop();
return `/wp-json/wp/v2/${type}?slug=${slug}&_embed=1&_fields=_embedded&per_page=1`;
}
function fromApi(data) {
if (!Array.isArray(data) || !data.length) return null;
const em = ((data[0]._embedded || {})['wp:featuredmedia'] || [])[0];
if (!em) return null;
const sizes = (em.media_details || {}).sizes || {};
for (const k of ['large','medium_large','full','medium']) {
const s = sizes[k];
if (s && s.source_url && !isBad(s.source_url)) return s.source_url;
}
const f = em.source_url || '';
return isBad(f) ? null : f;
}
function htmlOg(url) {
return fetch(url, { credentials: 'same-origin' })
.then(r => r.ok ? r.text() : Promise.reject())
.then(h => {
const m = h.match(/property=["']og:image["'][^>]*content=["']([^"']+)/i)
|| h.match(/content=["']([^"']+)["'][^>]*property=["']og:image/i);
const src = m && m[1];
if (src && !isBad(src)) return src;
const imgs = [...h.matchAll(/src=["'](https?:\/\/nirmako\.com\/wp-content\/uploads\/[^"'\s>]+)/gi)];
for (const x of imgs) {
if (!isBad(x[1]) && !/(icon|logo|avatar|1x1|tracking)/i.test(x[1])) return x[1];
}
return null;
});
}
document.querySelectorAll('#rrGrid .rr-card').forEach(card => {
const thumb = card.querySelector('.rr-thumb');
const imgEl = thumb && thumb.querySelector('img');
const url = card.dataset.url;
if (!thumb || !imgEl || !url) return;
card.addEventListener('click', e => { if (!e.target.closest('a')) window.location.href = url; });
fetch(apiSrc(url, 'posts'))
.then(r => r.ok ? r.json() : Promise.reject())
.then(d => {
const s = fromApi(d);
if (s) { showPhoto(thumb, imgEl, s); return; }
throw 'try-pages';
})
.catch(() => fetch(apiSrc(url, 'pages'))
.then(r => r.ok ? r.json() : Promise.reject())
.then(d => {
const s = fromApi(d);
if (s) { showPhoto(thumb, imgEl, s); return; }
throw 'try-html';
})
.catch(() => htmlOg(url).then(s => { if (s) showPhoto(thumb, imgEl, s); })
.catch(() => {}))
);
});
})();
/* ════════════════════════════════════════════════════
Recommended-Reading image fetcher v2
Strategy (priority order per card):
1. WordPress JSON API → _embedded featured media (fastest, clean JSON)
2. og:image from fetched HTML (fallback)
3. First real
![NIRMAKO]()
in .entry-content (last resort)
4. Graceful: keep skeleton hidden, no broken image
════════════════════════════════════════════════════ */
(function () {
'use strict';
/* known-bad placeholder fingerprint – skip if found */
const BAD = ['%D7%9E%D7%AA%D7%95%D7%9A', 'מתוך', 'placeholder', '300x221'];
function isBad(src) {
return BAD.some(b => src.includes(b));
}
function applyImg(wrap, imgEl, src) {
const t = new Image();
t.onload = () => {
imgEl.src = src;
wrap.classList.add('loaded');
};
t.onerror = () => wrap.classList.add('loaded'); /* hide shimmer even on error */
t.src = src;
}
/* ── Strategy 1: WP REST API ── */
function tryWpApi(card) {
const url = card.dataset.url.replace(/\/$/, '');
const slug = url.split('/').pop();
const base = url.split('/').slice(0, 3).join('/'); /* https://nirmako.com */
const api = base + '/wp-json/wp/v2/posts?slug=' + slug + '&_embed=1&_fields=id,link,_embedded';
return fetch(api)
.then(r => r.ok ? r.json() : Promise.reject('api-fail'))
.then(posts => {
if (!Array.isArray(posts) || !posts.length) return null;
const post = posts[0];
const media = post._embedded &&
post._embedded['wp:featuredmedia'] &&
post._embedded['wp:featuredmedia'][0];
if (!media) return null;
/* prefer medium_large or full */
const sizes = media.media_details && media.media_details.sizes;
if (sizes) {
const pick = sizes.medium_large || sizes.large || sizes.full || sizes.medium;
if (pick && pick.source_url && !isBad(pick.source_url)) return pick.source_url;
}
const src = media.source_url || (media.guid && media.guid.rendered);
return (src && !isBad(src)) ? src : null;
});
}
/* ── Strategy 2 & 3: HTML scrape ── */
function tryHtmlScrape(card) {
const url = card.dataset.url;
return fetch(url, { headers: { Accept: 'text/html' } })
.then(r => r.ok ? r.text() : Promise.reject('html-fail'))
.then(html => {
const doc = new DOMParser().parseFromString(html, 'text/html');
/* og:image */
const og = doc.querySelector('meta[property="og:image"]');
if (og) {
const src = og.getAttribute('content') || '';
if (src && !isBad(src)) return src;
}
/* first real content img */
const sels = ['.entry-content img', '.post-content img',
'article .wp-post-image', '.post-thumbnail img',
'article img', 'main img'];
for (const sel of sels) {
for (const img of doc.querySelectorAll(sel)) {
let src = img.getAttribute('src') || img.getAttribute('data-src') || '';
if (!src || src.startsWith('data:') || src.endsWith('.svg')) continue;
if (src.startsWith('//')) src = 'https:' + src;
if (/(icon|logo|avatar|emoji|pixel|1x1|tracking)/i.test(src)) continue;
if (isBad(src)) continue;
return src;
}
}
return null;
});
}
/* ── Wire up each card ── */
document.querySelectorAll('#rrGrid .rr-card').forEach(card => {
const wrap = card.querySelector('.rr-img-wrap');
const imgEl = wrap.querySelector('img');
if (!wrap || !imgEl) return;
tryWpApi(card)
.then(src => {
if (src) { applyImg(wrap, imgEl, src); return; }
return tryHtmlScrape(card).then(s => {
if (s) applyImg(wrap, imgEl, s);
else wrap.classList.add('loaded');
});
})
.catch(() => {
tryHtmlScrape(card)
.then(s => { if (s) applyImg(wrap, imgEl, s); else wrap.classList.add('loaded'); })
.catch(() => wrap.classList.add('loaded'));
});
});
/* also make the whole card clickable */
document.querySelectorAll('#rrGrid .rr-card').forEach(card => {
card.style.cursor = 'pointer';
card.addEventListener('click', function(e) {
if (e.target.tagName === 'A') return;
window.location.href = card.dataset.url;
});
});
})();
/* ── Article-image loader: scrapes each post page for a content image ──────
Strategy:
1. Fetch the article HTML page (same-origin, works in browser)
2. Parse og:image from meta → if not same as known-bad swirl → use it
3. Else: first
![NIRMAKO]()
inside .entry-content / .post-content / article / main
4. Skip any src that matches the "swirl" already shown (dedupe)
5. Graceful fallback to placeholder already in
![NIRMAKO]()
──────────────────────────────────────────────────────────────────────────── */
(function () {
/* helper: parse a raw HTML string with DOMParser */
function parseDoc(html) {
return new DOMParser().parseFromString(html, 'text/html');
}
/* pick best
![NIRMAKO]()
from a list of candidate elements,
skipping the "bad" image already shown as placeholder */
function pickImg(doc, badSrcs) {
const selectors = [
'.entry-content img',
'.post-content img',
'article .wp-post-image',
'.post-thumbnail img',
'article img',
'main img'
];
for (const sel of selectors) {
const imgs = [...doc.querySelectorAll(sel)];
for (const img of imgs) {
let src = img.getAttribute('src') || img.getAttribute('data-src') || '';
if (!src || src.startsWith('data:') || src.endsWith('.svg')) continue;
if (src.startsWith('//')) src = 'https:' + src;
/* skip tiny icons ( src.includes(b))) continue;
return src;
}
}
return null;
}
/* extract og:image from a parsed document */
function ogImage(doc) {
const m = doc.querySelector('meta[property="og:image"]');
return m ? m.getAttribute('content') : null;
}
/* set image and remove skeleton */
function apply(wrap, imgEl, src) {
const t = new Image();
t.onload = () => {
imgEl.src = src;
wrap.classList.remove('img-loading');
wrap.classList.add('img-ready');
};
t.onerror = () => fallback(wrap);
t.src = src;
}
function fallback(wrap) {
wrap.classList.remove('img-loading');
wrap.classList.add('img-ready');
const img = wrap.querySelector('img');
if (img) img.style.opacity = '1';
}
/* collect srcs already shown (the "bad" swirl placeholder) */
const usedSrcs = new Set();
document.querySelectorAll('.article-card[data-url]').forEach(card => {
const url = card.dataset.url;
const imgEl = card.querySelector('.article-image img');
const wrap = card.querySelector('.article-image');
/* record current placeholder as "bad" — we want something different */
const curSrc = imgEl.getAttribute('src') || '';
const badParts = curSrc
? [curSrc.split('/').pop().replace(/\.[^.]+$/, '')] /* filename without ext */
: [];
fetch(url, { headers: { Accept: 'text/html' } })
.then(r => r.ok ? r.text() : Promise.reject('http ' + r.status))
.then(html => {
const doc = parseDoc(html);
/* try og:image first */
const og = ogImage(doc);
if (og && !badParts.some(b => og.includes(b)) && !usedSrcs.has(og)) {
usedSrcs.add(og);
apply(wrap, imgEl, og);
return;
}
/* fall through: scan article body */
const bodySrc = pickImg(doc, badParts);
if (bodySrc && !usedSrcs.has(bodySrc)) {
usedSrcs.add(bodySrc);
apply(wrap, imgEl, bodySrc);
return;
}
/* if SAME image found again (duplication), skip it */
if (bodySrc) {
/* use it anyway — better than blank */
apply(wrap, imgEl, bodySrc);
return;
}
fallback(wrap);
})
.catch(() => fallback(wrap));
});
})();