Blog. Just Blog

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

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

Определение MIME-type файла по его расширению

03.07.2010 | Категория: Web-мастеру и не только | Автор: ManHunter
MIME - Multipurpose Internet Mail Extension - стандарт для определения типа передаваемой информации и механизмов ее обработки. Он сообщает браузерам о том, как им надо обращаться с запрошенными файлами, имеющими то или иное расширение. Так, например, если сервер отдает браузеру в заголовках тип MIME "text/html" для файлов с расширениями htm, html и shtml, то браузер интерпретирует все файлы с этими расширениями как файлы HTML. Также очень желательно передавать корректный MIME-type при отдаче файлов скриптом в антилич-системах.

Недавно я ковырялся в одной коммерческой CMS с закрытым кодом и нашел там одну полезную функцию с большим списком MIME-типов для различных расширений файлов (всего около 400). Реализация самой функции была сделана ужасно, поэтому я ее тут даже приводить не буду. Список я немного почистил и сохранил в удобном для работы виде. Функцию тоже переписал:
  1. //----------------------------------------------------------
  2. // Функция определения MIME-типа файла по его расширению
  3. //----------------------------------------------------------
  4. function get_mime_type($ext) {
  5.     // Массив с MIME-типами
  6.     global $mimetypes;
  7.     // Расширение в нижний регистр
  8.     $ext=trim(strtolower($ext));
  9.     if ($ext!='' && isset($mimetypes[$ext])) {
  10.         // Если есть такой MIME-тип, то вернуть его
  11.         return $mimetypes[$ext];
  12.     }
  13.     else {
  14.         // Иначе вернуть дефолтный MIME-тип
  15.         return "application/force-download";
  16.     }    
  17. }
На входе функция получает расширение файла без точки, например, "zip", "MP3", и возвращает его MIME-тип, если его можно определить, или дефолтный, если расширение не содержится в списке. Расширение файла удобнее всего получить функцией pathinfo.

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

Windows 7 Taskbar API на Ассемблере

30.06.2010 | Категория: Образ мышления: Assembler | Автор: ManHunter

Progress Bars и Overlay Icons

Продолжаю потихоньку осваивать внутренности Windows 7. В новой системе появилась такая приятная фича интерфейса, как отображение прогресса выполнения какого-нибудь действия прямо на кнопке приложения в панели задач. Впервые я увидел это в программе Total Commander при копировании и переносе файлов, сразу очень захотелось узнать как это делается и научиться делать самому. К сожалению, во всех доступных мне интернетах были найдены только примеры для Delphi, .NET и прочих языков высокого уровня. Пришлось лезть в отладчик и запасаться железным терпением, зато в результате получилось вполне рабочее решение. Для управления элементами панели задач в Windows 7 используется COM-интерфейс ITaskBarList3. Как обычно, никаких описаний в FASM нет, и все необходимое нужно искать самому или портировать с других языков.
  1. ; GUID {56FDF344-FD6D-11D0-958A-006097C9A090}
  2. CLSID_TaskbarList       dd 056FDF344h
  3.                         dw 0FD6Dh
  4.                         dw 011D0h
  5.                         db 095h, 08Ah, 000h, 060h, 097h, 0C9h, 0A0h, 090h
  6.  
  7. ; GUID {EA1AFB91-9E28-4B86-90E9-9E9F8A5EEFAF}
  8. IID_ITaskbarList3       dd 0EA1AFB91h
  9.                         dw 09E28h
  10.                         dw 04B86h
  11.                         db 090h, 0E9h, 09Eh, 09Fh, 08Ah, 05Eh, 0EFh, 0AFh
  12.  
  13. ; ITaskbarList3 Interface
  14. SetProgressValue        = 4*09
  15. SetProgressState        = 4*10
  16. RegisterTab             = 4*11
  17. UnregisterTab           = 4*12
  18. SetTabOrder             = 4*13
  19. SetTabActive            = 4*14
  20. ThumbBarAddButtons      = 4*15
  21. ThumbBarUpdateButtons   = 4*16
  22. ThumbBarSetImageList    = 4*17
  23. SetOverlayIcon          = 4*18
  24. SetThumbnailTooltip     = 4*19
  25. SetThumbnailClip        = 4*20
  26.  
  27. ; Типы прогрессбаров на панели задач
  28. TBPF_NOPROGRESS         = 0
  29. TBPF_INDETERMINATE      = 1
  30. TBPF_NORMAL             = 2
  31. TBPF_ERROR              = 4
  32. TBPF_PAUSED             = 8
  33.  
  34. ; Константы для работы с объектом
  35. CLSCTX_INPROC_SERVER    = 1
  36. S_OK                    = 0
