View birthday_paradox.js
// https://betterexplained.com/examples/birthday/birthday.html | |
function calc(people) { | |
let ret = { | |
days: 365, | |
people: people | |
} | |
ret.combinations = ret.people * (ret.people - 1) / 2 | |
ret.chance = (ret.days - 1) / ret.days | |
ret.expected = 1 - (ret.chance ** ret.combinations) |
View each.php
<?php | |
if (!function_exists('each')) { | |
function each(array &$array) { | |
$value = current($array); | |
$key = key($array); | |
if (is_null($key)) { | |
return false; | |
} |
View convert_base.js
function convert_base(input, fromBase, toBase) | |
{ | |
const chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' | |
if (typeof fromBase == 'number') { | |
if (fromBase < 2 || fromBase > 62) { | |
throw ('Invalid base for from chars, min=2 & max=62') | |
} | |
fromBase = chars.substr(0, fromBase) |
View Uninitialized typed properties 4.bug
class A { protected int $x; } | |
class AA extends A { protected $x; } | |
// -> PHP Fatal error: Type of acme\AA::$ must be int (as in class acme\A) | |
No var name here "acme\AA::$". |
View Uninitialized typed properties 3.bug
$foo = new class() { | |
var ?array $a; | |
function dump() { var_dump($this->a); } | |
function sort() { ksort($this->a); } | |
}; | |
// E1: Error: Typed property class@anonymous::$a must not be accessed before initialization | |
$foo->dump(); | |
// E2: TypeError: ksort() expects parameter 1 to be array, null given (should throw E1 cos its an uninitialized property?) |
View Uninitialized typed properties 2.bug
Link: https://bugs.php.net/bug.php?id=78859 | |
--- | |
Weird behavior with uninitialized typed properties and __set/__get | |
Seems calling a constructor is triggering __set magic for uninitialized typed properties. So it does not matter the property is public or private/protected. | |
I suppose the problem is __set/__get called before __construct when a type is given to a property. Also I if remove __get then I get object(acme\Options)#1 (1) { ["stack"]=> array(1) { ["stack"]=> array(1) { ["one"]=> int(1) } } }. |
View Uninitialized typed properties.bug
Link: https://bugs.php.net/bug.php?id=78809 | |
--- | |
Uninitialized typed properties | |
While throwing when try to access to any uninitialized typed property (eg: $o->x == null), | |
the codes below are just causing notice. | |
BTW, error message is so weird. We were expecting something like this; |
View uninitialized stuff
// Java | |
class Foo { Integer i; } | |
class Test { | |
public static void main(String args[]) { | |
System.out.println(new Foo().i == null); | |
} | |
} | |
// JavaScript |
View nö.php
<?php | |
// ok, cos converted to ?int = null, right? | |
function foo(int $i = null) {} | |
// ok, all ok, right? | |
$a = new class { | |
public $i; | |
public function check(): bool { | |
return ($this->i != null); | |
} |
View salt-guid.js
const crypto = require('crypto'); | |
const util = require('util'); | |
const Salt = { | |
/** | |
* Length. | |
* @const int | |
*/ | |
LENGTH: 128, |
NewerOlder