Blog. Just Blog

Быстрый поиск

Введите фрагмент названия статьи для поиска

Многофункциональный адаптер USB-C UGREEN CM195

21.08.2021 | Категория: Обзоры техники | Автор: ManHunter

Многофункциональный адаптер USB-C UGREEN CM195

С появлением рабочего ноутбука возникла проблема нехватки USB-портов для подключения всей необходимой периферии. Из трех имеющихся на ноутбуке USB-портов два занимают передатчик для bluetooth-мыши и клавиатура, третий остается для внешнего диска или флешки. И все, приехали. Это не говоря уже об отсутствии встроенного кардридера для карт памяти. Поэтому я решил приобрести USB-C адаптер производства компании UGREEN. У производителя есть несколько моделей адаптеров, отличающихся набором и количеством портов. Где-то есть разъем для VGA, где-то нет PD, но побольше USB-портов, таким образом я выбирал адаптер под свои задачи и имеющееся железо.

Читать статью целиком »
Просмотров: 364 | Комментариев: 10

Генератор xoshiro64 на Ассемблере

19.08.2021 | Категория: Образ мышления: Assembler | Автор: ManHunter
В качестве продолжения статьи про xoshiro128 реализация алгоритма xoshiro64 на Ассемблере. Напомню, что xoshiro (xoroshiro) - семейство высокоскоростных алгоритмов для генерации псевдослучайных чисел. Есть две разновидности xoshiro64, отличающиеся друг от друга только количеством операций умножения. Это, соответственно, версия xoshiro64* и xoshiro64**. Для работы генератор использует буфер размером в 2 DWORD'а.

В оригинальном алгоритме отсутствует функция инициализации, там достаточно просто записать какие-то начальные ненулевые значения в рабочий буфер. Если вам надо инициализировать и "прогреть" генератор, то я сделал для этого функцию по аналогии с xoshiro128. Но это уже моя самодеятельность, в авторском алгоритме ничего такого нет.
  1. ;---------------------------------------------
  2. ; Инициализация генератора случайных чисел
  3. ; stdcall long_jump,seed
  4. ;---------------------------------------------
  5. proc long_jump seed:DWORD
  6.         locals
  7.              s0 dd ?
  8.              s1 dd ?
  9.         endl
  10.  
  11.         pusha
  12.  
  13.         ; Начальное "засеивание" генератора
  14.         mov     edi,s
  15.         mov     eax,[seed]
  16.         rol     eax,1
  17.         xor     eax,0x1C580662
  18.         stosd
  19.         rol     eax,3
  20.         add     eax,0x0B6F099F
  21.         stosd
  22.  
  23.         ; Холостая прокрутка генератора для инициализации
  24.         lea     edi,[s0]
  25.         push    edi
  26.         xor     eax,eax
  27.         stosd
  28.         stosd
  29.  
  30.         xor     ebx,ebx
  31. .loc_for_1:
  32.         xor     ecx,ecx
  33. .loc_for_2:
  34.         mov     eax,[.lj+ebx*4]
  35.         and     eax,1
  36.         shl     eax,cl
  37.         jz      @f
  38.  
  39.         mov     esi,s
  40.         lodsd
  41.         xor     [s0],eax
  42.         lodsd
  43.         xor     [s1],eax
  44. @@:
  45.         stdcall next
  46.  
  47.         inc     ecx
  48.         cmp     ecx,32
  49.         jb      .loc_for_2
  50.  
  51.         inc     ebx
  52.         jnp     .loc_for_1
  53.  
  54.         pop     esi
  55.         mov     edi,s
  56.         movsd
  57.         movsd
  58.  
  59.         popa
  60.         ret
  61.  
  62. .lj:    dd 0xB523952E
  63.         dd 0x0B6F099F
  64. endp
Инициализация выполняет первичное "засеивание" рабочего буфера, а затем делает 264 холостых прогонов генератора с одновременным перемешиванием данных рабочего буфера.

Читать статью целиком »
Просмотров: 180 | Комментариев: 2

Варенье из красной смородины

15.08.2021 | Категория: А еще я туда ем! | Автор: ManHunter

Варенье из красной смородины

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

Читать статью целиком »
Просмотров: 190 | Комментариев: 8

Графический курсор (каретка) в поле EDIT

09.08.2021 | Категория: Образ мышления: Assembler | Автор: ManHunter
Сегодня отдохнем от системы и немного поработаем с графикой, будем делать собственный графический курсор в поле EDIT. Какого-то необычайно полезного практического применения этому нет, просто симпатичное дополнение к интерфейсу, например, к окнам нестандартной формы. Ну а что, раз уж наворотили чудо-окна, почему бы не наворотить и чудо-курсор.

Начнем с теории. В отличие от "мышиного" курсора, который может легко принимать любой вид, управлять кареткой, то есть курсором в текстовом поле, не так просто. Функция CreateCaret позволяет только описывать форму для каретки, но не меняет ее изображение. Достаточно один раз попробовать, чтобы убедиться в ее бесполезности. Придется самостоятельно рисовать графическую каретку на холсте поля ввода.
  1.         ; Загрузить из ресурсов картинку
  2.         invoke  GetModuleHandle,0
  3.         invoke  LoadBitmap,eax,1
  4.         mov     [hСaret],eax
  5.  
  6.         ; Выбрать картинку для холста поля ввода
  7.         invoke  GetDlgItem,[hwnddlg],ID_EDIT
  8.         invoke  GetDC,eax
  9.         mov     [hDC],eax
  10.         invoke  CreateCompatibleDC,[hDC]
  11.         mov     [hСaretDC],eax
  12.         invoke  SelectObject,[hСaretDC],[hСaret]
  13.  
  14.         ; Получить цвет угловой точки картинки
  15.         invoke  GetPixel,[hСaretDC],0,0
  16.         mov     [bColor],eax
  17.         ; Создать кисть с этим цветом
  18.         invoke  CreateSolidBrush,[bColor]
  19.         mov     [hBrush],eax
  20.  
  21.         ; Прибраться за собой
  22.         invoke  DeleteObject,[hСaret]
Для простоты реализации рисунок текстового курсора будет храниться в ресурсах. Загружаем его стандартными функциями, затем получаем холст поля ввода и добавляем к нему загруженный рисунок. Теоретически рисунок каретки может быть любого размера, но практически он должен хотя бы по вертикали соответствовать высоте поля ввода, а лучше высоте шрифта.

Читать статью целиком »
Просмотров: 301 | Комментариев: 7

Исследование защиты программы Fotosizer

07.08.2021 | Категория: Темная сторона Силы | Автор: ManHunter

Скриншот программы Fotosizer

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

Читать статью целиком »
Просмотров: 293 | Комментариев: 3

Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2021
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.11 сек. / MySQL: 2 (0.0216 сек.) / Память: 5 Mb
Наверх