С Новым Годом! С Новым Годом!
Blog. Just Blog

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

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

Готовим спагетти с кальмарами в соусе бешамель

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

Спагетти с кальмарами в соусе бешамель

На днях мама рассказала об интересном блюде, я тоже захотел его приготовить. Это спагетти с кальмарами и соусом бешамель. Необычное сочетание, но блюдо получается очень вкусное и сытное.

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

MP3 Flash-плеер Cowon D2+ 16 Gb

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

MP3 Flash-плеер Cowon D2+ 16 Gb

На Новый Год немного пополнил зоопарк своей техники, а точнее купил себе новый аудио-плеер Cowon D2+. Поскольку аппарат для меня новый, то я решил его сперва хорошенько поиспользовать, прежде чем составить свое мнение. Прошло почти четыре месяца, и теперь обзор плеера Cowon D2+ перед вами. По возможности я постараюсь обойтись без технических подробностей, это всего лишь мнение обычного пользователя.

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

Парсер CSV-файла на PHP

04.04.2011 | Категория: Web-мастеру и не только | Автор: ManHunter
В одном из рабочих проектов менеджеры загружают информацию в формате CSV-файлов. Все бы хорошо, но у некоторых на компьютерах установлен Microsoft Office, а у других OpenOffice. И, как выяснилось, при сохранении файлов в формате CSV, получается совершенно разный результат: OpenOffice все без исключения поля заключает в кавычки, а поделка от Microsoft делает это как-то выборочно. В некоторых случаях стандартная функция fgetcsv на таких файлах давала сбой, пришлось рисовать свой аналог.
  1. //------------------------------------------------------------
  2. // Функция парсера CSV-файла
  3. //------------------------------------------------------------
  4. // На входе: $file_name - имя файла для парсинга
  5. //           $separator - разделитель полей, по умолчанию ';'
  6. //           $quote - ограничитель строк, по умолчанию '"'
  7. // На выходе: массив значений всего файла
  8. //------------------------------------------------------------
  9. function fuck_csv($file_name$separator=';'$quote='"') {
  10.     // Загружаем файл в память целиком
  11.     $f=fopen($file_name,'r');
  12.     $str=fread($f,filesize($file_name));
  13.     fclose($f);
  14.  
  15.     // Убираем символ возврата каретки
  16.     $str=trim(str_replace("\r",'',$str))."\n";
  17.  
  18.     $parsed=Array();    // Массив всех строк
  19.     $i=0;               // Текущая позиция в файле
  20.     $quote_flag=false;  // Флаг кавычки
  21.     $line=Array();      // Массив данных одной строки
  22.     $varr='';           // Текущее значение
  23.  
  24.     while($i<=strlen($str)) {
  25.         // Окончание значения поля
  26.         if ($str[$i]==$separator && !$quote_flag) {
  27.             $varr=str_replace("\n","\r\n",$varr);
  28.             $line[]=$varr;
  29.             $varr='';
  30.         }
  31.         // Окончание строки
  32.         elseif ($str[$i]=="\n" && !$quote_flag) {
  33.             $varr=str_replace("\n","\r\n",$varr);
  34.             $line[]=$varr;
  35.             $varr='';
  36.             $parsed[]=$line;
  37.             $line=Array();
  38.         }
  39.         // Начало строки с кавычкой
  40.         elseif ($str[$i]==$quote && !$quote_flag) {
  41.             $quote_flag=true;
  42.         }
  43.         // Кавычка в строке с кавычкой
  44.         elseif ($str[$i]==$quote && $str[($i+1)]==$quote && $quote_flag) {
  45.             $varr.=$str[$i];
  46.             $i++;
  47.         }
  48.         // Конец строки с кавычкой
  49.         elseif ($str[$i]==$quote && $str[($i+1)]!=$quote && $quote_flag) {
  50.             $quote_flag=false;
  51.         }
  52.         else {
  53.             $varr.=$str[$i];
  54.         }
  55.         $i++;
  56.     }
  57.     return $parsed;
  58. }
