Показаны сообщения с ярлыком article. Показать все сообщения
Показаны сообщения с ярлыком article. Показать все сообщения

воскресенье, 14 декабря 2008 г.

Статьи: BOOT.INI

Специальный текстовый конфигурационный файл «BOOT.INI», который используется в процессе загрузки — один из важнейших системных файлов «Windows XP». 

Этот файл должен находиться в корневом каталоге загрузочного диска. Перед тем как модифицировать файл измените его атрибуты, так чтобы он не был «Только для чтения» (щёлкните правой кнопкой мыши по файлу и выберите в контекстном меню последний пункт — «Свойства» и скиньте соответствующий флажок, устанавливаемый по умолчанию при инсталляции ОС). 

При изменении файла «BOOT.INI» соответствующие параметры конфигурации системы вступят в силу только после перезагрузки. 

Редактировать файл следует при помощи «Блокнота» или другого простого текстового редактора (кроме «Microsoft Word» или другого текстового процессора, которые добавляют специальные теги (метки) форматирования текста). 

Файл «BOOT.INI» выполняет следующие функции: 
Управление содержимым меню выбора операционной системы 
Управление процессом загрузки 
Задание некоторых параметров системы 

Раздел [boot loader] служит для задания параметров загрузки операционной системы. 

Параметр «timeout = 30» (по умолчанию) определяет количество секунд, в течение которого пользователь может выбирать один из пунктов меню. При «timeout = 0» загрузочное меню не отображается. «При timeout = -1 » меню находится на экране неограниченное время. 

Параметр «default =» определяет путь к загружаемой по умолчанию системе. В разделе [operation systems] находятся сведения об установленных операционных системах. 

Строение файла «BOOT.INI» в простейшем случае, с одной операционной системой на диске, выглядит следующим образом: 

