All streams
Search
Write a publication
Pull to refresh
21
0.1
Send message

К счастью, со всеми программами, с которым я встречался, они при задании 1.2.3.4/24 как сети они воспринимают её правильно, округляя сеть до нулевого адреса сети.

Вообще-то с 0.0.0.0 не присваивается, у роутера на каждом интерфейсе по ip-адресу. А вот коммутаторы не имеют ip-адресов.

Rust ещё не предлагали? Есть пакетный менеджер, код из вашего примера будет как-то так:

fn main() {
    hello("world!");
}

fn hello(msg: &str) {
    println!("hello {}", msg);
}

Может быть и зря. Оборачивать каждый класс в фабрику и размазывать логику по фабрике выглядит странным. Например, в расте принят интересный подход: объект можно сконструировать только через статический метод try_new, если у вас объект создан, то можно всегда гарантировать, что его состояние корректно (все поля проверены итд). Для этого и существует система типов.

У вас же класс кто-нибудь может импортировать напрямую и сконструировать объект не через фабрику. И потом: ой, разве здесь не должно быть валидаторов? Что-то в другой системе теперь null.

Про dataclass уже сказали. Сам pydantic не пользовался, но вот примерный псевдокод:

from typing_extensions import Self
from pydantic import BaseModel, ValidationError, model_validator

class PriceRequestData(BaseModel):
    method: str
    path: str
    content_type: ContentTypeEnum
    data: dict[str, Any] | None = None
    headers: dict[str, Any] | None = None

    @field_validator('method')
    @classmethod
    def clean_method(cls, value: str) -> str:
        if value not in ('POST'), 'GET'):
            raise ValueError('Method name not valid.')
        return value

    @model_validator(mode='after')
    def clean(self) -> Self:
        if self.method == 'POST' and not self.headers.get('X-authorization-id'):
            raise ValueError('Authorization headers not found.')
        return self

What are people saying about PonyOS?

you have gone too far this time you fucking pony fags....
Anon, from /prog/

I just can't not believe these guys are sick fucks. Either way, getting to run vim in your shitty furry pedo OS is an accomplishment I must recognize. Fuck this shit.
Another Anon, from /prog/

NO
Mourcore, from reddit's r/technology

This is gonna buck up my computer so bad.
mybronyalter-ego, from reddit's r/mylittlepony

Thanks, but no thanks.
Nessphoro, from osdev.org

Oh… Oh god… Make it stop
@frozendevil

Ubuntu Furry Remix, правда, это скорее модификация Ubuntu.

Чтобы не копировать бездумно наборы шифров из статьи, советую питоновскую утилиту https://github.com/jtesta/ssh-audit Есть в репозитории pip'a.

zstd в браузере должно выглядеть неплохо. Хромиум уже поддерживает.

Потребляешь меньше соцнормы - ворующий электроэнергию майнер.

Я по этому вопросу как-то спрашивал редактора. Такой формат записи времени допустим в русской типографике.

Какая-то неправильная у вас консоль.
step=14284; heads=81...
ValueError: Exceeds the limit (4300) for integer string conversion; use sys.set_int_max_str_digits() to increase the limit

ORM не умеет генерировать create table … (просто недостаточно информации о точных типах полей), обратно тоже не умеет создавать описания растовских структур из существующих таблиц. В примере create_table_sqlite.sql нет ограничений not null, хотя по коду в расте они подразумеваются.

let user_opt: Option<User> = conn.find_one(user_from_db.id as u64).run().await?;

А если я захочу первичный ключ сделать с типом char(4 char)?

Ну и всякие мелочи по оптимизации:

  • update user set name = \"Mike\",age = 30 where id = 1 - не отслеживается список ИЗМЕНЁННЫХ полей, правильно так: update user set name = \"Mike\" where id = 1

  • select * from user - ORM же должен знать ВСЕ поля и давать возможность выбрать только НЕКОТОРЫЕ: select id, name, age from user и select id, name from user

  • insert into user (name,age) values (\"John\",30) - опа, явный косяк. А где указанный мной id=0?!

  • select * from user where rowid = 1 - зачем оно делает селект сразу же после запроса и откуда оно узнало rowid? Правильно так:

insert into user (
    name,
    age
) values (
    "John",
    30
) returning
    id;

Про это как раз в статье написано:

Большинство из них, взять, к примеру, Rust, Julia и Clang, даже работают с одним и тем же бекэндом. Невозможно определить победителя в автогонке, если все претенденты сидят в одной машине.

Появляются новые оптимизации в LLVM - и сразу появляются во всех языках, которые используют его.

Синтаксис выглядит забавно. Мы в oracle apex подсмотрели такой подход, чтобы не объявлять десятки переменных l_out_name ARMSTF1.arName%type;:

procedure get_custInf(
    p_arcnum in ARMSTF1.arcnum%type
) as
    cursor l_c is
    select
        arName,
        arAdd1,
        arAdd2,
        arCity,
        arStte,
        arZip
    from
        ARMSTF1
    where
        arCNum = p_arcnum
    fetch first 1 row only;
begin
    for i in l_c loop
        -- i.arName etc
        exit;
    end loop;
end get_custInf;

У батарей нет фазы, только плюсы и минусы, как у батарейки.

Type A сохраняет совместимость с 1.0-2.0, так это часто просто 2 интерфейса в одном разъеме.

Встречал переходник USB3.0 <-> USB C, в котором поленились развезти легаси линию для 1.0-2.0. Низкоскоростные устройства типа мышек и клавиатур не работали, USB3.0-флешка - да.

Information

Rating
2,967-th
Registered
Activity

Specialization

Application Developer
Software development
Database
Oracle PL/SQL
Oracle SQL
Linux administration
Python
Rust
Git
Database administration
Oracle administration