Хотя сейчас будут использоваться только три функции, я привел полное описание методов COM-интерфейса ITaskbarList3, оно пригодится чуть позже.

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

Исследование защиты игр Playrix Entertainment

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

Исследование защиты игр Playrix Entertainment

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

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

Уральские пельмени

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

Уральские пельмени

Пельмени - это не только полуфабрикат для скоростного приготовления "чо-нибудь пожрать", настоящие домашние пельмени - это вкусное и питательное блюдо. Название блюда произошло из удмуртского и коми-пермяцкого языков ("пельнянь" - "ухо-хлеб"). Сегодня я буду готовить пельмени по-уральски, как их готовила моя бабушка. Во времена моего детства лепка пельменей была настоящим семейным событием, все собирались в большой комнате, кто-то раскатывал тесто, кто-то месил фарш, кто-то лепил пельмени. Моя почетная мужская обязанность была в прокрутке фарша на мясорубке. А потом пельмени варили в огромной кастрюле, все дружно собирались за столом и кушали до отвала.

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

Портативный медиаплеер Qumo Vision 4Gb

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

Qumo Vision 4Gb

Поддался потребительскому импульсу, проявил слабость и купил себе ко Дню Рождения такой девайс. Это портативный мультимедийный плеер Qumo Vision. Критерий выбора был один: понравился огромный TFT экран 4,3 дюйма. Я решил, что смотреть на нем фильмы в дороге - одно удовольствие. Однако радость от покупки быстро сменилась разочарованием. Но обо всем по порядку.

Первый косяк вылез сразу после подключения свежекупленного девайса к компьютеру через USB-шнур. Windows 7 признал его как флешку, ничего дополнительно ставить не пришлось. Да и ставить особо нечего, никаких дисков с драйверами в комплекте не было. Но когда я попытался записать фильмы, то был неприятно удивлен. На дворе 21-й век, а тут скорость передачи данных не превышает 3-4 мегабайта в секунду, 700-меговый фильм заливается в плеер 10-15 минут. Ладно, дождался заливки пары фильмов, переходим к просмотру. Настроек видео и звука вообще нет, все дефолтное. На фильмах более-менее хорошего качества или размером от 1,5 Гб начинается заметное торможение. Если с этим еще можно как-то смириться, то возникают новые грабли: периодически изображение и звук вообще могут замирать на пару секунд, и это даже не зависит от качества фильма. Звуковые дорожки в файле не переключаются и не выбираются, принудительно берется первая попавшаяся. Управление неудобное. Часть клавиш расположена на верхней грани плеера, часть на лицевой панели, причем в разных ситуациях клавиши навигации или дублируются, или нет, что тоже добавляет путаницы. В плеере есть несколько встроенных игрушек, я попытался поиграть в "Змейку", но так и не осилил это марсианское управление, поэтому затею поиграть оставил. Память плеера расширяется карточками MicroSD, но у меня это единственное устройство под такие карточки, так что покупать их не буду. По какой причине разработчики не нашли в огромном корпусе еще чуть-чуть места, чтобы расширить слот до более распространенных SD-карт - непонятно. Плеер заряжается только от стационарного зарядного устройства, при подключении к компьютеру через USB зарядка не производится.

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

01 ... 341 342 343 344 345 346 347 ... 400
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2024
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.14 сек. / MySQL: 2 (0.053 сек.) / Память: 4.5 Mb
Наверх