среда, 27 мая 2009 г.

Ющенко своим указом уволил Билла Гейтса

Билл Гейтс. Фото ©AFP




Билл Гейтс. Фото ©AFP



Президент Украины Виктор Ющенко своим указом вывел из состава консультативного совета по вопросам иностранных инвестиций основателя корпорации Microsoft Билла Гейтса. Об этом сообщает издание "Обком", приводящее текст указа.

Билл Гейтс дал согласие на включение в состав совета в 2005 году. Консультантом Ющенко он стал, будучи председателем совета директоров Microsoft. Гейтс покинул эту должность в Microsoft в 2008 году.


Вместе с Гейтсом из состава совета были выведены председатель Партии регионов Украины Виктор Янукович, глава объединения "Фронт перемен" Арсений Яценюк, министр экономики республики Анатолий Кинах, один из лидеров Партии регионов Николай Азаров и еще несколько человек.


В то же время теперь в совет включены председатель Верховной рады Украины Владимир Литвин, премьер-министр Юлия Тимошенко и глава секретариата президента Вера Ульянченко.


Консультативный совет по инвестициям существует на Украине с 1997 года. Также в течение нескольких лет при президенте действовала палата независимых экспертов по вопросам иностранных инвестиций.




понедельник, 25 мая 2009 г.

На фестивале linux install fest

24 мая 2009 года успешно прошёл фестиваль linux install fest.
На данный фестиваль пришло человек 200, а то и больше.
К сожалению я не смог что-либо сфотографировать.
Фестиваль был не сильно захватывающим, но интересным,
также там присутствовали люди не знающие, что такое линукс.
Этим людям объяснили в кратце о линуксе. То что в принципе некоторым известно. А именно: возможности ОС линукс, отличие gimp от photoshop, показывали возможности openoffice 3.0. Также рассказали про ОС ReactOS (впечатление не очень).Но как обещали там бесплатно раздавали дистрибутивы. Я решил взять себе slax.
Вроде бы отличный дистрибудив.
Ещё дали GParted.
Кто хочет могу скинуть slax или gparted.
Пишите на jabber: jython@jabber.ru или на gmail: jython1@gmail.com.

Фотограрафии можно посмотреть на этом сайте

четверг, 21 мая 2009 г.

Алгогритм шифрования RSA

Алгоритм шифрования RSA на языке программирования python

def gcd (a, b):
"Compute GCD of two numbers"

if b == 0: return a
else: return gcd(b, a % b)

def multiplicative_inverse(a, b):
""" Find multiplicative inverse of a modulo b (a > b)
using Extended Euclidean Algorithm """

origA = a
X = 0
prevX = 1
Y = 1
prevY = 0

while b != 0:

temp = b
quotient = a/b
b = a % b
a = temp

temp = X
a = prevX - quotient * X
prevX = temp

temp = Y
Y = prevY - quotient * Y
prevY = temp

return origA + prevY

def generateRSAKeys(p, q):
"Generate RSA Public and Private Keys from prime numbers p & q"

n = p * q
m = (p - 1) * (q - 1)

# Generate a number e so that gcd(n, e) = 1, start with e = 3
e = 3

while 1:

if gcd(m, e) == 1: break
else: e = e + 2

# start with a number d = m/e will be atleast 1

d = multiplicative_inverse(m, e)

# Return a tuple of public and private keys
return ((n,e), (n,d))

if __name__ == "__main__":

print "RSA Encryption algorithm...."
p = long(raw_input("Enter the value of p (prime number):"))
q = long(raw_input("Enter the value of q (prime number):"))

print "Generating public and private keys...."
(publickey, privatekey) = generateRSAKeys(p, q)

print "Public Key (n, e) =", publickey
print "Private Key (n, d) =", privatekey

n, e = publickey
n, d = privatekey

input_num = long(raw_input("Enter a number to be encrypted:"))
encrypted_num = (input_num ** e) % n
print "Encrypted number using public key =", encrypted_num
decrypted_num = encrypted_num ** d % n
print "Decrypted (Original) number using private key =", decrypted_num

Colored with dumpz.org

Colored with dumpz.org



Алгоритм RSA (Rivast, Shamir и Adelman, 1977 год) предполагает, что посланное закодированное сообщение может быть прочитано адресатом и только им. В этом алгоритме используется два ключа - открытый и секретный. Данный алгоритм привлекателен также в случае, когда большое число субъектов (N) должно общаться по схеме все-со-всеми. В случае симметричной схемы шифрования каждый из субъектов каким-то образом должен доставить свои ключи всем остальным участникам обмена, при этом суммарное число используемых ключей будет достаточно велико при большом значении N. Применение асимметричного алгоритма требует лишь рассылки открытых ключей всеми участниками, суммарное число ключей равно N.

Сообщение представляется в виде числа M. Шифрование осуществляется с помощью общедоступной функции f(M), и только адресату известно, как выполнить операцию f-1. Адресат выбирает два больших простых (prime) числа p и q, которые делает секретными. Он объявляет n=pq и число d, c (d,p-1)=(d,q-1)=1 (один из возможных способов выполнить это условие, выбрать d больше чем p/2 и q/2). Шифрование производится по формуле:

f(M) ≡ Md mod n,

где M и f(M) оба ≤ n-1. Как было показано, может быть вычислено за разумное время, даже если M, d и n содержит весьма большое число знаков. Адресат вычисляет M на основе Md, используя свое знание p и q. В соответствие со следствием 6, если

dc ≡ (p-1)1, тогда (Md)e ≡ p1.

Исходный текст M получается адресатом из зашифрованного F(M) путем преобразования: M = (F(M))e (mod pq). Здесь как исходный текст, так и зашифрованный рассматриваются как длинные двоичные числа.

Аналогично (Md)e ≡ qM, если dc ≡ (q-1)1. e удовлетворяет этим двум условиям, если cd ≡ (p-1) (q-1)1. Теорема 1 гласит, что мы можем позволить e=x, когда x является решением уравнения dx + (p-1)(q-1)y = 1.

Так как (Md)e - M делимо на p и q, оно делимо и на pq, следовательно, мы можем определить M, зная Md, вычислив его значение в степени e и определив остаток от деления на pq. Для соблюдения секретности важно, чтобы, зная n, было нельзя вычислить p и q. Если n содержит 100 цифр, подбор шифра связан с перебором ~1050 комбинаций. Данная проблема изучается уже около 100 лет. RSA-алгоритм запатентован (20 сентября 1983, действует до 2000 года).

Теоретически можно предположить, что возможно выполнение операции f-1, не вычисляя p и q. Но в любом случае задача эта не проста и разработчики считают ее трудно факторизуемой.

Предположим, что мы имеем зашифрованный текст f(M) и исходный текст M, и мы хотим найти значения p и q. Нетрудно показать, что таких исходных данных для решения задачи недостаточно - надо знать все возможные значения Mi.

Проясним использование алгоритма RSA на конкретном примере. Выбираем два простые числа p=7; q=17 (на практике эти числа во много раз длиннее). В этом случае n = p*q будет равно 119. Теперь необходимо выбрать e, выбираем e=5. Следующий шаг связан с формированием числа d так, чтобы d*e=1 mod [(p-1)(q-1)]. d=77 (использован расширенный алгоритм Эвклида). d - секретный ключ, а e и n характеризуют открытый ключ. Пусть текст, который нам нужно зашифровать представляется M=19. С = Memod n. Получаем зашифрованный текст C=66. Этот “текст” может быть послан соответствующему адресату. Получатель дешифрует полученное сообщение, используя М= Cdmod n и C=66. В результате получается M=19.

На практике общедоступные ключи могут помещаться в специальную базу данных. При необходимости послать партнеру зашифрованное сообщение можно сделать сначала запрос его открытого ключа. Получив его, можно запустить программу шифрации, а результат ее работы послать адресату. На использовании общедоступных ключей базируется и так называемая электронная подпись, которая позволяет однозначно идентифицировать отправителя. Сходные средства могут применяться для предотвращения внесения каких-либо корректив в сообщение на пути от отправителя к получателю. Быстродействующие аппаратные 512-битовые модули могут обеспечить скорость шифрования на уровне 64 кбит в сек. Готовятся ИС, способные выполнять такие операции со скоростью 1 Мбайт/сек. Разумный выбор параметра e позволяет заметно ускорить реализацию алгоритма.

