Tagwordpress

07.06.2018

Последните дни чета доста за карането на дълги разстояния на висок каданс и нещата изглеждат постижими. Днес ще завъртя пак към Албена да видим резултатите.

По този повод предното ми каране с подобна цел беше преди няколко дни и като приключих Polar-а ми каза да си гледам работата. Беше се счупило нещо в данните и така и не можах да ги извлека. Още ме е яд. А от поддържката ми казаха, че нямам шанс да взема дори и счупения файл (понеже запазва с XML-like format данните лесно може да се намери проблема ако не е нещо тотално осрано). И така.

In other news:

  • Следващия месец Intel правят 50 години, а тези дни пуснаха лимитирана серия на 8 генерация Intel Core i7-8086K, който работи на 5.0 GHz тактова честота. Според тях това е голям milestone, но всички знаем, че от доста време насам тактовата честота не е едноличен синоним на върхова производителност (баси изречението);
  • Ако при ъпдейт на WordPress получите “Briefly unavailable for scheduled maintenance check back in a minute” не се шашкайте. Това е добра идея, защото при ъпдейт за малък период от време сайта ви може да хвърля грешки, логове и каквото се сетите. За това от WordPress са направили тази страничка, която да показва нещо адекватно в такива случаи. Проблема обаче е, че понякога не иска да се трие. Оправянето на проблема е много лесен и просто трябва да изтриете .maintenance файла от основната директория на вашата инсталация. След това си вижте правата по директориите, защото това е една от вероятните причини;
  • Страхотно четиво за SEO хората – “100+ Google SEO Success Factors, Ranked“.

Малки SQL трикове за WordPress

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

Как да покажем общия брой публикувани постове за определена година

В този блог за 2017 година съм публикувал 155 поста. Чудя се това малко ли са или много, но колкото-толкова.
Интересно е друго – начина по който видях това. Оказа се съвсем лесно с SQL заявка, която изглежда по този начин:

select count(*) from wp_posts where YEAR(post_date) = 2017 and post_type = 'post' and post_status = 'publish'

Имайте предвид, че тази заявка показва само публикуваните постовете (не page или някакъв custom post type) за 2017 г.

Примерен резултат:

mysql> select count(*) from wp_posts where YEAR(post_date) = 2017 and post_type = 'post' and post_status = 'publish';
 +----------+
 | count(*) |
 +----------+
 | 155      |
 +----------+
 1 row in set (0.00 sec)

Ако искате да видите колко draft-а имате можете да изпълните тази заявка:

select count(*) from wp_posts where YEAR(post_date) = 2017 and post_type = 'post' and post_status = 'draft'

Примерен резултат:

mysql> select count(*) from wp_posts where YEAR(post_date) = 2017 and post_type = 'post' and post_status = 'draft';
 +----------+
 | count(*) |
 +----------+
 | 116      |
 +----------+
 1 row in set (0.00 sec)

 

И не – няма грешка. Имам цели 116 поста, които така и не съм публикувал, повечето от които са започнати и недовършени истории, няколко tutorial-а (още ме е яд, че не завърших този за HTTP/2) и няколко пътеписа.

Как да сменим siteurl и homeurl с един ред

Ако не сте чували за siteurl и homeurl няма страшно. Но ако се наложи да мигрирате сайта, да смените домейна или да добавите/премахнете HTTPS поддържка ще се наложи да поработите с тях.

UPDATE wp_options SET option_value = replace(option_value, 'http://www.nedko.info', 'https://www.nedko.info') WHERE option_name = 'home' OR option_name = 'siteurl'

След изпълнението на тази заявка при опит да достъпя сайта ще бъда пренасочван автоматично от non-HTTPS към HTTPS версията на блога. Можете да я използвате и при смян на домейн да кажем като смените втория линк на този, който желаете. Не е най-добрия пример, но е важно да схванете как работят siteurl и homeurl. Друга полза е ако ъпдейтвате сайта и имате да мигрирате да кажем https://nedko.info/v2 към https://nedko.info.

Работа с пароли

Не сме безгрешни – забравяме си понякога паролите или при нужда да дебъгнем проблема в някой клиентски сайт понякога се налага да влезем с подходящите инструменти.

UPDATE wp_users SET user_pass = MD5( '123456' ) WHERE user_login = 'admin'

Тази заявка ще смени паролата на потребителя admin с 123456.

 

Ако ви се наложи да работите върху клиентска инсталация, но не искате да сменяте паролата на потребителя можете първо да запишете хеша ѝ със следната заявка:

select user_login,user_pass from wp_users

Примерен резутат:

mysql> select user_login,user_pass from wp_users;
+------------+---------------------------------------------------+
| user_login | user_pass                                         |                           |
+------------+---------------------------------------------------+
| admin      | $P$B5&50UGz0.kW3tq6jifraX.hT!РqZP.                |
+------------+---------------------------------------------------+
1 row in set (0.00 sec)

Сега запишете стойността на user_pass полето, изпълнете горната заявка, която ще смени паролата на 123456 и като сте готови просто изпълнете следната заявка за да върнете старата парола:

UPDATE wp_users SET user_pass = '$P$B5&50UGz0.kW3tq6jifraX.hT!РqZP.' WHERE user_login = 'admin'

 

Изтриване на всички спам коментари

Преди време ми се наложи да изтрия от един блог над 10 000 коментара. Tricky-то беше, че имаше и коментари от хора, не само спам. Решението е тривиално и се нарича Akismet. Безплатната версия върши страхотна работа, но имах проблем с привилегиите на DB потребителя и коментарите маркирани като спам не се триеха. За това използвах тази заявка за да ги изчистя (~10 000 коментара от които 90%-95% спам се изтриха за под 2 секунди):

DELETE FROM wp_comments WHERE comment_approved = 'spam'

Ако искате да изтриете и тези със статус awaiting moderation можете да ипозлвате следната заявка:

DELETE FROM wp_comments WHERE comment_approved = '0'

Как да видим всички неизползвани тагове

Ако искате да видите дали имате тагове, които никога не са използвани можете да изпълните тази заявка:

SELECT name,count from wp_terms wt INNER JOIN wp_term_taxonomy wtt ON wt.term_id=wtt.term_id WHERE wtt.taxonomy='post_tag' AND wtt.count=0

Примерен резултат:

mysql> SELECT name,count from wp_terms wt INNER JOIN wp_term_taxonomy wtt ON wt.term_id=wtt.term_id WHERE wtt.taxonomy='post_tag' AND wtt.count=0
 -> ;
+--------+-------+
| name | count |
+--------+-------+
| blabla | 0 |
+--------+-------+
1 row in set (0.00 sec)

Ако обаче искат да видите (спорд мен далеч по-практично) тагове, които са използвани 5 или по-малко пъти, сортирани по възходящ ред можете да изпълните следната заявка:

SELECT name,count from wp_terms wt INNER JOIN wp_term_taxonomy wtt ON wt.term_id=wtt.term_id WHERE wtt.taxonomy='post_tag' AND wtt.count<5 order by wtt.count DESC

Примерен резултат:

mysql> SELECT name,count from wp_terms wt INNER JOIN wp_term_taxonomy wtt ON wt.term_id=wtt.term_id WHERE wtt.taxonomy='post_tag' AND wtt.count<5 order by wtt.count
+--------------------------------------------------------+-------+
| name | count |
+--------------------------------------------------------+-------+
| blabla | 0 |
| humor | 1 |
| кино | 1 |
| котка | 1 |
| vulnerability | 1 |
+--------------------------------------------------------+-------+
5 rows in set (0.00 sec)

Извличане на всички мейли от коментарите на потребителите

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

select comment_author_email,comment_author_url,comment_date from wp_comments order by comment_date DESC

Тази заявка ще покаже мейла, сайта (ако има такъв попълнен) и датата на коментара. Това можете да го ползвате като ориентация.

Примерен резултат ще върне следните данни:

somemail@gmail.com | http://www.somedomain.com | 2017-11-01 17:18:19 |

Иначе можете да лимитирате само до списък с мейлите така:

select comment_author_email from wp_comments

 

P.S. For non-Bulgarian speakers:

  • What are you doing here?
  • If you think that the article will be useful I can translate it in English.

25.10.2017

“Зимата иде, зимата иде”, повтаряше лельоебеца.
Та още не е дошла, но навън втори ден вали. Намирам нещо много особено когато вали дъжд или сняг. Не ме прави тъжен, но някак замечтан, без да знам в какво. Може би това е нирвана? Или може би от толкова Java вече съм започнал да изключвам.

Не съм карал колелото от 2 месеца и това ме убива. Трябва да намеря време и да започна наново, че без спорт живота наистина започва да посивява.

Както питах скоро започнах да чета Хари Потър и днес метнах третата книга – Затворника от Азкабан. Последния път когато бях увлечен толкова силно по някоя книга беше поредицата на Галактическия Стопаджия. И за сетен път се кланя на седемте бога, че са измислили Kindle и още и още се кефя как мога да имам няколкохиляди книги в джоба си, как дисплея е крайно скандален и почти като хартия и как батерията ми трае седмици.

В офиса имам задачки около едни WordPress освен моите основни и честно казано супер много се кефя. Имаше интересни казуси и решения и съм доволен.

 

А за Zara Code Week 2017 ще пиша в отделен пост.

 

Връщам се обратно към дъжда. Сега се сетих. System of a Down ги обичам от малък, но има нещо, което е толкова различно, тяхно, че се радвам, че нямат друга такава за да се чудя коя да слушам по-напред.
И така по ред на номерата снощи докато карах в ебаси дъжда и ебаси реките да взема Злати от офиса та чак до този час се въртят тези ми ти любими дъждовно/сърцераздирателно/прекрасни мелодии:

SOAD – Lonely Day;

Radiohead – Creep;

Audioslave – Like a stone;

Disturbed – The Sound Of Silence;

И после офисна пауза с дргуа музика, но като привърши работния ден пак на Крис Корнел и така до сега като започнем от The Promise (което той не спази и реши да лиши света от себе си, почивай в мир, Крис Корнел),  Preaching The End Of The World, Hunger StrikeЧестър Бенингтън, като по-тъжно не може да стане, защото и той съвсем скоро си замина) и така. Явно ме дърпа към някакви по-особени настроения по-особеното време.

Как да изтрием WordPress (spam) коментари директно от базата

Никой не е защитен от спама под всякаквата му форма – email, в коментарите или по друг начин.

И понеже на marvin живее сравнително посещаван сайт секцията му с коментари беше катастрофална. Не бях го поглеждал от няколко месеца и като влязах в админ панела му ме побиха тръпки – над 12 000 коментара.

Проблема – Как ще разгранича кои коментари са спам и кои не са?

Решението – изпозлвах (с малко скептицизъм) плъгина, който идва при нова инсталация на WordPress – Akismet. За да заработи трябва да се регистрираме в сайта akismet.com (с WordPress.com или Google.com акаунтите си) и да вземем API кода от сайта. След това активираме плъгина и в настройките му бухаме API key-а). След като всичко беше конфигурирано и казах на плъгина да маркира съмнителните коментари като SPAM отидох да проверя и нищо не се случи. Оказа се, че плъгина е по-умен отколкото очаквах – беше си сложил всички коментари в опашка и асинхронно анализираше всеки. След час имах около 14 500 коментара маркирани като спам. Проверих на random стотина и всичко изглеждаше да е ок.

 

Другия проблем – По някаква причина се оказа, че не мога да трия коментарите през admin панела. Трябваше да намеря решение в което да взема всички коментари маркирани като SPAM и да ги изрия през базата данни.

Другото решение – За работа с базата данни използвах mysql console, но можете да използвате и phpMyAdmin (след като проключите работа с него го изтрийте или забранете достъпа до него, че става страшно ако до забравите).
Следните заявки ще ви свършат работа (имайте предвид, че префикса, който съм използвал е wp_, но на вашата инсталация може да е нещо различно):

Изтриване на всички неодобрени от администратора коментари:

DELETE from wp_comments WHERE comment_approved =  '0';

Изтриване на всички ОДОБРЕНИ коментари:

DELETE from wp_comments WHERE comment_approved =  '1';

Всички изтрити коментари, които стоят в статус Trash:

DELETE from wp_comments WHERE comment_approved = 'trash';

И накрая и най-важното – всички коментари маркирани като SPAM:

DELETE from wp_comments WHERE comment_approved = 'spam'; 

 

Tip – Ако искате да видите съдържанието на таблиците можете да направите това със select. Например ако искам да видя всички SPAM коментари ще пусна тази заявка:

SELECT * from wp_comments WHERE comment_approved = ‘spam’;

Със здраве и гледайте да не затриете нещо важно. Ако имате въпроси можете да ме питате тук преди да действате. Ако мога ще помогна.

