Category: Недко разказва

Как да намерим незатворен HTML таг с прост скрипт

Проекта

Вчера ми се наложи да намеря незатворен HTML таг в една страница и се оказа приключение. Първо започнах да търся някакъв начин да го направя през Sublime, но бързо преустанових и реших да потърся някакво WEB решение.

И се оказа, че има. Автора е Jon Aquino, а скрипта му е прост и върши само това, което очаквах от него.

Как се използва?

Използването на скрипта е елементарно – копираме вече генерирания HTML от браузъра (за Chrome – ctrl+u) и после просто paste-ваме тук.
Разбира се можем да сложим и HTML от наши сайтове ако имаме достъп.

 

Притеснението ми е, че проекта е стар (2013 г.) и не съм сигурен, че има добра поддръжка на HTML5/CSS3, но за основни неща ще свърши добра работа.

It’s even harder now – R.I.P. Chester

Още едно от малкото останали парченца, които направиха моето детство и мен се отчупи днес – Честър от Linkin Park се самоуби. Като Крис Корнел, на неговия рожден ден, който щеше да бъде днес, по същия начин – с въже.

Именно Честър изпя Hallelujah на Ленард Коен, който почина преди почти година, на погребението на Крис Корнел.

Много хейтиха Linkin Park, включително и аз за новия им албум, но истината е, че ако си на върха от толкова много години хоризонта се замъглавя, депресията те хваща за гърлото и започва да те дърпа надолу, а ако с това има и алкохол с наркотици нещата просто продължават по извесния за всички ни начин.

 

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

Но ще е този за който като чуем, че си е отишъл нещо ще ни опъне душата и ще заболи. Ще си спомням как като чух Linkin Park за пръв път преди около 15 години не си признавах пред приятелите, защото си мислих, че ще ми се смеят, че слушам толкова “лек” метъл. Много неща се промениха от тогава.

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

 

Почивай в мир, Честър Бенингтън.

 

И за да заболи повече намерих запис на Linkin Park и Chris Cornell:

 

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

Arch Enemy с нова песен!

Ся, признавам си, че ми е трудно да се развълнувам мощно като ви разказвам за това. Причините са три и може би повечето, които са чували Arch Enemy, но не са мега фенове ще се съгласят:

  • Анджела за мен беше гласа на Arch Enemy. Алиса изглежда добре, добра е в това, което прави, но имам чувството, че melodic-а ѝ е повече от death-a в нея. Не, че е нещо лошо де, но за някоя друга банда;
  • Arch Enemy е melodic death metal (мелодичен умрял метъл, както биха го превели от man.bg) банда и това, което могат беше силно концентрирано в далечната 2005 година с техния потресаващ албум “Doomsday Machine” и главорезници като Enter the Machine, TAKING BACK MY SOUL (която се превърна в емблема на мелодичния дет метъл), която Анджела изръмжа жестоко пред трудната токийска публика преди няколко години и ме спечели като техен фен, Carry the cross, My Apocalypse и разбира се Slaves of yesterday са камъните, които построиха Arch Enemy и устояха на времето и претенциите на публиката;
  • Струва ли ми се или китарите вече не са толкова прогресивно-агресивни както в първите албуми? Имам чувството, че слушам няколко ритъм китари без душата, която се носеше преди от тях?

 

Та за новата песен от предстоящия албум на групата – The world is yours. Можете да видите официалното ѝ видео тук:

Текста, взет от genius.com, на The world is yours:

[Verse 1]
Rise into the light and fade to the night
Sick of being told how to run your life
Their rules
They’re fools
Empty words they promise so much
The present status quo remains untouched

[Chorus]
If you want the world
Use your mind
Take control
Feel the strength
Rise from within
If you really want it the world is yours

[Verse 2]
Every empire was raised by the slain
Built through the age and you can destroy it in a day
Turn the page
Unleash your rage
Burn your golden cage and walk away
On your path toward ultimate power

[Chorus]
If you want the world
Use your mind
Take control
Feel the strength
Rise from within
If you really want it the world is yours

[Bridge]
Striking at the leash
Foaming at the mouth
No more subservience
Justice will be done

There was only so much
You could take
There was only so much
You could tolerate
When the bough breaks, the empire will fall

[Chorus] (whispered)
If you want the world
Use your mind
Take control
Feel the strength
Rise from within
If you really want it the world is yours

[Chorus]
If you want the world
Use your mind
Take control
Feel the strength
Rise from within
If you really want it the world is yours.

 

 

И без помпозност и някакъв ненужен хейт ще оставя това тук – изпълнението на Arch Enemy в Токио за което говорих по-горе.
Btw препоръчвам да слушате целия концерт.

WordCamp 2017 във Варна

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

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

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

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

 

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

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

 

 

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

