A primeira coisa a saber sobre a tipagem do PHP é que ela não é parecida com Java, JavaScript, Python, Ruby, C, C++, C# ou qualquer linguagem que tenha uma tipagem baseada em alguma dessas citadas. A tipagem do PHP é incomparável, e assim como tudo que não pode ser comparado é difícil de ser explicada.
De qualquer forma, a tipagem do PHP é extremamente simples se você apenas confiar na sua intuição. A primeira coisa que você tem que saber sobre a tipagem do PHP é que ela faz malabarismos. É exatamente essa a palavra: malabarismo. E o PHP é um ótimo malabarista, exceto por alguns poucos deslizes fáceis de decorar. O type juggling, traduzido para "malabarismo com tipos" é a habilidade que o PHP tem de tomar decisões intuitivas sobre conversões de tipos. Em termos grosseiros, o PHP decide toda e qualquer tipagem de variáveis em tempo de execução, não compilação (pros pedante aí que tão lendo).
Note bem: tipagem de variáveis. O PHP é multi-paradigma e, ao m
Testar/verificar a disposição dos elementos de uma determinada página em determinadas resoluções de tela.
Executar captura de telas de acordo com os viewports definidos em um script, com a ajuda do PhantomJS.
Necessário ter o NodeJS instalado.
| <!DOCTYPE html> | |
| <html lang="en"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <title>HMAC-SHA256 Example</title> | |
| </head> | |
| <body> | |
| <script src="http://crypto.stanford.edu/sjcl/sjcl.js"></script> | |
| <script> | |
| var sharedSecret, query, signature, hmac, xhr; |
| #!/usr/bin/env python | |
| """ | |
| Use byzanz to create a GIF screencast of a specific window. | |
| Required tools: | |
| sudo apt-get install byzanz x11-utils xdotool | |
| A tip: use an extra-long duration (-d 100), record your shot, and use | |
| gimp to shorten the duration of the last frame. You need to rename the layer | |
| from "Frame 123 (100000 ms) (combine)" to "Frame 123 (1000 ms) (combine)". |
| function OHLC(params) { | |
| OHLC.prototype._init = function (params) { | |
| this.height = params.height || 650; | |
| this.width = params.width || 1300; | |
| this.margin = params.margin || 50; | |
| this.data = params.data; | |
| this.movingAverageTypes = ['mov_avg_10d', 'mov_avg_50d', 'mov_avg_200d']; | |
| this.dateFormat = d3.time.format("%Y-%m-%d"); |
(by @andrestaltz)
If you prefer to watch video tutorials with live-coding, then check out this series I recorded with the same contents as in this article: Egghead.io - Introduction to Reactive Programming.
| ------------------------------------------------------------------------------- | |
| -- HTTP Accept-Language header handler -- | |
| -- @originalAuthor: f.ghibellini@gmail.com -- | |
| -- @originalRepository: https://github.com/fghibellini/nginx-http-accept-lang-- | |
| -- @modifiedBy: marian.hello@mapilary.com -- | |
| -- @gist: https://gist.github.com/mauron85/47ed1075262d9e020fe2 -- | |
| -- @license: MIT -- | |
| -- @requires: -- | |
| -- @description: -- | |
| -- returns language with greatest quality -- |
| { | |
| "name": "my-app", | |
| "version": "1.0.0", | |
| "description": "My test app", | |
| "main": "src/js/index.js", | |
| "scripts": { | |
| "jshint:dist": "jshint src/js/*.js", | |
| "jshint": "npm run jshint:dist", | |
| "jscs": "jscs src/*.js", | |
| "browserify": "browserify -s Validating -o ./dist/js/build.js ./lib/index.js", |