Защо „големите“ даряват всичките си пари за благотворителност

Предполагам сте забелязали тази тенденция, че милиардери, собственици на големи компании, в един момент решават да дарят 99% от всичките си пари за благотворителност. Това хора като Бик Гейтс, Тим Кук и стотици други. В този списък скоро влезе и Марк Зукербърг – създателя на Facebook.

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

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

Казано иначе, много от тези хора, които са успели ей така като на филм не са направили много, те са просто лицата пред проектите. Всички решения, контакти, конфликти, бизнес сделки са контролирани от мозъчни тръстове. Един прост пример, който е гледал презентации на Зукербърг ще остане с впечатлението, че този човек няма уменията да създаде такъв голям бизнес. Как тогава успява? Ами успява, защото непрекъснато му е помагано. Искам да уточня, че не хейтя Зукербърг, нито пък му завиждам, споделям наблюдения, че той няма необходимите умения (нито пък аз)

Как една малка фирма в USA може да сключи сделка с компания като Samsung приложението им да бъде инсталирано на всички телефони, и то не само исталирано, ами не може да се махне. От къде контакти за това? Примери много.

Само 5 от тези хора са дарили общо 178.1 милиарда. Помислете, 178.1 милиарда от 5 човека. За тези пари може да се оправи водата в цяла Aфрика, примерно.
LCH е Женева струва около 10 милиарда – най-големият научен експеримент в цяла човешка история е под 10% от дарената сума на 5 от дарителите. Опитвам се да ви дам разумен мащаб да разберете колко пари се даряват, и ако те наистина отиваха за някакви такива цели – определено щяхме да видим резултати.

Защо го пиша това – защото искам да имате по-ясна представа за действителността, и да не си мислите, че може сами да направите някакъв проект в тези размери. Можете, но ако ви помогнат. Ако ви помогнат, ще трябва да платите сметката. Ако откажете ще бъдете купени или съсипани от армия юристи, патенти, тълкувания на закони и подобни. Случвало се е много пъти, има достатъчно фактология в мрежата, ще се случва много пъти. Никой не иска някое младо хлапе да му обърка бизнес за милиарди.

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

Параграф 22 с Google

Ако не знаете какво е „Параграф 22“ това е нещо като да си забравиш ключовете в колата, или за да си инсталираш winzip ти трябва winzip за да разархивираш инсталатор. Всъщност романа на Джоузеф Хелър е много повече от това, но той е станал нарицателно за всякакви затворени цикли, най-вече в бюрокрацията.

Като всеки що годе нормален човек и аз имам gmail, няма как иначе да имаш youtube канал и какво ли още не, и преди години реших да видя мога ли да правя пари от AdSence, оказа се, че не може, поне не и за простосмъртните. Една седмица преди да ми платят ми блокираха акаунта без обяснение. Това стана преди 4-5 години. Майната му си казах, но после разбрах, че не само при мен правят този номер. Но не и това е проблема, проблема е, че в момента аз съм с блокиран AdSence акаунт, който автоматично ми блокира и възможността за монетизиране на видеа от youtube.

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

Добре, казах си аз, ще направя друг профил, така или иначе проекта ще е през юредическо лице. Направих си gmail, направих си всичко като ТЕ изискват, дадох си и телефона и… ми блокираха новия акаунт без обяснение, без нищо. Автоматичен отговор и цитат от споразумението им в който се казва „може да блокираме профили когато си искаме по каквато си искаме причина, и няма нужда да ви плащаме ако имате пари и нямате право да мрънкате.“

След доста търсене, питане и мотане разбрах, че google е разбрал, че това съм аз, спрямо телефонен номер, IP адреси и кой знае още какво, и понеже аз имам блокиран профил на общи начала блокират и новия. И пак няма с кого да се свържеш.

Е добре бе мама ви проста, ясно ми е, че имате политика, правила ама това вече е прекалено. Нито може да си оправя стария профил,нито мога да си създам нов. Сега какво трябва да направя? Да си измисля самоличност, да си купя нов телефон само заради това? И в един момент като се засекат двата акунта на един браузър пак ще ми го блокират, и ако имам пари там ще ги загубя.