Довиждане София, Варна – добре дошла

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

Ето и малко мои впечатления свързани със София:

  • Културния живот там има огромна разлика от варненския – има опера, концерти (от които и много алтернативни), има няколко театъра;
  • Трафика е ок. Преди ми се струваше, че трафика е убийствен, но с помощта на Google Maps и телефон в ръка се справях много добре пеш и с колата. Транспорта е добре огранизиран и структуриран (освен проклетите трамваи – не мога да свикна да има и още един играч в платното за движение и като карам покрай трамвай продължавам да изтръпвам);
  • Дилектите са много и смесени. Понеже във Варна и Добрич (от където съм родом и живял прилична част от живота си) диалектите са практически еднакви е трудно да приема как всеки втори говори по различен начин. Което пък от своя страна е ок, защото и аз сигурно им звуча странно (особено като кажа, че е патладжан, а не син домат (а историята за чушка vs пипер изобщо няма да я започвам, че може да ям бой :) )). Пък и има много хора от всички краища на страната там и не е изобщо за учудване. Голям град – много хора и от всякъде;
  • Таксиметровите шофьори са измекяри. Точка;
  • Метрото е огромно предимство, а хората си познават града добре;
  • Имат си планина, която е само на няколко километра извън столицата;
  • Чешмяната вода не само, че не струва, ами и има вкус на пестициди и уран взети заедно. Поне водата в хотела беше такава;
  • Парковете са пълни с хора. На втория ми ден в София излязохме с колегите за по бира в парка и нещо ме сви – парка беше пълен с хора – деца, младежи за по биричка на пейката и възрастни хора – всякакви се бяха събрали. И ми припомни едно време като се събирахме на Бункера с метълските тениски и кецовете и как цъкахме хек и пихме биричка. Сега там е пусто…
  • Въздуха е малко странен – първо, че няма почти никакъв вятър (което беше нещо, което ми отне много време за да свикна във Варна) и второ – няма почти никаква влага. Тези две неща ме караха първите 1-2 дни да се чувствам странно и за първи път ми липсваше и морето. Все го приемах за даденост, а то…
  • Заведенията са много и разнообразни, има много бирарии и малки ресторантчета. Отнема време човек да ги обиколи;
  • В зависимост от това къде се намира човек въздуха варира от отвратителен и трудеш за дишане до ок.

 

За две седмици там, извън офиса направих следното:

  • Вървях много и в различни посоки. Всеки ден ми отнемаше около час и половина отиването и прибирането от хотела до офиса и респективно почти не шофирах в града;
  • Срещнах се с приличен брой мои близки хора и изпихме още по-прилично количество бира;
  • Покарах с Велоприключение малко в Тетевенския балкан на изтощителни жеги (имам си вече и аграрен фен, йей…) с хора, които не познавам, но беше супер яко приключение;
  • Със Злати ходихме на Hills of Rock в Пловдив. Чухме Контрол, Epica, Evanescence, Three Days Grace, Immencence, Revaneye, Мерудия. Беше брутално яко!
  • Разходихме се с Вик, Катина и Алек в Люлин планина;
  • Запознах се със супер много нови хора (покрай офиса) и още на втория ден привикнах с тях;
  • Направих първата си презентация новата фирма пред колегите. Говорихме си за performance testing с jMeter (цялото заглавие на презентацията беше jMeter and other strange animals) и беше много яко;
  • За пръв път се спуснах по пързалка, която е между два етажа в офиса. Беше епично;
  • За пръв път бях на масаж (изключая онзи път преди първия ми бревет в който щях да умра от болка и отидох да ме видят и те взеха, че ме оправиха). Беше странно и в офиса;
  • Свалих 2 кг за 2 седмици и бия нов рекорд от 94.5 кг. Не знам дали да се радвам, защото не бяха качествено свалени, а от нередовното ядене  в комбинация с джънк;
  • Изслушах около 80% от нещата на покойния Chris Cornell. Има някои, които чувам за пръв път и смятам, че съм идиот, за това,че не съм ги намерил по-рано.

 

Нещата, които не можах да свърша:

  • И този път мечтата ми да карам на колодрума в Пловдив не се състоя;
  • Не можах да карам с Велосити. Ходенето ми в София съвпадна с няколко други вело събития и свободни хора на практика нямаше;
  • Не можах да карам много или да отида на 5kmrun в София.

 

За офиса ще напиша отделен блог пост.

Сигурно изчистване на свободното място на дисковете ни (Windows и Linux)

Сигурно ще се зачудите защо по дяволите ни трябва да зачистваме свободното място на хард диска? Първо трябва да знаем как работят файловите системи (ще говоря основно за NTFS, но се отнася с извесни малки изменения за всички Windows файлови системи).

 

