Цвекло, ябълка, кашкавал, лилав лук, сол, оцет, лют зехтин.
Идеално върви с джинджифилова бира!
И не пиша нищо повече, защото “рецептата” е от януари месец, а я пускам октомври. Сещайте се.
и други бележки към мене си
Цвекло, ябълка, кашкавал, лилав лук, сол, оцет, лют зехтин.
Идеално върви с джинджифилова бира!
И не пиша нищо повече, защото “рецептата” е от януари месец, а я пускам октомври. Сещайте се.
Стоя до късно, за да си скубя косата с абсурдно неясния изказ на едни онлайн маркетолози, които не могат грам да се оправят с изясняването на това какво точно искат да им пращам като данни към Google Tag Manager, за да си следят определените потребителски събития и да си поставят съответните метрики. В края на краищата толкова набрах, че отворих петте линка с документация, която са препоръчали, та барем разбера какво се губи в превода с тия хора и защо е толкова трудно много постен json да го коригират по начина, по който го искат.
Обобщавам по-долу това, което разбирам и научавам, четейки отново досадните документи.
dataLayer е обектът в кода, който ползваме, за да изпращаме данни на “кораба майка”. Data Layer е абстракцията, представяна от въпросния обект, която застава между сайта ни и Google Tag Manager, за да може от нея GTM да си щипка значими данни и да ги подава на всички останали проследяващи скриптове и услуги, накатерили се по клона.
Обектът dataLayer го инициализираме по следния начин (ако го нямаме от GTM скрипта или Google Optimize скрипта):
var dataLayer = window.dataLayer = window.dataLayer || [];
На някои места (включително официалната гугълска документация) се говори за дефиниране на масив от обект с данните, който се нахлузва на dataLayer променливата. Това е грешният начин, който не трябва да се ползва никога, освен ако дефинираме този масив НАД първоначалната декларация на dataLayer, защото иначе ще имаме загуба на данни.
Правилният начин е чрез ползване на push метода:
window.dataLayer.push({
'event': 'signup',
'userType': 'Free User'
});
По този начин, предвид че Google слухти за dataLayer.push
случки, нашите добавени данни ще стигнат до въпросния Data Layer в GTM.
За да се улесни намирането и боравенето с данните в GTM, използваме променливата event
като задължителен елемент от масива. С наличието на event, хората могат да си залагат свои събития в GTM, които ще се активират, когато пристигне събитие в Data Layer с избраната променлива.
Данните си ги структурираме в JSON обект, в който можем да добавяме и масиви, където е нужно, макар че някои маркетолози не се справят много с това да вадят данните от там.
– – –
Сигурно е имало и още неща, но до там са ми стигнали нервите да си запиша. Публикувам това нещо повече от половин година по-късно в състоянието, в което го заварвам като чернова.
Наскоро си купих баничарка/MPV (Yaris Verso) и вчера следобеда стигнах до КАТ Видин, за да го регистрирам като мой си. Колата беше, а и все още е, със сливенска регистрация, понеже от там я купих. Минах към 16:20, та подпитах госпожата на гишето дали мога да отметна част от бюрокрацията ден преди реденето на големите опашки и прекарването на колата през технически проверки.
– Не може. Сега, заради Ковид19 за канал се отваря сутрин в 8:30, пускат се определен брой коли, и след това отново в 13:30. В момента има четири коли на опашка за утре, ако решиш – нареждай се.
Интересното е, че тая процедура се случваше от преди 2020, пък и не видях логика да се натъпча с още 15 души в един коридор на опашка на закрито, вместо да попълня бланките в спокойния четвъртък следобед и в петък само да мина прегледа и да платя такса + глоби, ако ми висят някакви…
Колебаех се дали да не оставя колата там, обаче живея относително далеко и предвид реализиращата се прогноза за неспиращи дъждове, реших да цъфна рано сутринта пред КАТ.
Речено – сторено, станах в 6:00 и към 6:30 паркирах зад един бус. Колите на опашката бяха 6 пред мен. Опитах да подремна, а като се размърдах към 7:40, зад мен вече имаше поне още 10 коли. В същото време някакви хора се редяха на опашка пред входа на КАТ.
8:35, милиционер и още едно лице отвориха портичката за гаража и на всеки преминаващ му взимаха шофьорската книжка в размяна на листче с някакъв “началнически” код. Вкарах я колата, запазвайки същия ред спрямо останалите коли и хукнах към опашката на входа.
Тук, ако имах втори човек, дзиндзирикащ от 7:15, щях да съм по-напред. Ама не, имаше 11 души пред мен. Всеки го обработват за средно около 10-ина минути, та Kindle-а ми дойде като идеална компания в тоя момент. Искаха ми следните документи:
След като ми обработиха заявката, в която изрично им казах, че не искам да се сменят регистрационните номера, ме пратиха към гаража.
На опашката пред гаража някои коли липсваха. Някой ми свирна и каза, че ако съм с готови документи, мога да прередя всички и да се наредя зад буса, който принципно беше пред мен при предишното нареждане.
Пуснаха буса и за няма и 15 минути отвориха и за мен. Свериха номерата на двигателя и на рамата с тези от документите, подписаха документите, и ме пратиха да изкарам колата отвън, след което да ходя да плащам таксата.
Наредих се на опашката на същото гише. Като че ли малко по-бързо мина този път, макар пак да имаше 6-7 души пред мен. Връчих им документите, подписани от гаража + бележката от началника, за която се зарадвах, че не съм изхвърлил вече. Затвориха гишето и малко по-късно го отвориха, за да им платя директно с карта. 20 лева и няколко подписа по-късно ме пратиха към
Гише №6. Отивам там с началническата бележка, подпечатаха ми я, върнаха я и си взех шофьорската книжка. Глоби нямаше, та не се реализира трансакция в полза на държавата. Тежък пропуск, господа.
Поседнах на пейка в коридора, където се виеше все още хаотична опашка на двете гишета (вече имаше и хора за изкарване на шоф. книжки) и около 5 минути по-късно една дама изскочи от една стая да ме вика по име. Взе ми бележката и ми връчи двата талона. Айде чал.
Цялото нещо ми отне 2 часа и 20 минути, а се бях приготвил за тежки битки, разправии, пререждания от съграждани и какви ли още не сюжети, никой от които не се реализира. А можеше да бъде и по-бързо, ако бях в комбина с някой, който да ми пази място на опашката.
Друга една стъпка не споменах – гражданската отговорност ще трябва да я актуализирам с добавък, в който се слага моето име на мястото на стария собственик. Операцията е безплатна и трябва да се случи през следващите 2 седмици. Може да стане във всеки офис на застрахователя (на теория), а на практика симпатягите от Булстрад във Видин се оказа, че не успяват да се свържат с базата данни в Сливен, заради което тая работа остава да я свърша в София.
– – –
Владо от бъдещето, следващия път не се впрягай толкова.
Ха, токущо измислих хакче за спестяване на BE Media from Production
разширението и решаване на проблемите при глупави билдъри, при които той не сработва (както е с Divi).
staging/wp-content/uploads/.htaccess
със съдържание:
<IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ https://example.com/wp-content/uploads/$1 [R=301,L] </IfModule>
Подобен код ще трябва да напиша и за nginx…
.htaccess врътката ми не работи, ако има hotlinking защита на сървъра. Изглежда BE Media from production фалшифицира заявка от оригиналния сървър, защото той се справя точно с този сценарий.
I had this problem with a setup of a site with Polylang and WP Job Manager – the post type for the jobs didn’t appear in the list of post types that I could decide whether to be translated or not.
Turns out WP Job Manager has a wpml-config.xml file in it’s root directory prepared for WPML compatibility. Polylang is playing smart so it’s looking for this kind of files and is interpretting them the same way as WPML would.
Editing the wpml-config.xml solved my problem, although it would be whiped by the update of the plugin. As a PoC it works and next step would be to try to override the settings through another plugin.
Съставки
Планът беше да си запека на фурна моркови и картофи, нарязани на едри купчета. Изпълнението се оказа малко по-различно и крайният резултат се получи нещо, доближаващо се от части до мусаката, ама без кайма и доматено пюре. А, и с добавено преди заливката надробено сирене, разбъркано хубаво с картофите и морковите.
Заливката се прави като за мусака – разбиват се яйцата, сипва се содата в киселото мляко и се разбърква, след което се оставя на си свърши там неговата магия. После се разбъркват яйцата с киселото мляко и се добавя брашното. Последното дори не знаех, че се слага, ама зачетох някаква рецепта с бялото на окото, докато се чудех какво да правя тия 3 останали ми яйца.
Утре ще видим дали е ядливо това чудо, ама ми се струва, че ще е поне толкова ядливо, колкото хибрид между мусака и огретен.
Снощи отново си легнах към 1 с неприятното чувство, че не бях достатъчно продуктивен през деня и, че оставих твърде много работа за следващия ден. Днес се събудих се с неприятното чувство, че ме очакват хора по 9 различни проекта да направя нещо, а аз се бавя.
Тъжното е, че чувството ми е адски познато и много добре знам как моята персона реагира на това, как действам и как се чувствам междувременно. Обичайно следват няколко седмици на паническо скачане от задача на задача без да постигам кой знае какво, работа от много рано сутрин, та чак до приближаване на следващата сутрин, забравяне за яденето и личния ми живот. Такива седмици обичайно са белязани и с извънредно ниска продуктивност, нулево време за мен или близките и тежко разочарование от самия мене си.
Е, явно е омагьосан кръг и явно ще трябва някак да се самоизвлача от него, за да мога все пак да отметна работата, която ми се излива. Припомних си, че не съм нито пожарникар, нито парамедик, и ничий живот не зависи от моята навременна реакция. Работата ми е в сферата на услугите и е фокусирана върху това да помагам на моите клиенти да си случват по-добре бизнесите онлайн. Ако аз не съм на себе си, най-ужасното нещо, което може да се случи, е те да прекратят работата си с мен и да намерят друг специалист, който управлява по-добре приоритетите си. А аз всъщност мога и знам как да помагам на тези хора, заради което остава единствено да не нанасям щети на бизнесите им. Щетите идват, когато претупвам, недоспал съм и съм нещастен от работата си.
Е, значи единственото, което ми остава, е просто да си върша работата спокойно и внимателно, без да се самонаранявам по пътя. А за да се случва това, трябва да съм се наспал, да се храня редовно и да почивам дори в будно състояние, намирайки време за близките си, които до сега съм пренебрегвал и избягвал в тези си фази.
Буквално никой извън семейството и най-близките ми. В такъв случай няма да си пропускам закуската, обяда или вечерята, за да мога да свърша с 1 час повече работа тоя ден. Няма да отлагам пазаруването, за да не се разсейвам от задачите си. И няма да се притеснявам “какво ще си помислят”, ако забавя някого още малко, за да приключа някоя от многото други задачи и проекти. Преди да си разширя екипа достатъчно, че да имам буфер за подобни инцидентни високи натоварвания, ще бъде така.
The approach is rather manual at first, but once done, it should allow for automating it all through using wp option update
.
Here are the steps:
wp option update OPTION_NAME "OPTION_VALUE"
wp option update OPTION_NAME 'OPTION_VALUE' --format="json"
OPTION_VALUE in 4.2. is formed by getting the actual serialized string from the database and passing it through the unserialize() function in PHP. One could use php -a
(the interactive mode) for executing the followin line: ‘var_export( unserialize( ‘OPTION_VALUE’ ) );which would print a data structure, in which
array()wrappers should be replaced by
[]` in order to reach a valid JSON format.
wp option update
line against the test database and checking the values in the database + the plugin settings page for any issues is the final step that would verify that the commands are doing their job.Още древните траки са го казали:
Когато за качамака нямаш сирене в хладилника, сложи
млад кашкавал, масло, салам закуска, маслини, люти чушки, червен и черен пипер, и сол като за сватба.
– Утито на траките
Надробете всички съставки на дребни кубчета или стърготини, като може само за пипера, солта и маслото да не се стараете чак толкова.
След като сварите качакама и адресирате по-сериозните си изгаряния по незащитените части от тялото, изсипете нарязаните древнотракийски съставки и разбъркайте.
Преди да ме обвините, че съм набухал каквото е останало, ще припомня и този известен трактат:
не пипай сланината и пармезана, свиньо!
Защото все пак сме прасета с вкус, и никога не слагаме съвсем от всичко.
Пиша следното само за да изобразя колко бързо от произволни останки може да се сготви приятна манджа, когато сме “на 1 кръв”.
Сложих тенджера с вода да се вари, и се засилих да търся какво да сложа в нея, докато кипне. Следните произволни артефакти изникнаха от шкафа и рафтовете на хладилника:
Намерих и едни древни моркови, ама тях ги изядох докато приготвях останалите неща.
Излишно е да описвам процедурата по приготвянето на нещото след като омекнаха макароните. Крайният резултат обаче хем е лют, хем вкусен, хем съдържа културно количество мазнини и въглехидрати.
#Nomnomnom