Явно gmail профила е нещо повече от самоличност, то е до живот. Що за простотия. А най-много ме е яд, че не ми казват защо е блокиран, или какви са опциите да се оправи тази ситуация. И как може да няма един човек с който да се свържеш, не по телефон, по поща е достатъчно. Имат съпорт, но за потребители правещи над $xxxна месец.

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

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

За това не харесвам монополистите, правят си каквото си искат, а понеже са монополисти си косвено принуден да правиш нещата с тях.

Защо не харесвам Хелуин

Нека и аз да си споделя мнението за този празник – Хелоуин, който ни се натресе ей така от нищото, заедно с останалите „модерни“ западни традиции. Нямам нищо против запада, изтока или Марс, всеки си има своята култура, тук не споря дали западните нрави имат някакви ценности, а споделям конкретно за Хелуин.

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

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

Да вземем пример мартениците, древна езическа традиция, по-стара от повечето държави в света (не преувеличавам) носеща смисъла на надеждата, желанието за добруване, благодатна година, здраве и какво ли още не.

Да вземем за пример сурвакането, малки деца ходят и бият с дрян непознати за пари – но ги бият за здраве, за берикет, за сполука. Това е духа на празника.

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

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

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

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

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

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

 

 

 

Schoolpedia.org

Привет дружина,

От време на време получавам по някой мейл дали ще правя нови видеа. Ами реших да правя. Остана ми малко време и спретнах един малък проект schoolpedia.org, където ще качвам всички нови видеа. Не искам да са в youtube заради политиката им и много други причини.

Проектът е ранна BETA и някои неща може да са бъгави. Липсва и основна функционалност, но, ако има интерес, ще го развивам. Всичко е custom, така че ще мога да си имплементирам каквото си искам, както си искам.

Има над 100 нови видеа, които са за начинаещи, скоро ще има и за по-напреднали, надявам се по-нататък да стигнем и до ниво експерт/гуру 🙂

Така че, хвърлете едно око, ако ви хареса – прекрасно, ако ли не, ще се радвам на обратна връзка.

И все пак, да спомена с няколко думи каква е идеята – всичко е безплатно, видеата са със CC лиценз и са общодостъпни за гледане и сваляне, но хостинга и цялата хамалогия коства време и пари.

И пак да кажа, всички видеа, които ще правя за напред, ще бъдат качвани в schoolpedia.org.

 

 

Windows 10 и личните ни данни

Тук не искам да говоря за това как изглежда Windows 10, за мен външния вид е изключително грозен, неконсистентен и му липса ергономичност, но това е субективно. По-интересното е, че приключи анализа на лицензионното споразумение с което просто се съгласяваме без да прочетем. Отне близо 4 дни на група юристи да се запознаят с него, и там пише някой много интересни неща. Едно от тях е, че Windows 10 ще събира следната информация за вас:

  • Кой и кога е на компютъра – тоест всеки ще има профил. Има се предвид профил на някакви сървъри на MS а не локалният ви профил
  • Колко време се използва компютъра
  • Какво пишете по клавиатурата
  • Кои програми сте отворили и какво правите в тях
  • Всяко едно съобщение, независимо дали е по поща, чат или друга система
  • Календари, бележки и букмаркове
  • Камера, микрофон и периферия
  • При наличие на биометрия, данните от биометричните сензори.

На практика Microsoft си заявяват директно, че ще събират всяка една възможна информация за вас, но никъде не се казва за какво ще се използва тази информация. Единствения текст по темата е нещо като „Информацията може да бъде използвана за защита на нашите партньори“. Кои са тези партньори, как ще се използва?

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

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

Windows 10 също така ще съхранява ВСИЧКИ пароли в OneDrive. Всички!!! Не можете да го промените (е някой хакер ще намери начин, но за сега легално не можете)

Интересна е и концепцията за споделяне на пароли за WiFi. Ако аз и ти сме приятели, ти отидеш в някое заведение и запомниш WiFi паролата на това заведение, когато аз отида в същото заведение няма да има нужда да въвеждам парола, понеже моя Windows ще вземе паролата от твоя Windows. От уважение към интелекта ви няма да обяснявам колко е грешно това.

