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

Перехват вывода функции var_dump()
19.12.2024 | Категория: Web-мастеру и не только | Автор: ManHunter

Перехват вывода функции var_dump()
Функция PHP var_dump() отображает структурированную информацию о переданных ей параметрах и поэтому очень часто используется для отладки web-приложений. В отличие от сходной функции print_r() она дополнительно выводит типы данных, что в некоторых случаях бывает крайне полезным. Но в то же время функция print_r() позволяет возвращать свой выхлоп в виде строки, тогда как var_dump() без вариантов просто выводит результат. Давайте доработаем эту досадную недоработку.
Читать статью целиком »
Просмотров: 229 | Комментариев: 0

Обработка системных цветов на JavaScript
02.12.2024 | Категория: Web-мастеру и не только | Автор: ManHunter

Обработка системных цветов на JavaScript
Еще со времен CSS2 появилась возможность использовать в качестве стиля цвета так называемые системные цвета, то есть значения из текущей цветовой схемы пользователя. Таким образом можно оформлять свои web-приложения, чтобы они не выбивались из привычной пользователю цветовой гаммы.
Читать статью целиком »
Просмотров: 224 | Комментариев: 1

Групповой выбор checkbox'ов на JavaScript
01.07.2024 | Категория: Web-мастеру и не только | Автор: ManHunter

Групповой выбор checkbox'ов на JavaScript
В некоторых пользовательских интерфейсах в рабочих проектах приходится сталкиваться с длинными таблицами. Одна из колонок в такой таблице - чекбокс, которым отмечаются строки, с которыми надо выполнить то или иное действие. При выборе пары-тройки чекбоксов проблем не возникает, один клик - один чекбокс. В шапке колонки есть мастер-чекбокс, с помощью которого можно отметить все или снять все галочки. А вот при необходимости отметить не все, но просто большое количество чекбоксов начинаются сложности. По одному делать это долго. Но ведь даже в стандартном Проводнике есть возможность выбирать последовательность файлов, отмечая чекбоксы с зажатой клавишей Shift. Такая идея мне понравилась и я перенес ее на веб-страницы.
Читать статью целиком »
Просмотров: 456 | Комментариев: 9

Поиск подстроки в строке по алгоритму Кнута-Морриса-Пратта
11.06.2024 | Категория: Образ мышления: Assembler | Автор: ManHunter

Поиск подстроки в строке по алгоритму Кнута-Морриса-Пратта
Алгоритм Кнута-Морриса-Пратта, он же классический "КМП-алгоритм" - один из самых эффективных алгоритмов поиска подстроки в строке. Оптимизация достигается за счет того, что при возникновении несоответствия само искомое слово содержит достаточно информации, чтобы определить, где может начаться следующее совпадение, минуя лишние проверки. Скорость работы алгоритма линейно зависит от объема входных данных, то есть невозможно разработать более эффективный алгоритм с точки зрения вычислительной сложности.
Читать статью целиком »
Просмотров: 530 | Комментариев: 1

Сортировка перемешиванием на Ассемблере
26.05.2024 | Категория: Образ мышления: Assembler | Автор: ManHunter
Сортировка перемешиванием, она же шейкерная или двунаправленная сортировка - оптимизированная разновидность алгоритма пузырьковой сортировки. В процессе сортировки выполняется многократный проход по массиву, соседние элементы сравниваются и, в случае необходимости, меняются местами. Массив просматривается поочередно справа налево и слева направо, из-за этого алгоритм получил свое название. В результате каждого прогона крупные и мелкие элементы массива поочередно перемещаются в конец и начало массива соответственно. Границы рабочей части массива, то есть той части массива, где происходит движение, устанавливаются в месте последнего обмена на каждой итерации.Code (Assembler) : Убрать нумерацию
- ;----------------------------------------------------------------
- ; Функция сортировки массива DWORD перемешиванием
- ; by ManHunter / PCL (www.manhunter.ru)
- ;----------------------------------------------------------------
- ; Параметры:
- ; lpArray - указатель на массив DWORD
- ; dLen - количество элементов в массиве
- ;----------------------------------------------------------------
- proc shaker_sort lpArray:DWORD, dLen:DWORD
- pusha
- mov esi,[lpArray]
- ; left
- mov eax,1
- ; right
- mov ebx,[dLen]
- cmp ebx,2
- jb .loc_ret
- dec ebx
- .loc_loop_main:
- ; swap_flag = false
- xor edi,edi
- mov ecx,eax
- .loc_loop_1:
- cmp ecx,ebx
- ja .loc_done_1
- mov edx,dword [esi+ecx*4-4]
- cmp dword [esi+ecx*4],edx
- ; Для сортировки по возрастанию заменить на ja
- jna @f
- push dword [esi+ecx*4-4]
- push dword [esi+ecx*4]
- pop dword [esi+ecx*4-4]
- pop dword [esi+ecx*4]
- ; swap_flag = true
- inc edi
- @@:
- inc ecx
- jmp .loc_loop_1
- .loc_done_1:
- dec ebx
- mov ecx,ebx
- .loc_loop_2:
- cmp ecx,eax
- jb .loc_done_2
- mov edx,dword [esi+ecx*4]
- cmp dword [esi+ecx*4-4],edx
- ; Для сортировки по возрастанию заменить на jb
- jnb @f
- push dword [esi+ecx*4-4]
- push dword [esi+ecx*4]
- pop dword [esi+ecx*4-4]
- pop dword [esi+ecx*4]
- ; swap_flag = true
- inc edi
- @@:
- dec ecx
- jmp .loc_loop_2
- .loc_done_2:
- inc eax
- or edi,edi
- jnz .loc_loop_main
- .loc_ret:
- popa
- ret
- endp
Читать статью целиком »
Просмотров: 349 | Комментариев: 7
