Skip to content

Instantly share code, notes, and snippets.

View VaclavSir's full-sized avatar

Václav Šír VaclavSir

View GitHub Profile
<?php
namespace Test;
use Nette,
Tester,
Tester\Assert,
AdminModule;
$container = require __DIR__ . '/../../bootstrap.php';
@VaclavSir
VaclavSir / howto.md
Created September 25, 2013 15:39
How to clone a CodePlex project on Linux

There's some GnuTLS bug, that causes this error when cloning using git clone:

error: RPC failed; result=56, HTTP code = 200

Workaround:

mkdir your-project
@VaclavSir
VaclavSir / form-checklist.md
Created November 12, 2013 17:49
Kontrola formulářů

Projít definici formuláře:

  • CSRF (addProtection).
  • Validační pravidla nepropustí hodnotu, kterou nelze zpracovat (onSuccess).
    • Pokud formulář plní entitu, validační pravidla musí být přinejmenším stejně přísná, jako pravidla na entitě a v databázi. Kontrolovat jak podle deklarace entity, tak podle DB tabulky, občas tam máme nesrovnalosti (ty nejlépe přitom odstranit).
    • Pokud prvek není setRequired, tak si zpracování musí poradit s prázdným řetězcem, nebo ho změnit na něco, s čím si poradí (třeba NULL).
    • Pokud SelectBox má prompt, tak může být hodnotou NULL (pokud není setRequired).
  • Formulář nemůže instancovat někdo, kdo k tomu nemá oprávnění.
    • Pokud celý presenter s tovární metodou vyžaduje minimálně stejný stupeň oprávnění, jako formulář, tak je splněno.
  • Jinak je nutné přidat nějakou kontrolu do té továrny.
<?php
abstract class BasePresenter extends Nette\Application\UI\Presenter
{
/**
* Path to theme templates.
*
* @var string
*/
@VaclavSir
VaclavSir / text.md
Created December 3, 2016 09:26
Why Is Context-Aware Escaping a Leaky Abstraction

This is what the documentation says:

All is done automatically, consistently and correctly. You don't have to worry about security holes.

This is simply not true. What if you write this:

<a href="javascript:{$variable}">...</a>
<?php
abstract class Service
{
public function doSomething()
{
something();
$this->getLogger()->log('¯\_(ツ)_/¯');
}
@VaclavSir
VaclavSir / tmp.js
Created February 20, 2017 11:08
package.json: Find duplicities between devDependencies and dependencies
const packageJson = require('./package.json');
console.log(
Object.keys(packageJson.devDependencies).filter(packageName => packageJson.dependencies.hasOwnProperty(packageName))
);
@VaclavSir
VaclavSir / howto.md
Created March 16, 2017 09:19
How to read articles at martinfowler.com
  1. Open developer tools.
  2. Open Console.
  3. Execute $('#content')[0].style.margin='0 auto'
<div
data-embed-component="Hello"
data-embed-props='{"recipient": "World"}'
></div>

Keybase proof

I hereby claim:

  • I am vaclavsir on github.
  • I am vaclavsir (https://keybase.io/vaclavsir) on keybase.
  • I have a public key ASCkrZLdR5A2e52GUmPaRlhhiowbq7CzpM2qMue4_eg9wgo

To claim this, I am signing this object: