Skip to content

Instantly share code, notes, and snippets.

Avatar
💭
¯\_(ツ)_/¯

Pascal Landau paslandau

💭
¯\_(ツ)_/¯
View GitHub Profile
@paslandau
paslandau / guzzle-append-requests-on-the-fly-generator-vs-retry.php
Created Apr 12, 2015
Example of appending requests on the fly using an ArrayIterator as generator and comparing that approach to $event->retry() and $client->send()
View guzzle-append-requests-on-the-fly-generator-vs-retry.php
<?php
/** CAUTION!!!
* You need to have a webserver running on localhost to make this work!
*/
use GuzzleHttp\Client;
use GuzzleHttp\Event\AbstractRetryableEvent;
use GuzzleHttp\Message\Request;
use GuzzleHttp\Pool;
@paslandau
paslandau / isDirtyFix.php
Last active Sep 18, 2018
Dirty fix for Model::isDirty() in Laravel to honor the $casts attribute
View isDirtyFix.php
<?php
/**
* Determine if the model or given attribute(s) have been modified.
*
* @param Model $m
* @param array|string|null $attributes
* @return bool
*/
function _is_dirty(Model $m, $attributes = null){
@paslandau
paslandau / redirect.sh
Created Jun 30, 2017
Bash script to check geo- and mobile redirects for aboutyou de/at/ch when using Googlebot user agents
View redirect.sh
y="at
ch
de"; \
x="
Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.96 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
Googlebot/2.1 (+http://www.google.com/bot.html)
"; \
IFS="\n"; readarray -t countries <<<"$y";\
readarray -t userAgents <<<"$x"; IFS=""; \ for y in ${userAgents[@]}; do for x in ${countries[@]}; do url="https://www.aboutyou.${x}/"; printf "\n$url with $y\n"; curl -sIL -H "user-agent: $y" $url 2>&1 | egrep 'HTTP/1.1|Location|Failed'; done; done;
@paslandau
paslandau / result.txt
Created Jun 30, 2017
crawling result
View result.txt
https://www.aboutyou.at/ with Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.96 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
HTTP/1.1 302 Found
Location: https://m.aboutyou.at/
HTTP/1.1 200 OK
https://www.aboutyou.ch/ with Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.96 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
HTTP/1.1 302 Found
Location: https://m.aboutyou.ch/
HTTP/1.1 200 OK
@paslandau
paslandau / php-encoding-test.php
Last active Jan 10, 2018
Weird behaviour when changing the different php.ini settings to influence the default mb_internal_encoding() encoding.
View php-encoding-test.php
<?php
echo "\n\nPHP: " . phpversion()."\n";
echo "Default: " . mb_internal_encoding()."\n";
echo "Old value of default_charset: ".ini_set("default_charset", "ASCII")."\n";
echo "when default_charset is set to ASCII: " . mb_internal_encoding()."\n";
echo "Old value of internal_encoding: ".ini_set("internal_encoding", "ASCII")."\n";
echo "when internal_encoding is set to ASCII: " . mb_internal_encoding()."\n";
echo "Old value of mbstring.mb_internal_encoding: ". ini_set("mbstring.internal_encoding", "ASCII")."\n";
echo "when mbstring.internal_encoding is set to ASCII: " . mb_internal_encoding()."\n";
@paslandau
paslandau / bigquery-extract-url-parameters-array.sql
Last active Jul 29, 2018
Extract query parameters from a URL as ARRAY in BigQuery
View bigquery-extract-url-parameters-array.sql
#standardSQL
# Extract query parameters from a URL as ARRAY in BigQuery; standard-sql; 2018-04-08
# @see http://www.pascallandau.com/bigquery-snippets/extract-url-parameters-array/
WITH examples AS (
SELECT 1 AS id,
'?foo=bar' AS query,
'simple' AS description
UNION ALL SELECT 2, '?foo=bar&bar=baz', 'multiple params'
UNION ALL SELECT 3, '?foo[]=bar&foo[]=baz', 'arrays'
UNION ALL SELECT 4, '', 'no query'
@paslandau
paslandau / convert-timestamp-to-different-timezone.sql
Last active Jun 28, 2019
Convert timestamp/date/datetime to different timezone in BigQuery
View convert-timestamp-to-different-timezone.sql
#standardSQL
# Convert date / time to a different timezone in BigQuery; standard-sql; 2018-04-08
# @see http://www.pascallandau.com/bigquery-snippets/convert-timestamp-date-datetime-to-different-timezone/
WITH examples AS (
SELECT TIMESTAMP("2018-04-08T15:50:10+00:00") AS timestamp # Daylight saving time
UNION ALL SELECT TIMESTAMP("2018-03-08T15:50:10+00:00") # Standard time
)
SELECT
timestamp,
DATETIME(timestamp) as datetime,
@paslandau
paslandau / mysql2csv
Last active Jan 8, 2020
Helper command to export data for an arbitrary mysql query into a CSV file.
View mysql2csv
#!/usr/bin/env php
<?php
$intro = <<<TEXT
Helper command to export data for an arbitrary mysql query into a CSV file.
Especially helpful if the use of "SELECT ... INTO OUTFILE" is not an option, e.g.
because the mysql server is running on a remote host.
Usage example:
./mysql2csv --file="/tmp/result.csv" --query='SELECT 1 as foo, 2 as bar;' --user="username" --password="password"
@paslandau
paslandau / use-variables.sql
Last active May 29, 2020
Declare and use variables in BigQuery
View use-variables.sql
-- Declare and use variables in BigQuery; 2020-05-29
-- @see http://www.pascallandau.com/bigquery-snippets/use-variables/
DECLARE foo_var STRING DEFAULT "foo";
SELECT foo_var
@paslandau
paslandau / use-temporary-tables-with-named-subquery.sql
Last active May 29, 2020
Using temporary tables via WITH (named subqueries) in Google BigQuery
View use-temporary-tables-with-named-subquery.sql
-- Using temporary tables via WITH (named subqueries) in Google BigQuery; 2020-05-29
-- @see http://www.pascallandau.com/bigquery-snippets/use-temporary-tables-with-named-subquery/
WITH data as (
SELECT
1 as id,
DATE("2018-04-08") AS date,
UNION ALL SELECT 2, DATE("2018-04-09")
UNION ALL SELECT 3, DATE("2018-04-10")
UNION ALL SELECT 4, DATE("2018-04-11")
),