WordCamp Варна 2017

Добро утро от WordCamp Варна 2017, което се проведе в Икономически Университет – Варна.

Цъфнах час по-рано и имах време да поговоря с организаторите и спонсорите на събитието. Говорихме си със SuperHosting (с тяхната marketing expert Цвети и придобиването на Host.bg и HostBularia.com, техния security platform и ограничението им по inodes), JetPack и приятен разговор с екипа, FastComet (хостинг компания, имат интересна игра с едни хартиени роботчета и бая сериозни цени за VPS услугите си, но иначе с млад и доста надъхан колектив), Yoast ( и техните супер странни формички за кукита с тяхното лого), ICN (и странния разговор с дамата, която не се представи), Siteground (и техните #басияките bibs), dmarcian (и техните тениски и странно слабата им активност, но пък говорих с един от българсите служители, който имаше доста сериозен technical background), GraphicMama (които имат супер яките стикер дизайни. Също се оказа, че са бранч на 2create, което ме изненада много).

Залата се напълни до горе, доброволците са навсякъде и помагат (Злати и тя е сред тях). Видях доста познати лица и се запознах с още повече :)

И така:

 

Лекция първа – Петър Николов – WordPress API – минало, настояще и бъдеще.

От Петър очаквам епична лекция подплатена с отвратително голям бекграунд, каквито обикновено прави.

Петър говори за WordPress API. И се оказа, че не е едно както мислих до сега, а цели 18! Повече инфо можете да видите тук.

Последва редица примери за валиден и невалиден WordPress код и как се използват правилно WordPress APIs. И още нещо – WP API е еднонишков и има достъп до всичко (няма нужда от authentications към другите API-та).
Петър говори за вече архаичното XML-RPC API и споделям радостта си, че спряха да го използват. Все пак е създадено Февруари 2005… :D Още помня как изтръпнах като се оказа, че като пуснаха REST API-то можех да листна всички добавени потребители в системата по елементарен начин. Бррр.

И една малка вметка – user enumeration през REST API е възможен през следния линк:
https://nedko.info/wp-json/wp/v2/users

Резултата е JSON списък с всички потребители добавени в системата. Моя блог ще върне следните резултати:
[{“id”:1,”name”:”\u041d\u0435\u0434\u043a\u043e”,”url”:”https:\/\/www.nedko.info”,”description”:”Author, writer, cyclist and a passionate QA engineer that love to share his knowledge with everyone.”,”link”:”https:\/\/www.nedko.info\/author\/nedko\/”,”slug”:”nedko”,”meta”:[],”_links”:{“self”:[{“href”:”https:\/\/www.nedko.info\/wp-json\/wp\/v2\/users\/1″}],”collection”:[{“href”:”https:\/\/www.nedko.info\/wp-json\/wp\/v2\/users”}]}}]

И отплесвайки се (както обикновено) мога да задълбавя с това как се прави user enumeration и по друг начин (Нико, благодаря за напомнянето).

Линка е този

https://www.nedko.info/?author=1

При съществуващо ID ще резолвне потребителя по следния начин:

https://www.nedko.info/author/nedko/

Плюса е, че знаем, че зад това ID съществува и какъв е той, но минуса е, че трябва да обходим ръчно или да напишем един цикъл да извърти всички ID-та да някое голямо число и да покаже всички, които не връщат 404.

 

API №2 – AJAX API – Пешо говори за навлизането на AJAX в ИнтернеДа. даде пример с GMail през далечната 2005, когато въпросните изкъртиха с много яки за времето си  drag’and’drop/right click/etc интеракции с потребителя. От тогава стана ясно, че AJAX ще живее дълго. BTW абревиатюрата на AJAX ако сте се чудили е asynchronous JavaScript and XML.

И накрая дойде реда на REST API (Representational State Transfer), който има възможността да се използва с различни програмни езици, почти няма ограничения за използването му в WordPress. Показва и примери с curl.

WPTavern и ManageWP са част от местата от които черпи нова информация за екосистемата на WordPress.

Говори също така и за релийза на WordPress 5.0 – промените ще са скандални, включително новия редактор Gutenberg, 3rd party tools, Woo 3rd party tools и т.н. Лека полека е стане headless.

Доста добра лекция.

 

Лекция втора – Vanina Ivanova – A WordPress blog as a MVP for starting a business

Лекцията е на (доста добър) английски, говори за това как писането на блог може да ни помогне със последващо стартиране на собствен бизнес. Точно за това писах и аз сутринта в темата за блогването. Дизайна на презентацията ѝ е страхотен и доста минималистичен, btw си мислих, че MVP значи Most Valuable Player, а то е било Minimum Viable Product. В случая това е блог.

Започнала е да опипва територията със свой блог за маркетинг на български. Интересно е, че говори за това на английски :) Проекта е MarketingRebels.club.

Казва, че след няколко седмици и точно $41 назад вече са вдигнали блога и са започнали да слагат съдържание. В презентацията си има и меме на Тръпм. Йеей.

Лекцията на Ванина е добър начин да се покаже, че с много малко начален бюджет можем да стартираме ресурс с който да станем разпознаваеми.

 

Лекция трета – Kat Christofer – How WordPress and working remotely helped me see the world – truly, nomadly, deeply

Кат Кристофър работи в екипа на Woo от десет години и се занимава основно с документацията на продуктите. Азиатката е обиколила впечатляващите 49 държави работейки отдалечено.

Казва, че с отдалечената работа или не работиш изобщо или работиш постоянно. Работата е, че за да работи човек отдалечено трябва да е много стриктен към себе си и много отдаден на това, което прави.

Говори за продуктивност – да познаваме себе си и къде сме най-концентрирани, да работим на спринтове (agile sprints), без значение дали сме програмисти, QA или се занимаваме с писане на документация.

 

“Loneliness is not seeing people constantly , but missing the communication with people.” Kat Christofer

“People are happier spending money on experiences, not things” Kat Christofer

Част от лекцията с Кат, на английски:

 

Pros and Cons to be remote worker:

Pros:

  • Exposure to world;
  • Expand perspective;
  • Push boundaries;
  • Already packed;
  • Freedom;
  • Be with people you love (all over the world);
  • Personal growth.

Cons:

  • Residency required for contracts, insurance, etc;
  • Immigration laws;
  • Forget where you are;
  • Difficult to explain your life;
  • Goodbyes (sucks);
  • Dating and relationships issues;
  • Fragmented chapters, not part of your entire personal life;
  • Detained for truth.

 

Is the digital nomad life right for you?

  • Do you know the difference between tolerance vs acceptance?
  • Are you OK with unknown and unexpected?
  • Are you okay to wear the exact same clothes for months or a year?
  • Challenges;
  • Start and stop;
  • How you do on emergency situations?
  • Ready to test yourself and relationship(s)?
  • Organization and details.

Изключителна лекция. Кат ни разказа през сълзи за нейната свобода и за това как е била в Северна Африка при нейн колега, пак от Woo, който я е закарал на изненадващо сафари. Имаше снимки на слонове в пустошта и ни показа какво е да бъдеш свободен.

 

Лекция четвърта – Боян Йорданов – Automated testing for WordPress

Боян говори за типовете автоматизирано тестване – unit , integration & acceptance (end-to-end) testing.  Говори за BDD (behavior driven development) където от особено значение е да мислим за поведението на продукта/функционалността, срещите с клиенти и project managers. Инструмент за тестване на BDD – Behat и Gherkin.

Всъщност това за контакта с клиента и management-а е много важно за всеки аспект в project delivery-то.

Боян влезе в детайли за автоматизираното тестване, които изглеждат яко, а посланието му накрая за комуникацията с клиента и екипа беше страхотна.

Линк към презентацията можете да намерите тук.

“The only way to go fast is to go well” Uncle Bob

И последно – Боян напомня, че автоматизираните тестове са код, а той трябва да се поддържа. Worst case е да имаме стар unit test, който да връща false positive и да свети в зелено, докато отдолу всичко е натрошено.

 

Лекция пета – Radka Nacheva – Emotional Design in WEB

С Радка се познаваме от WordPress meetup-а, където говорихме и двамата. Темата ѝ е отново в нейната специалност – Емоционален дизайн.

Радка малко ме изненада и ме изкара да тества на мен няколко бутона пред публиката – трябваше да изразя малко емоции – гняв, радост и изненада. Беше забавно. Показа ни как цветовете водят до определни очаквания в нас, например сутрешна аларма, Елвис Пресли, рок музика и единия бутон не работеше.
Опита за разговор пред хора и масивния опит в сферата си личат. Аз може малко да съм се притеснил, но да кажем, че се чувствах конфортно. Успяхме да разсмеем доста голяма част от публиката, а аз си тръгнах с малък подарък от нея.