На практика не може просто да си качите Windows 10 в „самостоятелен“ режим. Трябва да е свързан с мрежата, и трябва да имате акаунт. Иначе много от нещата няма да работят както очаквате.

Windows 10 е нещо, което надминава нещата в  1984 на Оруел. Съвсем нагло Microsoft заявяват, че ще следят всяко едно нещо което правите или говорите 24/7.

Не, благодаря, аз ще си използвам Linux.

И ако някой от вас каже „Аз няма какво да крия“, моля ви, отидете и се застреляйте. Ще си направите услуга щом смятате, че това навлизане в личното пространство е нормално и ви препоръчвам да прочетете малко история, най-вече как са се сформирали тоталитарните строеве. Винаги подхода е един и същ, само технологията е различна.

И още едно нещо над което да помислите, един цитат от Уил Смит:

„Когато бях на 15 бях идиот, но бях идиот в анонимност. Сега всеки идиот на 15 остава следи в интернет, и тези следи ще го тормозят до края на живота му“

Малко уточнения

Горното не означава, че някой ще ви гледа през web камерата 24/7, или че всяко едно натискане на клавиш ще се записва. А може и точно това да означава. Точно това е проблема, не е ясно както точно ще се събира, и как ще се използва. Това което е ясно със сигурност е, че нямаме право да спираме събирането на телеметрични данни освен тези,които са налични за изключване в настройките. Няма описание каква друга информация се записва, къде се записва, кой я използва, за какво я използва нито пък да я изтрием.

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

Не може да спрем създаването на профил. Независимо дали ще искаме реклами или не,  за нас ще се създава профил.

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

Вече съм CTO в Despark

От време на време човек трябва да прави по някоя крачка. Дали е добре или не се вижда след време. Накратко, вече съм CTO в Despark, надявам се, че няма да докажа старата българска приказка, че никога не е  късно да станеш за резил 🙂

 

Как да сваляме RTMP видеа

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

Необходимо е да свалите една програма наречена rtmpdump. Авторите казват, че работи и под Windows, но аз я използвам под Ubuntu. За линукс потребителите, най-лесния начин е:

sudo apt-get install rtmpdump

Следващата стъпка е да намерим адреса на RTMP. В зависимост от самия сайт, плеъра и подобни може да е лесно. Гледайки изходния код на страницата може да видим нещо от типа на:

rtmp://someserver.com/somepath:video.mp4

Няма да сложа истински URL-та, не искам да ме съдят. Сами си носите отговорност за действията си!!!
В този случай нещата са много лесни:

rtmpdump -r "rtmp://someserver.com/somepath:video.mp4" -о name-of-the-saved-file.flv

Но едва ли ще намерите толкова лесен адрес 🙂 Често RTMP хоста и файлoвете са разделени и се обединяват от самия плеър. Някой дори имат възможност да теглят информация от няколко хоста и превключват между тях, ако някой хост спре да работи или е прекалено натоварен. В този случай в изходния код на страницата ще имаме RTMP адреса и името на клипа отделно. Ако RTMP адреса е „rtmp://someserver.com“, а името на файла е „somepath/video.mp4“, тогава използваме:

rtmpdump -r "rtmp://someserver.com/" -y "somepath/video.mp4" -о name-of-the-saved-file.flv

Ако сте под линукс и ви мързи да гледате изходния код, може да направите един много готин трик. RTMP работи на порт 1935 (обикновено), не може ли да пренасочим целия трафик от този порт някъде? Ами можем, под линукс можем всичко, в случая с помощта на IPTABLES:

sudo iptables -t nat -A OUTPUT -p tcp –dport 1935 -j REDIRECT

След това трябва да слушаме за тези връзки, това е лесно, ако сме качили rtmpdump. В конзолата трябва да напишем:

rtmpsrv

И трябва да видим нещо като:

RTMP Server v2.4
(c) 2010 Andrej Stepanchuk, Howard Chu; license: GPL

Streaming on rtmp://0.0.0.0:1935

Сега просто трябва да заредим който и да е браузър, който има RTMP видео, и да го пуснем. Ако видеото НЕ тръгне, значи всичко е наред. Все пак сме пренасочили трафика.
Ако погледнем конзолата, ще видим много редове, но ни интересува само този, който започва с rtmpdump:

rtmpdump -r "rtmp://someserver.com/"  -y "somepath/video.mp4" -о name-of-the-saved-file.flv

Възможно е да има и много други опции. Просто копирайте този ред и го пуснете в конзолата. Воала – видеото вече се сваля на вашия диск.

Не забравяйте да махнете IPTABLES правилото, когато свършите, понеже ВСИЧКИ RTMP видеа ще бъдат редиректвани:

sudo iptables -t nat -D OUTPUT -p tcp –dport 1935 -j REDIRECT

Бърз request router без регулярни изрази

За щастие отдавна мина времето, когато всяка страница в PHP бе отделен php файл. Днес всяка заявка минава през рутер, който решава кой контролер да извика, което решава доста проблеми, но и създава такива. Основният проблем с рутерите е, че са много бавни. Една от причините е, че ползват регулярни изрази, които сами по себе си са бавни и най-вече не може да се кешират ефективно.

Реално при всяка една заявка рутерът трябва да провери всеки един добавен път с регулярен израз докато намери съвпадение. Ако приложението ни има сравнително малко пътища (около 30), времето за намиране не е толкова голям фактор, но при приложения със 100 и повече пътя нещата не са добре.

Реших да пробвам мога ли да реша този проблем и донякъде намерих решение, което е доста просто и ефективно. Вместо да ползвам регулярни изрази прехвърлям пътищата в дървовидна структура, след което търсенето в тази структура е изключително ефективно.  Проблемът с този подход е, че трябва да се изгради тази структура, което не е евтино по отношение на CPU време и RAM.

Библиотеката е малко по бърза от едни от най-бързите рутер библиотеки, но силата й е в това, че тази структура може да се кешира. Веднъж създадена и кеширана скоростта на търсене между 1 и 100 добавени пътя е много малка.

Може да разгледате кода в GitHub

Всякакви идеи, критики и препоръки са добре дошли 🙂

Laravel Eager Loading – удобство за сметка на скорост

От няколко дни съм в жесток спор дали Eloquent (ORM-а на Laravel) е неприлично бавен, и накрая реших да пусна реален тест. Постановката е много проста:

  • Laravel5
  • PHP 5.5.9
  • Mysql 5.5.43
  • Ubuntu 14.04.1 64 бита
  • 16GB RAM
  • Intel i7-3770K

В базата има 2 таблици на INODB, които са свързани с FOREIGN KEY. Таблица Post съдържа 100000 записа а таблицата Comments има 250000 записа.

Ако искаме да вземем само даден Post по PRIMARY KEY разликата между ORM и обикновена заявка е минимална. Проблема идва когато искаме да вземем последните няколко поста с техните коментари. Стандартния начин за това е използвайки JOIN

SELECT * FROM posts LEFT JOIN comments ON posts.id=comments.post_id ORDER BY posts.date_created DESC LIMIT 10

Доста стандартна заявка. Как обаче може да го направи ако ще използваме Eloquent?
Първо ни трябват 2 модела за всяка таблица. Доста лесно. Също така трябва да регистрираме връзката между Posts и Comments.

class Post extends Model{
    public function comments(){
        return $this->hasMany('Models\Comment');
    }
}

До тук добре, сега как може да вземем последните 10 поста заедно с техните коментари, и да ги покажем?

$latest_posts=Post::orderBy('date_created','DESC')->take(10)->get();

Добре, но това ще ни даде само 10-те последни поста. Къде са коментарите? Ами не сме ги взели. Eloquent и позволява да правим хитринки от типа на:

foreach($latest_posts as $post){
    $comments=$post->comments;
}

В горния код,на всяка една итерация променливата $post ще съдържа обект от тип Post, на който може да извикаме метода comments, който ще вземе всички коментари за този пост. Цялата хамалогия по ID/primary key-foreign key се прави автоматично от Eloquent, и така на всяка итерация променливата $comments ще има всички коментари за поста.
Лесно, нали?

Ако пуснете такъв код в Production силно ви препоръчвам да се замислите дали да не си смените работата. Чувам че се търсят доста хигиенисти. Ако не сте схванали, ако пишете код по този начин означава, че… да го кажа по-меко – сте много назад с материала.
Проблема се нарича N+1. Имам една заявка за да вземем всички постове, и после за всеки един отделен пост пускаме отделна заявка за да вземем коментарите по него. Ако имаме 100 поста, това значи 101 заявки към базата. Ако не ви пука за такова нещо, еми съжалявам за вас.

За това „умните глави“ са измислили Eager Loading и го пробутват навсякъде като абсолютно решение на този проблем.
Eager Loading представлява механизъм чрез който ORM успява да разбере, че ще ползваме някаква друга информация, и се опитва да „оптимизира“ процеса по взимането и. Конкретно в Eloquent Eager Loading се реализира по следния начин:

Post::with('comments')->orderBy('post.date_created','DESC')->take(10)->get()

Това което ще се случи е, че Eloquent ще види, че трябва да взима и коментари, и би трябвало да ги вземе с една заявка. Да ама не. Това което ще се случи е, че Eloquent ще пусне 2 заявки. Едната да вземе всички постове:

SELECT * FROM posts ORDER BY date_created DESC LIMIT 10

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

SELECT * FROM comments WHERE id IN(100,99,98,97,96,95,94,93,92,91)

След което ще „хидрира“ отговора за да стане модел и ще го бутне в общата колекция.
Супер, ще си кажете, независимо дали има 1 пост или 1000 всичко минава само с 2 заявки. Проблема е решен. Да ама не. Точно това е проблема, че Eager Loading използва IN, а MySQL (и останалите релационни бази) не могат да работят толкова ефективно с IN, както с JOIN. Не може да се направи правилна стратегия за изпълнение и много от вътрешните оптимизации просто не работят. Още по-лошото е, че забавянето в заявката нараства с броя IN елементи. Ето малко числа – усреднена стойност от 100 повторения в секунди. MySQL query cache е пуснат:

1 пост 15 постa 2000 постa
RAW 0.000154531 0.0004134941 0.0026133084
Eloquent 0.0005193949 0.0029860616 0.047840426
Разлика 336% 722% 1830%

Както се вижда взимането на данните с Eager Loading в най-добрия случай е над 3Х по-бавно.

Времето на програмиста струва повече от хардуера

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

Ами ако искаме да вземем и потребителите, които са публикували коментарите в същата заявка? Става наистина сложно защото това ще е (в най-добрия случай) още една IN заявка.

Не казвам, че Eloquent е лош, въпреки, че има и много по-добри (Doctrine), казвам, че трябва да знаете за тази особеност, и ако имате по-сложна заявка да намерите алтернативи. 18 пъти забавяне е безумно според мен. И за това в моите кодове ползвам Eloquent за прости CRUD операции, а когато си трябва гимнастика с SQL използвам други методи, често дори и чист SQL

Ама има Кеш

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

 

Проверка за XSS защита

Играя си с един проект, и естествено решавам да го ударя. За под 1 минута успявам да направя XSS атака, при това брутална. Хем се радвам, че успях, хем се дразня, понеже кода на проекта е мой. Но както и да е.

Накратко, ако искате да проверите дали сайта ви е податлив на XSS изтеглете текстовия файл по-долу и пуснете съдържанието му в някое поле за коментар (или каквото там има сайта ви) Ако видите предупреждение с текста XSS, или браузъра тръгне да ви сваля файл автоматично, значи имате МНОГО голям проблем. Това означава, че може да се изпълнява произволен JS код от коментар на потребител, което автоматично значи, че някой ще намери начин да експлоатира тази дупка.

За детайли кое какво прави може да прочетете на https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet

xss-test-cases

PS: Ако тествате този код на WordPress бъдете сигурни, че не сте логнати като админ. Всички публикации на админа НЕ минават XSS проверка. Много благодаря на Марио Пешев, че ме светна за тази особеност на WordPress 🙂