Как се пише: <em>проформа, про-форма</em> или<em> про форма</em>?

от Павлина Върбанова
лиценз CC BY-NC-ND
Правилно е да се пише слято – проформа. Думата е заета от латински – pro forma. Изписването ѝ на български…

Как се пише: <em>андалусец</em> или <em>андалусиец</em>?

от Павлина Върбанова
лиценз CC BY-NC-ND
Двете форми са дублетни и могат да се употребяват в книжовната реч: андалусец/андалусиец, мн.ч. андалусци/андалусийци. Препоръчителна е употребата на андалусец.…

Как се пише: <em>подобект</em> или <em>под-обект</em>?

от Павлина Върбанова
лиценз CC BY-NC-ND
Правилно е да се пише слято – подобект, мн.ч. подобекти, тъй като под- е представка в думата. Подобектът включва изграждане…

Как се пише: <em>криволича</em> или <em>кривулича</em>?

от Павлина Върбанова
лиценз CC BY-NC-ND
Правилно е да се пише криволича. Между къщите криволичат тесни пътечки, къде отъпкани, къде обрасли с трева. Само подивели псета…

Как да използваме Autoptimize с HTTP/2

от Гонзо
лиценз CC BY-NC-SA

В по-новите версии на Autoptimize има възможност чрез филтър да съставите списък с разрешени за обединяване скриптове. Това позволява да обедините скриптовете, които са задължителни за всички страници в сайта и да оставите скриптовете, които се зареждат само на определени страници извън пакета. Това решава и един друг проблем с Autoptimize – когато различни скриптове се зареждат на различни страници, пакетите, които се генерират са различни. Това води до безконтролно увеличаване на кеша на Autoptimize и до забавяне на зареждането за потребителите, защото вместо да заредят кеширан файл, всеки път теглят различен.

И така, да започнем с обединяването на задължителните скриптове:

/**
 * Whitelist scripts to autoptimize
 *
 * @return: whitelist
 */
function gonzo_js_whitelist() {
  $whitelist = array(
    'jquery.js',
    'jquery-migrate.min.js',
    'wp-embed.min.js'
  );
  return join( ',', $whitelist );
}
add_filter( 'autoptimize_filter_js_whitelist', 'gonzo_js_whitelist' );

След като вече имаме пакет с най-важните скриптове, нужни за сайта, трябва да се погрижим за две неща:

  • Да зареждаме обединените скриптове преди останалите, защото пакетът съдържа jQuery, а някои от останалите скриптове най-вероятно разчитат на него.
  • Да зареждаме скриптовете асинхронно, за да не блокират изобразяването на страницата.

Генерираният от Autoptimize скрипт елемент може да поставим веднага след елемента title така:

/**
 * Where in the HTML optimized JS is injected.
 *
 * @param array $replacetag, containing the html-tag and the method (inject "before", "after" or "replace")
 * @return array with updated values
 */
function gonzo_override_js_replacetag( $replacetag ) {
    return array( '</title>', "after" );
}
add_filter( 'autoptimize_filter_js_replacetag', 'gonzo_override_js_replacetag', 10, 1 );

За да зареждаме всички скриптове асинхронно, и в същото време последователно, ще добавим атрибут defer към тях. Така скриптовете не само се зареждат асинхронно, но и не блокират изобразяването на страницата когато се изтеглят. Освен това атрибута defer кара скриптовете да се изпълнят по реда в документа.

/*
 * Defer all javascripts
 */
function gonzo_defer_js($tag, $handle) {
  if( ! is_admin() ){
    $tag = str_replace( ' src', ' defer="defer" src', $tag );
  }
  return $tag;
}
add_filter( 'script_loader_tag', 'gonzo_defer_js', 10, 2 );

/**
 * Change flag added to Javascript.
 *
 * @param $defer: default value, "" when forced in head, "defer " when not forced in head
 * @return: new value
 */
function gonzo_override_defer( $defer ) {
  return "defer ";
}
add_filter( 'autoptimize_filter_js_defer', 'gonzo_override_defer', 10, 1 );

И на края, за да гарантираме, че скриптовете ще се кешират правилно от браузърите и прокситата, ще премахнем GET променливата с версията, която WordPress добавя към адресите на всички ресурси:

/*
 * Remove query string from static assets
 */
function gonzo_remove_script_version( $src ){
  return remove_query_arg( 'ver', $src );
}
add_filter( 'script_loader_src', 'gonzo_remove_script_version' );

Естествено, подобен подход можем да приложим и към CSS файловете, които сайта зарежда. На края ще имаме бърз сайт за удоволствие на потребителите и печалба на клиента.

