Задать вопрос
  • Как имитировать конкретное устройство Android в QEMU?

    opium
    @opium
    Просто люблю качественно работать
    эмулятором это не лечится: QEMU (goldfish/ranchu, тот что в Android Studio) гоняет виртуальную плату, а не Tensor G3, модем и TrustZone/KeyMint конкретного Pixel 8a. Даже Cuttlefish, ближе всего к реальному железу, тянет свои virtual HAL, а не копирует плату один в один. Если нужно просто софт погонять, бери AVD/Cuttlefish той же версии и arm64. А ядро, boot/vendor-разделы и загрузчик проверяй только на самом 8a: Google публикует заводские образы, но прошивка стирает данные и упирается в anti-rollback, так что перед экспериментами глянь актуальную инструкцию именно для 8a.
    Ответ написан
    1 комментарий
  • Как создать и использовать свою кодировку знаков?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Вопрос в том, как создать с ноля кодировку и установить её в систему, чтобы при создании текстового файла и при выборе кодировки, в которой этот файл будет представляться, в перечне присутствовала эта кодировка и отображала в тексте её знаки.

    На самом деле тут четыре задачи:
    1. Создать саму кодировку
    2. Создать файл описания кодировки в соответствующем формате — это и есть кодовая страница
    3. Создать шрифт для этой кодировки — для отображения символов
    4. Локализация клавиатуры — размещение ваших символов на клавиатуре

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

        Создать саму кодировку достаточно просто: в общем случае просто нумеруете каждый символ и ваша кодировка готова. В ОС Windows традиционно существует два основных вида кодировок: одно-байтовые и двух-байтовые. Соответственно, до 256 символов в первом случае и до 65535 символов во втором. Системное API поддерживает два вида кодировок: с суффиксом "A" (ANSI) и "W" (wide, Unicode-16). Так же существуют и другие виды кодировок: в половину байта — т.е. 7 бит, размером в 4 байта — юникод-32, есть даже гибридные, в которых символы могут занимать как один байт, так и больше. Это сегодняшний международный стандарт: utf-8.

        Теперь вам нужно сообщить системе, что есть такая кодировка. Деталей формата не знаю и как оно в целом работает тоже — просто быстро поглядел документацию. Так что тут вам предстоит самостоятельно выяснить все детали. Советую начать с официальной документации. Файлы кодировок хранятся по следующему пути: %windir%\System32\c_XXXX.nls. в формате nls и в виде списка в реестре по пути HKLM\SYSTEM\CurrentControlSet\Control\Nls\CodePage. Возможно что-то ещё потребуется. Вот тут вроде как есть редактор для кодовых страниц со всеми инструкциями: http://www.barrcentral.com/Help/Beps — но судя по всему редактор там идёт вместе со всем пакетом данного софта, т.к. на странице загрузок его нет отдельно, только весь пакет.
        Для стандартного алфавита этого уже достаточно и должно всё работать. В теории, конечно же. Как будет на практике — тут надо выяснять, что надо сделать ещё и где настроить. Например, для консольных и оконных приложений оно может работать по-разному.

        Для отображения символов какого-то нового алфавита вам потребуется шрифт. В целом шрифт создать очень просто: редакторов шрифтов полно. Шрифт по сути это список из двух пар: число и картинка символа. Есть два основных вид шрифтов: пиксельные и векторные. Пиксельные — это обычные картинки из стандартных пикселей для каждого размера символов. А вот векторные шрифты универсальны для всех размером: вместо пикселей математические функции, которые описывают линии символов.

        И последний шаг для вашего алфавита: локализация/раскладка клавиатуры. Тут всё просто: для этого используется Microsoft Keyboard Layout Creator. Инструкций в сети по нему тоже много — даже на хабре есть подробная инструкция с примерами. В целом там всё достаточно просто, но как в нём работать с новым алфавитом и кодировкой точно не скажу, т.к. я делал раскладку только для русского/английского и стандартных кодировок.

        В реальном мире всё несколько сложнее и для настоящей работы со своей кодировкой этого всего этого будет, скорее всего, недостаточно, т.к. нужна ещё поддержка со стороны ПО, которое будет использовать данную кодировку. Особенно, если она нестандартная или надо сделать что-то большее, чем просто напечатать символ на экране. Так что если какое-то приложение рассчитано на работу со стандартными кодировками, то при попытке использовать вашу кодировку в лучшем случае можно будет увидеть просто кракозябры, а в худшем — приложение банально не будет работать или падать с ошибкой.

    Как выглядят кракозябры?
    670d4c201254a086434124.png
    Ответ написан
    Комментировать
  • Как создать и использовать свою кодировку знаков?

    @ImagineTables
    Как создать и использовать свою кодировку знаков?


    1. Придумайте хорошую кодировку
    2. Убедите вашу целевую группу (весь мир?) её использовать.

    Каков вопрос — таков ответ.

    Могу дать совет по первому пункту. В Юникоде даже т.н. «фиксированные» кодировки фиксированы только по кодепоинтам, но НЕ по символам. Фактически, это затачивает Юникод под UTF-8, потому что нафига кому-то нужен UTF-32, если всё равно нельзя одним смещением в буфере получить адрес i-того символа. Исправьте это, оставив достоинства Юникода, и я серьёзно задумаюсь о переходе на вашу кодировку.

    Как создать и установить в систему Windows/Linux ASCII-расширеную или любую другую кодировку


    Вы исходите из того, что понятие «кодировка» универсальным образом абстрагировано в ОС. А это не так.

    В API винды функции, работающие со строками, дублированы с двумя суффиксами: A и W. Например, SetTextA(hWnd, buffer) будет считать, что buffer содержит текст в одной жёстко заданной кодировке, а SetTextW(hWnd, buffer) будет считать, что buffer содержит текст в другой жёстко заданной кодировке. Таким образом, используемые СИСТЕМОЙ кодировки ограничены двумя заданными. Чтобы добавить свою кодировку, винда должна была быть устроена так:

    HENCODING hEncoding = CreateEncoding(…тут колбэк или описание кодировки на декларативном языке…);
    auto buffer = …тут текст в вашей кодировке…;
    SetText(hWnd, hEncoding, buffer);


    Но это астронавтика. Поэтому добавить кодировки в СИСТЕМУ уже нельзя, а можно только на уровне приложений.

    Если нужно что-то типа схем трансляции NLS, которые в винде представлены в реестре, лучше написать конкретику.
    Ответ написан
    Комментировать
  • Как создать и использовать свою кодировку знаков?

    @rPman
    Создание кодировки в windows не доступно пользователям, обслуживается полностью компанией майкрософт.

    Есть документация в msdn по использованию, т.е. можно попытаться отреверсить, какие файлы и какие ключи реестра нужно добавить, что бы приложения хотя бы попытались это использовать.

    Само собой, приложения так же должны понимать эту кодировку.

    p.s. можно выбрать для себя range в unicode и пользоваться, для этого есть https://en.wikipedia.org/wiki/Universal_Character_...
    Ответ написан
    3 комментария
  • Как создать и использовать свою кодировку знаков?

    Daemon23RUS
    @Daemon23RUS
    Образовательный интерес.

    Кодировка - сама по себе особо то и не пишется, вот взбрело Вам в голову изобрести свою кодировку - изобретайте. Например решили будет 8 бит на это. Предположим Вы начали 0- пробел, 1- A, 2 - Б .... итд. Ограничено лишь Вашей фантазией, я в качестве примера привел русский, но это может быть к примеру трольий,
    пусть так и будет. Опустим момент с клавиатурой. Будем только документы смотреть. Заполнили вы таблицу соответствия отображаемым символам. Теперь у Вас есть кодировка. Назовите, как угодно Вы теперь можете составлять (нужна клавиатура) и смотреть (нужны шрифты) трольи документы в созданной кодировке. Это условно, следующий момент программа просмотра/редактирования. Но и на этом этапе уже можно утверждать что Вы создали кодировку. Как хранятся ваши фалы - как байты; без метаданных о кодировке.
    Отображение - только при правильной интерпретации (через iconv или редактор) (на примере Ubuntu)
    Шрифты Выбираются по Unicode-кодам после декодирования (Тут тоже момент про глифы, они должны быть, если символ уникален)
    Следующий этап - внедрить ее в ОС.
    Нужна тролья локаль (тут почитайте погуглите как и что устроено)
    Но один из компонентов явно связан, это LC_CTYPE (Какие байты считаются буквами. Как переводить в верхний/нижний регистр. Какие символы — пробелы, цифры и т.д.) и LC_COLLATE (Правила сортировки строк)
    Остается iconv. Для него потребуется написать модуль для glibc (модуль преобразования (.so-файл) )

    Все у Вас теперь своя тролья кодировка.
    Это обобщенное описание, не претендующее на истину в первой инстанции, но поможет Вам понять принцип. Ну и отсутствие практической пользы, только как академический интерес. Да и вопрос наверно должен звучать "как подружить экзотическую кодировку с ОС" и для каждой ОС будут свои методы.
    Ответ написан
    3 комментария
  • Как написать bat-скрипт для включения/отключения устройства?

    @dim5x
    ЗИ, ИБ. Помогли? Поблагодарите. Отметьте ответом.
    Без devcon:
    @echo off
    
    set "device_id=HID\MSFT0001&COL02\4&3B114B9D&0&0001"
    
    pnputil /enum-devices /instanceid "%device_id%" | findstr /i "Started" >nul
    
    if %errorlevel% equ 0 (
        echo Устройство ВКЛЮЧЕНО. Отключаем...
        pnputil /disable-device "%device_id%" >nul
    ) else (
        echo Устройство ВЫКЛЮЧЕНО. Включаем...
        pnputil /enable-device "%device_id%" >nul
    )
    
    pause
    Ответ написан
    Комментировать
  • Почему НЕ vim? Vim для серьезной разработки?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Это не вопрос, а размазывание соплей. "Ой мне сказали то, ой мне сказали сё, а скажите ещё чего-нибудь". Ну и закономерно получаете полную панамку ответов от специалистов, которые vim в глаза не видели, но спешат поделиться своим экспертным мнением.

    Это было бы вопросом, если бы было задано в форме "можно ли из вима сделать полноценную IDE?".
    Ответ - можно.
    Любых плагинов как грязи. Руководств масса, на том же Хабре. Пользователей - ну, не столько сколько IDE intellJ - но тоже прилично. Есть сообщества, где всегда можно спросить. Вот там и надо задавать вопросы. Причем конкретные, а не вида "ой мне пацаны сказали что круто, а теперь другие пацаны сказали что отстой". Ну правда английский может понадобиться.
    Ответ написан
    Комментировать
  • Как найти всплывающий элемент?

    DanArst
    @DanArst Куратор тега HTML
    Гриффиндор в моде при любой погоде!
    Если это повтор вопроса по поводу всплывающего тултипа, то можно сделать так:
    1) Найдите скрипт, который отвечает за его появление и посмотрите к какому событию он привязан, скорее всего что-то наподобие mouseover.
    2) Открываете DevTools и во вкладке Console запускаете следующий скрипт (селектор и событие замените на свои):
    //Если подключен jQuery
    $('#element_id').trigger('mouseover');
    
    //Если jQuery нет
    document.querySelector('#element_id').dispatchEvent(new MouseEvent('mouseover'));


    3) Во вкладке Elements находите ваш тултип и можете посмотреть его стили.
    Ответ написан
    1 комментарий
  • Какая книга интересно и чётко расскажет устройство компьютера на физическом уровне?

    Nekto_Habr
    @Nekto_Habr
    Чат дизайнеров: https://t.me/figma_life
    Энциклопедия профессора Фортрана
    Ответ написан
    Комментировать
  • Как выводить кириллицу в C (не C++)?

    Пропиши в main:
    setlocale(LC_ALL, "Russian");

    Также добавь библиотеку locale
    #include <locale.h>
    Ответ написан
    Комментировать
  • Какой компьютер выбрать для программирования?

    AgentSmith
    @AgentSmith
    Это мой правильный ответ на твой вопрос
    Для программирования не нужно никаких игровых версий, а достаточно даже ZX Spectrum или БК-0010, чем мы все в детстве и пользовались.
    А ноутбук или ПК для программирования - это уже фантастика!
    для того чтобы учиться программировать не нужна высокая частота и много памяти. А как раз наоборот, чем слабее комп, тем лучше ты поймёшь как комп работает
    Ответ написан
    8 комментариев
  • Какой компьютер выбрать для программирования?

    anton_reut
    @anton_reut
    Начинающий веб-разработчик
    В вопросе есть слово "программирование", а в тексте то и дело "игровой". Для программирования любой ноут подойдет, достаточно поставить ssd и будет летать, я так недавно оживил ноут которому уже 10 лет.
    А ты просто ищешь причину купить игровой комп.
    Ответ написан
  • Пролил воду на пк, что делать?

    VoidVolker
    @VoidVolker Куратор тега Компьютеры
    Dark side eye. А у нас печеньки! А у вас?
    При наличии прямых рук:
    1. Все полностью разбирается
    2. Тщательно промывается дистиллированной водой в тазике и еще раз проливается потоком (продается в любом автосервисе бутылками, берите с запасом литров 10) - если где налет образовался, то можно аккуратно мягкой зубной щеткой потереть
    3. Разъемы продуваются баллоном с воздухом
    4. Оставляется сушится в теплом помещении на два-три дня
    5. Еще раз разъемы продуваются баллоном с воздухом на всякий случай - могут капли остаться в труднодоступных местах

    Далее собираем и смотрим - работает или нет. Если не работает - то надо уже смотреть что именно не работает и как именно. На промывку ноута у меня уходит примерно 4-5 литров воды.
    Ответ написан
    Комментировать
  • Может ли ноутбук не включаться из-за пережимания ЦП системой охлаждения?

    xez
    @xez Куратор тега Железо
    TL Junior Roo
    «Пережимает» вряд ли, а вот закорачивать какие-то контакты - может
    Ответ написан
    Комментировать
  • Как отсортировать массив, имеющий текст с числами в JS?

    @GrayHorse
    const {compare} = new Intl.Collator(undefined, {
        numeric: true
    });
    const array = ["x32-Sar", "x2-Far", "x1-Tar", "x11-Har"];
    array.sort(compare); // ["x1-Tar", "x2-Far", "x11-Har", "x32-Sar"]
    Ответ написан
    Комментировать
  • Слетает ли гарантия с ноутбука при переустановке ОС?

    @rPman
    Нет, но на гарантию может повлиять к примеру разгон/изменения вольтажа (процессора или видеокарты) плюс смена прошивки видеокарты (при обновлении прошивки биоса материнки на штатный - нет), на это иногда закрывают глаза но формальный повод у сервиса имеется
    Ответ написан
    Комментировать
  • Как узнать копировался ли файл на съёмный носитель в Windows?

    shabelski89
    @shabelski89
    engineer
    можно как минимум посмотреть реест на подключение флешек - примерно описано тут
    Ответ написан
    Комментировать
  • Как узнать копировался ли файл на съёмный носитель в Windows?

    Jump
    @Jump Куратор тега Windows
    Системный администратор со стажем.
    Нет.
    Хотите контролировать - настраивайте аудит, тогда такие действия будут записаны в системный лог.
    Ну и учитесь парсить логи, для отлова таких ситуаций, или можно в планировщике задачу нарисовать, которая будет при появлении такого события в логе, выполнять какое-то действие, например слать почту.

    А вообще если не хотят утечки данных - запрещают выход в сеть фаерволом, и отключают возможность использования съемных носителей.
    Ответ написан
    Комментировать
  • Как узнать копировался ли файл на съёмный носитель в Windows?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Без предварительных действий нет. Если настроить аудит доступа то типа можно, но мусора будет немеряно.
    Есть программы DLP например у Касперского они мониторят подозрительные действия
    Ответ написан
    Комментировать
  • Как присвоить индивидуальные значения пользователя глобальным переменным?

    @twistfire92
    Python backend developer
    Это возможно сделать без БД, но какой в этом смысл? После перезапуска бота все данные слетят. Плюс при большом количестве данных у вас просто разрастется занимаемый объем в ОЗУ.
    Лучше все сделать через базу данных. Это корректнее с архитектурной точки зрения. Если переживаете за скорость обработки запросов, то тут все зависит от кода и архитектуры. Можно банальную выборку из таблицы в 100 строк с последующей обработкой написать настолько хреново, что задержки будут сильно заметны. А можно сделать хорошо, тогда обработка сотни тысяч строк БД будет незаметна для пользователя.

    Так что если вы переживаете за быстродействие, лучше думайте над архитектурой программы, читайте книги по разработке, экспериментируйте.
    Ответ написан
    1 комментарий