среда, 20 мая 2009 г.

Фестиваль Линукс в Ставрополе

24 мая 2009 года, в 11-00, первый раз в Ставрополе
состоится Linux Install Fest.
Цель этого фестиваля состоит в том, чтобы показать возможности
операционной системы GNU/Linux и Свободного программного обеспечения.
Фестиваль организован пользователями Linux, при поддержке Северо-Кавказской Группы Пользователей Linux.

У вас будет возможность ознакомиться, задать вопросы или установить дистрибутив.
Вам нужно будет иметь ноутбук или компьютер для установки. Дистрибутивы
раздаются бесплатно, но их количество ограничено.Поэтому, желательно
принести с собой болванки (CD-, DVD-R), чтобы получить свежие релизы дистрибутивов.

Место проведения будет разбито на несколько зон:

* Секция установки. Группа компьютеров с питанием, проводной сетью, несколькими мониторами/клавиатурами/мышами для пришедших со своими настольными компьютерами.
* Демонстрационная зона. Здесь мы постараемся предоставить доступ к уже готовым, установленным и настроенным системам для желающих просто посмотреть что такое Linux.
* Зона презентаций. Здесь гостям фестиваля будет предложено прослушать подготовленые организаторами материалы:
** Linux — как полноценная домашняя операционная система.
BigBuckBunny — демонстрация мультфильма, сделанного на полностью свободном ПО
** Linux — сетевая рабочая машина, высокая защищенность от вирусов.
** Linux в офисе.
** Linux — на мобильных устройствах.
** Linux — серверные решения.

На фестиваль принесут следующие димтрибутивы

* ArchLinux
* ASPLinux 12
* BackTrack 4 beta
* Damn Vulnerable Linux 1.5
* Debian
* Fedora 10
* Gentoo
* gparted-live-0.4.4-1
* kUbuntu 9.04
* Mandriva 2009 Free (Кому нужен Power Pack, обращайтесь в маг. Pascal)
* MOPSLinux 6.2
* nUbuntu 8.12
* OpenSUSE 11.1
* Sabayon Linux
* Slackware 12.2
* STD 0.1 (Knoppix)
* Ubuntu 9.04

Место проведения: Ставрополь,
переулок Черняховского, 3 — Колледж связи (бывший «Электротехникум»)
Проезд: маршрутки - 3, 4, 7, 19, 29, 46; автобусы - 4, 7, 46; троллейбусы - 3, 4.


Подробнее: здесь

Создание FTP сервера на базе ProFTPd с проверкой на вирусы через ClamAV

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

Речь в этой маленькой заметке пойдет о FTP сервере ProFTPd его базовой
настройке для предоставления анонимного доступа пользователей домашней
сети и сетей имеющих пиринговые отношения с ней. Но мой рассказ был бы
совсем не отличим от десятков подобных, если бы повествовал только об
настройке ProFTPd. Большинство серверов работающих с этой замечательной
службой имеют возможность как скачки так и закачки файлов и как
возможность - получение в папку Upload какого-либо вредоносного
программного кода. Но как известно демон ProFTPd является модульным и
поддерживает интеграцию с широко известным, свободно распространяемом
антивирусом ClamAV. К тому же, если на нашем предполагаемом сервере так
же закрутить почту, то можно попутно проверять проходящий почтовый
трафик на вирусы. Чтож, если вам нравиться эта идея, тогда поехали.

Итак, цель данной статьи - показать небольшие хитрости в настройке
связки FTP сервера ProFTPd и антивируса ClamAV для предоставления
доступа пользователям домашних локальных сетей к FTP поднятому на
домашнем сервере, c установленной на нем source-based операционной
системе Gentoo Linux. Так же в этой заметке не будет описано никаких
вариантов получения доступа кроме анонимного, т.к. в большинстве случаев
этого достаточно. Единственное что будет ограничивать доступ к службе -
IP адрес клиента. Это необходимо сделать, для того чтобы к нашему
серверу не подключались люди из Интернета (в случае реального IP) и
сетей с которыми не установлены пиринговые соглашения нашего провайдера
(и как результат - платный трафик).

Будем считать, что ваш сервер собран, настроен и на нем уже крутится
Gentoo, но не установлен ни ClamAV, ни ProFTPd. Что ж, это вполне
нормально, начнем мы собственно с установки и настройки антивируса. В
Gentoo это достаточно просто и практически не требует огромного
количества серого вещества:

emerge - pv clamav


Проверяем опции с которыми собирается ClamAV, смотрим все ли нас
устраивает и если все нормально, то просто повторяем команду без ключей "-pv"

Далее просто ждем пока антивирус не скачается, соберется и
инсталлируется, о чем на будет дополнительно сообщено на экране. Все
нормально ??? Тогда приступаем к его конфигурированию и запуску. Тут в
принципе наука то же не особенно большая. Смотрим в файл конфига и
внимательно читаем комментарии к опциям. Мне кажется что этого будет
достаточно для запуска службы:

/etc/clamd.conf

LogFile /var/log/clamav/clamd.log
LogTime
LogVerbose
PidFile /var/run/clamav/clamd.pid
TemporaryDirectory /tmp
DatabaseDirectory /var/lib/clamav
LocalSocket /var/run/clamav/clamd
FixStaleSocket
MaxConnectionQueueLength 30
User clamav
AllowSupplementaryGroups
ScanArchive
ArchiveMaxRecursion 2
ScanRAR
ArchiveMaxFileSize 50M
ArchiveMaxFiles 15000


Обратите внимание, я намеренно не стал запускать ClamAV на TCP порту,
т.к считаю что во многих случаях это упрощает работу, но если вам
необходимо проверять вирусы с удаленных машин или вам хочется
поморочиться с TCP, то конечно, какие могут быть вопросы, ваша система,
что хотите то с ней и делайте :) Но все же я бы дал маленькую
рекомендацию: Если вы уж и собрались запускать службу на TCP порту и
если не собираетесь предоставлять ее внешним пользователям, так хотя бы
запускайте ее на "локальной петле". Это будет на много безопасней.

Таааак, теперь нам необходимо ежедневно и по графику обновлять
антивирусные базы. Что же делать ? Но и тут разработчики ClamAV пошли
нам на встречу, создав демон FreshClam, который по заданному графику
будет обновлять вирусную информацию. Обычно он идет в комплекте с
антивирусом и собирается из исходных текстов вместе с ClamAV, а значит
нам всего лишь нужно подправить файл конфигурации.

/etc/freshclam.conf

DatabaseDirectory /var/lib/clamav
UpdateLogFile /var/log/clamav/freshclam.log
PidFile /var/run/clamav/freshclam.pid
DatabaseOwner clamav
DatabaseMirror database.clamav.net
Checks 24


Обратите внимание, я привожу в пример строки файла конфигурации без
комментариев. Это делается намеренно по двум причинам. Первая причина -
чтобы не раздувать наше маленькое повествование, ну и вторая причина -
это то что все строки в оригинальном файле freshclam.conf очень подробно
описаны (правда на английском (если вы на нем не читаете, то что вы
забыли в Linux ??? ))

Все, приступаем к запуску.

/etc/init.d/clamd start

* Caching service dependencies ... [OK]
* Starting clamd ... [OK]
* Starting freshclam ... [OK]


Если видим эту картину, то все у нас замечательно и оба демона
запустились. Для того чтобы до конца убедиться что все работает смотрим
логи и видим там:

/var/log/clamav

Thu Feb 2 10:10:37 2006 -> +++ Started at Thu Feb 2 10:10:37 2006
Thu Feb 2 10:10:37 2006 -> clamd daemon 0.88 (OS: linux-gnu, ARCH: i386, CPU: i386)
Thu Feb 2 10:10:37 2006 -> Log file size limited to 1048576 bytes.
Thu Feb 2 10:10:37 2006 -> Verbose logging activated.
Thu Feb 2 10:10:37 2006 -> Running as user clamav (UID 101, GID 408)
Thu Feb 2 10:10:37 2006 -> Reading databases from /var/lib/clamav
Thu Feb 2 10:10:44 2006 -> Protecting against 43895 viruses.
Thu Feb 2 10:10:44 2006 -> Unix socket file /var/run/clamav/clamd
Thu Feb 2 10:10:44 2006 -> Setting connection queue length to 30
Thu Feb 2 10:10:44 2006 -> Listening daemon: PID: 21378
Thu Feb 2 10:10:44 2006 -> Archive: Archived file size limit set to 52428800 bytes.
Thu Feb 2 10:10:44 2006 -> Archive: Recursion level limit set to 8.
Thu Feb 2 10:10:44 2006 -> Archive: Files limit set to 15000.
Thu Feb 2 10:10:44 2006 -> Archive: Compression ratio limit set to 250.
Thu Feb 2 10:10:44 2006 -> Archive support enabled.
Thu Feb 2 10:10:44 2006 -> Archive: RAR support enabled.
Thu Feb 2 10:10:44 2006 -> Portable Executable support enabled.
Thu Feb 2 10:10:44 2006 -> Mail files support enabled.
Thu Feb 2 10:10:44 2006 -> OLE2 support enabled.
Thu Feb 2 10:10:44 2006 -> HTML support enabled.
Thu Feb 2 10:10:44 2006 -> Self checking every 1800 seconds.


Ну и как контрольный выстрел в голову: netstat -l

Proto RefCnt Flags Type State I-Node Path
unix 2 [ ACC ] STREAM LISTENING 3419811 /var/run/clamav/clamd


Ура, вроде все заработало !!!

И конечно же добавляем все это в автозагрузку:

rc-update add clamav default


Теперь настала пора разбираться с ProFTPd. Тут нас ждут не совсем
приятные сюрпризы. Дело в том что модуль, который проверяет файлы
проходящие по FTP протоколу с/на нашу машину писался сторонними
разработчиками и по этому добавление его в в систему вызовет некоторые
проблемы. Что за проблемы спросите вы ??? Все очень просто, обычно для
установки пакетов в Gentoo используется команда emerge, которая
выполняет комплекс действий, таких как скачивание, проверка контрольных
сумм, распаковка, сборка и прочие действия. В нашем же случае модуль не
входит в пакет и следовательно не будет скомпилирован вместе с демоном.
Простая добавка его в архив с дистрибутивом вызовет несовпадение
контрольных сумм Не беда воскликнут люди привыкшие работать с FreeBSD,
скачаем сырцы, соберем демон ручной работы, напишем стартовые скрипты
сами и будем счастливы !!! Но это не наш метод. Все это конечно
правильно и контролируемо, но я например считаю себя немного лентяем.
Зачем делать руками, если за тебя может многое сделать система. И так
самое интересное.

В одной консоли собираем ProFTPd по умолчанию !!!

emerge -pv proftpd


Добавляем или убираем все необходимые параметры и записываем их на
бумажку, т.к. потом они нам понадобятся. Среди них я бы на всякий случай
включил +pam и +mysql, пущай будут, мало ли что нам понадобиться.
Например аутентифицировать привилегированных пользователей или
что-нибудь хранить в базе, статистику или еще чего.

Открываем вторую консоль.

Обратите внимание, началась ли сборка в первой консоле и если процесс
прошел стадию скачивания, то во второй консоли идем в директорию

/usr/portage/distfiles


и находим там архив с сырцами ProFTPd. Копируем его во временно
созданную папку, распаковываем и читаем инструкцию по установке. После
этого идем на сайт демона, в раздел дополнительных модулей и ищем модуль
mod_clamav. Либо сразу идем по ссылке:

http://www.uglyboxindustries.com/mod_clamav.html


и тянем его оттуда. По инструкции, для сборки с ProFTPd с какими-либо
модулями они должны быть помещены в папку /contrib в директории куда
распаковали архив дистрибутива. После чего можно приступить к
конфигурированию и сборке. И так в папке с распакованным
дистрибутивом.......

./configure --help > configure.hlp


Смотрим что там внутри, вспоминаем ключики которые мы записали на
бумажку в предыдущем абзаце и смотрим как правильно все это подключить.
Получилось вот что:

./configure --with-modules=mod_ratio:mod_auth_pam:mod_tls:mod_readme:mod_wrap: \\ mod_sql: mod_sql_mysql:mod_clamav \
--with-includes=/usr/include/mysql --enable-ncurses


Вот такая длиннющая строка, остальное если мне не изменяет память должно
само срастись :) После завершения работы скрипта конфигурации как всегда
делаем make.

Далее сборка и по ее завершению мы получаем демон с вкомпилированным в
него дополнительным модулем. Так, смотрим на первую консоль. Что видим
??? Ага, сборка по умолчанию закончилась, пакет установился и с виду все
нормально. Отлично, теперь необходимо пойти в каталог с демоном, а это:

/usr/sbin/proftpd


и сделать его копию в какую-нибудь папку. Вернемся во вторую консоль и
посмотрим, не закончился ли процесс сборки. Так, закончился, очень
хорошо. Теперь нужно взять из папки собранный в ручную демон, который
находится в корне каталога с распакованным дистрибутивом и заменить им
демон собранный на автопилоте и на всякий случай нами забэкапленный.
Отлично, теперь мы имеем демон работающий с нестандартным модулем,
стартовые скрипты по умолчанию для данного демона, установленные по
нужным папкам библиотеки и прочий хлам. Что еще осталось ??? Добавить
ProFTPd в автозагрузку и исправить файл конфигурации. Первое:

rc-update add proftpd default


Второе. Тут все зависит от того что нам нужно, а нужен нам всего лишь
анонимный вход и права на папки Download - только чтение и Upload -
чтение и запись. Так же список разрешенных диапазонов IP адресов и
сеток.

В моем случае это выглядит примерно так:

ServerName "My FTP Server"
ServerType standalone
DefaultServer on
Port 21
Umask 022
MaxInstances 30
TimeoutLogin 120
TimeoutIdle 600
TimeoutNoTransfer 900
TimeoutStalled 3600
User ftp
Group ftp
UseReverseDNS off
ScoreboardFile /var/run/proftpd/proftpd
TransferLog /var/log/proftpd/xferlog.legacy
LogFormat default "%h %l %u %t \"%r\" %s %b"
LogFormat auth "%v [%P] %h %t \"%r\" %s"
LogFormat write "%h %l %u %t \"%r\" %s %b"


Order allow,deny
Allow from xxx.xxx.xxx.xxx/xx # Пишим IP адреса кому можно подключаться.
Deny from all



AllowOverwrite yes
IdentLookups off
ExtendedLog /var/log/proftpd/access.log WRITE,READ write
ExtendedLog /var/log/proftpd/auth.log AUTH auth


# Включаем проверку
ClamAV on


#Делаем анонимный вход корневая папка /usr/ftp
User ftp
Group ftp
UserAlias anonymous ftp
RequireValidShell no
MaxClients 5


AllowAll


DenyAll


#Папка Upload и права на нее

AllowAll


DenyAll



# Папка Download и права на нее

AllowAll


DenyAll





Вот такой не сложный конфиг. Что еще можно добавить ??? Наверное больше
ничего, хотя да, нужно же запустить демон и проверить его
работоспособность !!!

/etc/init.d/proftpd start

* Starting proftpd ...
- mod_clamav/0.3: info: loaded 44059 virus patterns [OK]


Вооооо, теперь все запустилось !!! Модуль нашел ClamAV и даже подцепил
его базы !!!

Отлично, на этом я думаю можно закончить мое повествование. Буду рад
любым замечаниям и комментариям, которые сразу же будут включены в
статью.

С уважением.
Фомичев Алексей

Любая перепечатка и распространение статьи возможна только со ссылкой на
автора. Все комментарии и предложения желательно отправлять на
электронный адрес

Как в программе на VB определить имя и IP-адрес компьютера?

Подготовте проект, добавив в него форму.
На форму поместите:
- Кнопку с именем cmdGetHost
- 2 текстовых поля с именами txtHostName и txtIpAddr
Добавте в форму:
Option Explicit
Private Const MAX_WSADescription = 256
Private Const MAX_WSASYSStatus = 128
Private Const ERROR_SUCCESS As Long = 0
Private Const WS_VERSION_REQD As Long = &H101
Private Const WS_VERSION_MAJOR As Long = WS_VERSION_REQD \ &H100 And &HFF&
Private Const WS_VERSION_MINOR As Long = WS_VERSION_REQD And &HFF&
Private Const MIN_SOCKETS_REQD As Long = 1
Private Const SOCKET_ERROR As Long = -1
Private Type HOSTENT
hName As Long
hAliases As Long
hAddrType As Integer
hLen As Integer
hAddrList As Long
End Type
Private Type WSADATA
wVersion As Integer
wHighVersion As Integer
szDescription(0 To MAX_WSADescription) As Byte
szSystemStatus(0 To MAX_WSASYSStatus) As Byte
wMaxSockets As Integer
wMaxUDPDG As Integer
dwVendorInfo As Long
End Type
Private Declare Function WSAGetLastError Lib "WSOCK32.DLL" () As Long
Private Declare Function WSAStartup Lib "WSOCK32.DLL" (ByVal wVersionRequired As Long, lpWSADATA As WSADATA) As Long
Private Declare Function WSACleanup Lib "WSOCK32.DLL" () As Long
Private Declare Function gethostname Lib "WSOCK32.DLL" (ByVal szHost As String, ByVal dwHostLen As Long) As Long
Private Declare Function gethostbyname Lib "WSOCK32.DLL" (ByVal szHost As String) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (hpvDest As Any, ByVal hpvSource As Long, ByVal cbCopy As Long)
Public Function GetIPAddress() As String
Dim sHostName As String * 256
Dim lpHost As Long
Dim HOST As HOSTENT
Dim dwIPAddr As Long
Dim tmpIPAddr() As Byte
Dim i As Integer
Dim sIPAddr As String
If Not SocketsInitialize() Then
GetIPAddress = ""
Exit Function
End If
If gethostname(sHostName, 256) = SOCKET_ERROR Then
GetIPAddress = ""
MsgBox "Windows Sockets error " & Str$(WSAGetLastError()) & " has occurred. Unable to successfully get Host Name."
SocketsCleanup
Exit Function
End If
sHostName = Trim$(sHostName)
lpHost = gethostbyname(sHostName)
If lpHost = 0 Then
GetIPAddress = ""
MsgBox "Windows Sockets are not responding. " & "Unable to successfully get Host Name."
SocketsCleanup
Exit Function
End If
CopyMemory HOST, lpHost, Len(HOST)
CopyMemory dwIPAddr, HOST.hAddrList, 4
ReDim tmpIPAddr(1 To HOST.hLen)
CopyMemory tmpIPAddr(1), dwIPAddr, HOST.hLen
For i = 1 To HOST.hLen
sIPAddr = sIPAddr & tmpIPAddr(i) & "."
Next
GetIPAddress = Mid$(sIPAddr, 1, Len(sIPAddr) - 1)
SocketsCleanup
End Function
Public Function GetIPHostName() As String
Dim sHostName As String * 256
If Not SocketsInitialize() Then
GetIPHostName = ""
Exit Function
End If
If gethostname(sHostName, 256) = SOCKET_ERROR Then
GetIPHostName = ""
MsgBox "Windows Sockets error " & Str$(WSAGetLastError()) & " has occurred. Unable to successfully get Host Name."
SocketsCleanup
Exit Function
End If
GetIPHostName = Left$(sHostName, InStr(sHostName, Chr(0)) - 1)
SocketsCleanup
End Function
Private Function HiByte(ByVal wParam As Integer)
HiByte = wParam \ &H1 And &HFF&
End Function
Private Function LoByte(ByVal wParam As Integer)
LoByte = wParam And &HFF&
End Function
Private Sub SocketsCleanup()
If WSACleanup() <> ERROR_SUCCESS Then
MsgBox "Socket error occurred in Cleanup."
End If
End Sub
Private Function SocketsInitialize() As Boolean
Dim WSAD As WSADATA
Dim sLoByte As String
Dim sHiByte As String
If WSAStartup(WS_VERSION_REQD, WSAD) <> ERROR_SUCCESS Then
MsgBox "The 32-bit Windows Socket is not responding."
SocketsInitialize = False
Exit Function
End If
If WSAD.wMaxSockets < MIN_SOCKETS_REQD Then
MsgBox "This application requires a minimum of " & CStr(MIN_SOCKETS_REQD) & " supported sockets."
SocketsInitialize = False
Exit Function
End If
If LoByte(WSAD.wVersion) < WS_VERSION_MAJOR Or (LoByte(WSAD.wVersion) = WS_VERSION_MAJOR And HiByte(WSAD.wVersion) < WS_VERSION_MINOR) Then
sHiByte = CStr(HiByte(WSAD.wVersion))
sLoByte = CStr(LoByte(WSAD.wVersion))
MsgBox "Sockets version " & sLoByte & "." & sHiByte & " is not supported by 32-bit Windows Sockets."
SocketsInitialize = False
Exit Function
End If
SocketsInitialize = True
End Function
' Использование
Private Sub cmdGetHost_Click()
txtHostName = GetIPHostName()
txtIpAddr = GetIPAddress()
End Sub
Мир программирования на Visual BASIC 5.0 и HTML

Что означают смайлики?

С помощью "смайликов" люди выражают свои чувства: смеются, плачут, издеваются.
ГЛАВНЫЕ
: -) Улыбка: это шутка (или улыбка в ответ на шутку)
;-) Подмигивание (видишь, я шучу)
: - ( Печаль, огорчение
: -> Сарказм.
: ) Улыбается
: ] Ухмыляется
: @ Кричит
: D Смеется
: I Думает
: ( Грустит
: [ Злобно усмехается
: O Громко говорит
: Q Курит
: * Целует
|I Спит
|O Зевает
: P Показывает язык
=) Всего хорошего
ИЗМЕНЯЕМ ВЫРАЖЕНИЕ РОТИКА
: -[ Злобная усмешка
: -E Вампир оскалил зубы
: -7 Только что не то ляпнул
: -* Целует
: -@ Кричит
: -# Оскалил зубы
: -& Завязал язык узлом
: -Q Курит
: -? Курит трубку
: -P Показывает язык
: -S Сказал что-то не то
: -D Громко смеется
: -X Крепко сжал губы
: -/ Настроен скептически
: -o О-го-го
: -9 Облизывает губы
: -0 Оратор
: -1 или: -! Все нормально
: -$ Рот зашит
: -% Банкир
: -q Пытается достать до носа языком
: -e Растерян, полная непонятка
: -t Злой и сердитый
: -i Ухмылка
: -] Идиот
: -[ Неулыбчивый идиот
: -} Бородатый
: -{ Усатый
: -j Улыбка перекошена налево
: -\ Нерешительность
: -| Хммммммм...
: -< Очень расстроен
: -x Поджал губы
: -v Болтун
: -b Показывает язык
ИЗМЕНЯЕМ НОСИК
: *) Пьяный в доску
: ^) Нос поломан
: v) Нос поломан в другую сторону
: _) Без носа
: <) Боксер
: =) Два носа
: o) Клоун
: u) Смешной нос
ИЗМЕНЯЕМ ГЛАЗА
%-) Смотрит на монитор уже 24 часа
8-) Носит солнечные очки
B-) Носит очки
ИЗМЕНЯЕМ ВЫРАЖЕНИЕ ВСЕГО ЛИЦА
|-I Спит
|^o Храпит
|-O Зевает
%-6 Сошел с ума
8-| Подозрителен
(8-o Напуган
>: -I Насупил брови
#-) Фестивалил всю ночь
ДОБАВЛЯЕМ НОВЫЕ ЭЛЕМЕНТЫ
:: -) Носит очки (четырехглазый)
B: -) Очки подняты на лоб
8: -) Маленькая девочка
: -)-8 Большая девочка
: -{) С усами
: -#) С густыми усами
{: -) Носит парик
}: -) Носит фуражку
: -)~ Пускает слюни
: -~) Простужен
: '-) Плачет от счастья
=: -) Носит пилотку
-: -) Панк
': -) Сбрита одна бровь
,: -) Сбрита другая бровь
O: -) Ангел
C=: -) Шеф-повар
*<: -) Дед Мороз
E-: -) Ди-джей
8: -) Волшебник
@: -) Носит чалму
[: -) Слушает плеер
: -)) Двойной подбородок
>: -) Дьявол
(: -) Большая улыбка
+: -) Священник
: -)X Носит галстук-бабочку
ПРОЧИЕ СМАЙЛИКИ
(-: Левша
[: ] Робот
: -{} Губы в помаде
: '- ( Плачет
<|-) Китаец
<|- ( Китаец, который не любит таких шуток
-: - ( Настоящие панки никогда не улыбаются
@= За ядерную войну
*: o) Клоун с бонбончиком
3: ] Собака улыбается
3: [ Собака оскаливает зубы
d8= Бородач в очках и бейсболке
(: I Цыпленок вылупился из яйца
: -: Мутант
Невидимка
X- ( Умер
[] Объятия
~~: - ( Волосы горят
O |-) Религиозен
8: -I Специалист по юниксу

Что значит ИМХО?

ИМХО - IMHO - In My Honest/Humble Opinion - по моему скромному мнению

Как скрыть программу с панели задач и диспетчера задач?

Для того, чтобы убрать программу из TaskBar'а и Task Manager'а (Ctrl-Alt-Del) надо использовать следующий код:

function RegisterServiceProcess(ProcessID, Typ: Integer): Integer;
external 'KERNEL32.DLL';

procedure TForm1.Button1Click(Sender: TObject);
begin
RegisterServiceProcess(GetCurrentProcessId, 1);
ShowWindow(Application.Handle, SW_HIDE);
SetWindowLong(Application.Handle, GWL_EXSTYLE,
GetWindowLong(Application.Handle, GWL_EXSTYLE) or
WS_EX_TOOLWINDOW);
end;

Как узнать марку материнской платы?

1. При загрузке машины (сразу после проверки памяти и определения IDE-устройств, перед табличкой о проце и т.п) находим внизу экрана строку и записываем на бумажку.
Например:
VX-Pro-UMC8670-2A5LAH09C-00
2. Нас интересует: 2A5LAH09C-00.
Отсюда можно выкусить следующее:
2A5LA - код чипсета
H0 - код производителя.
Эти коды приведени в следующих таблицах:
====================
Code Chipset
-------------------------
213V1 SARC RC2018
21480 HiNT SC9204 (Sierra), HMC82C206
214D1 HiNT SC9204 (Sierra), HMC82C206
214I8 SiS 85C471
214I9 SiS 85C471E
214L2 VIA VT82C486A
214L6 VIA Venus VT82C486A/VT82C495/VT82C496G
214W3 VD 88C898
214X2 UMC 491 Chipset
215UM OPTi 82C546/82C597
21917 ALD Chipset
219V0 SARC RC2016
2A431 Cyrix MediaGx Cx5510 chipset
2A432 Cyrix GXi Cx5520 Chipset
2A433 Cyrix GXm Cx5520 Chipset
2A434 Cyrix GXm Cx5530 Chipset
2A496 Intel Saturn Chipset
2A498 Intel Saturn II Chipset
2A499 Intel Aries Chipset
2A4H2 Contaq 82C596-9 Chipset
2A4IB SiS 496/497 Chipset
2A4J6 Winbond W83C491(SL82C491 Symphony Wagner)
2A4KA ALi
2A4KC ALi 1439/45/31 Chipset
2A4KD ALi 1487/1489 Chipset
2A4L4 VIA 486A/482/505 Chipset
2A4L6 VIA 496/406/505 Chipset
2A4O3 EFAR EC802GL, EC100G chipset
2A4UK OPTI-802G-822 Chipset
2A4X5 UMC 8881E/8886B Chipset
2A4Z0
2A597 Intel Mercury Chipset
2A59A Intel Natoma (Neptune) Chipset
2A59B Intel Mercury Chipset
2A59C Intel Triton FX chipset (Socket 7 based m/b)
2A59F Intel Triton II HX chipset (also kwown 430 HX
PCIset) (Socket 7 based m/b)
2A59G Intel Triton VX chipset (Socket 7 based m/b)
2A59H Intel Triton VX chipset (Socket 7 based m/b)
with an illegal BIOS
2A59I Intel Triton TX chipset (Socket 7 based m/b)
2A5C7 VIA VT82C570 Chipset
2A5G7 VLSI VL82C594 Chipset
2A5GB VLSI Lynx VL82C541/VL82C543 Chipset
2A5IA SiS 501/02/03 Chipset
2A5IC SiS 5501/02/03 Chipset
2A5ID SiS 5511/12/13 Chipset
2A5IE SiS 5101-5103 Chipset
2A5IF SiS 5596/5597 Chipset
2A5IH SiS 5571 Chipset
2A5II SiS 5582/5597/5598 Chipset
2A5IJ SiS 5120 Mobile Chipset
2A5IK SiS 5591 Chipset
2A5IM SiS 530 Chipset
2A5KB Ali 1449/61/51 Chipset
2A5KE ALI 1511 Chipset
2A5KF ALI 1521/23 Chipset
2A5KI ALI IV+ M1531/M1543 Chipset (Super TX chipset)
2A5KK Ali Aladdin V Chipset
2A5L5 VIA ?
2A5L7 VIA VT82C570 Chipset
2A5L9 VIA VT82C570M Chipset
2A5LA VIA Apollo VP1 Chipset (VT82C580VP) (sometimes
relabeled as VXPro chipset)
2A5LC VIA Apollo VP2 Chipset ( AMD640 chipset)
2A5LD VIA VPX Chipset (VXPro+ chipset)
2A5LE VIA Apollo (M)VP3 Chipset
2A5LH VIA Apollo VP4 Chipset
2A5R5 Forex FRX58C613/601A chipset
2A5R6 Forex FRX58C613A/602B/601B
2A5T6 ACC Micro 2278/2188 (Auctor) chipset
2A5UI Opti 82C822/596/597 Chipset or OPTi 596/546/82
2A5UL Opti 82C822/571/572 Chipset
2A5UM Opti 82C822/546/547 Chipset
2A5UN Opti Viper-M 82C556/557/558 Chipset or Opti
Viper 82C556/557/558
2A5UP Opti Viper Max
2A5X7 UMC 82C890 Chipset
2A5X8 UMC UM8886BF/UM8891BF/UM8892BF Chipset
2A5XA UMC 890C Chipset
2A69H Intel 440FX chipset (Pentium II/Pentium Pro
based chipset)
2A69J Intel 440LX/EX chipset (Pentium II) !!!ВОТ ВАШ!!!
2A69K Intel 440BX chipset (Pentium II)
2A69L Intel 'Camino' 820 Chipset
2A69M Intel Whitney 810 Chipset
2A69N Intel Banister Mobile ChipSet with C&T 69000
Video
2A6IL SiS 5600 Chipset
2A6IN SiS 620 Chipset
2A6KL Ali 1621/1543C Chipset
2A6KO ALi M1631/M1535D
2A6LF Via Apollo Pro (691/596) Chipset
2A6LG Via Apollo Pro Plus (692/596) Chipset
2A6LI Via MVP4 VIA 601(Trident video on-chip)/686A
(Modem on-chip, Sound on-chip)
2A6LJ VIA 694X/596B and VIA 694X/686A(Modem on-chip,
Sound on-chip)
2A9KG ALi M6117/M1521/M1523 chipset
2AG9H Intel Neptune ISA Chipset
2B496 Intel Saturn I EISA chipset
2B597 Intel Mercury EISA chipset
2B59A Intel Neptune EISA Chipset
2B59F Intel 430HX EISA chipset
2B69D Intel Orion EISA Chipset
2C470 HYF82481 chipset
2C4D2 HiNT SC8006 (Sierra), HMC82C206
2C4I7 SiS 461 Chipset
2C4I8 SiS 85C471B chipset
2C4I9 SiS 85C471B/E/G chipset
2C4J6 Winbond W83C491(SL82C491 Symphony Wagner)
2C4K9 ALI 14296 Chipset
2C4KC Ali 1439/45/31 Chipset
2C4L2 VIA 82C486A Chipset
2C4L6 VIA VT496G Chipset
2C4L8 VIA VT425MV chipset
2C4O3 EFAR EC802G-B Chipset
2C4S0 AMD Elan 470
2C4T7 ACC Micro 2048 (Auctor)
2C4UK OPTI 82C895/82C602
2C4X2 UMC UM82C491/82C493 chipset
2C4X6 UMC UM498F/496F
6A6LK VIA VT8371 (KX-133) chipset
6A6S2 AMD 751 chipset
Code Manufacturer
-------------------------
A0 ASUS
A1 Abit (Silicon Star)
A2 Atrend
A3 Bcom (ASI)
A7 AVT (Concord)
A8 Adcom
AB AOpen
AD Amaquest
AK Advantech
AM Achme
AT ASK Technology
AX Achitec
B0 Biostar
B1 BEK-Tronic Technology
B2 Boser
B3 BCM
C1 Clevo
C2 Chicony
C3 Chaintech
C5 Chaplet
C9 Computrend
CF Flagpoint
CS Gainward or CSS Laboratories
D0 Dataexpert
D1 DTK
D2 Digital
D3 Digicom
D4 DFI (Diamond Flower)
D7 Daewoo
DE Dual Tech
DI Domex (DTC)
DJ Darter
DL Delta Electronics
E1 ECS (Elitegroup)
E3 EFA
E4 ESPCo
E6 Elonex
E7 Expen Tech
EC ENPC
F0 FIC (FICA)
F1 Flytech Group International
F2 Free Tech or flexus?
F3 Full Yes
F5 Fugutech
F8 Formosa Industrial Computing
F9 Fordlian
G0 Giga-byte
G1
G3 Gemlight
G5 GVC
G9 Global Circuit Technology
GA Giantec
GE Zaapa
H0 Hsing-Tech (PcChips)
H2 HOLCO (Shuttle)
HH HighTech Information System
I3 IWill
I4 Inventa (Twn)
I5 Informtech
I9 ICP
IA Infinity
IC Inventec (notebooks)
IE Itri
J1 Jetway (Jetboard, Acorp)
J2 Jamicon (Twn)
J3 J-Bond
J4 Jetta
J6 Joss
K0 Kapok
K1 Kamei
KF Kinpo
L1 Lucky Star
L7 Lanner Electronics Inc.
L9 Lucky Tiger
LB LeadTek
M0 Matra
M2 Mycomp (TMC) / Megastar
M3 Mitac
M4 Micro-star
M8 Mustek
M9 MLE
MH Macrotek
N0 Nexcom
N5 NEC
NM NMC (New Media Communication)
NX Nexar
O0 Ocean (Octek)
P1 PC-Chips
P4 Asus
P6 Pro-Tech
P8 Azza
P9 Powertech
PA Epox & 2TheMax
PC Pine
PF President (dead)
PN Procomp Informatics Ltd.
PS Palmax (Notebooks)
PX Pionix
Q0 Quanta (Twn)
Q1 QDI
RA RioWorks Solutions Inc
R0 Mtech (Rise)
R2 Rectron
R3 Datavan International Corp.
S2 Soyo
S3 Smart D&M Technology Co., Ltd.
S5 Shuttle (Holco)
S9 Spring Circle
SA Seanix
SC Sukjung (Auhua Electronics Co. Ltd.)
SE Newtech or SMT ?
SH SYE (Shining Yuan Enterprise)
SJ Sowah
SL Winco
SM San-Li and Hope Vision, Superpower
SN Soltek
SR ???
SW S&D (manchmal auch A-Corp oder Zaapa)
T0 Twinhead
T1 Taemung or Fentech or Trang Bow
T4 Taken
T5 Tyan
T6 Trigem
TB Taeil ???
TG Tekram
TJ Totem
TL Transcend Information Inc.
TP Commate,0 Ozzo (?)
U0 U-Board (?)
U1 USI (Universal Scientific Industrial)
U2 AIR (UHC)
U4 Unicorn
U6 Unitron
U9 Warp Speed Ink.
V3 Vtech (PCPartner)
V5 Vision Top Technology
V6 Vobis
V7 YKM (Dayton Micro)
W0 Wintec (Edom)
W1 WellJoin
W5 Winco
W7 Win Lan Enterprise
XA ADLink Technology Inc.
X3 A-Corp
X5 Arima
Y2 Yamashita
Z1 Zida (Tomato)

Как лучше переустановить систему и отформатировать диск?

Переустановка Windows (вступление):
I. Переустановка "Поверх" - если надо чтобы программы остались там же и продолжили работать.
II. Переустановка "С Нуля" - при этом все программы, все файлы находящиеся на диске C удаляться (вплоть до папки Windows, Program Files и др.).
Начнем с того, что нужен установочный пакет Windows.
Далее, тебе необходимо решить, что тебе надо, а что нет!
+ для удобства установи Norton Commander - DOS-оболочка.
Переустановка Windows (действия):
Вариант №II ("С Нуля"):
1. Создать загрузочную дискету. (Пуск - Настройка - ПанельУправления - УстановкаИУдалениеПрограмм - вкладкаЗагрузочныйдиск - кнопкаСоздать)
2. Убедись в том, что все файлы и установочные пакеты тех программ которые понадобяться в будущем не находяться на диске С: (если находяться, то перенести их в другое место. Если хочешь перенести из Program Files, то можешь не страться, так как они после этого не будут работать).
Прим.ред.: но все же можно попробовать сохранить эту папку, после установки переустановить нужные программы и уже поверх этих подкаталогов записать сохраненные
Имеется ввиду: файлы необходимые непосредственно во время установки (Установочный пакет Windows), Папка Мои документы (если конешно там есть что-то полезное, у меня папка Мои документы для удобства находяться на диске D:), и другие файлы (доклады, рисунки, установочные пакеты прогрмамм). В твоем случае тебе надо оставить установочный пакет программ для ИР порта, для тач-пад и т.п. на другой диск. Если же у тебя всего один логический диск, то плохи дела и этот способ не пойдет.
Прим.ред.: В этом случае снимаешь хард и идешь к другу / в тех.центр или к кому-либо еще, кто имеет пишущий CD-привод и может тебе оказать такую услугу. Необходимые установочные файлы, которых у тебя нет на других компактах, документы, сохранки игр и вообще любые файлы лучше сохранять на CD-R, а не на CD-RW из соображений надежности.
3. Запомнить где находиться программа Norton Commander(путь к ней). По умолчанию: C:/NC/NC или C:/NC5/NC . Если ее нет, далее буду объеснять как обойтись без нее. Опять же Norton Commander не должен находиться на диске подлежащем форматированию (далее "формату").
4. Проверить папку Program Files на наличие нужных файлов (не забудь заглинуть в папку Winamp скопировать Skins).
А так же лучше проверить все папки на наличае нужного. Особенно чательно необходимо проверить папку Profiles если ты создавал разные рабочие столы.
5. Записать серийный номер версии Windows которую хочешь установить. Если это будешь проводить с CD-ROM'а (или с жесткого диска), то серийный номер указан либо на коробке к диском, либо в папке установки-имя файла Serial.txt, или ReadME.txt, или похожий текствый файл напоминающий, чтобы ты его прочел!
Прим.ред.: также, пока ты еще не удалил Windows его можно посмотреть в реестре:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion
в ключе ProductKey
6. Запомнить где на жестком диске находиться установочный пакет Windows (то есть сама установка). Если CD-ROM загрузочный (о чем обычно пишеться на коробке), то переписывать на жесткий диск папку с установочным пакетом Windows не надо.
7. Нажать ПУСК - ЗавершениеРаботы - ПерезагрузитьКомпьютерВРежимеMS-DOS
8. Вставить загрузочную дискету.
Прим.ред.: расчет идет из того, что у тебя стандартная установка параметра BootSequence в разде BIOS Features Setup, не измененная ни какими программами, а именно: A,C,CD-ROM
САМ ПРОЦЕСС УСТАНОВКИ:
9. Перед собой видишь черный экран и мигающий курсор. С клавиатуры вводишь путь к той папке где у тебя находиться Norton Commander/
Пример:
Norton Commander находиться на диске d в папке Utilits. Пишешь без кавычек "d:" нажимаешь [ENTER] (так ты перешел на диск D:)
Далее пишешь "utilits\nc\nc" и нажимаешь [ENTER].
Если окно NC не открылось, то попробуй еще раз ввести вот это: "utilits\nc" и нажимаешь [ENTER].
а. Если окно запустилось, то:
а.1 Вводишь с клавиатуры "format c:" и нажимаешь [ENTER]. Тебя спросят , что то типа "Вы то-то хотите сделать?" Нажмешь [Y] и [ENTER]. Пойдет процесс форматирования.
б. Если окно не запустилось, то:
б.1 Вводишь с клавиатуры "c:" и нажимаешь [ENTER] (можно просто ввести "C" и нажать [ENTER])
б.2 Вводишь "format c:" и нажимаешь [ENTER]. Тебя спросят , что то типа "Вы что-то хотите сделать?" Нажмешь [Y] и [ENTER]. Пойдет процесс форматирования.
После того, как процесс прошел тебя спросят создать метку тома (это как быдет называться диск C: в окне Мой компьютер)
Далее вводишь c клавиатуры путь к той папке где у тебя находиться Norton Commander
а)Если окно запустилось, то:
1)передвигаешься в ту папку где у тебя находиться установочный пакет Windows(кнопки ALT+F1, TAB, курсор вверх и вниз).Находишь в той папке файл SETUP.exe Запуститься установка Windows! Ура!
б)Если окно не запустилось, то:
1)с клавиатуры вводишь тот путь где находиться установочный пакет.
Пример:
Файл Setup.exe находиться на диске d в папке Dist вводишь d: и нажимаешь ENTER вводишь dist\setup.exe b наживаешь ENTER Запуститься установка Windows!Ура!
Прим.ред.: еще некоторые используют команду "DIR /P". То есть, если ты знаешь, на каком диске находится дистрибутив, но, хотя тебя и просили, не записал его точный адрес, то переходишь на нужный диск: "Z:" потом "DIR /P" и входишь постепенно в нужную папку
Далее в процессе установки введешь серийный номер, и стандартную установку.
ВСЕ!
Вариант №I ("Поверх"):
1. Проделать тоже самое, что и в предудущим описанием в пунктах 1 и 2, потом отдельно 4,5.
2. Запускаешь с CD-ROM (или с жесткого) файл setup.exe, Далее в процессе установки введешь серийный номер, и стандартную установку.
ВСЕ!
После установки тебе надо будет установить драйвера для всех устройств (если Windows это не сделанет самостоятельно). Но это уже совсем другая история! :-)

Где хранятся пароли в Windows XP?

Хранится в зашифрованном виде в файле SAM (%SystemRoot%\System32\config\).
A.F.

Что значит ИМХО?

ИМХО - IMHO - In My Honest/Humble Opinion - по моему скромному мнению

ЧТО ТАКОЕ НА САМОМ ДЕЛЕ GCC И G++

Что такое gcc и g++? Если задать этот вопрос людям, которые хотя бы отдаленно знакомы с Linux, то наверняка можно получить следующий ответ: «gcc — это компилятор языка Си, а g++ — компилятор С++». В каком-то смысле это будет правильный ответ. А если этим же людям задать другой вопрос: «А вы знаете, что на самом деле не существует компилятора g++, а gcc — это не Си-компилятор?» Бьюсь об заклад, что в 99% случаев можно услышать в ответ обвинения в ламерстве, дебилизме, параличе мозга, врожденной болезнью Дауна и пр. Ты тоже входишь в эти 99%? Тогда читай ниже.


Повсеместно читая мессаги в форумах или во время личного общения, я встречаю полное непонимание со стороны людей (среди которых попадаются и уже состоявшиеся программисты) того, как на самом деле работают gcc и g++. Этой статьей я попытаюсь открыть глаза на многие не простые вещи (а что вообще просто в мире *nix?) связанные с этими «компиляторами». Кто бы ты ни был: администратор, скрипт-кидди, кодер или простой юзер никс-системы - ты используешь gcc/g++, а значит должен понимать принципы их работы.



Несмотря на то, что на момент написания этой статьи уже появилась версия GCC 3.3.2, речь однако пойдет о версии 2.96. Именно эта версия установлена на моем стареньком Red Hat 7.1 и меня совершенно не втыкает выкачивать около 30 МБ (если не ошибаюсь, именно столько весит архив GCC 3.3.2), т. к. 2.96 меня пока что полностью устраивает. Я просмотрел список изменений и дополнений, прошедших с версии 2.96 и не заметил ни чего существенного, чтобы могло бы повлиять на ход этой статьи. Но в качестве домашнего задания, я оставляю тебе проверить все сказанное здесь для других версий компилятора и сообщить о результатах мне.




Подопытная крыса



Создадим простейшую тестовую программку на С++ и сохраним ее под именем hello.cpp:




#include <iostream>

int main() {

std::cout<<"Hello, World!\n";

return 0;
}


Выполним сначала компиляцию с помощью g++:



g++ -o hello hello.cpp



Все проходит без ошибок, в текущей директории образуется выполняемый файл hello. Теперь попробуем произвести компиляцию этой же программы с помощью gcc:



gcc -o hello hello.cpp



Компиляция не проходит, на экран вываливаются ошибки вроде тех, что показаны на скриншоте (см. рис. 1).



Рис. 1. gcc отказывается компилить CPP-программу

Рис.1. gcc отказывается компилить CPP-программу


Между тем gcc отлично справляется с любой Си-прогой. Так, значит, gcc не понимает программ на C++, а только Си-программы? Значит g++ и gcc два разных компилятора? Зачем же я тогда завел весь этот разговор? Подожди, подожди, давай обратимся к man.



Если ты не умеешь читать



Откроем man g++. Прямо с первых строк, в разделе описания читаем (я привожу сразу перевод):
«Компиляторы Си и Си++ объединены; g++ — это скрипт, который вызывает gcc с опциями языка С++. gcc пропускает входные файлы через одну или более из четырех стадий: препроцессирование, компиляцию, ассемблирование и линковку».

Нечто подобное можно найти и в man gcc. Продолжая дальше изучать эти маны, можно узнать, что, например, расширения исходных файлов .cc, .cpp, .C (прописная буква) и пр. зарезервированы для языка С++, а .c (строчная буква) — для языка Си. Именно по расширению компилятор определяет, на каком языке составлена программа.
К сожалению, у меня man g++ датируется аж апрелем 1993 года (спасибо компании Red Hat, чей дистрибутив я купил в 2001 году)! Поэтому он может не отражать современной действительности. Так g++ на самом деле ни какой не скрипт и gcc он не вызывает. Это легко проверить, удалив/переместив файл gcc (у меня он расположен в папке /usr/bin/gcc) и повторно скомпилировав hello.cpp с помощью g++. Компиляция пройдет на ура, а это значит, что gcc для его работы не требуется.

Поэтому обратимся лучше к самому свежему мануалу, а именно к «GCC 3.3.2 Manual», который можно найти на официальном сайте http://gcc.gnu.org/onlinedocs/. Вот что там можно прочитать (далее перевод):
«Несколько версий компиляторов объединены (C, C++, Objective-C, Ada, Fortran, Java). Вот почему мы используем название «GNU Compiler Collection». GCC может компилировать программы написанные на любом из этих языков. Ada, Fortran, Java описаны в отдельных мануалах.

«GCC» - общее стандартное обозначение от «GNU Compiler Collection». Это как общее название компилятора, так и название, используемое, когда акцент делается на компиляции C программ (как прежде это сокращение обозначало «GNU C
Compiler»).


Когда ссылаются на C++ компиляцию, обычно называют компилятор «G++». Поскольку есть только один компилятор, будет точным называть его «GCC» вне зависимости от языка; однако термин «G++» более полезен, когда ударение стоит на компиляции С++ программ».



Если ты так ничего и не понял



Как же так, мы ведь вначале статьи на эксперименте убедились, что gcc и g++ работают по-разному, а в мануале сказано, что есть только один компилятор GCC? Давай не будем делать поспешных выводов, а лучше снова обратимся к man. В разделе FILES обоих манов («man gcc» и «man g++») мы обнаружим интересную деталь (см. рис. 2), оказывается, что для компиляции Си-программ используется компилятор cc1, а для программ на C++ как gcc, так и g++ вызывают cc1plus! Так вот они настоящие компиляторы! Там же мы увидим имена файлов препроцессора, линкера и пр., причем все эти файлы являются составной частью пакета GCC! Значит, gcc и g++ просто вызывают указанные файлы, выполняя поочередно все этапы создания бинарника (препроцессирование, компиляцию, ассемблирование и линковку)!



Рис. 2. Вот они настоящие компиляторы!

Рис.2. Вот они настоящие компиляторы!