2017-та

от Ясен Праматаров
лиценз CC BY

Една стара година, за която не ми се пише дълго. Като цяло гадна година, с няколко много готини проблясъка, но тях ние сами си ги направихме, на мускули и с лишения, даже някак напук на всичко. Имаше готини неща, като пренасяне и рождени дни, за тях писах. Но иначе гадна година.

Пак концерти пропуснах, макар много да се навивах да ида, накрая все нещо се случваше и не видях нито Аксепт, нито Хелоуин. И за първи път от дълги години бях в студиото на приятел с китара в ръка и… тотално се отчаях от себе си. Още гледам китарите в ъгъла и не знам кога ще ги взема пак. Въпреки че, както казва пък друг един приятел, свиренето е почти изцяло рутина и няма нищо магично в самото свирене. Важното е да си ентусиаст, както казва пък трети един приятел. Брей, ако не бяха разпръснати тия тримата из градове и държави, да ги бях събрал да правим банда направо…

Освен къщата и всички страхотни часове тук с децата ни, успяхме да обиколим остров Тасос. Приятно ми е, шкипер Ясен. Е, не посмях да съм сам и бяхме с баш шкипер, той се оказа на нашите години и на нашия акъл, та добре стана. Даже сме следвали по едно и също време, даже сме били заедно на спецкурса на Цочо, а и съм сигурен, че имаме общи компании от едно време. Е, не е от философския, но какво да се прави, никой не е съвършен. :)

В началото на годината баща ми влезе в болница за тежка сърдечна операция, от която на практика още не се е възстановил, а и прогнозите са неясни. Годината всъщност беше най-тежка не за мен, а за майка ми. Сигурно е била по-лека за брат ми. Не ми се пише повече.

Честита нова година, добре си ни дошла, добре си ни заварила! Да си опичаш акъла, надежди ти възлагаме!

арх. Георги Николов приключи успешно ангажимент си на проект мениджър от страна на главния изпълнител STRABAG на обект EXPO 2000 Фаза IV

от Архитектурно студио Архе
лиценз CC BY-NC-ND
От Януари до Ноември 2017 г. по време на фасадните и всички довършителни работи на обекта арх. Георги Николов изпълняваше длъжността проект мениджър на строителния обект от страна на главния изпълнител STRABAG ЕАД. Фаза IV е последната сграда  от комплекса EXPO 2000 на бул "Н.Й. ...

Експортиране на заглавия, съдържащи HTML, от WordPress

от Гонзо
лиценз CC BY-NC-SA

WordPress позволява да се въвежда HTML на много места, на които не бихте си помислили да го направите. Например заглавията на публикациите – например за да откроите някои думи, да маркирате правилно абревиатура или по друга причина. Например повечето статии в „Как се пише“ съдържат HTML, за да откроят думите, за които се отнася статията. Обаче ако ви се наложи да експортирате това съдържание, ще откриете, че заглавията са изчистени от всякакъв HTML и форматирането е загубено. Така стандартният експорт на WordPress става безполезен за пазене на архив на съдържанието или за прехвърлянето му на друга инсталация. Обаче има лесно решение.

Ако поровите в кода на функцията export_wp(), ще видите две интересни неща:

  1. Там е дефинирана функцията wxr_cdata(), която затваря подадения стринг в CDATA блок.
  2. Заглавията на публикацитиите се филтрита през филтъра the_title_rss.

Значи за да можем да експортираме заглавията заедно с HTML-а, трябва да махнем от този филтър функцията, която чисти HTML-а (strip_tags естествено, както и esc_html()) и да добавим wxr_cdata(). Всъщност това второ няма да стане, защото функцията е дефинирана само в контекста на export_wp(), така че ще трябва просто да я клонирате.

function htr_cdata_post_title ( $title ) {
	$title = '<![CDATA[' . $title . ']]>';
  return $title;
}
add_filter( 'the_title_rss', 'htr_cdata_post_title' );

remove_filter( 'the_title_rss', 'strip_tags' );
remove_filter( 'the_title_rss', 'esc_html' );

Това е всичко, при… опа, това беше от друго шоу.

Нова къща, нов късмет

от Ясен Праматаров
лиценз CC BY

Вчера бяхме на детски рожден ден и в разговорите все ме теглеше към една и съща тема – нова и важна за мен и Краси, но предполагам вече станала леко досадна за околните. Изведнъж ми просветна, че много малко хора знаят за голямата промяна вкъщи – даже може би хората, на които сме казали, се броят на пръсти. Та затова се поправям сега. :)

Вече втори месец сме в къща с двор.

