• Почему не работает перемещение в C++?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    У вас полная каша в голове. Вы не понимаете, что такое перемещение, копирование.

    Вот как вы себе пердставляете перемещение int*?
    int* - это адрес в памяти. Число. Когда вы "перемещаете" img этого типа, вы перемещаете одно число. Из переменной img, в вектор.

    При этом что там лежит в памяти по адресу, равному этому числу (или на 20 сдвинутому), вообще не поменялось.

    Да, указатели используются в перемещении. Вместо того, чтобы копировать буффер в новое место. можно просто переприсвоить указатель в новой структуре на указатель в старой. Именно так вы перемещаете указатель, вместо копирования данных по этому адресу. Вот чем перемещение отличается от копирования.

    Так, у вас в imgs вы не пихаете копию данных, а пихаете указатель.
    Ответ написан
    2 комментария
  • Что за тип Unit в Haskel Rust Kotlin? Чем отличается от Void?

    vabka
    @vabka Куратор тега Rust
    void означает, что функция ничего не возвращает. Такие функции не получится использовать в выражениях и их результат нельзя никуда присвоить. Из-за этого многие обобщённые вещи приходится писать по два раза: один раз для обычных функций и ещё раз для функций, которые возвращают void.
    Такие функции ещё называют процедурами.

    unit же напротив является значением, просто всего с одним возможным вариантом. Компиляторы часто его оптимизируют так, что он занимает 0 байт и не требует никаких инструкций для передачи. То же самое с указателем на юнит.


    Можно ли увидеть аналог пример кода на c# java с этим типом?

    Нельзя, тк в их системе типов такого типа просто нет. Можно его имитировать при помощи пустой структуры например.
    Но в мире дотнета есть f#, а в мире жавы - скала и котлин.

    А еще, вот к примеру я придумал, почему нету(может этот тип и есть), К примеру в c# есть понятие Boxing типов при касте через object
    int a=(int)(object)1;
    Что довольно дорого и долго. С выделением памяти в куче.
    А почему нету Типа, который ни чего не упаковывает, а просто передает двойное машинной слово? Ведь это прекрасно покроет все простые структурные типы, int char double., Enum, кортежи в 8 байт. А все остальное уже как объект.

    1. А что делать если тебе боксинг явно нужен?
    2. А где ты будешь метаданные передавать? Как в такой ситуации отличить тот же long от ссылки на объект?
    3. По спецификации передаётся ссылка, а не двойное машинное слово.

    И каким боком боксинг имеет отношение к юниту?
    Ответ написан
    3 комментария
  • Видит ли работодатель мой трафик?

    @SunTechnik
    Выключаете VPN.
    Заходите на любой сайт по определению IP ( 2ip.ru например). Записываете IP.

    Включаете VPN.
    Заходите еще раз на сайт по поределению IP. Если адрес поменялся - значит весь выходной трафик идет через VPN и, потенциально, виден работодателю.

    Анализирует ли он его и надо ли это ему- вопрос другой.
    https трафик (youtube) - зашифрован. То-есть видно что Вы ходили на youtube, но что Вы там смотрели - непонятно. (Если только у Вас не стоит какого-нибудь левого доверенного сертификата и работодатель не занимется атакой mitm .
    Ответ написан
    7 комментариев
  • Зеркала Arch linux почему то всегда выдают 404 что делать?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    перед установкой чего либо всегда желательно обновить систему(-Syu) чтобы не встречать подобных казусов о чем в принципе и написал выше в комментариях к вопросу Василий Дёмин .
    В локальной базе версия пакета, судя по выхлопу, у вас edk2-ovmf-202308-2 (модификация 2), которую pacman и пытается запросить у внешнего сервера, НО на серверах она уже другая edk2-ovmf-202308-3 (модификация 3) что можно видеть если запросить информацию с сервера по данному пакету
    pacman -Si edk2-ovmf
    или даже посмотреть на оффсайте арча edk2-ovmf

    чтобы pacman увидел новую версию нужно синхронизировать локальный репозиторий с удалённым, для этого служит команда
    pacman -Sy
    информацию по ключу можно глянуть в хелпе(-h, --help)
    pacman -Sh
    ...
      -y, --refresh        загрузить обновленные базы данных с серверов
                           (-yy принудительно обновить даже если обновленные)


    после чего pacman уже сможет скачать и установить нужный пакет с сервера, но если система давно не обновлялась то такая установка будет считаться как частичное обновление системы что для дистрибутивов с ролинг-релизом настоятельно рекомендуется этого не делать, поэтому перед установкой необходимо обновить все пакеты в системе добавив ключ -u, --sysupgrade
    в целом команда будет выглядеть так:
    pacman -Syu edk2-ovmf
    Ответ написан
    Комментировать
  • Готовая система папок?

    Stalker_RED
    @Stalker_RED
    С точки зрения вёрстки - это же просто список <ul> с иконками папок и ссылками. Вам вёрстка списка нужна?
    Со стороны бэкэнда - надо прочитать список папок и файлов в нужной директории, и отдать его в шаблонизатор. Все.
    Ответ написан
    Комментировать
  • Какой плагин который показывает, что принимает функция?

    yarkov
    @yarkov
    Помог ответ? Отметь решением.
    Плагин не нужен. Это функционал из коробки. В настройках в строке поиска пишем inlay hint и включаем что надо.
    Ответ написан
    8 комментариев
  • Как начать учить программированию детей начальной школы?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Поищите книги Scratch Programming. Там был язык какой-то и среда для детей.
    Ответ написан
    1 комментарий
  • Как получить тип первой перегрузки в typescript?

    WblCHA
    @WblCHA
    https://github.com/microsoft/TypeScript/issues/321...

    type OverloadProps<TOverload> = Pick<TOverload, keyof TOverload>;
    
    type OverloadUnionRecursive<TOverload, TPartialOverload = unknown> = TOverload extends (
      ...args: infer TArgs
    ) => infer TReturn
      ? // Prevent infinite recursion by stopping recursion when TPartialOverload
        // has accumulated all of the TOverload signatures.
        TPartialOverload extends TOverload
        ? never
        :
            | OverloadUnionRecursive<
                TPartialOverload & TOverload,
                TPartialOverload & ((...args: TArgs) => TReturn) & OverloadProps<TOverload>
              >
            | ((...args: TArgs) => TReturn)
      : never;
    
    type OverloadUnion<TOverload extends (...args: any[]) => any> = Exclude<
      OverloadUnionRecursive<
        // The "() => never" signature must be hoisted to the "front" of the
        // intersection, for two reasons: a) because recursion stops when it is
        // encountered, and b) it seems to prevent the collapse of subsequent
        // "compatible" signatures (eg. "() => void" into "(a?: 1) => void"),
        // which gives a direct conversion to a union.
        (() => never) & TOverload
      >,
      TOverload extends () => never ? never : () => never
    >;
    
    // Inferring a union of parameter tuples or return types is now possible.
    type OverloadParameters<T extends (...args: any[]) => any> = Parameters<OverloadUnion<T>>;
    type OverloadReturnType<T extends (...args: any[]) => any> = ReturnType<OverloadUnion<T>>;

    https://www.typescriptlang.org/play?ts=4.7.2#code/...
    Ответ написан
    1 комментарий
  • Вернуть владение значения типа структуры из функции на самом деле не возвращение владения, а поинтера на heap?

    vabka
    @vabka Куратор тега Rust
    Нет, эти два примера кода будут делать абсолютно разные вещи.
    В первом случае ты возвращаешь String, который содержит в себе несколько полей: len, capacity, и указатель на буфер.
    Во втором случае ты String ещё в кучу копируешь и возвращаешь указатель на String в куче.

    В этом ты легко можешь убедиться, если посмотришь на ассемблер.

    Ведь нет какой-то волшебной операции вернуть владение

    Она не волшебная, и она существует. Только владение не возвращается, а передаётся.
    Но существует только на уровне типов.

    https://play.rust-lang.org/?version=stable&mode=re...

    Первая функция:
    pushq	%rbx
    	movq	%rdi, %rbx
    	movq	__rust_no_alloc_shim_is_unstable@GOTPCREL(%rip), %rax
    	movzbl	(%rax), %eax
    	movl	$5, %edi
    	movl	$1, %esi
    	callq	*__rust_alloc@GOTPCREL(%rip)
    	testq	%rax, %rax
    	je	.LBB10_1
    	movb	$114, 4(%rax)
    	movl	$1701736041, (%rax)
    	movq	%rax, (%rbx)
    	movq	$5, 8(%rbx)
    	movq	$5, 16(%rbx)
    	popq	%rbx
    	retq

    Вторая:
    pushq	%r14
    	pushq	%rbx
    	pushq	%rax
    	movq	__rust_no_alloc_shim_is_unstable@GOTPCREL(%rip), %r14
    	movzbl	(%r14), %eax
    	movl	$5, %edi
    	movl	$1, %esi
    	callq	*__rust_alloc@GOTPCREL(%rip)
    	testq	%rax, %rax
    	je	.LBB11_6
    	movq	%rax, %rbx
    	movb	$114, 4(%rax)
    	movl	$1701736041, (%rax)
    	movzbl	(%r14), %eax
    	movl	$24, %edi
    	movl	$8, %esi
    	callq	*__rust_alloc@GOTPCREL(%rip)
    	testq	%rax, %rax
    	je	.LBB11_2
    	movq	%rbx, (%rax)
    	movq	$5, 8(%rax)
    	movq	$5, 16(%rax)
    	addq	$8, %rsp
    	popq	%rbx
    	popq	%r14
    	retq
    Ответ написан
    6 комментариев
  • Законно ли создание фанатских игр без монетизации?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Есть ли какие-то санкции за использование существующих персонажей/фонов/музыки в фанатских поделках, которые вообще никак не монетизируются

    Зависит от лицензионного соглашения потенциального потерпевшего, если там все запрещено, то:
    - Статья 7.12 КоАП РФ и статья 146 УК РФ (нарушение авторских и смежных прав).
    - Статья 1250 ГК РФ (защита интеллектуальных прав).
    и насколько велик шанс под них попасть?

    Зависит от умственных способностей и настойчивости потерпевшего.
    А если в самой игре указывать всех авторов используемого контента?

    Зависит от лицензионного соглашения.
    но чет стремно на штраф влететь…

    Так можно сорвать джекпот, пока будите сидеть - штраф уже перестанет казаться стремным ;)
    Ответ написан
    4 комментария
  • Почему одно регулярное выражение для одной и той же строки выдаёт разные результаты?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    JavaScript RegExp objects are stateful when they have the global or sticky flags set (e.g., /foo/g or /foo/y). They store a lastIndex from the previous match. Using this internally, test() can be used to iterate over multiple matches in a string of text (with capture groups).
    Кратко - с опциями g и y объект RegExp сохраняет позицию, с которой продолжает поиск при следующем вызове. У вас одинаковые строки и второй вызов начинает с позиции, на которой закончился первый вызов, то есть уже после '.mp3'.
    Ответ написан
    1 комментарий
  • Могу ли я выставить лицензию MIT в проекте, который использует библиотеку с лицензией Apache 2.0?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Да.

    https://www.apache.org/licenses/LICENSE-2.0
    2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.

    4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:

    You must give any other recipients of the Work or Derivative Works a copy of this License; and
    You must cause any modified files to carry prominent notices stating that You changed the files; and
    You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
    If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.
    You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
    Ответ написан
    1 комментарий
  • Почему не выпускают процессоры на архитектуре виртуальной машины Java?

    1. А сборщик мусора и всё Java API тоже на уровне железа будешь реализовывать?
    2. Что будешь делать, когда выйдет новая версия Java? Отказываться от нового софта? Отказываться от старого софта и переходить на новый железный процессор?
    3. Что будешь делать со всем тем ПО, которое не для JVM создано?
    4. Уверен ли ты, что сможешь создать аппаратную реализацию java-машины, которая будет эффективнее, чем классический процессор и JIT?
    Ответ написан
    6 комментариев
  • Почему сначала предлагает ввести значение, а потом ключ?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Из-за порядка вызовов методов: сначала вычисляется правая часть привоения, а затем левая.

    Из документации
    Python evaluates expressions from left to right. Notice that while evaluating an assignment, the right-hand side is evaluated before the left-hand side.
    Ответ написан
    Комментировать
  • Почему у пересечения функций такой ReturnType?

    Aetae
    @Aetae Куратор тега TypeScript
    Тлен
    Ни в чём. Просто ограничение языка. Видимо слишком сложно было сделать и\или обосновать. Возможно в какой-то следующей версии языка пофиксят.

    Вот issue помеченная как "Design Limitation", там есть workaroud(который не стоит юзать в проде, разве что если очень хочется).
    Ответ написан
    5 комментариев
  • Как получать каждые 12 элементов из массива?

    @GeKskill
    Просто поделите массив на чанки:
    let array = [1,2,3,4,5,6,7,8,9,10,11]
    const chunkSize = 3;
    let chunks = [];
    
    for (let i = 0; i < array.length; i += chunkSize) {
         chunks.push( array.slice(i, i + chunkSize) );
    }
    
    // на выходе
    [ 
    [1, 2, 3], 
    [4, 5, 6],
    [7, 8, 9], 
    [10, 11]
    ]


    Ну или в бэкенде сразу разбивайте, смотря как шаблон выводите.
    Ответ написан
    2 комментария
  • Откуда взялась ассоциативная функция from?

    vabka
    @vabka Куратор тега Rust
    В wasm-bindgen::JsValue Нету impl From for JsValue

    Всё там есть https://docs.rs/virtual-dom-rs/latest/virtual_dom_...
    impl From<Element> for JsValue
    + есть целый ряд blanket impl

    Не работает. Работает только с &element

    Потому что ты реализовал трейт для &element, а не для element.
    Сам же в начале написал, что
    Тут тоже подвоха нет. get_element_by_id() возвращает Option<Element>, а не Option<&Element>

    Вот такое уже работает:
    https://play.rust-lang.org/?version=stable&mode=de...

    Но эти поганые макросы наносят уроны документации, и не видно какие именно есть поля и функции у JsValue.

    Макросы на это влиять не должны. VS Code с rust-analyzer и intellij rust умеют показывать все impl для структуры, в том числе blanket impl и те impl которые возникли в результате вызова макроса.
    Ответ написан
    1 комментарий
  • О прибыльной карьере в российской технологической индустрии?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Отвечу то же, что и россиянам, желающим переехать: Нужно как минимум быть существенно лучше среднего местного программиста, чтобы компенсировать работодателям проблемы с наймом иностранца. В остальном проблем не вижу, на рынке ИТ страны сильный кадровый голод.
    Ответ написан
    14 комментариев
  • Как разделить Cargo.toml на несколько файлов?

    vabka
    @vabka Куратор тега Rust
    Разделить Cargo.toml на несколько файлов нельзя.
    Разделять features на несколько штук я тоже не рекомендую - читать это будет сложно с учётом того, сколько фич в web-sys и как ты скорее всего будешь их добавлять

    В самом web-sys это автогенеренный код, но всё же:
    https://github.com/rustwasm/wasm-bindgen/blob/main...
    Ответ написан
  • Как в Linux дать права на чтение файла определенному пользователю?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Так на чтение или на изменение?
    Включить пользователей u1 и u2 в общую группу, дать этой группе нужные права на файл.
    Учтите, что некоторые программы, не перезаписывают файл при сохранении, а создают временный файл, удаляют текущий, затем перемещают временный под нужным именем. В таком случае надо давать права на изменение каталога, в котором находится файл.
    Ответ написан
    4 комментария