Photocard #01

#photocard

2024.12.12 17:43

php & Typed property $var must not be accessed before initialization

Пхп местами странноватый язык который странновато эволюционирует.

$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;
}

Какой же ад, нравится!

#php

2024.12.10 18:01

Arch, Rar & Aur

Install the rarAUR package for both RAR and UnRAR, unrar for just UnRAR, or unrar-free for a FOSS implementation of unrar.

Хочешь рар, хоти и аур!

#arch #aur #linux

2024.12.10 14:03

Параметрическое 3d моделирование в линуксе’24

Совсем недавно в прошлом году тут было восхищение состоянием параметрического проектирования в линуксе. Прошли годы и я делаю это снова!

Всё не изменилось абсолютно!

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

linux cli list/checkbox selector — how

Не так давно в этом блоге был вопрос как в линуксах сделать меню с чекбоксами, а меню с чекбоксами надо делать через 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 fight

Интересно как разные диалекты 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

HackberryPi Cyberdeck Handheld with BBQ20 Keyboard

Хотите карманную малинку с дисплеем, батарейками и клавиатурой от блекбери? Хотите дальше: https://www.tindie.com/products/zitaotech/hackberrypi-cyberdeck-handheld-with-bbq20-keyboard/

2024.09.09 10:00

Новый дизайн википедии

Мне очень нравится что новый дизайн википедии удачно использует экранное пространство и позволяет на лету настроить размер шрифта и скрыть ненужные элементы интерфейса!


2024.09.05 13:23

Bike shops & delivery

Мне кажется занимательным что веломагазины не доставляют велокурьерами. Вызывает доверие.

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

#why #wtf

2024.06.28 10:22

Forum thread “uConsole shipping related”

Бесконечно дерпессивный тред где люди делятся своими ожиданиями.

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