Огромна промяна, която пожелавам на всички приятели, които като нас са изкушени от такова бягство от стреса на града. По адрес пак “София”, но иначе – не съвсем. Да, всички обичаме града, и аз съм градско чедо, но “градската” София днес все по-малко е за хора над 30 години и все по-малко е за малки деца.

Преди около две седмици успяхме да приключим с пренасянето – първо аз направих сигурно над десет курса с Дракончо (о, и за това трябва да ви разказвам, макар че вече колата за дълги пътувания е една година при нас) и с Рошко и накрая наехме камион за мебелите и по-тежките неща. Не можах да повярвам колко много, много и още по-много неща може да събере семейство с деца за 5 години под наем. Уж апартаментът на “Иван Асен” е мъничък сравнително, две стаи и хол с бокс, даже нямахме достъп до мазе или таван, а толкова много торби и кашони с книги, дрехи, рисунки, играчки и какво ли още не… Да кажеш, че всичко е нещо ценно или важно – не, просто се е “събрало” и “застояло” с годините. Трябва да се прави пролетно почистване, не може така – и напролет, и наесен. :)

Сега сме с двор, с мазе и таван, че и в двора с безкрайно много работа, но пък и с неща като компост и беседка, примерно. Светко полива лехата с домати (цъфнаха, но още не са вързали, късно ги посадихме), а Оги мете терасата и май повечко скита из махалата със съседчето Алекс, яде къпини и рита топка на улицата пред нас. И двамата с Краси имахме първите си бойни дворни рани – аз от ръждив сърп (биха ми против тетанус, няма грижи, тук има поликлиника със спешен център), а тя от битката с грамадни тръни и храсти. Тръните са почистени, но Краси е с превързан крак.

Имаме ужасно много работа по привеждане на всичко в ред, ремонтиране и обживяване, макар че къщата я взехме във вид, подходящ директно за нанасяне. Да, но се оказа, че в къща всяко нещо трябва да се пренареди, ремонтира, почисти и тъй нататък, а в същото време дворът постоянно подлежи на естествен процес на обрастване, подивяване и залесяване. Нищо лошо, нищо нередно, просто май леко се оправдавам защо още никого не сме посрещнали тук…

Имахме вече първите си семейни вечери в беседката с печени неща на жар и вече закусваме на терасата. Съседското куче (едно от тях, тук май всяка къща има поне по едно, ние все още удържаме фронта) идва и разучава всяка промяна в двора, Рая се запозна с мухите като вид и не ги хареса, сега всяко насекомо – летящо, пълзящо, каквото и да е, се нарича “нуха” и периодично се чува отнякъде пронизващ вик “нухи-и-и-и, има нухи-и-и-и”, който мобилизира цялото семейство да гони мухи, бръмбари, мравки, паячета… или просто да обяснява, че те са много добрички и че всъщност точно това е “муха-бебе” и е “много мила” – този номер засега минава и отново има мир и тишина, поне за известно време.

Аз работя под земята, както вече се похвалих. Предстои окабеляване, защото безжично е бавно за видео конференции. Иначе доставчикът, местна лан-ка, е по-бърз, но пък вече няколко пъти спира за по няколко часа. Това за хората явно не е проблем, но аз го ползвам за работа, та трябва да измисля някакъв резервен достъп. Нещо все не ми харесваха плановете на мобилните оператори, но за бекъп нещо минимално може би не е зле. Сега ползвам моя от телефона, ако е много спешно, но той е 500 MB на месец, което става за SSH, но е нищо, ако се наложи видео.

Имам и други технически задачки за решаване, но за мен това са интересни занимания. Например ще е идеално поле за развихряне на всякакви идеи за автоматизация и принтиране, ще влязат в употреба ардуинотата и датчиците, които вече остаряха две-три години в кутии за обувки. Трябва да измисля и схема за видеонаблюдение, дали готов DVR или нещо със ZoneMinder или Shinobi (между другото – приемам мнения и съвети). В гаража пък се надявам да започна нещо по темата електромобилност, макар че това може би ще почака.

Linux ъндърграунд (буквално)

от Ясен Праматаров
лиценз CC BY

Проблем: в квартала се чува сръбско. Не силно, но постоянно.

Първи опит: някоя от метъл станциите ми в Jango, на макс. Неуспешно – хем не мога да работя на музика (защото я слушам), хем не влияе на основния проблем.

Решение: офис в мазето. \m/ \m/

Умерено прохладно, спокойно, тихо и защитено и в същото време… е под земята-а-а-а, ха-ха-ха, разкази от криптата-а-а!