Пхп местами странноватый язык который странновато эволюционирует.
$a = new class { public readonly object $b; public readonly object $c; public function __construct() { $this->b = new class { public function helloworld() { return 'hello world'; } }; } };
Вот если у нас есть объект в котором есть 2 проперти, одно из которых инициализировано, а другое нет.
С инициализированным проперти всё просто и понятно:
echo $a->b?->helloworld(); // hello world
А вот если вы так же сделаете для неинициализированного то оно умрёт:
echo $a->c?->helloworld(); // Typed property class@anonymous::$c must not be accessed before initialization
Неудобно когда умирает поэтому приходится делать дополнительную проверку:
if (isset($a->c)) { echo echo $a->c->helloworld(); }
Ещё более неудобно когда хочешь проверить есть ли какой-то объект и проверить что-то в этом объекте, то начинается…
if (isset($a->c) && $a->c->isValid()) { return true; }
По непонятно причине ?->
умирает если оно неиницилизовано и не заменяет isset()
, а вот ??
не умирает и вполне себе живёт и заменяет isset()
поэтому…
echo ($a->c ?? null)?->helloworld(); if (($a->c ?? null)?->isValid()) { return true; }
Какой же ад, нравится!
2024.12.10 18:01
Install the
rarAUR
package for bothRAR
andUnRAR
,unrar
for justUnRAR
, orunrar-free
for a FOSS implementation ofunrar
.
Хочешь рар, хоти и аур!
2024.12.10 14:03
Совсем недавно в прошлом году тут было восхищение состоянием параметрического проектирования в линуксе. Прошли годы и я делаю это снова!
Всё не изменилось абсолютно!
1. Появился bricscad который вроде как работает, очень ничего, но стоит тысячу евро.
2. Появился совсем молодое plasticity и оно выглядит очень интересно, вроде бы работает, стоит сильно дешевле, есть триал. Внутри у оно parasolid kernel который внутри у onshape и кого-то там ещё. :огонёк:
3. В OpenSCAD появилась линейка мерять измеряемое. У меня так и не получилось.
4. FreeCAD в прошлом месяце зарелизился в первую версию, починил всё что было сломано и добавил в себя новый встроенный Assembly workbench который меня просто восхитил своей простотой. Первые ассембли во фрикаде которым у меня получилось воспользоваться. Только оно у меня постоянно крашится на этом ассембли и убивает файл. И фрикад постоянно вылетает. Ассембли самоуничтожается в процессе ассембли. И бибикает тормозит.
5. 2 года назад была новая версия solvespace и эта лапочька сейчас просто работает, модельки собираются. Можно поменять параметры на первом шаге, а последний шаг перестроится. Невероятно. Просто работает. :рыдание: :слёзы: :огонёк:
И цветовая схема такая что линию можно отличить от чего-угодно-ещё. И узловые точки видно без увеличения их размера в настройках.
Это просто невероятно как плох freecad. И больше всего меня удивляет то, что есть люди которые собирают во фрикаде двигатели и у них просто всё работает, ничего не вылетает, всё отлично лучший cad из всех возможных. Как???7
#cad #freecad #solvespace #parametric_cad
2024.12.02 02:26
Не так давно в этом блоге был вопрос как в линуксах сделать меню с чекбоксами, а меню с чекбоксами надо делать через fzf
и потом нажимать там внутри shift+tab
. Не то чтобы чекбоксы, но вертикальные выделенные полоски что почти чекбоксы!
$ cat ~/bin/fkill.sh #!/bin/sh # ps -A --sort=uid -o pid,user:16,cmd # list of processes, sorted by userid, so root's processes are on top, pid as first column # fzf --ansi --multi --tac --no-sort --exact --height=30 # fzf with allowed multiselect via <shift>+<tab>, dont forget to search! # sed 's#\ *\([0-9]*\).*#\1#' # cut everything except first column with <pid> # xargs --no-run-if-empty kill -9 # actual kill of selected processes ps -A --sort=uid -o pid,user:16,cmd | fzf --ansi --multi --tac --no-sort --exact --height=30 | sed 's#\ *\([0-9]*\).*#\1#' | xargs --no-run-if-empty kill -9
2024.11.26 14:51
$ ls --group-directories-first
Итак, если вы такая же жертва файловых менеджеров как и я, вы понимаете приятную мятность вывода сначала дирректорий, а потом файлов, двумя группами. Не понимаю почему, но мне так лучше.
$ ls --group-directories-first
пожалуйста сохраняйте в свои функции алиасы как там у вас принято в вашем окружении я не осуждаю.
2024.10.31 22:23
Недавно мне захотелось найти как называется фильм, в гугле забил в строку поиска:
space movie where guy used clocks arrow to communicate
гугл не смог. а то что гугл смог было даже не рядом.
а чатгпт онлайн без регистрации смс сразу же дал ответ что это интерстеллар.
всё, гугл устарел. конец эпохи. уже какое-то время идёт другая эпоха.
очень неожиданное будущее мы выбрали!
2024.10.12 01:28
То странное чувство когда своя мышка дома и приходится пользоваться дешёвой публичной, но в дешёвой публичной нормально нажимается третья кнопка.
😠
2024.10.08 14:39
Интересно как разные диалекты sql
по-разному оптимизированы.
Вот было у меня две таблички A, B и это one to many, надо было левенько заджойнится с некоторыми условиями, а где не получилось с условиями — вернуть null
. А если получилось несколько раз, то вернуть самое последнее справа.
Казалось бы что тут могло произвести вот это вот:
Aggregations of aggregations are not allowed at [10:8] SELECT list expression references a.title which is neither grouped nor aggregated at [10:18] Correlated subqueries that reference other tables are not supported unless they can be de-correlated, such as by transforming them into an efficient JOIN. ORDER BY clause expression references column b.id which is neither grouped nor aggregated at [34:14] HAVING clause should return type BOOL, but returns INT64 at [42:8] Aggregate function MAX not allowed in JOIN ON clause at [24:21] Star expansion expression references column id which is neither grouped nor aggregated at [28:19]
Решение решения сложно назвать решением, но оно решение:
select a.*, b.* from a as a left join (select * from b where id in ( select id from b where (cond1 = 1) and (cond2 = 2) and (cond3 = 3) group by a_id order by id desc )) as b on (a.id = b.a_id)
2024.09.13 17:04
Хотите карманную малинку с дисплеем, батарейками и клавиатурой от блекбери? Хотите дальше: https://www.tindie.com/products/zitaotech/hackberrypi-cyberdeck-handheld-with-bbq20-keyboard/
2024.09.09 10:00
Мне очень нравится что новый дизайн википедии удачно использует экранное пространство и позволяет на лету настроить размер шрифта и скрыть ненужные элементы интерфейса!
2024.09.05 13:23
Мне кажется занимательным что веломагазины не доставляют велокурьерами. Вызывает доверие.
2024.08.26 17:17
предмет | 25.90 EUR |
доставка | 09.99 EUR |
НДС | 10.56 EUR |
таможенное оформление | 13.90 EUR |
всего без таможни | 35.89 EUR |
всего | 69.69 EUR |
2024.08.15 13:18
Invalid formula - Operator "=" doesn't support TEXT = NUMBER. Operator "=" supports ANY = ANY.
А почему `TEXT = NUMBER` это не `ANY = ANY`??????77
2024.06.28 10:22
Бесконечно дерпессивный тред где люди делятся своими ожиданиями.
Order: #232xx
Ordered: Sep 15, 2023
Shipped notice: June 22, 2024
Order #279XX
Ordered: Mar 30, 2024
Delivered: ~Jun 30, 2024
Некоторые ждут всего-лишь 100 дней, некоторые больше 10 месяцев. Люди делятся номерами заказов и конфигурациями пытаясь угадать когда ждать консоль. Кто-то даже создал гугл-документ куда складывают норера заказов и дату доставки.
Логики никакой, совершенно разные комбинации всего доставляются непонятно когда.
Какой-то Алекс из саппорта всегда отвечает что:
ваша в следущих 2-3 партиях, а мы делаем до 5 партий в месяц!!11
Очень увлекательно. Покупайте uConsole! Получите (может быть) в 2026 с модулем Raspberry Pi4!
2024.06.27 12:42