понедельник, 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.

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

Кусочки: Как, зная Handle окна программы, определить имя EXE

Как, зная Handle окна программы, определить имя EXE

// Для начала определимкакому процессу принадлежит окно:

 
Var pProcID : ^DWORD;
begin
 GetMem (pProcID, SizeOf (DWORD));
 GetWindowThreadProcessId (WinHandle, pProcID);
end;

 
// а после этого используйте  TProcessEntry32 примерно так:
 
function GetExeNameByProcID (ProcID : DWord) : String;
var
 ContinueLoop : BOOL;
 FSnapshotHandle : THandle;
 FProcessEntry32 : TProcessEntry32;
begin
 FSnapshotHandle := CreateToolhelp32Snapshot (TH32CS_SNAPPROCESS, 0);
 
 FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
 
 ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
 
 Result := '';
 while (Integer (ContinueLoop) <> 0) and (Result='') do
 begin
  if FProcessEntry32.th32ProcessID = ProcID then
  Result := FProcessEntry32.szExeFile;
  ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
 end;
end;

 
// Не забудьте в uses добавить Tlhelp32

Кусочки: Получение информации о выполняющихся процессах (Win2000)

Для NT-платформы (Windows NT/2000) программный код может выглядеть следующим образом: 
function GetProcessesWinNT(var Proc: TProcArray):Integer;
var
Num: Integer;
LP: Array[0..$3FFF-1] of Dword; // заведомо большой массив
CB: DWord;
CBNeeded:DWord;
ProcHndl: THandle;
ModHand: HModule;
ModName: array [0..MAX_PATH] of Char;
I: Integer;
begin
  EnumProcesses(@LP,CB,CBNeeded);
  Num:= CBNeeded div SizeOf(DWORD);
  SetLength(Proc,Num);
 For I:=0 to Num-1 do
  begin
  ProcHndl:=
  OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ,False,LP[I]);
  If GetModuleFileNameEx(ProcHndl,ModHand,ModName,SizeOf(ModName))> 0 then
  Proc[I]:=ModName else Proc[I]:='Unknown';
  end;
IF ProcHndl > 0 then CloseHandle(ProcHndl);
Result:=Num;
end;


Здесь уже используется модуль PSAPI, который необходимо включить в раздел USES. Кому интересно разобраться в деталях данного кода отсылаю к справке по API. 

Замечу, что под управлением WINDOWS 2000, в списке процессов я наблюдал иногда "абракадабру" по путям некоторых процессов. Предлагаю в этом вопросе читателю разобраться самостоятельно, а у меня пока до этого не дошли руки. Тем не менее, считаю, что данная статья может послужить хорошим подспорьем, для всех интересующихся данным вопросом. 

В конце приведу код для определения платформы компьютера, поскольку он может понадобиться при реализации кода для вывода списка процессов. Оставляю его без комментариев. 
function GetPlatform: String;
var VI: TOSVersionInfo;
begin
VI.dwOSVersionInfoSize:=SizeOf(VI);
GetVersionEx(VI);
Case VI.dwPlatformId of
Ver_Platform_Win32s: Result:= 'Win32s';
Ver_Platform_Win32_Windows: Result:='Win95';
Ver_Platform_Win32_NT: Result:='WinNT'
else Result:='Unknown Platform'; 
end;
end;

Кусочки: Получение информации о выполняющихся процессах

Получить информацию о выполняющихся в данный момент на компьютере процессах можно на основе функций API. Для разных платформ эти функции отличаются, как и подключаемые для этих целей модули.

В Windows 95/98/2000/xp/nt код может выглядеть следующим образом: 

function GetProcessesWin95(var Proc: TProcArray):Integer;

var
FSnap: THandle;
PE: TProcessEntry32;
PPE: PProcessEntry32;
I: Integer;
begin
If FSnap > 0 then CloseHandle(FSnap);
FSnap:=CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS, 0);
PE.dwSize:=SizeOf(PE);
I:=0;
SetLength(Proc,1000); // заведомо большой массив
If Process32First(FSnap,PE) then
  repeat
  New(PPE);
  PPE^:=PE;
  Proc[I]:=PPE.szExeFile;
  I:=I+1;
  until not Process32Next(FSnap, PE);
Result:=I;
end;


Для работы этого кода нужно подключить в разделе USES модуль TlHelp32 (Help Tool API 32). 

