• Математически доказанная безопасность Rust - это как?

    Tyranron
    @Tyranron
    Процитирую humbug из комментов к недавней статье:

    Конкретно в https://people.mpi-sws.org/~dreyer/papers/rustbelt... формально доказывается, что система типов Раста, владение, заимствование и прочее — корректны. Доказывается, что программа безопасна, если написана на безопасном подмножестве Раст. Доказывается, что программа безопасна, если в ней есть вкрапления unsafe, в которых программист не допустил ошибки, UB.

    Кроме того, проект RustBelt на текущем этапе занимается формальной верификацией библиотеки std, но полная проверка требует времени. Поэтому библиотеку проверяют по кускам. Да, были найдены и исправлены 2 ошибки в unsafe коде (что показывает, что ребята делом занимались), тем не менее все эти thread, mutex, Arc/Rc формально безопасны.


    Собственно, сами математические доказательства смотрите в научных публикациях:
    RustBelt: Securing the Foundations of the Rust Pro...
    KRust: A Formal Executable Semantics of Rust
    K-Rust: An Executable Formal Semantics for Rust

    Сайт проекта RustBelt: plv.mpi-sws.org/rustbelt
    Ответ написан
    Комментировать
  • Как научится проектировать игровую логику?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Для каждого задания составляется свой граф.
    Определяются общие узлы между этими графами (если они есть), перекрёстные триггеры (также, при необходимости).

    У основного "бегунка" по графу (их может быть несколько!) есть:
    1. id основного/текущего задания и
    2. id узла на графе этого задания (следующая ожидаемая контрольная точка прогресса выполнения текущего задания).

    Вот эти 2 параметра - Вы всегда храните как текущее состояние игрока в отношении заданий.
    Ответ написан
    Комментировать
  • Как заставить Chrome не уменьшать громкость?

    iLeonidze
    @iLeonidze Автор вопроса
    xbooster.ru
    В общем - моя проблема решилась достаточно просто:
    1. Открываем свойства Микрофона. Во вкладке "Дополнительно" убираем галочку "Предоставить приоритет монопольного режима".
    2. Во вкладке "Прослушать" не должна стоять галочка "Прослушивать с данного устройства".
    3. В "Управление звуковыми устройствами" (Звук) во вкладке "Связь" выбираем "действие не требуется".

    Больше Chrome не посягает на громкость между своими окнами :)
    Ответ написан
    Комментировать
  • Ни кому не встречался задачник по Rust?

    @salvian
    Ответ написан
    Комментировать
  • VUEJS проверка авторизации без JWT и VUEX в роутере?

    @2perca
    Вот тут вы найдете ответ на свой вопрос с примерами кода. Если без JWT жить можно, хоть и грустно, то вот без VUEX в вашем приложении в дальнейшем будет тяжко, тк весь код запросу/обработке/etc. лежит в компонентах и как итог они разрастаются, что приводит к ухудшению читаемости и поддержки в целом.
    Ответ написан
    Комментировать
  • Каков статус языка Rust в данный момент?

    @freecoder_xx
    Rust развивается стабильно, новые возможности и исправления вводятся с каждым релизом раз в 6 недель. Замеченные баги тоже исправляются оперативно в нерегулярных минорных релизах. Иногда такая динамика развития даже может служить препятствием: многие "живые" библиотеки требуют новой версии компилятора, но не всякая компания способна быстро обновлять его на своих проектах.

    Инфроструктура вокруг Rust хотя и развивается, все равно еще остается сырой. Многие библиотеки, хотя и работают уже достаточно стабильно, все равно в реальном использовании требуют небольших доработок. Если вы готовы форкать на GitHub такие библиотеки и слегка дорабатывать под свои нужды, то я думаю у вас больше никаких особых проблем с использованием Rust в боевых проектах возникнуть не должно.

    Что касается веба - вот тут есть список актуальных компонентов: www.arewewebyet.org

    Какого-то единого сборника лучших практик использования Rust, насколько я знаю, пока нет. Много полезных советов есть в официальной документации (в так называемых Книгах), а также разбросано по разным отдельным статьям. Однако, существуют списки полезных статей, которые помогут найти среди них нужную. Например эти:
    https://github.com/ctjhoa/rust-learning
    https://github.com/brson/rust-anthology/blob/maste...

    В новых проектах Rust используется, и пока тенденция идет на расширение. Вот на этой странице вы можете посмотреть, какие компании используют Rust сейчас и для чего: https://www.rust-lang.org/en-US/friends.html

    Итак, если вы планируете использовать Rust в производстве, готовьтесь вот к чему:
    1. Довольно высокий порог входа в язык. Тут нет особой сложности, просто потребуется практика на языке и поначалу время на следование советам компилятора по устранению постоянно возникающих ошибок компиляции.
    2. Достаточно частые обновления компилятора по добавлению новых возможностей в язык. Это может приводить к тому, что нужная вам библиотека будет требовать свежую версию компилятора.
    3. Сыроватые библиотки. Вероятно, вам придется их слегка дорабатывать под себя.
    4. Rust упрощает сложное, но усложняет простое. Для совсем простых проектов, не требующих высокой производительности и серьезных доработок в будущем, возможно, Rust будет не лучшим выбором.
    Но что вы получите от использования Rust?
    1. Высокую производительность программ, автоматическое управление памятью без сборщика мусора.
    2. Высокую надежность и защищенность программ, устранение большого количества потенциальных проблем на этапе компиляции.
    3. Достаточно легкий и безопасный процесс рефакторинга и доработки программ, благодаря развитой системе типов.
    4. Развитую систему управления зависимостями проекта.
    5. Действительно хороший универсальный инструмент: Rust подойдет и для прототипирования, и для разработки, причем для любого типа программ (утилиты, настольные приложения, веб-приложения, мобильные приложения, встраиваемые системы). Хорошая поддержка пока еще есть не для всего, но на перспективу - это большой плюс.
    Ответ написан
    7 комментариев
  • Почему Windows-юзеры обычно держат окна приложений развёрнутыми на весь экран, а пользователи macOS — нет?

    У меня монитор 3440*1440, использую каждое окно на половину экрана, получается как два.
    На макоси начнем с того, что по дефолту окно вообще не разворачивается, а переходит в полноэкранный режим, но там с альтом вроде разворачивание идет как в винде на полный экран. Но так на маке я когда работал, то ставил утилиту shiftit, где можно было как в винде win+left чтобы слева расположить на половину экрана...

    Зависит вообще от задачи, например, тот же мессенджер удобнее оставлять маленьким окошком...
    Ответ написан
    Комментировать
  • Как можно защитить свой АПИ в SPA или SSR приложение?

    @kirill-93
    Вы зря заморачиваетесь. Ваш АПИ - это же просто данные, которые нужны для отрисовки страниц. То есть, если бы не SPA, то у вас все эти данные были бы сразу на странице.
    Вам просто не нужно ничего делать.
    Ответ написан
    Комментировать
  • Bootstrap-Vue - В чём фишка данного симбиоза?

    copist
    @copist
    Empower people to give
    Расскажите плиз о технологии, и чем развёрнутей, тем лучше.

    Вот захотел ты сделать сайт SPA или PWA с любимой тебе вёрсткой на базе Twitter Bootstrap и любимой библиотеки Vue. Сверстал. Поповеры не появляются, дропдауны не выпадают, модалки не открыватся, формы не валидируются, клики не работают.

    Оригинальный Twitter Bootstrap имеет поддержку интерактивных элементов на Javascript. Реализовано это на библиотеке jQuery. Если делаешь на Vue, придётся подключать ещё и jQuery, что лишняя библиотека на 100+ килобайт, что, конечно, не катастрофа (пока ты не на мобилке).

    Vue работает с состояниями привязывает данные к отображению, а jQuery работает с DOM и событиями. Это вопрос производительности. Работа JQuery начитается когда загружен и распарсен JS и HTML. Работа Vue начинается в тот момент, когда загружен и распарсен JS, то есть чуть раньше. jQuery модифицирует DOM на лету, перестраивая текущий документ. Vue работает с shadow DOM, а затем подсовывает уже готовую интерактивную страницу в пустой документ, что быстрее (разница в секунды на десктопе, десятки секунд на м...).

    Vue реализует компонентную парадигму. Куски страницы являются изолированными кусочками кода (HTML CSS JS), которые цепляются между собой динамически, а обмениваются данными через аттрибуты и события. Предположим, что вы решили следовать компонентной парадигме, тогда согласно вот такому примеру нужно будет увязать самостоятельно все интерактивные компоненты. Компонента-кнопка. Компонента-поле ввода. Компонента-форма. Компонента-контейнер. Получается около 50 компонент. Для некоторых надо будет написать логику на jQuery. Если посмотреть на код jQuery этих микрокомпонент, то он окажется несложный, его вполне можно переписать на Vue. Ну там класс заменить или клик отработать. Когда от кода jQuery не останется следа, его можно будет из проекта удалить.

    И вот получается Bootstrap-Vue

    На компоненты побили. От Jquery избавились. Написано в единой парадигме. Работает быстрее.

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

    Так же будет Не лишним оценить технологию: плюсы, минусы, стоит ли вообще с этим работать ...

    Это сам изучай и сравнивай. Навыки и опыт воздушно-капельным и через Internet не передаётся
    Ответ написан
    4 комментария
  • GoLang веб фреймворк Iris, кто пользовался?

    @ivahaev
    Программист, связист и просто хороший человек
    Его пишет довольно мутный тип, которые все PR отметает и комитит от себя. Кроме того, он замечен в банальном воровстве чужого кода и выдачей его за свой, конкретно в этом проекта.
    Выглядит ФВ не плохо, но от него "попахивает".
    Ответ написан
    2 комментария
  • Upwork - как подготовиться к тестам по JavaScript?

    vicodin
    @vicodin
    Имею некоторый опыт
    как выглядит условие, покажите скрин?
    может он имел ввиду что тех интервью нужно будет пройти
    Ответ написан
    22 комментария
  • Как удалить Adobe Flash Player встроенный в Windows 8.1?

    ElleSolomina
    @ElleSolomina
    HedgehogInTheCPP
    Тоже интересует этот вопрос, но уже применительно к 10.

    Как удалить по нормальному, т. е. чтобы оно не поставилось снова и более не обновилось без стрёмных костылей пока не нашлось. Но нашёлся способ как отключить, по крайней мере в IE, как в остальных местах - тоже не ясно.

    gpedit.msc

    Конфигурация компьютера
    Административные шаблоны
    Internet explorer
    Средства Безопасности
    Отключить Adobe Flash в браузере Internet Explorer и запретить приложениям использовать технологию Internet Explorer для создания экземпляров объектов Flash

    Дополнение: Написала батник для пусть и костыльного но надёжного удаления Flash Player.
    Суть такова: сперва удаляем все установленные версии, которые есть в списке установленных программ, а потом, с учётом того 32 или 64 битная система зачищаем под корень папки с исполняемыми файлами Flash Player.
    @echo off
    
    echo FlashPlayer secure cleanup begin...
    
    echo uninstall all previos version begin...
    
    wmic product where "name like 'Adobe Flash Player%%'" call uninstall /nointeractive
    
    echo uninstall all previos version end.
    
    echo extendent secure cleanup begin...
    
    if %PROCESSOR_ARCHITECTURE% == AMD64 (
    
    	set TARGET_PLATFORM=AMD64
    
    	rem take ownership
    	takeown /f "%SYSTEMROOT%\SysWOW64\Macromed\Flash\*.*"
    	
    	rem extend access
    	cacls "%SYSTEMROOT%\SysWOW64\Macromed\Flash\*.*" /E /T /G %UserDomain%\%UserName%:F
    
    	rem delete
    	del /q /f "%SYSTEMROOT%\SysWOW64\Macromed\Flash\*.*"
    	rd /s /q "%SYSTEMROOT%\SysWOW64\Macromed\Flash"
    	rd /s /q "%SYSTEMROOT%\SysWOW64\Macromed"
    	del /q /f "%SYSTEMROOT%\SysWOW64\FlashPlayerApp.exe"
    	del /q /f "%SYSTEMROOT%\SysWOW64\FlashPlayerCPLApp.cpl"
    
    ) else (
    	set TARGET_PLATFORM=Win32
    )
    
    rem take ownership
    takeown /f "%SYSTEMROOT%\System32\Macromed\Flash\*.*"
    
    rem extend access
    cacls "%SYSTEMROOT%\System32\Macromed\Flash\*.*" /E /T /G %UserDomain%\%UserName%:F
    
    rem delete
    del /q /f "%SYSTEMROOT%\System32\Macromed\Flash\*.*"
    rd /s /q "%SYSTEMROOT%\System32\Macromed\Flash"
    rd /s /q "%SYSTEMROOT%\System32\Macromed"
    del /q /f "%SYSTEMROOT%\System32\FlashPlayerApp.exe"
    del /q /f "%SYSTEMROOT%\System32\FlashPlayerCPLApp.cpl"
    
    echo extendent secure cleanup end.
    
    echo FlashPlayer secure cleanup end.


    P. S. В 8 и старше этот костыль придётся запускать после каждого обновления системы в котором будет Flash Player ибо система его будет ставить заново.

    P. P. S. Flash наконец то всё, ура!
    Ответ написан
    Комментировать
  • Генерация 1млн билетов со случайными уникальными ID

    Edro
    @Edro
    Попробуйте это со своими коэффициентами. Где-то придется хранить предыдущее сгенерированное число.
    Ответ написан
    Комментировать
  • Какова практика деплоя Golang проектов?

    @RidgeA
    собирать бинарник на продакшене - идея так себе.
    даже образ 1.9-alpine занимает 83 метра + будут зависимости в GOPATH

    Я делал следующим образом
    В GitLab CI создавалась задача на тесты проекта, сборку его в бинарник и создания docker образа FROM: SCRATCH, где находится ТОЛЬКО этот бинарник.
    На входе я получал образ размером с бинарник - без зависимостей в GOPATH и среды сборки - около 15 мб.

    Есть ньюансы для сборки такого бинарника, но в большинстве случаев ИМХО они не существенны.
    + недостатком такого подхода является то, что просто так в контейнер не залезешь и не выполнишь какую-то bash команду, т.к. там ничего нет вообще, кроме бинарника.

    вот статья. https://blog.codeship.com/building-minimal-docker-...
    Ответ написан
    Комментировать
  • Как создать уникальный буквенный id для каждой записи?

    Bahusss
    @Bahusss
    Python Master
    Попробуйте hashids.org, библиотека позволяет генерировать уникальные последовательности символов с заданным алфавитом для произвольных integer значений.
    Ответ написан
    Комментировать
  • Существуют ли программы или расширения для организации личного дашборда, информационного табло из разношерстных сервисов?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Вот, как раз для этих целей существует библиотека, разработанная мной.
    includeHTML
    • pure js
    • загрузка по HTML-тегу или через js в любой блок
    • система callback-ов
    • бесконечная автоматическая подгрузка вложенных в друг друга блоков
    • синхрон и асинхрон при выполнении загрузки
    • корректная работа с протоколом file:/// (т.е. можно с диска/флешки html-ку запустить и она будет работать)

    Простое описание: include() (аналог функции в PHP) на javascript.

    Создаём сетку разметки так, как необходимо и по клику вызываем загрузку новых информационных блоков в выбранную ячейку сетки разметки (layout) или сразу целыми блоками заменяем.
    Есть обработчик окончания загрузки блока: туда помещаем вызов для запроса данных.
    Сейчас - делаю загрузку различных типов файлов с реестром DOM-блоков, сохраняя простоту использования и понимания библиотеки.
    Буду благодарен за форк и лайк на гите!

    c43111450e404431bd55df71b237901c.jpg
    https://jsfiddle.net/no08Lj0w/2/


    PS: Случайно обнаружил, что подобная разметка сетки введена в AdSense от Google!
    Ответ написан
    32 комментария
  • Как открыть instagram при помощи phantomjs?

    @ArtemBlueberry Автор вопроса
    решение было в том, что надо было добавить ключи --ignore-ssl-errors=true --ssl-protocol=any
    Ответ написан
    Комментировать
  • Образцы игрового интерфейса - какие?

    5r1fj614-mini-metro-includes-everything-
    Mini Metro

    Для меня интерфейс — это то, ради чего я вообще игры покупаю. В основном люблю пазлы.
    Division вышел, судя по роликам там должен быть очень крутой HUD UI.
    Ответ написан
    Комментировать
  • Возможна ли переквалификация в разработчики после 30 без профильного высшего образования?

    s0ci0pat
    @s0ci0pat
    I'm Awesome
    без потери в заработной плате

    Нет! Смена профиля работы однозначно влечет за собой снижение заработной платы. Это не правило, поэтому возможны исключения. Для минимизации потерь, тебе требуется стать очень хорошим программистом.

    Создай себе подушку безопасности на полгода и вперед в джуны.
    Ответ написан
    9 комментариев
  • Чем может быть полезен C++ веб разработчику?

    onqu
    @onqu
    weasy
    Чтобы сделать свой браузер и наблюдать с попкорном, как смертные будут пытаться оптимизировать свои творения под него.
    Ответ написан
    1 комментарий