Какво става като изтрием файл?

Когато изтрием файл в Windows (и от Recycle Bin) не става така, че файла да отиде в небитието и на мястото, което е “освободено” да има само нули (както си го представях като малък). Всъщност това никога не е работило по този начин. Файловата система има особено поведение и има оптимизации, които в началото могат да прозвучат объркващо, но са за наше добро. Trust me.

MFT (Master File Table)

За да “знае” операционната система къде по диска физически са разположени всеки файл и директория той си има един огромен списък, който изглежда така:

файла pesho.txt е разположен на следните сектори;

файла gosho.txt е разположен на следните сектори;

като секторите не е нужно да са последователни (това идва от фрагментацията на файловата система).

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

Как работят програмите за възстановяване на изтрити файлове и директории?

Всеки се е чудил каква магия става като пуснем програма за възстановяване на файлове и се оказва, че не е чак толкова сложно. Просто тези програми сканират празното пространство и по техни алгоритми се опитват да възстановят съдържанието им. За това ако направите грешка и изтриете важни данни спрете каквато и да е било работа с машината, стартирайте portable версия на recuva да кажем и действайте. Колкото повече записи прави операционната система, толкова шансовете за възстановяване на файловете ви се намаляват.

 

Сигурност и как да “изчистим” свободното място на дисковете си

Както се досещат повечето от вас обикновено изтриване на файлове, които не трябва да виждат бял свят не върши работа. За това има метод, която се нарича wipe free space и Windows и Linux имат два добри инструмента за това.

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

Windows 10 wipe free space tool:

cipher /w:F

Тази команда я има в Windows 10 (тествано) и надолу, не изисква административни права и прави три последователни записа върху свободното свободното пространство (extra security) като:

  • Първо записва 0x00;
  • Второ записва 0xFF;
  • Трето записва прозиволни числа в мястото маркирано като свободно.

 

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

Linux wipe free space:

 

В линукс нещата са по-интересни и можем да ползваме елементарното едноредово решение със запълване на всичкото налично място на диска и изтриването му по следния начин:

cat /dev/zero > zero.file && sync && rm zero.file

Досещаме се, че идеята е не особено гениална и на някой системен администратор този подход може да му причини лек уплах или перманентно адресивно поведение срещу мен така, че бързам да се презастраховам с другия тул, който се казва secure-delete

sudo apt-get install secure-delete

 

Повече и по-подробна информация можете да прочетете на сайта на Microsoft.

Ние като QA НЕ осигуряваме качество!

Покрай силната неопределеност и неструктурираност на част от методиките в Quality Assurance витаят едни общи разбирания, че Quality Assurance engineer-а осигурява качество. Това НЕ е така. Ние можем да:

  • Анализираме изискванията на клиента и на тази база (и немалко предишен опит) можем да предвидим още преди да е започнала активната разработка да открием несъответствия (логически, технически или концептуални);
  • На база клиентски изисквания да напишем десетки или дори стотици тестове (test cases) на всеки отделен компонент, които след като част от нужната функционалност е готова да изпълним за да се уверим, че това, което е направено съвпада с вижданията на клиента за добре работещо приложение;
  • Да използваме множество методики, тест техники, черна магия и каквото друго е нужно по време на разработката на проекта. Всичко, което намерим го логваме в някой bug tracking system (дали ще е TFS, BugZilla, JIRA, дори и Google Docs, etc няма значение). Знаете правилото – ако няма логнат бъг значи няма бъг. А повярвайте ми – в този ежедневен поток от информация много лесно можете да забравите нещо ако не го логнете;
  • Да проверим след като програмисти/дизайнери/други са фикснали проблема дали е направен по начин, който може да удовлетвори клиента (и в идеалния случай и нашите лични вижданя за това кое е правилно);
  • Да направим финални тестове, които да ни дадат солидни доказателства, че можем да кажем на клиента актуалния статус на проекта. Има вариант в който да репортнем, че нещото не работи според очакванията и изискванията, но да бъде предприет риск (risk management) и въпросната функционалност да бъде пусната в production. Това зависи от клиента, не от нас.

И още едно, много важно нещо – мога да ви гарантирам, че НЯМА софтуер без бъгове. Има такъв с неоткрити такива. Някой преди време беше казал, че: “QA can miss a bug, but the crowd will not”.

regex или порно за мозъци

Преди 2 седмици се заиграх с jMeter (статия планирам в близко бъдеще, супер интересен и мощен tool!) и се наложи да взема стойността на един hidden field, който е уникален за всяка потребителска сесия. Кода изглеждаше така:

[code lang=”html”]<input name="form_key" type="hidden" value="PmIAQBj6jXqBIX8g" />
</pre>
<input name="form_key" type="hidden" value="PmIAQBj6jXqBIX8g" />
<div id="authenticationPopup" style="display: none;" data-bind="scope:’authenticationPopup’">
<p id="find_result" class="result">А нужното поле, както можете да се досетите – value.</p>
<p class="result">Между другото ако ви е интересно това е стандартна Magento 2 Enterprise инсталация.</p>

</div>
</div>
И моя гениален ум просветна веднага – "Просто е, ще ползвам regular expression". Всеки е чувал за регулярните изрази и за техните полу-митични възможности – от взимане на стойност по определен набор от инструкции,  validation, assertation и т.н. и т.н.

Отворих бодро regexp-а на Java и след около 15 минути мозъка ми излезе в почивка. Оказа се, че не е чак толкова лесно, а като попаднах на този (по мое мнение грозен, бавен и неефикасен (според stackoverflow)) <a href="http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html">regexp за валидиране на mail addresses</a> ми се схвана душата.
За радост тулове много, а добра работа ми свърши <a href="http://java-regex-tester.appspot.com/">http://java-regex-tester.appspot.com/</a>.

Решението на задачата е просто и изглежда по този начин:
<pre>[code](?<=value\=\")([a-zA-Z0-9]*)[/code]

Резултата по по-ясен начин го има и тук като можете да си поиграете със структурата и израза и да го прогодите за свои цели.

 

Сигурно се питате защо “порно за мозъци”? Много просто – търсенето и експериментирането с такъв набор от инструменти се оказа интересна задача и макар за някои да е елементарна за моя пръв сблъсък ми беше на ръба да изям клавиатурата.

Крис Корнел си замина…

Има дни в които човек иска да изчезне поне за малко или да накара времето да спре или просто да е на правилното място в правилното време за да накара някой да се откаже от правенето на някоя глупост.

И понеже нямам влияние на нито едно от гореспоменатите физични величини мога само сравнително делово да кажа нещо, което целия свят научи за часове – на 18.05.2017 година си замина един от вероятно най-големите изпълнители, донесъл повече усмивки и сълзи от всеки друг, кърдавия човек, който завинаги остана на 52, който пя, смя се и правеше велики концерти само с една китара, стол и микрофон на сцената – Крис Корнел (Chris Cornell).

Обесил се, вероятно заради микс от лекарства, намерен сам в банята си в хотела. А отвън същата вечер с него са пеели десетки фенове.

 

Започнах да пиша този текст три пъти и с всеки път той ставаше по-малкък и по-малък. Рядко се жегвам толкова много, но това ме събори.

Мога да кажа само “Баси майката” и да спра до тук.

Ще цитирам думите, които ми попаднаха във facebook пост по темата:

We were the 90’s. We were Cornell and Cobain. We were Grohl and Vedder. We were Weiland and Ament. We were Moreno and Kiedis. We were Alanis Morissette and Shirley Manson. We were Breeders and L7. We were Billy Joe Armstrong and Gwen Stefani. We were Yorke and Corgan. We were Blur and Oasis. We were Temple of the dog and Mother love bone. We were Stiltskin and Collective soul. We were Cats in the cradle and Shitlist. We were Dogma and Reality bites. We were Alicia Silverstone and Winona Ryder. We were Mat Dillon and Eddie Furlong. We were Beavis and Butt-head. We were Airheads and Singles. We were Trainspotting and What’s Eating Gilbert Grape. We were Tom Green and MTV’s Alternative nation. We were 3 times oversized clothes and long hair. We were a short dress and combat boots. We were angry and anxious. We were desperate, extreme and addicted. To the intense feelings. To the ultimate emotions. And every f*cking sad day like today reminds us that we still ARE.
RIP Cornell. Thank you for having your music in my life.

 

Ето едно негово изпълнение в Пловдив. Концерт, който ме боля като разбрах, че няма да мога да отида, но сега… смятам, че съм изтървал един цял live event.

 

Най-бързото ми 5 км бягане до сега

Да, бягам. Не – не е редовно, но бягам по поводи.

Този път повода беше 5kmrun на който отидохме със Злати. Малко се замотахме с организацията и отидохме 2 минути преди старта още сънени.

Този път бях решен да не правя 10 минути за километър, както беше слез мощното ми изтощение на дуатлона по-рано този месец и се закачих за една групича с хора, които със сигурност бяха извън моето темпо. И така приключих петте си километра със спринт и общо 25.59 минути и средно 5:05 минути за километър.

Ключа към този мой микроуспех беше в това да имам пейсър, който да ми определя темпото вместо мен и да бяга с не повече от 15-20% извън моите възможности.

Оказа се възможно.

 

Strava статистика за запалените можете да видите тук, а снимки – тук.