Функция возвращает число процессов и записывает их пути в массив-переменную Proc. Тип переменной Proc - обычный массив строк, который нужно описать в разделе описания типов: 

type TProcArray = Array of String;

Поясню основные моменты реализации кода. Строка 
 
FSnap:=CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS, 0);

означает получение "моментального снимка всех процессов". Точнее, в результате ее выполнения мы получаем дескриптор снимка. Функции Process32First и Process32Next позволяют "пробежаться" по всем процессам. О более детальной информации отсылаю читателя к справочной литературе об API.

суббота, 18 октября 2008 г.

Кусочки: Примерная защита Shareware приложения

После добавления следующего кода в программу, она запустится только один раз за время сессии Windows. Для повторного запуска программы необходимо будет перезагрузить Windows. 

procedure TForm1.FormShow(Sender : TObject); 

var atom : integer; 

CRLF : string; 
begin 

if 
GlobalFindAtom('THIS_IS_SOME_OBSCUREE_TEXT') = 0 then 
atom := GlobalAddAtom('THIS_IS_SOME_OBSCUREE_TEXT') 
else 
begin 
  CRLF := #10 + #13; 
  ShowMessage('This programm will start only once' + CRLF + 
  for next start reboot windows please, or...' + CRLF + 
  'REGISTER PROGRAM !!'); 
  Close; 
end; 
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 на носитель и радуемся.
На этом я думаю закончить. Если что то не получается постим здесь.

WinAPI: Полезности в Delphi. getasynckeystate

Итак, в статье я опишу несколько маленьких, но очень полезных вещей в дельфи.
Они могут пригодиться при написании больших проектов.

О.Отлавливаем нажатие на клавиши.
Как вы знаете нажатие на клавишу мыши можно отследить при события MouseDown. Нам же нужно отследить какая клавиша нажата и вывести ее на экран. Для этого существуют 3 процедуры (аналогичные мышке) это 

KeyPress – нажатие
KeyDown – только нажатие
KeyUp – отпускание клавиши 

Создай новое приложение. Помести на форму 1 Label, и создай обработчик KeyDown для формы.

У этого события есть параметр Key сюда нужно записывать ANSII код клавиши. Все коды можно посмотреть здесь 
http://www.realcoding.net/article/view/1857.
Так, а вот и обработчик:

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key=51 then
Label1.Caption:='Ты нажал клавишу "3"';
end;

Теперь если жмакнешь по клавиши 3 появиться эта надпись.
Так вот. Думаю, ты понял, что отлавливать события нажатия на клавишу тут мы можем только у нашей формы или ее компонентов.

А если хочется и во всем Windows клавиши отлавливать.
Для этого существует API функция getasynckeystate в качестве параметра ей нужно указать виртуальный код клавиши, которую хотим отлавливать.
Вот список виртуальных кодов

vk_lbutton = $01;
vk_rbutton = $02;
vk_cancel = $03;
vk_mbutton = $04;
vk_back = $08;
vk_tab = $09;
vk_clear = $0c;
vk_return = $0d;
vk_shift = $10;
vk_control = $11;
vk_menu = $12;
vk_pause = $13;
vk_capital = $14;
vk_escape = $1b;
vk_space = $20;
vk_prior = $21;
vk_next = $22;
vk_end = $23;
vk_home = $24;
vk_left = $25;
vk_up = $26;
vk_right = $27;
vk_down = $28;
vk_select = $29;
vk_print = $2a;
vk_execute = $2b;
vk_snapshot = $2c; 
vk_insert = $2d;
vk_delete = $2e;
vk_help = $2f;
>> vk_a - vk_z такие же, как и их ascii-эквиваленты: 'a' - 'z' ($41 - $5A)<< >> vk_0 - vk_9 такие же, как и их ascii-эквиваленты: '0' - '9' ($30 - $39)}
vk_numpad0 = $60;
vk_numpad1 = $61;
vk_numpad2 = $62;
vk_numpad3 = $63;
vk_numpad4 = $64;
vk_numpad5 = $65;
vk_numpad6 = $66;
vk_numpad7 = $67;
vk_numpad8 = $68;
vk_numpad9 = $69;
vk_multiply = $6a;
vk_add = $6b;
vk_separator = $6c;
vk_subtract = $6d;
vk_decimal = $6e;
vk_divide = $6f;
vk_f1 = $70;
vk_f2 = $71;
vk_f3 = $72;
vk_f4 = $73;
vk_f5 = $74;
vk_f6 = $75;
vk_f7 = $76;
vk_f8 = $77;
vk_f9 = $78;
vk_f10 = $79;
vk_f11 = $7a;
vk_f12 = $7b;
vk_f13 = $7c;
vk_f14 = $7d;
vk_f15 = $7e;
vk_f16 = $7f;
vk_f17 = $80;
vk_f18 = $81;
vk_f19 = $82;
vk_f20 = $83;
vk_f21 = $84;
vk_f22 = $85;
vk_f23 = $86;
vk_f24 = $87;
vk_numlock = $90;
vk_scroll = $91;

Теперь кинь на форму таймер и установи интервал в 500 мс. Вот обработчик

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if getasynckeystate($1b)<>0 then
Label1.Caption:='Вы нажали «ESC»';
end;

Думаю тут все понятно. Теперь при наличии мозгов можно написать простенький клавиатурный шпион.

вторник, 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кб (как в С++), без всякого усечения и убирания пакетов.

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

Основы информатики. Вычисление обыкновенных дифференциальных уравнений. Метод Рунге-Кутта (через for)

Для расчетов на профессиональном уровне наиболее часто используются средства из группы методов РУНГЕ-КУТТА. Для большинства задач наиболее оптимальным из этой группы является метод Рунге-Кутта четвертого порядка, который достаточно прост в реализации, имеет высокую точность и хорошую устойчивость. Мы по-прежнему рассматриваем дифференциальное уравнение первого порядка y'=f(x,y) с начальным условием y(x0)=y0. Для решения выбирается достаточно малый постоянный шаг изменения независимой переменной h так, что очередное значение xi есть xi-1+h=x0+ih, где i=1,2,3,.... Очередное значение искомой функции определяется из предыдущего по формуле:где коэффициенты k на каждом шаге определяются через значения функции f(x,y) при определенных значениях аргументов:Можно видеть, что на каждом шаге сначала вычисляются коэффициенты в той последовательности, в которой они указаны (поскольку они вычисляются один через другой), а затем определяется очередное значение функции.

Программный код:
procedure TForm1.Button3Click(Sender: TObject);
var
 x,y,h,k1,k2,k3,k4:real;
 i,n:integer;
begin
 n:=strtoint(edit1.Text);
 h:=1/n;
 x:=0;
 y:=1;
 paintbox1.Canvas.Pen.Color:=clgreen;
 paintbox1.Canvas.moveto(c.x+round(x*f.x),c.Y-10-round(y*f.y));
 for i:=1 to n do
  begin
  k1:=x*y*h;
  k2:=((x+h/2)*(y+k1/2))*h;
  k3:=((x+h/2)*(y+k2/2))*h;
  k4:=((x+h)*(y+k3))*h;
  x:=x+h;
  y:=y+(k1+k4+2*(k2+k3))/6;
  paintbox1.Canvas.lineto(c.x+round(x*f.x),c.Y-10-round(y*f.y));
  end;
end;

Если у кого то Delphi ниже 7-й версии, то удалите в исходнике слово XPMan в разделе Uses, и строчку XPManifest1: TXPManifest; в разделе type.

Скачать проект

Программы: Borland Delphi 10 Lite 3.0


Borland Delphi 10 Lite 3.0 - модификация Delphi 2006, не требующая наличия .NET. Размер архива - 63 MB, что тем не менее позволяет создавать полноценные программы. В общем, для студентов начальных курсов лучшего варианта не найти.

1. Особенности:
- Очень маленький размер дистрибутива. Включены только Standard Components и Database Components.
- Выключены все установочные опции, КРОМЕ “Source code”.
- Добавлен программный шрифт Monospac821 BT. Рекомендуемые установки: размер 8 с включенным ClearType.
- Утилита Delphi Tweaks, расположенная в программной группе “Delphi 10 Lite”, позволяет настраивать Delphi IDE. Оптимальные настройки уже применены, так что на самом деле нет необходимости запускать Delphi Tweaks кроме тех случаев, когда вы захотите вернуть стандартные настройки.
- BORLNDMM.DLL обновлена до FastMM v4.62.
- Refactoring, ErrorInsite и поддержка ActiveX отключены, т.к. требуют наличия .NET Framework.
- Welcome Page удалена.
- Добавлена утилита OpenHelp из Delphi 7.
- Опциональные компоненты вынесены в отдельные установщики.
- Справочная система заменена справкой из Delphi 7, которая намного лучше и также не требует .NET Framework SDK.
- Update 1 уже применен (версия IDE = 10.0.2166.28377)

2. Системные требования:
- Windows 2000/XP и выше.
- 160 MB свободного места на диске.
В остальном, требования Delphi 10 Lite аналогичны требованиям Delphi 7.

3. Компоненты, входящие в Delphi 10 Lite
Delphi 10 Lite включает в себя следующие компоненты:
- Borland Standard Components
- Borland Database Components

4. Компоненты, входящие в Delphi 10 Lite в виде дополнительных установщиков:
- Borland ActionBar Components
- Borland ADO DB Components
- Borland BDE DB Components
- Borland Control Panel Applet Package
- Borland DataSnap Connection Components
- Borland dbExpress Components
- Borland Editor Emacs Enhancements
- Borland Editor Script Enhancements
- Borland InterBase Express Components
- Borland Internet Components
- Borland Markup Language Wizards
- Borland MyBase DataAccess Components
- Borland Sample Components
- Borland SimpleDataset Component (DBX)
- Borland SOAP Components
- Borland WebSnap Components
- Delphi 1.0 Compatibility Components
- Internet Explorer Components
- Microsoft Office 2000 Sample Automation Server Wrapper Components
- Microsoft Office XP Sample Automation Server Wrapper Components
- BDE Professional 5.2
- BDE Data Samples
- Rave Reports 6.5 BE
- TeeChart Pro v7.06

5. Содержание справки:
Справочная система заменена справкой из Delphi 7, которая намного лучше и также не требует .NET Framework SDK.
В справку включены только следующие материалы:
- Delphi Object and Component Reference
- Delphi Language Guide
- Delphi Compiler Messages and Warnings
- Delphi Compiler Options and Directives
- Microsoft Win32 Programmer’s Reference
- Glossary

Год выпуска: 2007
Язык интерфейса: только английский
Таблэтка: Не требуется

Размер 63mb

Скачать с RapidShare

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

Новости: Delphi 2009


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

Delphi 2009 — лучшая среда для разработчиков программного обеспечения и баз данных, которая позволяет быстро разрабатывать высокопроизводительные и простые в обслуживании приложения для Windows. С помощью мощной интегрированной среды разработки Delphi, визуального редактора интерфейса, огромного набора компонент и полноценной поддержки разнообразных баз данных стало возможным создавать качественные приложения гораздо быстрее, чем раньше.

Развитый язык программирования Delphi и быстрый компилятор обеспечивают высокую производительность при разработке native-приложений для Windows. Среда Delphi 2009, объединяющая обширную библиотеку компонентов, полный набор инструментов редактирования, рефакторинга и отладки, предоставляет в распоряжение разработчиков всё необходимое для быстрого и удобного создания приложений любых типов на платформе Windows.

Интернационализация приложений за счет поддержки Unicode

Delphi 2009 реализует полную поддержку Unicode, благодаря чему приложения могут выполняться на любой языковой версии Windows. Применение Unicode гарантирует, что приложения будут одинаково выглядеть и функционировать во всех языковых версиях Windows и безукоризненно поддерживать как Unicode-, так и ANSI-строки. Кроме того, новые усовершенствованные средства локализации помогают переводить приложения на различные языки.

Новые языковые возможности

Новые элементы для языка Delphi, включая шаблоны (Generics) и анонимные методы, позволяют создавать более гибкий код и предоставляют новые возможности для рефакторинга. 

Проектирование и разработка приложений баз данных, а также доступ к ним

Delphi 2009 обеспечивает эффективный и быстрый доступ ко всем популярным системам управления базами данных. С помощью надёжной и мощной платформы доступа к базам данных разработчики могут легко получать доступ и просматривать данные без написания кода. Создание, чтение, обновление и удаление данных можно легко выполнять с помощью визуальных элементов управления или кода. Новая многоуровневая архитектура DataSnap™ позволяет создавать в среде быстрой разработки высокопроизводительные, масштабируемые middleware-приложения для баз данных. Профессиональное средство моделирования ER/Studio, входящее в состав редакции Architect, позволяет проектировать схемы баз данных и выводит на новый уровень интеграцию разработки приложений и разработки баз данных.

Большая гибкость и полный контроль за счет повышения прозрачности исходного кода COM и ActiveX

Поддержка основных Windows-технологий COM и ActiveX в Delphi 2009 подверглась полной переработке. Теперь разработчики Delphi получили прозрачное и удобное решение для полного управления исходным кодом. Разработчики могут создавать объекты COM и ActiveX, объекты автоматизации и формы ActiveForm, а также упаковывать компоненты VCL в виде элементов управления ActiveX. Delphi 2009 — это полное решение для разработки объектов COM и ActiveX.

Создание веб-приложений с поддержкой технологии AJAX с помощью web-библиотеки VCL. Создание привле¬кательных приложений Web 2.0 аналогично приложениям Delphi

Разработка веб-приложений может включать непростой процесс объединения многочисленных технологий и требовать различных квалификаций разработчиков. В состав Delphi 2009 входит веб-библиотека VCL, с помощью которой разработчики Delphi могут воспользоваться навыками для разработки устойчивых полнофункциональных веб-приложений на основе AJAX, в том числе с поддержкой Microsoft Silverlight 2.0, без необходимости изучать многочисленные веб-технологии. Библиотека VCL for Web содержит огромную коллекцию хорошо знакомых компонентов, которые работают точно так же, как и их аналоги для Windows. 

Delphi — это единственная интегрированная среда быстрой разработки приложений для Windows 2000, XP и Vista. Delphi не только работает на всех трех платформах, но и позволяет разрабатывать приложения для любой из них. Например, в ОС Windows 2000 можно разрабатывать приложения для Vista. Это позволяет использовать операционную систему, наилучшим образом отвечающую требованиям разработчика, и при этом создавать приложения для всех платформ.

Пакет Delphi and C++Builder 2009 — два популярных средства разработки для платформы Windows по превосходной цене и с единой лицензией разработчика на оба продукта. Этот выпуск — оптимальный выбор для разработчиков программного обеспечения, желающих создавать высокоэффективные приложения на платформе Windows и использовать при этом два языка программирования Delphi и C++, а также для тех, кто хочет создавать компоненты Delphi для расширения возможностей C++Builder. Версия Professional предоставляет доступ к локальной базе данных, а версия Enterprise — к гетерогенной серверной базе данных, к разработке многоуровневых приложений баз данных, дополнительным функциям моделирования и многому другому.

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

Программы: Vocal contact ver 1.2 beta

Vocal contact ver 1.2 beta
Размер: 3.6mBt

Данная программа отвечает за звуки включения и выключения Windows. Немного подробнее. Например вы включаете свою машину рано утром. Вместо стандартного звука запуска вам прозвучит бодрящее "Доброе утро". Вечером во время выключения зазвучить "Спокойной ночи". Программа не будет обходиться стандартным набором звуков, вы сами можете паставить любой звук на то или иное событие в определённое время. Есть гибкая настройка расписания сигналов. Также в программу встроен будильник, звонок которого тоже можно настроить.

Скачать

WinAPI: Perform. Отправка сообщений форме.

Очень часто в программе необходимо сделать перемещение окна за её поле. Или же если вы сделали скин к приложению, натянув на него рисунок и спрятав рамку окна. Сделать это можно так:

procedure TForm1.MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
const SC_DragMove = $F012; 
begin 
ReleaseCapture; 
perform(WM_SysCommand, SC_DragMove, 0); 
end;


Этот код применим ко всем визуальным компонентам Delphi. Он позволяет перемешать НЕ ОБЪЕКТ по форме, а форму в целом по рабочему столу. Ниже ещё один способ.

Данный метод описан в технической информации (TI) Borland и бывает полезен если ваша форма не имеет области заголовка (синей полосы вверху). У такой формы свойство BorderStyle установлено равным bsNone. Самый просотой способ заключается в том, чтобы заставить Windows думать, что произошло нажатие в области заголовка окна, когда происходит нажатие в клиентской области. Это можно сделать, добавив собственный обработчик события wm_NCHitTest. Откройте модуль вашей формы и добавьте следующее описание в разделе private:

procedure TForm1.WMNCHitTest(var M: TWMNCHitTest);


Процедура названа так в соответствии с соглашениями об именах в Windows, но вы можете изменить название, если вам захочется. Теперь в разделе implementation опишем код процедуры.

procedure TForm1.WMNCHitTest(var M: TWMNCHitTest);
begin
inherited;
//вызываем стандартный обработчик 
if M.Result = htClient then 
M.Result := htCaption;
end;



Обратите внимание, что в начале вызывается стандартный обработчик. Кроме перемещения формы, добавьте возможность завершения программы в виде кнопки или пункта меню, так как пользователь не сможет закрыть ее при помощи заголовка окна или системного меню.

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

Основы информатики. Вычисление обыкновенных дифференциальных уравнений.

Аппарат дифференциальных уравнений, несомненно, является наиболее мощным и наиболее распространенным средством описания процессов и явлений в самых разнообразных областях. Следовательно, именно дифференциальные уравнения являются наиболее часто используемыми инструментами математического моделирования. Именно поэтому дифференциальным уравнениям в данной главе уделено наибольшее внимание.
Предполагается, что читателю известны начальные сведения из теории обыкновенных дифференциальных уравнений (ОДУ). Освежив в памяти эти сведения, читатель вспомнит о том, что для ОДУ порядка выше первого (для определенности будем говорить об уравнениях второго порядка) возможны две принципиально различные постановки задачи решения уравнения. Если все начальные условия, определяющие, в конечном итоге, значения функции и ее производных, заданы в одной точке - на одном из концов интервала изменений независимой переменной, то говорят, что сформулирована задача Коши, или начальная задача. Если условия заданы на обоих концах интервала, на котором строится решение, то такая задача решения ОДУ называется краевой. Для уравнений первого порядка имеет смысл говорить только о начальной задаче, поскольку для них задается единственное условие. Основное наше внимание будет уделено решению задач Коши для ОДУ. Начнем с уравнения первого порядка, которое в общем виде можно представить в форме F(y',y,x)=0 c начальным условием y(x0)=y0. Далее будем считать, что уравнение может быть разрешено относительно производной так, что приводится к виду:
Все методы интегрирования ОДУ в задачах Коши сводятся к приближенному вычислению последующего значения yi в точке xi через предыдущее значение yi-1 в точке xi-1, при заданном из начального условия значении y0. В простейших случаях можно исходить из непосредственного определения понятия производной, переходя от бесконечно малых к конечным разностям:При этом нетрудно убедится, что из дифференциального уравнения следует:
Внимательный читатель заметит, что не мешало бы поставить индексы у x и y в аргументах функции f(y,x). Читатель, несомненно, прав. Вот вопрос о том, какие индексы поставить, весьма нетривиален. Вообще-то мы можем выбрать i или i-1 для независимой переменной и искомой функции произвольно. Все равно приближенное равенство должно быть справедливым. Обе возможности, действительно, можно реализовать. Если выбор за индексом i-1, то получаем формулу МЕТОДА ЭЙЛЕРА:
В противном случае имеем формулу НЕЯВНОЙ СХЕМЫ:

Задание:Решить дифференциальное уравнение y'=y на интервале от 0 до 2 с начальным условием y(0)=1 методом Эйлера и по неявной схеме. Сравнить оба численных решения с точным y=exp(x) путем построения графиков решений. Предусмотреть возможность изменения величины шага интегрирования, и убедиться в том, что с уменьшением шага точность улучшается.

Программный код для МЕТОДА ЭЙЛЕРА:
procedure TForm1.Button2Click(Sender: TObject);
var
x,y,k:real;
begin
paintbox1.Canvas.Pen.Color:=clred;
x:=0;
y:=1;
paintbox1.Canvas.MoveTo(c.X+round(x*f.x),c.y-round(y*f.y));
k:=strtofloat(edit1.Text);
while x<=2 do
begin
paintbox1.Canvas.LineTo(c.x+round(x*f.x),c.y-round(y*f.y));
x:=x+k;
y:=y+y*k;
end;
end;

Программный код для МЕТОДА НЕЯВНОЙ ФУНКЦИИ:
procedure TForm1.Button3Click(Sender: TObject);
var
x,y,k:real;
begin
paintbox1.Canvas.Pen.Color:=clgreen;
x:=0;
y:=1;
paintbox1.Canvas.MoveTo(c.X+round(x*f.x),c.y-round(y*f.y));
k:=strtofloat(edit1.Text);
while x<=2 do
begin
paintbox1.Canvas.LineTo(c.x+round(x*f.x),c.y-round(y*f.y));
x:=x+k;
y:=(y+y*k)*k+y;
end;
end;

Здесь c.x и c.y координаты начала трсчета(центр координатной системы), f.x и f.y фокусы масштабирования по соответствующим осям. Советую всем качать исходник. Если у кого то Delphi ниже 7-й версии, то удалите в исходнике слово XPMan в разделе Uses, и строчку XPManifest1: TXPManifest; в разделе type.

Скачать проект