На входе передаются три параметра: обязательный параметр $file_name - путь к CSV-файлу, необязательные параметры $separator - разделитель значений полей в строке, по умолчанию ';' и $quote - ограничитель текстовых полей, по умолчанию двойная кавычка. На выходе из функции возвращается массив с распарсенными значениями всего файла. Дополнительных проверок на существование файла и корректность его внутреннего формата не производится, можете добавить эти функции самостоятельно. Также теоретически могут возникнуть проблемы с обработкой файлов очень большого объема. На моей практике таких проблем не возникало, так что может быть это решение пригодится кому-нибудь еще.

Просмотров: 13803 | Комментариев: 13

Концерт группы "Hocico" в клубе "Точка"

01.04.2011 | Категория: Жизнь в оффлайне | Автор: ManHunter

Концерт группы "Hocico" в клубе "Точка"

В 2008 году я первый раз попал на живой концерт мексиканской группы "Hocico". Впечатления от их выступления тогда остались настолько яркими, что когда я увидел афишу о новом концерте, сомнений не осталось - надо идти. Не так много достойных коллективов, играющих в стиле Dark electro, радуют нас своим посещением.

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

Splash-окно при загрузке программы

31.03.2011 | Категория: Образ мышления: Assembler | Автор: ManHunter
При запуске некоторых приложений иногда требуется выполнить какие-нибудь ресурсоемкие или продолжительные по времени действия, например, загрузка дополнительных модулей, сбор информации о системе, распаковка файлов данных и т.п. Часто во время таких процессов открывается так называемое splash-окно (его также называют "сплэш-окно" или сокращенно "сплэш"), то есть модальное окно без заголовка, расположенное по центру экрана, обычно с логотипом и названием программы. Также в нем меняющейся строкой отображается текущее действие программы, и, иногда, полоса прогресса выполнения. Таким образом пользователя как бы уведомляют, что программа не зависла при запуске, а просто выполняет нужные ей действия и надо немного подождать. После появления главного окна программы сплэш закрывается. Попробуем сделать что-нибудь подобное на Ассемблере.

Сперва нарисуем само окно. Оно должно быть без заголовка, модальное, можно разместить на нем картинку-логотип. Для большего эффекта добавим на это окно прогрессбар и текстовое поле для отображения состояния загрузки.
  1. ; Стиль прогрессбара - непрерывный бегунок. В FASM значение не определено,
  2. ; сделаем это самостоятельно
  3. PBS_MARQUEE = 8
  4.  
  5. dialog demonstration,' Splash Demo',0, 0, 150, 60,\
  6.     WS_POPUP+DS_CENTER+DS_SYSMODAL+WS_BORDER, WS_EX_TOOLWINDOW,0,'Arial',10
  7.   dialogitem 'STATIC',1, 1, 0, 0, 138, 38 ,WS_VISIBLE+SS_BITMAP
  8.   dialogitem 'STATIC','Loading...',ID_TEXT, 0, 34, 150, 8 ,WS_VISIBLE+SS_CENTER
  9.   dialogitem 'msctls_progress32', '', IDC_PROGRESS, 3, 47, 145, 10,\
  10.     WS_VISIBLE+PBS_MARQUEE
  11.   dialogitem 'BUTTON','',IDCANCEL, 0, 0, 0, 0, 0
  12. enddialog
Несколько комментариев к коду. Прогрессбар задается в ресурсах как элемент диалогового окна msctls_progress32 со стилем PBS_MARQUEE, то есть он будет непрерывно двигаться. Если требуется указание более точного процента выполнения загрузки, то придется обратиться к документации. Скрытая кнопка EXIT предназначена для того, чтобы splash-окно можно было закрыть при помощи клавиши Esc. Как правило, разработчики пренебрегают возможностью закрывать сплэш по желанию пользователя, и посреди экрана висит уродливое окно, которое нельзя ни закрыть, ни передвинуть, пока приложение не загрузится. Никогда так не делайте! Также обратите внимание, чтобы заработал такой прогрессбар, должна быть вызвана функция InitCommonControls, а исполняемый файл должен содержать соответствующий манифест.

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

01 ... 359 360 361 362 363 364 365 ... 438
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2026
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.1 сек. / MySQL: 2 (0.032 сек.) / Память: 4.5 Mb
Наверх