[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows XP Professional" /fastdetect

  

При использовании двух операционных систем, например, «Windows Me» и «Windows XP», содержимое файла будет выглядеть примерно так: 

[boot loader]
timeout=30
default=C:\
[operating systems]
C:\="Windows Millennium Edition"
multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Windows XP Professional" /fastdetect

 

Или так: 

[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(2)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Microsoft Windows XP Professional RU" /fastdetect
C:\="Windows Millennium Edition"



Здесь: 

«multi(0)» — порядковый номер адаптера, с которого осуществляется загрузка. Всегда имеет значение «0», 

«disk(0)» — всегда равен «0» (для большинства BIOS), 

«rdisk(X)» — определяет порядковый номер жесткого диска с которого осуществляется загрузка (от «0» до «3»), 

«partition(Y)» — порядковый номер раздела жесткого диска, с которого загружается ОС. Нумерация начинается с «1». Не нумеруются расширенные разделы MS-DOS (тип «5») и разделы типа «0 » — неиспользуемые.

Более общее описание раздела [operating system]

Для каждой ОС указывается её местоположение с использованием имен ARC (Advanced RISC Computer): 

Элемент «scsi(*)» используется в случае контроллера SCSI с отключенным BIOS. 

Элемент «multi(*)» используется для дисков всех остальных типов, включая IDE, EIDE, ESDI и SCSI с включенным BIOS. 

«(*)» — номер адаптера, с которого осуществляется загрузка. Адаптеры нумеруются с нуля, начиная с контроллера, расположенного ближе к слоту «0» на материнской плате. 

«disk(*)» — если «(1)» = «scsi(*)», то равен логическому номеру устройства (LUN), установленному для диска. 

«disk(*)» — если «(1)» = «multi(*)», то всегда равен нулю. 

«rdisk(*)» — если «(1)» = «scsi(*)», то равен номеру диска в цепочке, счет дисков начинается с «0». 

«rdisk(*)» — если «(1)» = «multi(*)», то всегда равен нулю. 

«partition(*)» — определяет дисковый раздел, содержащий файлы ОС. В отличие от всех остальных элементов имен ARC нумерация разделов начинается с «1», т.е. первый раздел обозначается «partition(1)», второй — «partition(2)» и т.д. 

«\path» — определяет каталог (или подкаталог) раздела, в котором находятся файлы ОС. По умолчанию в «Windows XP» используется путь «\windows», а в «Windows NT/2000» — путь «\winnt». 

Кроме этого, в кавычках прописывается текст, который будет виден в пункте выбора этой ОС в стартовом меню. После этого текста могут быть ключи которые влияют на загрузки ОС. 

Возможны следующие ключи: 


«/basevideo» — с этим ключом система будет использовать только стандартный VGA драйвер. Этот параметр может пригодится если вы на коротко время ставите другую видеокарту, и Вам не хочется мучаться с перестановкой драйверов. 

«/fastdetect» — обычно ставится автоматически при инсталляции системы. При установке этого ключа система не определяет все Plug and Play устройства в процессе загрузки. 

«/maxmem» — определяет максимальный размер RAM, который может использоваться системой. Теоретически, может помочь если неисправна оперативная память. 

«/noguiboot» — при использовании этого ключа не будет появляться цветная заставка при загрузке. Может использоваться теми кто не желает смотреть на эту картинку в 60 герцах. Кроме этого не будут появляться BSOD при загрузке. Но виснуть система, если что нибудь не в порядке, естественно не перестанет. 

«/noserialmice=[com 1,2,3]» — при использовании этого параметра не будет определяться мышь подключенная к COM порту для портов перечисленных в скобках. Если номера портов не указывать, то мышь не будет определяться на всех портах. 

«/bootlog» — при задании этого параметра система будет писать лог загрузки в [%SystemRoot%\Nbtlog.txt]. Этот параметр можно использовать чтобы найти причину, почему система может загрузится только в «Safe mode». 

«/safeboot» — при его установке система загрузится в «Safe mode». То же самое можно сделать нажав клавишу в начале загрузки системы. Через двоеточие можно задать несколько параметров для «/safeboot»: 
«Minimal» — минимальная конфигурация. 
«Network» — с поддержкой сети. 
«Dsrepair» — доступна только в «NET Server» и позволяет восстановить «Active Directory» с заблаговременно сделанной резервной копии. 
«Alternateshell» — позволяет использовать альтернативные графические оболочки. По умолчанию с системой ставится только «Explorer» (стандартная оболочка) и «Progman» (осталась в наследство от «Windows 3.11» и «NT 3.5»). 

«/sos» — отображает на экране список загружаемых драйверов. Может помочь выяснить, на чём система спотыкается при загрузке. 

«/baudrate» — этот параметр указывает скорость с которой будет работать COM порт для отладки системы. Если не указать конкретную скорость, то будет 9600 для модема и 19200 для нуль-модемного кабеля. При включении этого параметра автоматически ставится параметр «/debug». 

«/crashdebug» — с этим флагом загружается отладчик, но остаётся в неактивном состоянии до тех пор пока не произойдёт ошибка ядра. Может использоваться разработчиками программного обеспечения. 

«/debugport=com*» — указывает номер «COM» порта («*» должна быть номером порта) используемого отладчиком. Автоматически включает ключ «/debug» 

«/debug» — загружается отладчик, который может быть активизирован другим компьютером через подключенным «COM» порт. 

«/nodebug» — на экран не выводится отладочная информация. 

«/hal» — указывает имя файла, который должен использоваться как «hal.dll» после загрузки. 

«/kernel» — указывает имя файла, который должен использоваться как «ntoskrnl.dll» после загрузки.

Источник

понедельник, 27 октября 2008 г.

Статьи: Vkontakte.ru: несколько интересных фактов о социальной сети №1

1) По посещаемости “Vkontakte” занимает третье место в Рунете, уступая лишь «Яндексу» и Mail.ru. Ежедневно на сайт заходит около миллиона человек и просматривается более 130 миллионов страниц.

2) В плане продвижения “ВКонтакте” является настоящим вебдванольным проектом - сеть активно продвигали сами пользователи, посредством “сарафанного радио”. Не использовались покупка дорогих баннеров и контекстная реклама

3) Психологи уже всерьез говорят о симптоме зависимости от “Vkontakte “.

4) Несмотря на запоминающийся URL «Vkontakte» активно ищут посредством ПС. Вот статистика «Яндекс.Директ» за последний месяц (21.09-21.10):

vkontakte - 293 319 показов
vkontakte ru - 206 335 показов
вконтакте - 191 858 показов
www vkontakte - 87 634 показов
www vkontakte ru - 86 696 показов
вконтакте ру - 16 088 показов
v kontakte - 6 438 показов
вконтакте ru - 6 123 показов
граффити вконтакте - 1 261 показов

5) Прототипом “Vkontakte” является западная сеть Facebook. Сети схожи как по концепции, так и по верстке, дизайну и функционалу.

Facebook активно используется в маркетинговых и PR целях, причем кампании в этой социальной сети проводят такие гиганты как Mc’Donalds, Wal-Mart и Target (однако не всегда кампании проходят гладко). Рекламные и PR кампании, проводимые в отечественном “Vkontake” пока локальны и носят любительский характер. Однако уже сейчас можно прогнозировать рост интереса к сервису со стороны маркетингового сообщества.

6) До сих пор не ясен вопрос с финансированием проекта. Для поддержки проекта необходимы значительные средства, в частности для оплаты мощных серверов и оплаты работы команды программистов (на одном из форумов даже приводились примерные расчеты затрат), однако рекламы на проекте нет. Существует несколько мнений относительно того, кто является “покровителем” проекта, наиболее популярна версия об участии спецслужб.

7) Vkontakte далеко не единственный игрок в рунетовской нише социальных сетей. Из других известных сайтов подобного типа можно выделить первопроходца «Odnoklassniki», яндексовский «MoiKrug» и майловский «МойМир». Однако Vkontakte лидирует с большим отрывом.
Опасность, с которой может столкнуться «Vkontakte» в дальнейшем - приход локализованных версий западных социалок: Facebook, MySpace, Squidoo.

8) В «Vkontakte» зарегистрировано 22 Жириновских, 39 Дим Биланов и 14 Ксюш Собчак. Часто на их стенах можно увидеть восторженные дифирамбы фанатов, а также вопросы вроде «А вы действительно настоящий??? КРУТО!». Также не редки горячие дискуссии клонов о том, кто из них настоящий.

9) Создатель «Vkontakte» - Павел Дуров выпускник филологического факультета СПбГУ. По словам Павла, ему неоднократно поступали предложения о покупке проекта со стороны как российских, так и иностранных инвесторов. На стене Павла – более 18 000 записей, по большей части это слова благодарности.

воскресенье, 26 октября 2008 г.

Статьи: Шифрование методом Атбаш

Некоторые фрагменты библейских текстов зашифрованы с помощью шифра, который назывался Атбаш. Правило зашифрования

состояло в замене i-й буквы алфавита буквой с номером n - i + 1, где n - число букв в алфавите.

Происхождение слова Атбаш объясняется принципом замены букв. Это слово составлено из букв Алеф, Тав, Бет, Шин, то есть первой и последней, второй и предпоследней букв древнесемитского алфавита.

Функция, шифрующая строку методом Атбаш, имеет вид:

Код:

function Atbash(toCode: string): string;
var i: integer;
begin
  for i := 1 to length(toCode) do
  toCode[ i ] := Chr(256 - Ord(toCode[ i ]));
  Atbash := toCode;
end;


{ Использование: }
var
  s: string;

begin
  s := Atbash('Just a test');
{ зашифровать }
  writeln(s);
  writeln('s = ', Atbash(s));
{ расшифровать }
end.


Для дешифрования сообщения нужно просто повторно применить к нему этот же алгоритм.

Статьи: Шифрование методом Льюиса

(я проверял на латинском алфавите, поэтому Alpha_Hor следует заполнить символами русского алфавита, и в Len написать их количество)

+ еще кое-что важное. Эта программа оставит символы, не присутствующие в строке Alpha_Hor без изменения. То же самое касается и заглавных букв (хотя заглавные буквы можно внести в эту самую строку).

Код:

const
  len = 26;


  {Это символы для выбора столбца таблицы}
  alpha_hor: string = 'abcdefghijklmnopqrstuvwxyz';

  {Здесь будут символы для выбора строки таблицы}
  alpha_ver: string = '';

var
  {Это собственно таблица кодирования}
  table: array[1 .. len, 1 .. len] of char;

{функция получает строку S и возвращает строку,
  полученную из исходной сдвигом на N позиций}
function shift(s: string; n: integer): string;
  begin
  s := copy(s, length(s) - pred(n), n) + s;
  delete(s, length(s) - pred(n), n); shift := s
  end;

var
  i, j, row, col: integer;
  s: string; ch: char;

  key: string;
  is_russian: boolean;
  f_in: file of char; f_out, f_key: text;
begin

  { Заполнение таблицы кодировки }
  for i := 1 to len do
  begin

  {получаем строку символов для текущей строки таблицы}
  s := shift(alpha_hor, pred(i));
  for j := 1 to len do
  table[i, j] := s[j];

  {
  не забываем первый символ заносить в "хранилище"
  для выбора строк по кодируемой букве
  }
  alpha_ver := alpha_ver + s[1]
  end;


  { связываем логические файлы программы с физическими файлами на диске }

  {файл с фразой для кодирования - открываем для чтения}
  assign(f_in, 'f_00in.txt');
  {$i-} reset(f_in); {$i+}

  {файл для сохранения результата - открываем для записи}
  assign(f_out, 'f_00out.txt');
  {$i-} rewrite(f_out); {$i+}

  {
  файл, содержащий ключевое слово - открываем для чтения,
  считываем слово в строковую переменную и закрываем файл
  }
  assign(f_key, 'f_00key.txt');
  {$i-} reset(f_key); {$i+}
  readln(f_key, key);
  close(f_key);


  {счетчик закодированных символов}
  i := 0;
  {до конца кодируемого файла делаем следующее:}
  while not eof(f_in) do
  begin

  {читаем очередной символ}
  read(f_in, ch);
  {находим по нему строку таблицы}
  row := pos(ch, alpha_ver);
  {
  эта переменная содержит значение успеха предыдущей операции
  (если True, то символ присутствует в таблице, иначе False)
  }
  is_russian := (row > 0);
  if is_russian then
  begin

  {Если символ присутствует в таблице, его надо кодировать}

  {увеличиваем счетчик закодированных символов}
  inc(i);

  {
  находим столбец по значению ключевого символа
  (операция mod используется, чтобы исключить выход
  за пределы ключа, т.к. длина ключа обычно меньше
  длины шифруемой последовательности)
  }
  col := pos(key[i mod (length(key))], alpha_hor);
  {и заменяем простой символ на зашифрованный (из таблицы)}
  ch := table[row, col];
  end;

  {
  если символ надо было шифровать, он уже зашифрован,
  если он не может быть зашифрован, он остался без изменений.
  Пишем его в выходной файл
  }
  write(f_out, ch)
  end;


  {И закрываем оба файла: исходный и зашифрованный}
  close(f_out);
  close(f_in)
end.

пятница, 17 октября 2008 г.

Статьи: Autorun для USB Flash

В наше время все пользуются usb-flash накопителями, что в простонародье значит 'флэшка'. Было бы неплохо обзавестись собственным автораном, кои мы видим на обычных CD/DVD дисках.
Я решил написать эту статью специально для тех кто имеет USB-носители и они используют их постоянно. 

Урок 1 Автозагрузка
Иногда лазить по своему портативному жестяку не всегда выгодно, например нужно запустить прогу сразу после автоопределения флэшки компом, дабы сэкономить время. Ну начнем само "прогаммирование autorun'a"* 

1: создаем файл "Текстовый документ.txt" и переименоовываем на "Autorun.inf"
2: окрываем его в блокноте
3: пишем в нем:

Цитата
[AutoRun]
shellexecute=A
Action=B
Icon=C
Label=D

Здесь где A - путь к программе, B - Имя проги, C - Иконка, D - Имя флэшки.

4. Кидаем файл на носитель и радуемся.

Урок 2 Автокопир
Иногда кроме того чтобы открыть прогу нужно и скопировать данные на флэку или с нее на комп. Для этого:

1. Все что делали в 1 уроке проделать заного но в отдельной папке.
2. Приходим к программированию(Delphi) пишем прогу
и в нее добавляем:

Цитата
CopyFile(PChar(ParamStr(0)), PChar('Новый_путь' + ExtractFileName(ParamStr(0))), True);

4. Кидаем файлs на носитель и радуемся.
На этом я думаю закончить. Если что то не получается постим здесь.

вторник, 14 октября 2008 г.

Статьи: Оптимизация проекта в Delphi

Здравствуйте, программисты-делфисты. Повидал я не мало многих программ написанных на делфи. Есть хорошие, есть не очень, но их размер меня всегда поражал. 0.6, 1, 5 и даже 10 мегабайт!!! А программки то - тьфу, явно не офис или что-то громоздкое. Вот и решил я написать статью, как правильно оптимизировать свой проект так, чтоб не было казусов: программа должна 2 числа +,-,/,* а занимает места больше чем 400 Кб. Не судите строго, а если есть замечание, пишите: ZETRIX-Soft@mail.ru

1)  Надо учесть для чего пишется программа, если она что-то должна выполнить, и закрыться (ничего не отображая), то не надо писать так Form1.visible:=false. Надо полностью удалить форму (View\Project Manager\Ваш проект\Unit1 и нажать кнопку Удалить. Так же, в данном случае, можно использовать Win API. Процесс создания форм, кнопок достаточно сложен (по сравнению с обычным методом), но достаточно эффективен.

2)  Непосредственно настроить компилятор (программа получится с максимальным быстродействием). Заходим в меню Project\Options, заходим на вкладку Compiler и убираем все галочки из Runtime errors и Debugging. Внимание! Это можно безбоязненно делать лишь в том случает, когда Ваша программа полностью отлажена, и обработку всех исключительных ситуаций Вы учли.

3)  Настройки пакетов (самый важный пункт ). Заходим в меню Project\Options, заходим на вкладку Packages. Ставим флажок Build with runtime packages. И смотрим, что у нас в строке там написано (Вот мой список: vcl; rtl; indy; vclx; dbrtl; vcldb; bdertl; vclie; vclshlctrls; IntrawebDB_50_70; Intraweb_50_70; Rave50CLX; Rave50VCL; dclOfficeXP; IcsDel50;inet;xmlrtl; inetdbbde; inetdbxpress; dsnap; dsnapcon; soaprtl; VclSmp; webdsnap; websnap; ibxpress; vclactnband; visualclx; visualdbclx; dbexpress; dbxcds; inetdb; vcldbx; adortl; teeui; teedb; tee; dss).О боже, скажете Вы, если узнаете: ВСЁ что в этой строке по умолчанию компилируется в ваш проект! После пары манипуляций там остаётся: vcl и всё. Внимание! Если у Вас уже куча компонентов, т.е. у Вас уже есть написанная программа, не удаляйте всё сразу, если Вы удалите что-то нужное, то во-первых размер программы увеличится, а во-вторых программа может не работать на других ПК. Если Вы что-то нечаянно удалили, или хотите добавить, то нажмите кнопку Add… и добавите нужный пакет. P.S.: После этих преобразований, скомпилированный пустой проект занимает 16,5 Кб. Всё же не 300…

4)  Если ваша программа редко использует какие либо функции или процедуры, то вынесите их в DLL файл, чтоб память не засоряли (хотя сейчас это и не так важно, памяти оперативной “куча” 1 - 2 гигабайта это уже не редкость, но всё же это подчеркнёт Ваш профессионализм).

5)  Если Ваша программа использует графические данные, звуки, видео, и всё это в достаточном кол-ве, то не надо создавать файлы ресурсов, они всё равно скомпилированы в 1 exe-файл. Лучше создать специальную папку вместе с программой (ну как в играх многих например DATA) и держать их там, конечно есть минус - если переносить программу, то и файлы надо переносить за собой, но есть плюс - динамически использовать все эти данные, т.е. если вам надо в Image вывести картинку, то при загрузке программы не надо сразу загружать этот рисунок, а загрузить только тогда, когда, например, будет открыта форма с этим Image или пользователь что-то нажмёт.

Дополнение: в настоящее время появилась новая библиотека для делфи KOL + MCK с их помощью можно создавать приложения с размером 50-100кб (как в С++), без всякого усечения и убирания пакетов.

Блог программистов