Говори ни и за връзката между емоция и чувствата ни, ментални модели и доста психология. Освен това разказа за колелото на емоциите на което залагат изключително дизайнерите за да предизвикат определена емоция:

Сега се чудя моя блог какви емоции води във вас :D

Един интересен инструмент, който ползва Радка е Palloton.

 

Обяд: Хапнахме в стола на ВИНС-а едни малко измислени сандвичи и сега кибичим докато стане 14:30.

Поговорихме с хората от FastComet и за all-in-SSD и техния SSD failure rate. Един любезен тип ми разказа, че по 3-4 SSD-та при тях заминават на месец. Но сподели нещо друго – за роботизираната ръка в datacenter-а на Google, която на средно всеки 37 секунди fail-вал по един диск. Та тази ръка обикаляла и сменяла дисковете за супер кратно време. Повече информация ще потърся довечера.

Имахме разговор с Любомир Русанов и Методи Дреновски от SuperHosting.bg и поговорихме наново за придобиването на HostBulgaria и Host.BG, за сигурност, за морето и за WordPress. Приятна и интересна компания са, а най-интересното беше, че ме помнят по име при все, че последния път в който се видяхме беше преди поне четири години.

Извън предния разговор – щендера на ICN.BG беше най-малко посещавания. Двете жени там нямаха никаква връзка с хората, които подминаваха щанда, в началото раздаваха рекламни торби с някакви неща вътре, но след това не видях повече от 10 човека за 3 часа пред тях.

Edit – видях в техния профил, че са писали следното:

“Днес сме на Wordcamp Varna 2017 и естествено си говорим с всички за WordPress Management. Всичко за неговите полезни функционалности научете в блога ни https://www.icn.bg/…/configure-wordpress-with-wp-management/“.

С цялото ми уважение, но това не беше така. Отговорът ми, малко по-долу беше:
За съжаление не беше така. Не си говорихте с всички. Щанда на ICN беше най-слабо посещаван, а това се дължи много и на специфичното настроение на двете дами, които представяха компанията.
Нищо лошо, но проактивността е супер важна а тя просто липсваше. Сигурно са били изморени от пътя.

Не мисля, че ще ми изтрият поста, но все пак нека го имам и тук.

Проведохме страхотен разговор и с Kat Christofer. Разказа малко повече за пътешествието си, за вдъхновението и за това какво носи в куфара си, за това как иска да вземе един Ford Mustang и да шофира 7000 мили из цяла Америка. Видях безкрайната свобода в нея и безкрайната самота в очите ѝ. Тази жена знае как да вдъхновява.

Закъсняхме за

Лекция шеста: Luc Princen – Not Your Grandpa’s CSS: Working with CSS Grid.

Говори за CSS Grid. Демонстрира възможностите му с codepen.io. Тук гледах като голям камък. Не хващам нищо от CSS, а това не е никак ок.
Примера, който използваше Luc можете да намерите тук.

 

Лекция седма:  Йордан Хлебаров – “Изграждане на използваеми WP интерфейси за клиенти” или “User-friendly администрацив на WordPress сайтове”

Йордан Хлебаров дооправяше лекцията си до последния момент. Нещо, което правя и аз твърде често. Само два-три часа по-рано му репортнах на мейла малко vulnerabilities за hlebarov.com. Като видя WordPress инсталация имам едни определени навици да сканирам… но пък за сметка на това репортвам на собствениците :)

Лекцията е насочена към ползваемостта на WordPress backend – нещо, което може да не ни се струва кой знае колко важно, но ако имаме клент, който има някакъв достъп до backend-а става страшно.

Стана дума и за website builders като Motopress и VisualComposer (към който имам много голям неприязън!). След това разказа за потребителските полета като Advanced Custom Fields и WP Toolset. Проблема им е, че са доста по-малко гъвкави, но пък ограничава дейността на клиента и възможностите да строши нещо.

