Skip to content

Instantly share code, notes, and snippets.

<?php
namespace AnrDaemon;
class Xxx
implements \JsonSerializable, \Serializable
{
public static function createFromState(array $state)
{
$self = new static();
@AnrDaemon
AnrDaemon / apiaware.php
Last active October 21, 2021 10:44
Domain to infrastructure chained API interaction
<?php
/** Wrapper for actual thing that do the network talking.
This could be encapsulation for curl, Guzzle, Net\Browser, etc.
The wrapper offers a known stable interface to external library.
*/
class Service\Api\Wrapper
{
<?php
class Utility
{
public function createValidator($spec)
{
list($type, $name) = explode(":", $spec, 2) + ['', ''];
$options = ["default" => null];
switch($type)
{
<?php
namespace AnrDaemon\CcWeb;
use
AnrDaemon\CcWeb\Interfaces;
class SettingsManager
implements Interfaces\SettingsManager
{
@AnrDaemon
AnrDaemon / git-squash.sh
Created April 1, 2018 14:11
Easy and safe git squash with no manual calculations
#!/bin/sh
git status --branch --untracked-files=no --porcelain=2 | (
while IFS=' .' read -r _s _b _name _value; do
[ "$_s" = "#" ] || break
if [ "$_b" = "branch" ]; then
case "$_name" in
head|upstream|ab)
eval "_$_name='$_value'"
;;
@AnrDaemon
AnrDaemon / php-server.btm
Last active April 4, 2020 18:55
Server starter.
@ECHO OFF
SET SERVER="%~dp0php-xdebug.btm"
:: PARAMETRIZE [name param]
ALIAS /L
ALIAS PARAMETRIZE=`SET __name=%1 %+ SET __value=%@REREPLACE[^^--.*?=,,%2] %+ IFF "%[__value]" != "%2" THEN %+ SET %[__name]=%[__value] %+ UNSET __name %+ ENDIFF %+ UNSET __value`
SET _enc=UTF-8
SET _session=local
DO param IN /Q %$ ""
@AnrDaemon
AnrDaemon / moonphases.json
Created March 15, 2018 00:56
Moon phases tracker for InGameInfo (XML and JSON)
[
{
"str": "Day {day}, "
},
{
"if": [
{
"var": "daytime"
},
{
@AnrDaemon
AnrDaemon / curl-session-cookies.php
Last active May 11, 2018 19:13
Simple cURL setup with cURL internal session cookie handling
<?php
$url = new AnrDaemon\Net\Url("https://www.example.org/login/page");
// Ask for authentication password, fill the form
fwrite(STDERR, 'Enter password: ');
$form = [
"login" => 'admin',
"pass" => trim(fgets(STDIN)),
];
@AnrDaemon
AnrDaemon / MySQL.sql
Created March 13, 2018 04:35
MySQL DateTime vs. TimeStamp vs. TimeZone changes.
mysql> CREATE TABLE `timetest` (`datetime` DATETIME DEFAULT 0, `timestamp` TIMESTAMP DEFAULT 0);
Query OK, 0 rows affected (0,29 sec)
mysql> DESCRIBE `timetest`;
+-----------+-----------+------+-----+---------------------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-----------+------+-----+---------------------+-------+
| datetime | datetime | YES | | 0000-00-00 00:00:00 | |
| timestamp | timestamp | NO | | 0000-00-00 00:00:00 | |
+-----------+-----------+------+-----+---------------------+-------+
<?php
$list = $_pdo->getAll('SELECT s1.`id` `id` FROM cat_section s1
LEFT JOIN cat_section s2 ON s1.`parent_id` = s2.`id`
WHERE s1.`parent_id` <> 0 AND s2.`id` IS NULL', [], \PDO::FETCH_COLUMN);
$iter = function($sid)
use(&$iter, $_pdo)
{
foreach($_pdo->getAll('SELECT s1.`id` `id` FROM cat_section s1