Илья Кригоузов Привет, меня зовут Илья Кригоузов и я занимаюсь информационными технологиями с 2005 года. Под такими технологиями я понимаю довольно широкий круг вещей: сайты любой сложности, базы данных и клиент-серверные приложения.
Закончил МИРЭА по специальности «инженер-математик», практику проходил на концерне радиостроения ОАО «Вега».Работаю в Информационных системах для бизнеса, так же сотрудничал с АйТи-агенством.
В свободное время увлекаюсь фотографией. Найти меня вы можете:

31 декабря 2007 г.

ПерехватЪ форум

В канун нового года решил порадовать пользователей ПО ПерехватЪ. После долгого состояния "оффлайн" и недоступности вцелом, наконец восстановил форум. Это было действительно очень сложно и очень долго, но я все же решил потратить ночь на ручной перенос БД MySQL, объемом 20 Мб потаблично (в некоторых случая даже реквесты приходилось разбивать), ибо, ясное дело phpMyAdmin ни конм образом не хотел кушать двадцатиметровый файлик. Это был поистине адский труд.
Знаете, на самом деле есть большая проблема даже открытия текстового файла объемом 20 мб. Если даже открыли - то работать с ним почти невозможно. И ни то что блокнот, даже Bred и PSPad не справляются с этой задачей. Благо есть замечательный Notepad ++ который не испугался жалкого backup.sql
Ну все же я сделал это и выполнил задачу полностью: сохранил посты, сохранил аккаунты. Так же почистил форум от левых регистраций. Итого удалил около 1600 аккаунтов.

Если перед кем-то встанет задача переносить IPB форум с одного хоста на другой, то обязательно сделайте следующее:
  • очистите кэш шаблонов
  • очистите лог посещений поисковых ботов
  • пересчитайте все суммы форума
и я вам обещаю, что это уменьшит размер бэкапа бд форума как минимум на 1/3.
Послесловие. С Новым 2008 Годом всех! Пусть будущий год будет лучше, чем нынешний.

28 декабря 2007 г.

скрыть/показать пользователя на экране приветствия Windows

Для того чтобы скрыть пользователя с экрана приветствия ОС Windows XP можно залезть в реестр (regedit.exe), отыскать там ветку HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList и создать новый параметр DWORD. Измените имя параметра на имя пользователя, которого мы хотим спрятать и придайте значение ключу 0.
Если же вы хотите наоборот, т.е. чтобы созданный вами пользователь и по какой-то причине не отображаемый на экране приветствия появился, точно так же создайте ключь DWORD с именем пользователя, но уже со значением 1.

26 декабря 2007 г.

Передача двумерного массива функции

В c++ передавать параметр какой-либо функции вовсе необязательно, если этот параметр можно рассмотреть как глобальный. Но вот что касается каких либо локальных переменных, тут дело обстоит иначе: нужно передавать.
С одномерным массивом все просто. Рассмотрим случай передачи локального одномерного массива mass, который мы инициализируем в функции main() и передаем функции print(), которая нам выведет содержимое массива:

int print(int massive[]) {
for (int i=0; i<5; i++) printf(" %d", massive[i]);
return 0;
}

int main(){
int mass[5]={0, 5, 9, 12, 8};
print(mass);
return 0;
}
обратите внимание, что в функции print мы задаем имя формального параметра как massive, хотя никто не запрещает нам использовать и mass. Я обращаю внимание, что хоть и называем параметр по другому, но если бы наша функция и меняла что-то в массиве, то эти изменения совершались не над копией массива, а над ним самим.

Бывают случаи, когда приходится работать с двумерными массивами. Допустим, вам необходимо передать двумерный массив какой-то хитрой функции. При этом учтем, что наш массив не глобальный, иначе его можно и не указывать в формальных параметрах.
Пусть у нас в функции определяется какой-то локальный массив m2d[3][5]. В таком представлении, грубо говоря, мы можем видеть этот массив в нашем богатом воображении как таблицу, у которой 3 строки и 5 столбцов. Итак вот каким образом мы передаем этот массив функции:

int foo( int (*mass)[5]) {
//some code
....
}

int main(){
//определяем и сразу инициализируем массив
int m2d[3][5] = {
(0, 1, 5, 7, 4),
(5, 12, 8, 0, 7),
(1, 1, 1, 59, 7)
};
foo(m2d);
return 0;
}
вот собственно и все. однако не злоупотребляйте многомерными массивами - это может привести к сжиранию памяти, т.к. в таких случаях ее очень сложно отслеживать.

23 декабря 2007 г.

C++ : как-то связано с треугольным массивом

Засовываем треугольный массив (в данном случае верхнетреугольный) в одномерный массив. и доказываем, что сделали то что нужно, выводя адреса первых элементов всех строк (функция out_adr)

#include <stream.h>
#include <iomanip.h>
int out_adr(int m[])
{
int i,j;
int *p; //указатель на элемент массива
printf("\nHere adreses for first line element's :\n");
for(i=0,j=0;i<4;i++)
{
j+=i;
p=&m[j];
printf("Line number %d: %p\n", i+1, p);
}
return 0;
}


int main()
{
int i;
int a[10]; // сам массив
for(int i=0;i<10;i++)
{
printf("Enter element %d please: ",i+1);
scanf("%d", &a[i]);
}
//выводим матрицу красиво по строкам
for(int d=0;d<10;d++)
{
cout<<setw(6)<<a[d];
//ставим '\n' в конце каждой строки
for(int j=0, i=0;i<5; i++)
{
j+=i;
(j==d+1) ? printf("\n") : printf("");
}
}
out_adr(a);
return 0;
}

19 декабря 2007 г.

perehvat.info - возраждение. часть первая

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

Что касается дальнейших изменений: первоочередной задачей по этому проекту я считаю восстановление форума (на сегодняшний момент есть временный форум - perehvat.forum24.ru, но это не очень удобно) и добавление кое-каких абсолютно новых разделов на сайте.

P.S. От Алексея (gonzales) всем готовится Новогодний подарок в виде новой версии программы. В ней будет очень много всяких полезностей и нововведений.

17 декабря 2007 г.

Как объяснить инопланетянину по радио, что такое левое и правое?

На самом деле к этому вопросу подойти можно очень двояка: издревне известно, что право там, где правая рука.
Отсюда и начинается наша логическая цепочка: как бы нам помочь инопланетянину определить, где у него правая рука? (учтите, мы берем во внимание, что наш инопланетный друг - гуманоид, и у него парные верхние и нижние конечности, иначе мы не сможем дать четкого определения для него, где право и где лево)

Собственно, теперь мы можем конкретно объяснить отличие правой и левой конечности, даже без визуального контакта: правая рука та, на которой большой палец (если таковой имеется) слева.

Передав эту информацию инопланетянину по радио, мы уменьшим степень неопределенности ровно в 2 раза.


PS. таким образом, мы доказали, что у гугла приоритет по поиску идет прежде всего на свои ресурсы, что в принципе и логично.

Бесплатный IDE компилятор C++

Еще немного информации на тему бесплатных компиляторов.
А именно сейчас хочу представить Code::Blocks, бесплатный кроссплатформенный IDE C++ компилятор.
Работает на gcc, портированную под Win
(MINGW), причем Вам даже ничего не придется вручную настраивать, есть возможность скачать среду уже с интегрированным компилятором: скачайте отсюда (это если у вас Win).

Что касается лично меня - самое удобное и маленькое, что пока я видел. К тому же Open Source, а это веский аргумент. Гораздо удобнее и красивее Visual MinGW.

primatko.org.ru - еще один проект готов

Недавно завершил работу над узконаправленным образовательным проектом.
Проект состоит из КМС и форума, которые интегрированы бриджом. Как всегда интеграция не прошла безболезненно, но как уж есть - проект-то ни разу не денежный :)


Проект делал для студентов МИРЭА, в частности с факультета Кибернетики, специальности прикладная математика.

Ну чтобы учиться было легче)

P. S. За окончанием оьучения на этой стадии проект был свернут.

16 декабря 2007 г.

С++ аналог функции strcpy

Вот собственно полностью готовый аналог функции strcpy, поддерживает даже параметр "количество символов для копирования", проверяет его валидность. Так же оптимизирована рекурсия и нет пустых вызовов функций. Радуйтесь наздоровье :)

#include <iostream>
#include <stream.h>
#include <stdio.h>
#include <strings.h>
char start[20];
int k; //бу-бу) йа камент )
int n =0; //счетчег сцуко хитрый ^_^
int obrez=0; //покудова копируем строчко

void show_array(char array[], int numb) {
printf("\noutput >> ");
for (int i=0; i<numb; i++) cout<<array[i];
printf(" <<output\n");
}

void copy(char array[], char ready[], int numb, int obrezko) {

if (obrez!=0 or obrez!=k) {numb=obrezko; k=obrezko; }
if(n != numb) {
ready[n] = array[n];
n++;
copy(array,ready,numb,obrezko);
}
}

char enter() {
printf("enter string (20 symbols max): ");
scanf("%s", start);
printf("\nenter number of symbols, would you like to copy or print '0', if you want to copy string till the end : ");
cin>>obrez;
}

int check_size(char for_check[]) {
k = strlen(for_check);
return k;
}

int main() {enter();{
check_size(start);
show_array(start,k);// пишем массивко исходный в консолько
if (obrez>k) {printf("you try copy more, then you have, sorry :(\n"); return 0;}
else {
char finish[k];
copy(start,finish,k,obrez);
show_array(finish,k);// пишем копированный массив в консолько
}
}


14 декабря 2007 г.

Бесплатный визуальный C++ компилятор Visual MinGW

Сам программирую под UNIX like OS, поэтому люблю чтобы все было в компиляторе просто, понятно и красиво, а главное бесплатно. Компилятор Borland это конечно все хорошо, и даже есть бесплатная версия (C++BuilderX, так вроде называется), но все же это тот же самый, по сути, убогий старина борланд, поэтому для меня это не вариант.

Поскольку дома у меня имеется только машина с ОС Windows, а каждый раз грузить виртуальную машину не очень хочется, то я решил поискать что-то максимально приближенное к gcc под Win. Нашел такую штуку, как MinGW, по сути - портированный gcc на платформу Win.
Думаю проблем с его установкой и настройкой возникнуть не должно.

Но по прежнему хотелось бы и немного удобства, так как командная строка под Win это лишь жалкое подобие, даже никак не сравнимое с командной строкой под *NIX, как по мощности, так и по удобству.
Поэтому, собственно задача свелась к поиску графической среды разработки, к которой спокойно прикрутился бы MinGW. И вот что я нашел.

Visual MinGW
Программа представляет из себя Open Source IDE (Integrated Development Environment) для компилятора MinGW. Сам проект довольно стар, да и версия выложенная на сайте разработчика - Version 0.56, но все же эта штуковина работает и работает довольно-таки неплохо.
Как мне кажется, проект заморожен, и говорить "скачать последнюю версию" немного неуместно, поэтому просто предлагаю скачать Visual-MinGW 0.56 alpha (27 марта 2004)

13 декабря 2007 г.

C++: рекурсивное копирование строки (без цикла)

Что делает программа: читает строку из 4х символов, введенную с клавиатуры. Выводит ее с помощью функции show_array и затем рекурсивно копирует, используя функцию copy
#include <stream.h>

char tocopy[5];
char start[5];

void show_array(char array[], int numb) {
printf("\noutput >> ");
for (int i=0; i<numb; i++) cout<<array[i];
printf(" <<output\n");
}

void copy(char array[], int numb) {
if(numb != 0) {
tocopy[numb-1] = array[numb];
numb--;
copy(array,numb);
}
else show_array(array,5);
}

char enter() {
printf("enter string (4 symbols): ");
scanf("%s", start);
}

int main() {
enter();
show_array(start,5);
copy(start,5);
}

Код проверен, работает с gcc отлично, а если вы пользуете Борланд, то меняете #include <stream.h> на #include <iostream.h>
рапида, слил