При въпросите попитах за това как се отразява използването на подобни иструменти (като VisualComposer) на производителността. Оказа се, че впечатленията ни съвпадат. Long story short – ако можете не използвайте тези инструменти, защото (нетипично за този блог няма да изругая) просто носят със себе си прекалено много допълнителен JS, прави много повече заявки към базата данни.

 

Лекция осма – Noel Tock – Product-Driven Websites

Noel Tock говори за mindset-а на хорта, които са включени в процеса на създаването и поддържането на проекта и че трбява да е насочен към продукта, а не да използваме някакви методики, които просто не работят.

Например това, че не трябва да сме контрактори, а да виждаме проекта в аспекта на product owner.

Спомена и инструментите, които той ползва често – Google Analytics, mixpanel, Optimizely, Hotjar. Определено ще тествам HotJar на блога. Има безплатна версия и изглежда обещаващо.

 

Лекция девета – Верослав Ценов – “WordPress – Не е страшно да кешираш!”

Верослав говори за кеширането. Ето и какви според него са ползите от кеширането:

  • Скорост
  • Сървърни ресурци
  • Потребителско изживяване (UX)
  • Продажби
  • Google/Facebook ранкинг (SEO)

Разговора по-долу е в аспекта на W3TC – Page cache:

Говори за disk basic и disk enhanced режими на кеширане. За това ще прочета повече, че е доста интересна материя.
Един интересен минус в кеширането е, че не поддържа query strings (от тиша на nedko.info/index.php?postID=5). Другото е, че при purge/invalidation на кеша при много файлове процеса може да е много ресурсоемък.
Якото е, че кеширането порръжа отделен кеш за мобилна версия и по реферер.

Идва ред на memcache/redis режимите. Нещо, което смятам да направя скоро на marvin. За това ще си прочетете сами :)

Плюсовете да използвате memcache/redis режим:

  • Кеша се пази в паметта;
  • Поддържа адреси с query strings (по примера по-горе);
  • Mоже да прави мониторинг (phpMemcachedadmin);
  • Не създават файлове и няма дисков достъп.

 

Минуси:

  • Нужна е memcache/redis от хостинг провайдъра или ако имате VPS да си го инсталирате сам;
  • PHP се стартира винаги и добавя latency
  • Ако имате ограничения в използването на паметта поставено от хоситинг провайдъра.

 

TTFB (Time To First Byte) е нещо ново за мен. Това е времето в което получаваме първия отговор от сървъра.

 

Важни настройки за page caching във W3TC:

  • Front page кеширане
  • SSL/https кеширане
  • Изключени страници за кеширане (например wp-admin няма нужда от кеширане);
  • Cookies (ако имаме функционалност, която добавя кукита трябва да ги  exclude-нем)
  • Мобилна версия на кеша (W3TC) Performance –> User Agent Groups

 

Говори за Proxy / web server кеширане (с varnish/nignx).

 

Винаги е удоволствие да слушам истории от системни администратори/technical aware persons. Просто се вижда болката в очите им като разказват как са се борили с някой проблем дълго време.

 

Зададох въпрос за това какви практически са ползите в пускане на page cache в  “големи сайтове” хоствани в superhosting.bg и резултатите в някои проекти стигали по 5-6 пъти ускорение на проекта. Not bad, not bad :)

 

В заключение – WordCamp Varna 2017 са продали 263 билета, което е впечатляващо, особено за първо издание.

Тази статия съдържа малко под 2000 думи и има точно 60 ревизии започващи от 9:15 до 17:40 часа, опитвайки да споделя с вас всичко интересно, което съм чул днес. Надявам се съм бил полезен.

Официален хаштаг за социалките – #WCVAR

16.08.2017

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

Вчера излизах да карам и да тествам един Garmin Edge 205 дали ще ми свърши работа, но май няма. Батерията му не държи много, а ако искам да правя по 6-7 часови карания в продължение на дни не съм сигурен, че ще е добра идея. Мечтая за нещо ново или поне по-съвременно (и с heart rate monitor, което е много важно за продължителните карания), но ще видим :)

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

И като цяло препоръчвам блога на WPMUDEV.

 

И говорейки за WordPress и сигурност от поста на Иво Хубанов за новата сграда на Mentor Mate в морската хвърлих един поглед на сайта им – mentormate.bg и се хванах за главата. Толкова много и къдърни хора, които работят там и няма кой да ъпдейтне фирмения сайт от поне 6 месеца насам. Дано бързо го фикснат.

 

