Задать вопрос
  • Общие шрифты для всех систем?

    @Mercury13
    Программист на «си с крестами» и не только
    Таковых в принципе нет. На открытой системе открытые шрифты, на проприетарной — свои проприетарные. К тому же есть устаревшие версии ОС, на которых набор шрифтов ýже.

    У меня на рабочей 10-ке Source Sans Pro нашёлся. Систему ставил не я, шрифт явно гугловский, и есть подозрение, что его поставили вместе с Хромом. На домашней 7-ке, которая никогда с Хромом не контактировала, скорее всего, не будет.

    А на Андроиде список шрифтов ещё и зависит от браузера. На 8,9" FullHD единственный браузер, на котором хоть что-то видно,— это Лисичка, и там шрифт немного другой.
    Ответ написан
  • Существует ли какой-нибудь алгоритм склонения существительных во множественном числе?

    @Mercury13
    Программист на «си с крестами» и не только
    Для 98% существительных — есть, и для этого копай шаблоны Викисловаря. Правда, так просто, по одному только слову «автомобили», нельзя, ведь тупая машина никак не поймёт, что «вижу автомобилев» — это вдвойне неверно (не угаданы группа и одушевлённость).
    Надо задать:
    • склонение (первое / второе / третье / разносклоняемое / несклоняемое);
    • группу склонения (десятка полтора на каждое склонение);
    • одушевлённость (влияет на дательный и винительный падежи, в зависимости от склонения).
    Ответ написан
    3 комментария
  • Есть бинарные дерево поиска в С++?

    @Mercury13
    Программист на «си с крестами» и не только
    Именно так работает стандартный контейнер std::map.
    Ответ написан
    Комментировать
  • Есть несколько способов создания единственного экземпляра класса. Есть ли смысл использовать в многопоточной среде второй вариант (см. в теме)?

    @Mercury13
    Программист на «си с крестами» и не только
    Первый-то создаёт, однако…
    • Если во время создания напросится другой поток, будут созданы два экземпляра. В «не-мусорных» языках второй экземпляр будет «висеть» и его никак не уничтожишь.
    • При определённом устройстве среды исполнения (instance присваивается раньше, чем срабатывает конструктор) система может отдать другому потоку ссылку на неготовый экземпляр.

    От создания двух экземпляров второе точно защищает. Я не знаком с моделью памяти C# и потому не могу сказать, насколько второе защищает от неготового экземпляра; кажется, нужен ещё модификатор volatile.
    Ответ написан
    Комментировать
  • Возможно ли реализовать двухфакторная аутенфикация в голове?

    @Mercury13
    Программист на «си с крестами» и не только
    Не имеет смысла по двум причинам.
    1. Легко вскрывается.
    2. Даже при незнании PIN слишком велика вероятность подбора.

    Второе связано с тем, что цифры у нас от 0 до 9 — а значит, сумма из трёх будет в пределах от 0 до 27. Что же с первым? Если у нас N цифр — код восстанавливается за N линейно независимых линейных комбинаций. Например, мы не знаем c и d, но комбинации 2a+b, a+2b и a+b линейно зависимы, и если раскрыты любые две комбинации, раскроется и третья. Для этого надо решить систему линейных алгебраических уравнений:
    { 2a + b = 10
    { a + 2b = 11
    Отсюда a = 3, b = 4, и a + b = 7.
    Ответ написан
    Комментировать
  • Для чего нужен Rapsberry Pi Zero?

    @Mercury13
    Программист на «си с крестами» и не только
    Вряд ли из этой машинки можно сделать микросервер (частое применение "больших" Pi). Зато для управления моделью, светом в сортире - да мало ли чем - то же самое, что Arduino, только на порядок мощнее.
    Ответ написан
    Комментировать
  • Как в с++ добавить переменную в обьект уже определённого класса?

    @Mercury13
    Программист на «си с крестами» и не только
    Способ 1. Наследование.
    class Entity
    {
    public:
      virtual ~Entity() {}    // для корректной работы динамических структур данных 
                              // наподобие менеджеров уровней; в нашем примере не нужно;
                              // в реальной игре потребуется
    }
    
    class Player : public Entity
    {
    public:
       bool isDead;
    }
    
    int main()
    {
       Player player;
       player.isDead = true;
       return 0;
    }


    Если кто-то отдаёт Entity, окторый гарантированно Player — то
    Player& somePlayer = dynamic_cast<Player&>(someEntity);


    Способ 2. Композиция
    class Player
    {
    public:
       Entity entity;
       bool isDead;
    }


    Способ 3. Словарь. Это уже на случай, когда чужой код настолько монолитный, что ничем его не прошибёшь.
    struct PlayerInfo
    {
        bool isDead;
    }
    
    std::map<const Entity*, PlayerInfo> playerInfo;


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

    typedef std::string PlayerId;
    std::map<PlayerId, PlayerInfo> playerInfo;


    Если и код монолитный, и «имя» или «значение» объекту никак не придумаешь — тогда никак.
    Ответ написан
    9 комментариев
  • Как присвоить переменную?

    @Mercury13
    Программист на «си с крестами» и не только
    Так, я был явно неправ, что язык — C++ Builder. Если это C++/CLI, то…
    String^ theLine = this->serialPort1->ReadLine();
    Вроде так.
    Ответ написан
  • Как сделать раздвоение цветов в php?

    @Mercury13
    Программист на «си с крестами» и не только
    Можно, конечно, в одну "руку" взять красный канал, в другую остальные два, и сдвинуть их друг относительно друга. Но весь смысл анаглифа - показать предмет в объёме, чтобы на него можно было смотреть через анаглифные очки, а столь простой фильтр этого не сделает.
    Ответ написан
    Комментировать
  • Как назвать фракции в настольной игре (именование классов)?

    @Mercury13 Автор вопроса
    Программист на «си с крестами» и не только
    Я в конце концов назвал их…

    FactionRule
    FactionChoice
    Faction
    Player
    Мультиплеер пока бросил.
    Ответ написан
    Комментировать
  • Как сделать скриншот в Delphi, обработать(цвета), обрезать и вставить в картинку на форме без сохранения в файл?

    @Mercury13
    Программист на «си с крестами» и не только
    Скриншот делается так.

    procedure TForm1.Button1Click(Sender: TObject);
    var
      bmp:TBitmap;
    begin
      bmp := TBitmap.Create;
      try
        bmp.PixelFormat := pf32bit;   // сейчас не нужно, но, вероятно, потребуется при обработке
        bmp.Width := Screen.Width;
        bmp.Height := Screen.Height;
        BitBlt(bmp.Canvas.Handle, 0,0, Screen.Width, Screen.Height,
               GetDC(0), 0,0,SRCCOPY);
        imgScreen.Picture.Assign(bmp);  // теста ради выведем на Image; в боевой проге не нужно
      finally
        bmp.Free;
      end;
    end;


    А уж получив скриншот в TBitmap, делай с ним что хочешь. Козявь цвета, обрабатывай как-нибудь… Как — это уже другой вопрос.
    Ответ написан
    Комментировать
  • Как сделать фантомное окно в Delphi?

    @Mercury13
    Программист на «си с крестами» и не только
    1. Включай свойство AlphaBlend. Даже если окошко хочешь непрозрачное, всё равно включай.
    2. Переопределяй две функции.
    procedure TfmMain.CreateParams(var Param : TCreateParams);  // override
    begin
      inherited;
      Param.ExStyle := Param.ExStyle or WS_EX_TRANSPARENT;
    end;
    
    procedure TfmMain.WmNcHitTest(var Msg : TWMNCHitTest); // message WM_NCHITTEST;
    begin
      Msg.Result := HTTRANSPARENT;
    end;
    Ответ написан
    Комментировать
  • Какой шрифт я получаю при использовании метода Font.getFont() в Java2ME?

    @Mercury13
    Программист на «си с крестами» и не только
    Как бывший ME’шник и видевший своими глазами кучу мобилок, скажу…
    Стандарта никакого нет. Nokia имела три шрифта со всеми начертаниями. Motorola — только один, без всяких начертаний. TTF, как правило, нет, шрифты обычно точечные. TTF — если он там TTF — можно, конечно, извлечь из прошивки телефона, но не программно на ME.
    N71, E51… Вспоминаю телефоны, было дело…
    Если нужен был широкий порт и единообразный вид на разных мобильниках, обычно писали собственный типографский движок.
    Ответ написан
    1 комментарий
  • Как не дать скорости падать?

    @Mercury13
    Программист на «си с крестами» и не только
    Что можно сказать?

    В хорошо закодированном видео меньше 1 бита на пиксель. На YouTube где-то 0,1…0,2 бита/пиксель, в хорошо закодированных видео с Рутрекера 0,3…0,4. Если взять 640×480 и эталонные 0,2 бита/пиксель — получается 1,5 мегабита, если 720p — уже 4 мегабита. Так что, если вы не смотрите 1080p, должен остаться приличный кусок. И роутер, пускай даже самый дешёвый, должен справляться, не 2007 на дворе. Пока вижу одно из двух.

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

    @Mercury13
    Программист на «си с крестами» и не только
    Найди утилиту для тестирования клавиатуры и проверь: эти клавиши вообще на твоей клавиатуре вместе работают?
    Вот, например, несложная утилита онлайн: www.microsoft.com/appliedsciences/KeyboardGhosting...
    А вот в виде Windows-проги: www.pages-informatique.com/kbtesterv0.4.php

    Клавиши опрашиваются по матричной схеме без диодов; те клавиши, чьё нажатие неоднозначно, пропускаются.
    См. https://ru.wikipedia.org/wiki/Технологии_клавиатур
    Ответ написан
    2 комментария
  • Должно ли так быть?

    @Mercury13
    Программист на «си с крестами» и не только
    Ошибка у тебя в scanf.

    scanf("%lf",&x);

    %lg тоже работает — по крайней мере, на MinGW.

    Мало известно, но у scanf немного не такой формат подстановок, чем у printf.
    Ответ написан
    2 комментария
  • Сети Петри, разрешён ли такой переход?

    @Mercury13
    Программист на «си с крестами» и не только
    Переходы t1 и t2 создают в позиции по одной фишке. Переход t3 просто убирает одну фишку. Возможен. И после двух исполнений перехода t3 ни одной фишки не останется.
    Ответ написан
    1 комментарий
  • Как нужно изменить алгоритм Дейкстры чтобы он искал самый длинный путь?

    @Mercury13
    Программист на «си с крестами» и не только
    Варианты.
    1. Если граф циклический, максимальный путь — ∞.
    2. Если циклический, но путь обязан быть несамопересекающимся — Дейкстра не подойдёт. Подобную олимпиадную задачу я решал и там решением был перебор с кэшированием (вершин вроде до 15).
    3. Если граф циклический, но есть отрицательные веса, которые в определённых случаях дают-таки точный максимум — меняем знак, применяем модификацию Дейкстры для отрицательных весов. Он либо скажет, что есть цикл, позволяющий сколь угодно уменьшить сумму, либо даст точный минимум.
    4. Если ациклический ненаправленный — то либо один, либо нет вообще (т.н. лес);
    5. Если ациклический направленный — должен работать совсем другой алгоритм: отсортировать в топологическом порядке, убрать те элементы, которые перед началом и за концом, а на оставшихся пустить динамическое программирование.
    Ответ написан
    Комментировать
  • Как сделать простую многозадачность на Си?

    @Mercury13
    Программист на «си с крестами» и не только
    Это называется «кооперативная многозадачность» и такая была в Windows до 3. Если задача у нас отнимает больше, чем один квант времени, есть два варианта.
    1. Собрать кванты времени в конечный автомат. Каждый из элементов этого автомата должен сам сохранять свои регистры. Поскольку задача может быть сложная, удобно делать элементы автомата элементами структурного программирования — элемент «оператор», элемент «если», элемент «дождаться»… Мне это приходилось делать на Jav’е, с похожей целью — нужна была простейшая реализация сопрограмм с возможностью сохранения-загрузки, где мы остановились. Сложнее прикладное программирование, системное вообще не нужно.
    2. Использовать функцию Yield, которая сохраняет куда-то регистры процессора, переключает стековый сегмент, определяет, кому сейчас работать, и восстанавливает регистры нового процесса. Каждый процесс поминутно запускает этот Yield. Тут наоборот — процесс наполняется Yield’ами, и всё, а архитектуру машины надо всё же знать.

    Для подобного дела есть FreeRTOS, но как она работает — я не в курсе.
    Ответ написан
    2 комментария
  • Почему многие популярные интернет издания используют шрифт с засечками для основного текста, хотя это дурной тон?

    @Mercury13
    Программист на «си с крестами» и не только
    На печати длинный текст с засечками читается лучше. Линия засечек — это дополнительная направляющая, которая ведёт взгляд по строке. На компьютере, правда, случилось неожиданное: даже один пиксель с одной стороны и один с другой — это много. К тому же у многих букв с засечками (например, б, Ж, Л) есть кокетливые кривые, которые также не передашь пикселями.

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

    Как для меня, anekdot.ru на ретиноподобном планшете читается замечательно. И на читалке с 200 dpi лучший шрифт — PT Serif. А на настольнике с насильно отключённым ClearType (ну не перевариваю, как минимум в интерфейсах) — слабовато.

    P.S. Специально для вас включил ClearType — на этих двух новостных сайтах вышло довольно хорошо.
    Ответ написан
    Комментировать