• Как работает static final?

    @rPman
    static по определению, без каких либо final и прочего, это поле класса а не экземпляра, сколько бы ты экземпляров объекта не создал, переменная будет одна и та же. Ты можешь (будешь) обращаться к этой переменной даже не имея экземпляра, т.е. ClassName.static_member_name, но конечно синтаксически ты можешь обращаться к статическому члену и через экземпляр объекта object_variable.static_member_name.

    final делает эту переменную - константой, т.е. мало того что эта переменная для класса будет в одном экземпляре, она не может быть изменена, а значит компилятор ее может оптимизировать до буквально ее отсутствия (например скалярные типы легко могут подставляться по мере использования в коде)
    Ответ написан
    Комментировать
  • Как передать props из child в parent во vue compostion api?

    wapster92
    @wapster92
    Пропсы не передаются в родителя, только от родителя к ребенку. Можно передавать данные в родителя через события.

    const emit = defineEmits();
    
    const setData = (value) => {
      emit('set-data', value)
    }


    Снаружи слушаешь у компонента @setData

    Еще можно биндом слотов, но там передаются данные только в template внутри блока компонента.
    Так же можно передавать данные через стор.

    Все это описано в документации, ознакомься хотя бы раз внимательно со всем функционалом vue
    Ответ написан
    Комментировать
  • Каким образом проходит ожидание на сервере через подтверждение по почте?

    @maksam07
    Почитал комменты и понял, что лучше иметь немного другую модель.
    Есть к примеру таблица:
    CREATE TABLE users (
        id INT AUTO_INCREMENT PRIMARY KEY,
        username VARCHAR(255) NOT NULL,
        email VARCHAR(255) NOT NULL,
        password_hash VARCHAR(255) NOT NULL,
        registration_status TINYINT(1) NOT NULL DEFAULT 0,
        registration_token VARCHAR(255) NOT NULL,
        created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
    );


    При регистрации, устанавливаем "registration_token", к примеру, через uniqid() или openssl_random_pseudo_bytes() и на почту отправляем специальную ссылку с, к примеру, гет запросом: domain.com/?email="email"&token="registration_token"
    Пользователь переходит по ссылке, в бд идет проверка, есть ли такая запись и меняет "registration_status"=1
    Почему этот вариант лучше? Потому что так ты не сможешь обойти сообщение с почты, т.к. не будешь знать, какой токен тебе выдался для подтверждения и будет недостаточно просто 1 раз увидеть пример подтверждающей ссылки, чтобы новые аккаунты активировать по определенному шаблону ссылки.

    А по "created_at" отслеживаешь старые аккаунты и удаляешь, если потребуется.
    Ответ написан
    Комментировать
  • Как использовать тег b?

    sergey155
    @sergey155
    Тег <b> используется для придания тексту полужирного начертания без изменения его семантики. Однако с течением времени рекомендуется использовать более семантически правильные теги для форматирования текста, такие как <strong> для выделения важного текста или <span> с применением CSS для стилизации.

    Из двух примеров, которые вы предоставили, правильнее будет второй вариант, так как тег <b> предназначен для применения к содержимому внутри других тегов, в том числе к тексту внутри тега <p>. Однако не забывайте, что использование тега <b> не рекомендуется для стилизации текста в документах HTML5, поскольку он не несет никакой семантической нагрузки.

    Вот пример правильного использования тега <b>:

    <p>Этот текст <b>полужирный</b>.</p>

    Если вы хотите стилизовать текст, важно помнить о семантике. Например, если текст действительно является важным, вы можете использовать тег <strong>. Если вам нужно изменить внешний вид текста для целей стилизации, лучше использовать CSS
    Ответ написан
  • Как добавить в каждый объект массива новое свойство?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Ответ drawnofmymind не отвечает на заданный вопрос "как добавить", т.к. создаёт полностью новый массив с полностью новыми объектами.

    В некоторых случаях это предпочтительнее(когда необходима иммутабельность), но ответ именно на заданный вопрос куда проще:
    items.forEach(item => item.alert = false)
    Ответ написан
    1 комментарий
  • Какие символы разрешены в email?

    vabka
    @vabka
    Токсичный шарпист
    Список формально разрешённых символов тебе ничего не даст, тк по спецификации - это практически все печатаемые ascii-символы + ещё какие-то международные символы из юникода, но практически никто на 100% спецификации не следует.

    Лучше ограничить себя тем, что может отправить твой почтовый сервер:
    1. Сделай обязательным наличие собаки и каких-то (любых) символов до и после неё.
    2. Сделай попытку отправить письмо на эту почту и обязуй пользователя перейти по ссылке из письма для продолжения регистрации.
    Ответ написан
    Комментировать
  • Как отправить фото с бэкенда на фронтенд вместе с другими данными?

    @rPman
    не стоит упаковывать бинарные данные с другими, делай два отдельных запроса, фото как файл, а метаданные как другой файл, сериализованым тем что тебе удобно, например текстовый JSON (поддерживается как nodejs так и браузером), JSON.stringify превратит объект в строку, а JSON.parse соберет из него объект
    Ответ написан
    1 комментарий
  • Насколько законно для крупной компании пробивать человека по почте?

    GavriKos
    @GavriKos
    Если они использовали данные о вас из открытых источников - то ничего незаконного нет.
    И в целом такого термина как "пробили" в юриспруденции нет.

    По сути вы насрали себе же в штаны, а теперь пытаетесь оценить насколько другому плохо. Извинитесь перед ними, да и все.
    Ответ написан
    Комментировать
  • На чем пишутся современные десктопные приложения?

    mayton2019
    @mayton2019
    Bigdata Engineer
    java - "не подходит для десктопа"

    На платформе Java (Groovy, Kotlin) написана среда разработки Jetbrains Idea.
    Правда есть у меня подозрение что из библиотек там использован не Swing а SWT
    но я уж не помню я слишком давно этот вопрос изучал. За много лет многое могло поменятся.
    SWT не слишком кроссплатформенный.

    На Java написан менеджер закачек Vuze (Azureus) и такая векторная рисовалка как Yed
    которой я пользуюсь иногда.

    Еще OracleDeveloper, Beaver, SOAP-UI, и много всяких тулов программисткого толка.

    По поводу JavaFX но я честно говоря не видел чтоб кто-то
    активно что-то графическое на нем разрабатывал. Скорее всего это была наивная попытка
    исправить недостатки Swing. И сделать его ... более мультимедийным чтоли.

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

    Для окон остается что-то очень хардовое типа Photoshop, 3dMax, AutoCad где можно грузить на 200%
    клиентский CPU и ты реально будешь хотя-бы чувствовать пользу от такой отдачи.

    Все где формочки и гриды - потеряло рентабельность. Его дешевле делать на вебе т.к. разработчик
    веба стоит дешевле и внести резкое изменение в функционал очень легко.

    Поэтому не звучит вопрос что на Java десктопы не пишут. А их щас реально уже НИ НА ЧЕМ не пишут.
    Даже на С++. Реально только игры и редкие приложения типа там 1С или какие-то клиент-банки.
    Ответ написан
    7 комментариев
  • Почему выдаёт ошибку textarea.focus is not a function?

    yarkov
    @yarkov Куратор тега JavaScript
    Помог ответ? Отметь решением.
    С чем она связана?

    С попыткой копипастить код без понимания что там написано. Вы у строки пытаетесь метод вызвать. Если переменная называется textarea, то это не значит, что у неё есть метод focus.

    Задача: написать div, который при клике превращается в textarea, а при blur обратно в div.

    А точно ли задача звучит именно так? Может вам нужна возможность редактировать текст в теге div, а не превращать его в текстовое поле? Тогда вам просто <div contenteditable="true">Какой-то текст</div> подойдёт.

    <input type='textarea'>

    А это вообще шедевр ))
    Ответ написан
    Комментировать
  • Нужно ли снова устанавливать Node.js для каждого нового проекта?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Попробую объяснить простым языком.

    0. Каждый проект по умолчанию имеет свои локальный пакеты (библиотеки), которые самостоятельно устанавливаются в корневую директорию node_modules, они устанавливаются на основе файла проекта package.json (инициализация).

    Предположим, что Вы не используете контейнеризацию, то:
    1. Ноду необходимо ставить глобально, например 18 версии. Что такое глобально? В таком случае, все Ваши проекты NodeJS смогут использовать эту ноду, хотя нода при этом не будет находиться локально ни в одном из Ваших проектов.
    2. Если все Ваши проекты используют исключительно ноду 18 версии, то дополнительную ноду ставить не требуется.
    ---
    3. Если у Вас проекты используют разные версии ноды, то рекомендую с нодой работать не на прямую, а через nvm (установка/удаление/переключение).
    ---
    4. Если Вы используете контейнеризацию, то обычно, нода+проект ставится в каждый контейнер.
    Ответ написан
    Комментировать
  • Что делать, если начальство запрещает публиковать код на github?

    vabka
    @vabka
    Токсичный шарпист

    1. Как тогда другие программисты имеют свое портфолио?

    Свои проекты и вклад в проекты с открытым исходным кодом - это вариант раз.
    Или не имеют - это вариант два.

    Портфолио на гитхабе - опциональная штука, которую может мельком один работодатель из десяти глянет.
    Хороший гитхаб не заменяет интервью. А при хорошем прохождении интервью - гитхаб легко игнорится.
    (Если спросили - просто говори что был занят рабочими задачами и не до пет проектов было)

    2. Что именно нужно публиковать на гитхаб? Весь проект или именно то, что внес лично я?

    Не надо вообще публиковать то, на что ты не имеешь права. Код, который ты написал для заказчика принадлежит заказчику.
    Если ты его опубликуешь - это будет очень жирный красный флаг для других работодателей, что на работу тебя брать нельзя.


    3. Я правильно понял, что у меня не остается выбора как делать свои личные проекты и загружать их на GitHub?

    Повторюсь, что ты можешь и не делать их вообще.
    У большинства разработчиков - гитхаб это просто помойка, в которой ничего интересного нет.


    4. Тогда что если я делаю игру с другом? Как в будущем работодатель поймет что именно из проекта сделал я?

    Работодатель не будет это смотреть скорее всего.
    Ну и ты можешь на словах описать, что делал - автор же в коммитах написан.

    Часть проекта ценности вообще иметь не будет

    5. Что будет если загрузить на гитхаб проект, ну или ту часть, которую делал я, наперекор начальству, и скрыть его от посторонних, а потом перед собеседованиям открыть?

    Читай п2. Тебе скорее всего отказ дадут, тк никому не нужен разраб, который сливает защищённый код.
    Ответ написан
    2 комментария
  • Как начать учить программированию детей начальной школы?

    @basili4-1982
    Это вообще очень сложная тема, дети учатся во время игр. Но как в игровой форме передать знания носящие чисто абстрактный характер. Мне сложно представить. Для начала стоит научить детей простым концепциями, ветвления, циклы. Далее стоит научить их разбивать что то большое на мелкие части. А дальше как то в пихать всякие солиды, драи кисы и прочее.
    Ответ написан
    2 комментария
  • Где найти бесплатный работающий хостинг для одностраничника?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Ответ написан
    Комментировать
  • Какой дистрибутив Linux выбрать для FullStack .NET Develop?

    Adamos
    @Adamos
    На машине какого цвета лучше ездить на работу летчиком?

    Вроде бы довольно очевидно, что под ковыряние в ДотНетах специально не приспосабливался никакой Линукс.
    И столь же очевидно, что поставить сервер БД и запускать Java-IDE - можно на любом Линуксе.
    Критерии выбора перпендикулярны этому самому выбору.
    Ответ написан
    Комментировать
  • Имеет ли смысл хранить refresh-токены?

    Это слишком общий вопрос.

    В целом, хранить сами токены не стоит ни в каком случае, для сравнения всегда достаточно хранить хеш.

    В случае если вы используете JWS, хранение токенов может потребоваться чтобы иметь возможность отозвать токены при завершении сессии пользователем. Обычно хранится не сам токен, и даже не хеш, а идентификатор сеанса. При этом можно хранить либо список активных сессий либо наоборот список отозванных (в течении времени жизни рефреш токена). Фактически это убивает все преимущества JWS, но другого способа завершить сеанс нет, это глобальная проблема JWS. Поэтому использовать JWS для рефреш токенов в целом не очень разумно.

    Про запрет повторного использования вам ответили, но в целом такой запрет является опциональным, в большинстве реализаций OAuth2 новый рефреш не возвращается и старый токен остается действительным.

    В случае если вы не используете JWS, а генерируете случайные токены, вам в любом случае надо их хранить (точнее их хеши), т.к. вы будете сравнивать переданный токен с хранимым.
    Ответ написан
    9 комментариев
  • Имеет ли смысл хранить refresh-токены?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Refresh-токены хранят для проверки на повторное использование. При первом использовании ставится пометка, при попытке повторного использования блокируются все refresh-токены пользователя. При следующем обновлении с любого клиента данного пользователя потребуется полная аутентификация. Можно хранить не весь токен, а только uid токена и id пользователя.
    Ответ написан
    Комментировать
  • Что использовать для чтения технической литературы?

    vabka
    @vabka
    Токсичный шарпист
    Как мне кажется, обычные читалки не подойдут, т.к не дает возможности быстро листать страницы, перемещаться от начала главы, к концу. Также хотелось бы иметь возможность оставлять пометки во время чтения.

    Для того чтобы быстро перелистывать главы существует содержание.
    Многие электронные читалки (в тч приложения на телефон/планшет) позволяют делать свои пометки и закладки.

    Ну и замечательно было бы, чтобы устройство щадяще относящее к зрению

    Ну тут тебе одно из двух выбирать: либо щадяще к зрению, либо экран как на айпаде.

    В принципе ты и так почти весь день смотришь в монитор, так что врядли планшет какие-то дополнительные проблемы создаст.

    Кмк не обязательно брать именно ipad - для чтения подойдёт любой планшет
    Ответ написан
    Комментировать
  • Какой самый лёгкий и безопасный способ держать пользователя авторизованным?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Опять не подходит потому что куки могут украсть.
    Откуда вы такие специалисты по безопасности беретесь?..

    Вопрос остаётся - как реализовать нормальный и безопасный способ для такой функции, чтобы больше не приходилось использовать другие варианты после каждой очередной жалобы на взлом?
    Взлом через уведенную куку входит в топ 5 малореальных сценариев взлома, если у вас есть хоть какая-то защита от XSS.

    Хранить IP последнего входа в аккаунт? Идея неплохая, но если каким-то магическим образом БД взломают, то все айпи попадут нехорошим людям.
    Оу, вас это больше всего расстраивает? Учитывая что 80% траффика сейчас идет через мобильные сети, айпи будет разниться при каждой сессии авторизации. И в данном случае вероятность такого взлома вы почему-то оцениваете практически как "магию", в то время как доступ к кукам пользователя у вас на уровне "ну, это точно случится, и скорее всего раньше, чем позже, любой может там гулять как у себя дома"...
    Ответ написан
    2 комментария
  • Как бороться с race condition при обращении к REST API во Vue?

    Aetae
    @Aetae Куратор тега Vue.js
    Тлен
    Просто не давть пользователю повторно тыкать там, где это вызовет повторный запрос, пока идёт загрузка текущего?

    Но если хочется быть ленивым - можно просто обернуть запросы в leading debounce-promise.

    Все эти thunk и saga - полная ересь, порождённая богомерзким redux.
    Ответ написан