Image copyright – www.wildflower-art.com

How to fix: “Briefly unavailable for scheduled maintenance”

Днес ъпдейтвах qualityassurance.pro и явно нещо се счупи, backend-а ми върна “Briefly unavailable for scheduled maintenance” и до там.

Всъщност това е нормално поведение. При ъпдейт на ядрото или някой плъгин WordPress си създава един временен файл, който да уведоми потребителите, че нещо се случва и скоро всичко ще работи както обикновено.

Обаче в моя случай вероятно защото се опитах да ъпдейтна 4-5 плъгина, ядро и темата едновременно ми е timeout-нало (мога само да предполагам) и остана така.

Решението

  • В основната директория на сайта има един файл, който се казва .maintenance. Единственото, което трябва да направите е да го изтриете;
  • Ако горния метод не сработи има и още един вариант – отворете файла wp-activate.php в основната директория на сайта и сменете стойността на променливата WP_INSTALLING на false.

WordCamp 2017 във Варна

Новината от миналата седмица беше, че се записах за лектор на първия WordCamp във Варна, който ще се проведе на 2-3 септември 2017.

Там хората си говорят основно за WordPress (каква изненада), но и не само. Ще има и други интересни теми, които са не по-малко важни за изграждането на решения базирани на WordPress като например сигурност, дизайн, маркетинг и т.н.

Аз се записах с интерес да говоря по следните две теми:

  • Performance testing – ще направим няколко интересни задачки с jMeter и ще видим колко стабилни са ни всъщност плъгините/сайта/сървъра. В Немечек София вече говорих за това и на хората май даже им и хареса;
  • WordPress Security – вече говорих на тази тема на WordPress meetup и даже на хората май им хареса, нищо, че ми свърши времето и нямах време да покажа PoC-а, но на някой от следващите Meetups ще говорим и за това.

 

Във всички случаи ще е интересно, а ако бъда избран за лектор ще много яко.

Има и страничка за Call for Speakers така, че ако се интересувате имате само още два дни да се запишете.

 

 

Със здраве,
Недко.

Лекция – “Security Testing of WordPress”

На 24.02.2017 ще говоря на WordPress meetup-а за security testing на WordPress, както писах скоро.

Ще говоря за три основни неща:

  • Platform security – do’s and don’ts какво трябва за да защитим WordPress. Ще има разни добре извесни неща, систематизирани в един малък manual, който ще бъде публикуван и тук;
  • System security – ще поговорим малко за сигурността на server-side ниво. Ще обсъдим разни идеи свързани със nginx/apache и ще ви покажа моя анализ защо НЕ трябва да използваме WP security plugins изобщо;
  • Overall security – общо съвети за това какво трябва и какво не за да поддържаме блога си жив и издрав.

Понеже ще имам около 40 минути + 10 минути за въпроси най-вероятно ще има две версии на лекцията – една кратка, която ще презентирам и една по-дълга, която ще живее в този блог (и преведена на английски в qualityassurance.pro).

Отговори на незададените въпроси:

  1. Нива на знание няма – съветите са за хора, които ползват WordPress без значение дали са съвсем нови в това или са стари кучета. Голяма част от съветите могат да се реализират с няколко клика на мишката;
  2. Примерите, които ще дам, особено за server side са приложими за огромна част от уеб, не са само WordPress specific. Повече инфо ще има в overall security talk-а;
  3. Както казах по-горе ще има две версии на лекцията – първата, която ще използвам за WordPress meetup-а и втора, която ще е доста по-детайлна и ще е нещо като manual в който всеки може да види разни интересни неща свързани със сигурността, систематизирани. Ще има и английска версия (търсят се proof-readers);
  4. Линк към събитието можете да намерите тук. Събитието е напълно безплатно и необвързващо с каквото и да е било (няма да ви карам да говорите много, обещавам). Локацията е Фестивален и Конгресен център, зала 8 (ще има разлепени табелки за ориентация).

 

Приема всякакви интересни предложения по темата в коментар по-долу.

 

Ваш,

Недко.

 

 

Note – влизам във войната около “Do’s and Don’ts” и “Dos and Don’ts”. Моя избор е и препоръката на The Associated Press, които вярвам знаят как да пишат.

 

 

Edit – лекцията и презентацията можете да видите по-долу. Благодаря за пълната зала и любезните организатори.