Но почему gcc отказался компилировать программу на C++? Дело в том, что gcc по умолчанию подключает к программе стандартную библиотеку языка C: libc, а g++ стандартную библиотеку языка C++: lstdc++. Таким образом, перед компиляцией программы на языке С++ достаточно принудительно указать gcc библиотеку lstdc++ и он откомпилирует программу не хуже g++. Т. е. для того чтобы gcc скомпилил нашу программу hello.cpp достаточно указать в командной строке следующее: gcc -o hello hello.cpp -lstdc++.



Сравнение работы gcc и g++



Хорошо, мы убедились, что gcc и g++ одинаково смогли справиться с задачей, но может быть на внутреннем уровне они отличаются? Может быть процесс создания исполняемого файла в них идет по-разному, а ведь это в свою очередь может свидетельствовать о том, что это совершенно независимые компиляторы? Что ж попытаемся выяснить и это. Естественно мы не будем рыться в исходниках GCC, т. к. компилятор это не программка в сотню строк и одной бутылочки, чтобы разобраться, явно не хватит. Для того чтобы увидеть, что происходит в действительности, существует замечательный ключик –v. Результат компиляции с использованием этого ключа показан на рисунке 3.



Рис. 3. Результат компиляции с опцией –v

Рис.3. Результат компиляции с опцией –v

Чтобы сравнить выходные данные gcc и g++, я сохранил результаты вывода в текстовые файлы:



gcc –v –o hello hello.cpp 2>tmp_gcc.txt

g++ -v –o hello hello.cpp 2>tmp_g++.txt



И воспользовавшись утилитой diff, выяснил, что выходные данные оказались практически одинаковыми. Отличие заключается лишь в именах темповых файлов, например в одном случае: /tmp/cczEKZcb.ii, а в другом: /tmp/ccdVfS2M.ii — но это само собой разумеющиеся отличия! Следовательно, процесс создания исполняемого файла на «внутреннем» уровне в обоих случаях протекает совершенно одинаково. Давай рассмотрим этот процесс в деталях.



gcc и g++ по косточкам



Далее я привожу пошаговый разбор той информации, которую выводят gcc и g++ с использованием ключа –v (tmp_gcc.txt или tmp_g++):



Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/2.96/specs


gcc version 2.96 20000731 (Red Hat Linux 7.1 2.96-81)


Эти строки говорят о том, что происходит чтение файла specs, на основании которого будет строиться дальнейшая компиляция, а также показывается номер версии компилятора gcc. Еще раз отмечаю: gcc и g++ выводят совершенно идентичную информацию!



/usr/lib/gcc-lib/i386-redhat-linux/2.96/cpp0 -lang-c++ -D__GNUG__=2 -D__EXCEPTIONS -v -D__GNUC__=2 -D__GNUC_MINOR__=96 -D__GNUC_PATCHLEVEL__=0 -D__ELF__ -Dunix -Dlinux -D__ELF__ -D__unix__ -D__linux__ -D__unix -D__linux -Asystem(posix) -Acpu(i386) -Amachine(i386) -Di386 -D__i386 -D__i386__ -D__tune_i386__ hello.cpp /tmp/cczEKZcb.ii
GNU CPP version 2.96 20000731 (Red Hat Linux 7.1 2.96-81) (cpplib) (i386 Linux/ELF)


Первым вызывается препроцессор cpp0, он заменяет в программе комментарии пробелами, вставляет файлы #include, преобразует директивы #define, #ifdef, #undef и пр. В результате препроцессирования образуется темповый файл /tmp/cczEKZcb.ii, необходимый для дальнейшей компиляции.



ignoring nonexistent directory "/usr/local/include"

ignoring nonexistent directory "/usr/i386-redhat-linux/include"

#include "..." search starts here:


#include <...> search starts here:

/usr/include/g++-3

/usr/lib/gcc-lib/i386-redhat-linux/2.96/include

/usr/include

End of search list.


Здесь мы видим, что препроцессор ищет необходимые include-файлы, указанные в двойных кавычках - в текущей директории, а заключенные в угловые скобки - по указанным трем путям.




/usr/lib/gcc-lib/i386-redhat-linux/2.96/cc1plus /tmp/cczEKZcb.ii -quiet -dumpbase hello.cpp -version -o /tmp/ccw4l1Ud.s
GNU C++ version 2.96 20000731 (Red Hat Linux 7.1 2.96-81) (i386-redhat-linux) compiled by GNU C version 2.96 20000731 (Red Hat Linux 7.1 2.96-81).



Теперь в работу вступает компилятор С++: cc1plus, который на основании файла /tmp/cczEKZcb.ii, полученного на этапе препроцессирования, создает исходник на ассемблере /tmp/ccw4l1Ud.s.



as -V -Qy -o /tmp/cc5T4w7y.o /tmp/ccw4l1Ud.s
GNU assembler version 2.10.91 (i386-redhat-linux) using BFD version 2.10.91.0.2


Далее наступает этап ассемблирования, для чего вызывается стандартный ассемблер as, который создает объектный файл /tmp/cc5T4w7y.o.



/usr/lib/gcc-lib/i386-redhat-linux/2.96/collect2 -m elf_i386 -dynamic-linker /lib/ld-linux.so.2 -o hello /usr/lib/gcc-lib/i386-redhat-linux/2.96/../../../crt1.o /usr/lib/gcc-lib/i386-redhat-linux/2.96/../../../crti.o /usr/lib/gcc-lib/i386-redhat-linux/2.96/crtbegin.o -L/usr/lib/gcc-lib/i386-redhat-linux/2.96 -L/usr/lib/gcc-lib/i386-redhat-linux/2.96/../../.. /tmp/cc5T4w7y.o -lstdc++ -lgcc -lc -lgcc /usr/lib/gcc-lib/i386-redhat-linux/2.96/crtend.o /usr/lib/gcc-lib/i386-redhat-linux/2.96/../../../crtn.o


Завершается все линковкой. Линковщик collect2 объединяет объектные файлы с необходимыми разделяемыми библиотеками и создает исполняемый файл. Ключ –L показывает, в каких директориях происходит поиск библиотек.



Ну и какие выводы?



Мы наглядно убедились, что gcc и g++ компилируют CPP-программы совершено одинаково, причем их основная роль в этом процессе заключается в вызове необходимых утилит (препроцессора, компилятора, ассемблера, линковщика). Точно также, к примеру, работает Microsoft Visual C++, который для того, чтобы создать исполняемый файл вызывает cl.exe, link.exe, lib.exe и пр. Т. е. gcc - это уже давно не Си-компилятор, а «GNU Compiler Collection», а g++ лишь одна из его составных частей, оставленная скорее для удобства (чтобы не терзать gcc левыми ключами), чем для каких-то реально необходимых целей. G++ как отдельный компилятор просто отсутствует в природе! На сервере ftp://ftp.gnu.org/ можно скачать лишь обновления библиотеки libstdc++. Но как сказано в мануалах, gcc можно называть С-компилятором, когда речь идет о компилировании С-программ, а g++, соответственно, можно называть CPP-компилятором, когда акцент ставится на CPP-программах. Тут терминология не особенно важна, главное понимать, что происходит в действительности, но как раз этого понимания большинству nix-men и не хватает.



История GCC



Первая версия gcc была создана основателем «Free Software Foundation» Ричардом Столманом в 1987 году. Первоначально аббревиатура GCC означала «GNU C Compiler», т. к. gcc тогда компилировал только Си-программы. Теперь GCC расшифровывается, как «GNU Compiler Collection», т. к. включает в себя множество компиляторов: C, C++, Objective-C, Ada, Java и пр. Огромный вклад в развитие GCC внесла компания Cygnus под руководством Майкла Тиманна (Michael Tiemann). В 1997 между Cygnus и «Free Software Foundation», из-за некоторых разногласий произошел раскол, и Cygnus создала свою версию компилятора EGCS. Однако в 1999 году конфликт был исчерпан и проект EGCS слился с GCC. Последнюю версию компилятора GCC всегда можно найти на официальном FTP-сервере: ftp://ftp.gnu.org/gnu/gcc/.







Особенность G++



В статье я не сказал об одной мелкой детали. G++ всегда по умолчанию линкует библиотеку математических подпрограмм libm (по крайней мере, версия GCC 2.96). По этой причине программы скомпилированные g++ получаются всегда немного большего размера, чем те же программы полученные с помощью gcc. Если при компиляции с помощью gcc в командной строке указать флаг –lm будет получен тот же эффект.



Источник: