Задать вопрос
  • Почему аргумент не видит функцию, как тип функция?

    axifive
    @axifive
    Software Engineer
    Нужно обернуть вызов функции в лямбду: repeatN(5, { printHello }) или передать функцию по ссылке repeatN(5, ::printHello)
    Ответ написан
    Комментировать
  • Почему в лямба функции нельзя называть аргументы любым названием?

    На вопрос уже ответили, val это зарезервированное слово. Но если по какой-то причине хочется, чтобы переменная называлась именно так и никак иначе, можно обернуть название в обратные апострофы:
    { `val` -> `val` > 0}) }

    Тогда компилятор примет такое название.
    Ответ написан
    Комментировать
  • Безопасны ли бесплатные ВПН сервисы?

    @Everything_is_bad
    Безопасны ли бесплатные ВПН сервисы?
    пока ты не начнешь понимать, что из себя представляет твой трафик, что могут получить промежуточные узлы, прогоняющие через себя твой трафик, любые ответы для тебя бесполезны. А так, во общем случае, ответ будет от полностью безопасным, до всё плохо.
    Начнем с простого, твой https трафик они не видят, но видят много другое, например, dns запросы, ip адреса всех твоих запросов, мета информацию кучи запросов, весь http трафик (хотя сейчас он уже большая редкость).
    Ответ написан
    Комментировать
  • Безопасны ли бесплатные ВПН сервисы?

    @Drno
    да \ нет \ смотря что Вы подразумеваете под "безопастностью"

    если вопрос конкретно по Планете - то ей вполне можно доверять.
    Ответ написан
    Комментировать
  • Безопасны ли бесплатные ВПН сервисы?

    @maksam07
    Зачем делают ВПН бесплатным
    Чтобы при помощи него рекламировать свои услуги, или всторенной рекламы зарабатывать деньги. Или продавать данные клиентов.

    можно ли доверять таким продуктам

    Зависит от пользовательского соглашения, но чаще всего - не стоит.
    Ответ написан
    6 комментариев
  • Безопасны ли бесплатные ВПН сервисы?

    Безопасность - понятие растяжимое, но твои данные как минимум точно будут продавать рекламодателям (в этом никаких сомнений быть не может. Никакой крупный сервис без рекламы не может бесплатно свои услуги предлагать. Данные платных подписчиков планеты тоже с очень большой вероятностью продают)
    Как уже сказали - твой https трафик зашифрован, так что пароли твои врядли куда-то утекут.
    Ответ написан
    Комментировать
  • Как в командной строке сохранить полный путь к файлу для вставки его в другом месте при смене директории?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    вот простой вариант
    создаём две bash функции cp1 и cp2
    первая сохраняет полный путь к файлу
    вторая копирует файл по сохранённому пути в текущую(.) директорию
    cp1(){ echo "$PWD/$1" > /tmp/cp1;}
    cp2(){ cp "$(cat /tmp/cp1)" .;}

    чтобы каждый раз в новой сессии не прописывать можно закинуть их в конец файла .bashrc(если используете bash)
    использование банальное
    cp1 ФАЙЛ
    cd куда-то/там
    ...
    cp2

    для mv всё будет аналогично
    Ответ написан
    Комментировать
  • Как в командной строке сохранить полный путь к файлу для вставки его в другом месте при смене директории?

    @pfg21
    ex-турист
    Сохрани в /run или /tmp.
    И потом оттуда скопируй в необходимую директорию
    Ответ написан
    2 комментария
  • Как в командной строке сохранить полный путь к файлу для вставки его в другом месте при смене директории?

    SignFinder
    @SignFinder
    Wintel\Unix Engineer\DevOps
    Сохранить нужный путь в переменную и использовать ее для перехода\сохранения.
    Ответ написан
    Комментировать
  • Как в командной строке сохранить полный путь к файлу для вставки его в другом месте при смене директории?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Смысл проблемы непонятен.
    Даже если "путь далёк", то чтобы "сменить директорию в терминале" всё равно придётся набрать его весь. Ну так тогда можно и сразу и набрать его. В том смысле что нет разницы, набирать ли "длинный путь" в cd или в mv

    Но если отвечать на вопрос буквально, то
    в исходной папке пишем pwd
    копируем вывод в буфер
    переходим в другую папку
    пишем mv пробел
    вставляем скопированный путь
    добавляем к нему имя файла
    пишем пробел точка
    нажимаем ентер

    Ну и напомню, что при построении "длинных путей в терминале" очень помогает автодополнение по кнопке TAB
    Ответ написан
    3 комментария
  • Как в командной строке сохранить полный путь к файлу для вставки его в другом месте при смене директории?

    Vindicar
    @Vindicar
    RTFM!
    Если задача всплывает часто, освой Midnight Commander или иной двухпанельный файловый менеджер. Он запускается в терминальном режиме и прекрасно подходит для таких ситуаций.
    Ответ написан
    Комментировать
  • Почему в лямба функции нельзя называть аргументы любым названием?

    axifive
    @axifive
    Software Engineer
    val зарезервированное слово, которое не может выступать как идентификатор. (Находится в секции Hard keywords)

    The following tokens are always interpreted as keywords and cannot be used as identifiers:


    Но другие из секций Soft keywords и Modifier keywords вполне могут
    Ответ написан
    Комментировать
  • Как присвоить переменной 2 типа данных?

    xez
    @xez
    TL Junior Roo
    Вам просто не нужна промежуточная переменная:
    if (number % 3 == 0) {
    ...
    }


    Как присвоить переменной 2 типа данных?

    Никак
    Ответ написан
    Комментировать
  • В чём смысл при типизации числа в Float в конец добавлять F?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    В котлине числовые значения разных размерностей являются разными типами и отсутствует неявное приведение одного типа к другому. Соответственно, если вы не укажете f в конце числа, то получите присвоение константы типа Double переменной типа Float, то есть ошибку.
    Ответ написан
    8 комментариев
  • Как реализовать свой простой стейт менеджер для реакта?

    В догонку к комментарию:
    Сама имплементация
    import { useState } from 'react'
    
    class Signal<T> {
        #value: T
        #dispatchers: Set<React.Dispatch<React.SetStateAction<T>>> = new Set()
        constructor(value: T){
            this.#value = value
        }
        get current(): T {
            return this.#value
        }
        set current(value: T){
            if(this.#value !== value){
                this.#value = value
                for(const dispatcher of this.#dispatchers){
                    dispatcher(this.#value)
                }
            }
        }
        subscribe(dispatcher: React.Dispatch<React.SetStateAction<T>>): void {
            if(!(this.#dispatchers.has(dispatcher))){
                this.#dispatchers.add(dispatcher)
            }
        }
    }
    
    const createSignal = <T>(value: T): Signal<T> => new Signal(value)
    
    const useSignal = <T>(signal: Signal<T>): Signal<T> => {
        const [, dispatcher] = useState(signal.current)
        signal.subscribe(dispatcher)
        return signal
    }
    
    export { createSignal, useSignal }

    Экспорт сигналов
    import { createSignal } from '../lib/signals.ts'
    
    export const counter = createSignal(0)

    Компонент, который импортирует и использует сигнал
    import { useSignal } from '../lib/signals.ts'
    import { counter } from './shared_signals.ts'
    
    export const Button = () => {
        const _counter = useSignal(counter)
        return (
            <button onClick={ () => ++_counter.current }>
                Count is { _counter.current }
            </button>
        )
    }

    Клиентский скрипт
    import { hydrateRoot } from 'react-dom/client'
    
    import { Layout } from './Layout.tsx'
    import { Button } from './Button.tsx'
    
    hydrateRoot(
        document,
        <Layout>
            <Button/>
            <Button/>
            <Button/>
            <Button/>
            <Button/>
            <Button/>
            <Button/>
            <Button/>
            <Button/>
            <Button/>
        </Layout>
    )

    При клике на любую кнопку - используется сигнал, который ты создаёшь один раз, экспортируешь его и можешь использовать где угодно, в любом компоненте. Примерно так эти стейт-менеджеры и работают. Они держат состояние/состояния вне компонентов. А работает это из-за самой природы импортов/экспортов. Если ты экспортируешь, например так: export const obj = { count: 0 }, а затем импортируешь этот obj в другом модуле и увеличиваешь count - то этот count будет увеличен в контексте всех модулей, которые его импортировали, либо будут импортировать.
    Ответ написан
    Комментировать
  • Почему 2 или более модулей оперативной памяти быстрее, чем 1?

    @Drno
    Добавлю к ответам выше - именно поэтому в игровые и рабочие ПК ставят минимум 2 планки оперативки, всегда.
    на 1 планке игры \ тяжелый софт будет работать сильно медленее
    Ответ написан
    Комментировать
  • Почему 2 или более модулей оперативной памяти быстрее, чем 1?

    Afranius
    @Afranius
    Из говорящих дольше живут те, что говорят меньше.
    Потому что два модуля в паре работают в режиме Dual Mode, четыре тоже, а на некоторых платах даже Quad Mode (хотя плат с таким режимом для четырёх модулей пока мало).
    А одна планка только в Single Mode. Связано с особенностями реализации доступа к памяти.
    Суть такая, что процессор читает программы и данные сразу из двух модулей памяти, то есть вдвое быстрее... теоретически. На практике вдвое не получается. но прирост в 15-30 процентов вполне реален.
    Ну... Это когда память - не самое узкое место вычислительной системы. А когда проц, например.
    Зависит от конкретной матери, конкретного проца и конкретных модулей памяти.
    Практически все тесты - синтетические, то есть приближены к идеальным условиям.
    Ответ написан
    2 комментария
  • Почему 2 или более модулей оперативной памяти быстрее, чем 1?

    Из-за двух и реже четырёх-канального режима.
    Если твоя МП и процессор поддерживают двухканальный режим (а это считай что все актуальные процессоры), у тебя два одинаковых модуля (одинаковая частота, тайминги, объём итд), и ты корректно их вставил в МП (смотри в инструкцию), то тогда будет использоваться двухканальный режим, который по сути в 2 раза умножает пропускную способность памяти.
    Ответ написан
    Комментировать
  • Ноутбук full hd и монитор 2k какое разрешение выдаст?

    xez
    @xez
    TL Junior Roo
    Зависит от видеокарты по большей части.
    У вас процессор со встроенной видеокартой: https://www.amd.com/en/products/processors/laptop/...

    DisplayPort Max Refresh Rates (SDR)
    3840x2160 @ 60Hz , 3440x1440 @ 144Hz , 2560x1440 @ 180Hz , 1920x1080 @ 240Hz


    Ещё зависит от версии HDMI/dp - тут надо смотреть конкретную модель ноутбука, но обычно версия порта адекватна производительности видеокарты.

    Ещё зависит от кабеля HDMI (при подключении таким проводом). Старые (старой версии) HDMI кабели не могут обеспечить нужную пропускную способность. У dp, несколько я знаю, такой проблемы нет.
    Ответ написан
    Комментировать
  • Ноутбук full hd и монитор 2k какое разрешение выдаст?

    @Drno
    Если в дублировании экранов - то исходя из меньшего разрешения
    Если на каком то 1 экране - то по идее по его полному разрешению без проблем
    Ответ написан
    2 комментария