Перейти к содержанию

Сообщения от Программирование

В ответ пользователю slayer of dragons
Аватар пользователя
slayer of dragons;182946
Оцениваем, ваше мнение для меня важно :)
кто-нть оцените а то незнаю фигово иль очень фигово)))
учеба тяжела,
и я здесь не всегда,
обычно по выходным,
бывает и в будни я с ним,
ХВ ты не заменим))))

:cool: veni, vidi, vici - пришел, увидел, победил :cool:

Мир ПК - все и даже больше о компах и высоких технологиях

Лучший программист HW! Возможно это ты...
Аватар пользователя
Мне нравицца :). Ещё бы только понять что это...
В ответ пользователю slayer of dragons
Аватар пользователя
Доброго времени суток.
slayer of dragons;183769
кто-нть оцените а то незнаю фигово иль очень фигово)))
Начало хорошое, мне понравилось.

Внесем немного ясности, в неясности :)
но пишу обычно на дельфе
Delphi - это не язык програмирования, а инструмент разработки программ на Pascal'е (в частности Object Pascal).

А теперь о том, что я успел "понюхать" в програмировании :)
Начал с Basic и Pascal (еще в школе), затем Object Pascal, HTML, SQL, PHP.
Сейчас изучаю Perl (для души и для работы пригодилось), вот мой первый скрипт (писал не один, друг помог, за что ему огромное спасибо).

use cyrillic qw/upcase win2dos/;
use strict;
use Time::HiRes qw/gettimeofday/;
use Data::Dumper;
use Net::SMTP;
use Net::POP3;
use warnings;
use subs qw/load_config mail_auth send_mail read_file write_log write_noping/;
my $debug = 1;
my $config = load_config;
my $offline_text = read_file('offline.txt');
my $online_text = read_file('online.txt');
my $err = "Can't Ping Host";
my @hosts;
#foreach my $host_str (@{$config->{hosts}})
#{
#	my $host = {};
#	$host_str =~ /^\s*(.*?)\s*\=\s*(.*)\s*$/;
#	$host->{descr} = $1;
#	$host->{adres} = $2;
#	$host->{state} = 'online';
#	$host->{fromtime} = gettimeofday();
#	$host->{oldstate} = 0;
#	push @hosts, $host;
#}
foreach my $host_str (@{$config->{hosts}})
{
	my $host = {};
	$host_str =~ /^\s*(.*?)\s*\=\s*(.*)\s*$/;
	$host->{descr} = $1;
	$host->{adres} = $2;
	my $result = "$err $host->{descr} ($host->{adres})";
	my $tm = gettimeofday();
	my $ping = qx/ping $host->{adres} -n 1/;
	$tm = gettimeofday() - $tm;
	foreach (split "\x0a", $ping)
	{
		if(/^.*?[\=\<\>]+.*?[\=\<\>]+(\d+)/)
		{
			$result = sprintf ("Ping to %s (%s) is %s", $host->{descr}, $host->{adres}, $1);
			last;
		}
	}
	my $state = $result =~ /$err/ ? 'offline' : 'online';
	$host->{state} = $state;
	$host->{fromtime} = gettimeofday();
	$host->{oldstate} = 0;
	push @hosts, $host;
}
my $host_descr = '';
my $host_adres = '';
my $namehost = '';
my $date = '';
my @ratio = (1900, 1, 0,0,0,0);
$date = sprintf("%04d-%02d-%02d %02d-%02d-%02d", map{$_+ shift(@ratio)}(localtime(time))[5,4,3,2,1,0]);
my $textlog = "Лог файла начат ${date}\n";
my $namefile = $date;
open (LOGBIGIN, ">>$namefile") || die "Ошибка открытия $namefile: $!";
print LOGBIGIN $textlog;
close (LOGBIGIN);
my $sleep = 30; # В секундах
$date = '';
while(1)
{
	foreach my $host (@hosts)
	{
		my $result = "$err $host->{descr} ($host->{adres})";
		my $tm = gettimeofday();
		my $ping = qx/ping $host->{adres} -n 1/;
		$tm = gettimeofday() - $tm;
		foreach (split "\x0a", $ping)
		{
			if(/^.*?[\=\<\>]+.*?[\=\<\>]+(\d+)/)
			{
				$result = sprintf ("Ping to %s (%s) is %s", $host->{descr}, $host->{adres}, $1);
				last;
			}
		}
		my $state = $result =~ /$err/ ? 'offline' : 'online';
		if ($state ne $host->{state})
		{
			# изменилос состояние
			$host->{oldstate} = gettimeofday()
			if $host->{oldstate} eq 0;
			my $idle = gettimeofday() - $host->{oldstate};
			if ($idle > ($config->{timeout}*60))
			{
				# нужно отправить письма в рассылку
				print win2dos("Изменение статуса на $state для $host->{descr} ($host->{adres})\n");
				eval {mail_auth;};
				print $@ if $@;
				foreach my $rec (@{$config->{recipients}})
				{
					my $text;
					if ($state eq 'online')
					{
						$text = $online_text;
					}
					else
					{
						$text = $offline_text;
					}
					$host_adres = $host->{adres};
					$host_descr = $host->{descr};
					my @ratio_time = (1900, 1, 0,0,0,0);
					$date = sprintf( "%04d-%02d-%02d %02d:%02d:%02d", map{$_+ shift(@ratio_time)}(localtime(time))[5,4,3,2,1,0]);
					my $text2 = $text;
					while($text =~ /\$([\w]+)/g)
					{
						my $var = $1;
						my $val;
						eval " \$val = \${$var};";
						#print "$var = $val\n";
						$text2 =~ s/\$$var/$val/ge;
					}
					eval { send_mail($rec, $text2);};
					print $@ if $@;
					write_log(sprintf("Change state of Host, last state: %3.2f %s time,", gettimeofday() - $host->{fromtime}, $host->{state})." $result (".sprintf("%0.5f sec", $tm).") $date\n", $namefile);
				}
				$host->{state} = $state;
				$host->{fromtime} = gettimeofday();
				$host->{oldstate} = 0;
			}
		}
		else
		{
			$host->{oldstate} = 0;
		}
		# Если пинг не прошел
		if ($state ne $host->{state})
		{
			if($state eq 'offline')
			{
				$namehost = $host->{adres};
				my @ratio = (1900, 1, 0,0,0,0);
				$date = sprintf( "%04d-%02d-%02d %02d:%02d:%02d", map{$_+ shift(@ratio) }(localtime(time))[5,4,3,2,1,0]);
				write_noping(sprintf("%3.2f %s time,", gettimeofday() - $host->{fromtime}, $host->{state})." $result (".sprintf("%0.5f sec", $tm).") $date\n", $namehost);
			}
		}
		my @ratio = (1900, 1, 0,0,0,0);
		$date = sprintf( "%04d-%02d-%02d %02d:%02d:%02d", map{$_+ shift(@ratio) }(localtime(time))[5,4,3,2,1,0]);
		write_log(sprintf("%3.2f %s time,", gettimeofday() - $host->{fromtime}, $host->{state})." $result (".sprintf("%0.5f sec", $tm).") $date\n", $namefile);
	}
	# write_log("Sleep for $sleep sec (Wait Ping Hosts)\n", $namefile);
	print("Sleep for $sleep sec (Wait Ping Hosts)\n");
	sleep($sleep);
}
sub store_arg
{
	my $config = shift;
	my $arg    = shift;
	if($arg =~ /^\s*(.*?)\s*\=\s*(.*)\s*$/)
	{
		$config->{$1} = $2;
	}
	else
	{
		$config->{$arg} = 1;
	}
}
sub load_config
{
	my $file_name = shift || 'pinger.config';
	my $config = { };
	my $cur_section;
	open (FH, $file_name) || die "can't open config file";
	while (my $line = readline FH)
	{
		next if $line =~ /^\s*\#|^$/;
		$line =~ s/\#.*$//;#$line =~ s/\n//;
		if ($line =~ /^\s*[(\S*)]\s*$/)
		{
			$cur_section = $1;
		}
		elsif ($line =~ /^\s*\$\s*$/)
		{
			undef $cur_section;
		}
		else
		{
			if (defined $cur_section)
			{
				push @{$config->{$cur_section}}, $line;
			}
			else
			{
				store_arg($config, $line);
			}
		}
	}
	close FH;
	return $config;
}
sub mail_auth
{
	# авторизация
	# print "$config->{pop3}\n$config->{user} : $config->{pass}\n";
	my $pop = new Net::POP3($config->{pop3}, Timeout => 240, Debug => $debug) || die "$!";
	my $msgs = $pop->login($config->{user}, $config->{pass});
	die "Неверен логин или пароль для ".$config->{pop3} unless defined $msgs;
	$pop->quit();
}
sub send_mail
{
	my $recipient = shift;
	my $text = shift;
	my $smtp = Net::SMTP->new(Host => $config->{smtp},
								Timeout => 30,
								Debug   => $debug, ); # Debug => 1 если интересен протокол общения для отладки
	my $dom = $smtp->domain;
	$smtp->mail("$config->{user}\@$dom");
	$smtp->to("$recipient");
	$smtp->data();
	$smtp->datasend("TO: $recipient\n");
	foreach(split /\x0a/, $text)
	{
		$smtp->datasend("$_\n");
	}
	$smtp->dataend();
	$smtp->quit;
}
sub read_file
{
	my $fname = shift;
	open FH, $fname;
	my $text = '';
	while (my $line = )
	{
		$text .= $line;
	}
	close FH;
	return $text;
}
sub write_log
{
	my $text = shift;
	my $namefile = shift;
	open (w_LOG, ">>$namefile") || die "Ошибка открытия $namefile: $!";
	print w_LOG $text;
	close (w_LOG);
	print (win2dos($text));
}
sub write_noping
{
	my $text = shift;
	my $namehost = shift;
	open (w_PING, ">>$namehost") || die "Ошибка открытия $namehost: $!";
	print w_PING $text;
	close (w_PING);
	# print $text;
}
Планирую "понюхать" еще Assembler и Java.

С уважением K0Lb@zzeR.
:smile13: [ТУРНИР] "Гонка за Лидером" :smile13:
:smile28: [M] "Я и моя тень" - "I am and my shadow" :smile28:
:smile16: "Быстрая смерть" - "Fast Death" :smile16:
Нынче Си.

Уровень, конечно же, начальный, т.к. начал изучать сей язык лишь в этом учебном году, но вот преподавательница у нас суровая, дай боже. Корректно работающей программы ей мало, необходимо, чтобы она была к тому же оптимизированной настолько, насколько это возможно! После школьного программирования, где без проблем прокатывали даже простенькие задачи, сделанные через известное место, такие требования повергают в шок и потихоньку сводят с ума.

Вообще, интересно, есть ли кто-нибудь еще на форуме, кто не понаслышке знаком с данным языком? Ищу программиста с целью обмена опытом :D
O God of Earth and Altar,
Bow down and hear our cry,
Our earthly rulers falter,
Our people drift and die,
The walls of gold entomb us,
The swords of scorn divide,
Take not thy thunder from us,
Take away our pride.


G.K. Chesterton: English Hymnal
Аватар пользователя
Сегодня нашёл дискету с 5-ю программами, которые писал ещё очень-очень-очень давно. Четыре из них можно разок запустить ради интереса. Две самые лучшие с текстурой и освещением не запустились из-за видеокарты, а вот другие две выклыдываю. ( Я их там объединил в одну. ) Писал на C, но потом ещё на паскаль переделал. Если будете смотреть - обязательно нажмите F7 в процессе.

#include 
#include
#include
#include
#include

float f, k, d;
int page, t;

struct Y
{

 private:

 float zindex ( int a )
 {

  int i;
  float r=0;

  switch(a)
  {
   case 12: for(i=0;i<12;i++) r+=z[i]; r/=12; break;
   case 13: for(i=0;i<12;i++) r+=z[i+12]; r/=12; break;
   case 11: r=(z[11]+z[0]+z[23]+z[12])/4; break;
   default: r=(z[a]+z[a+1]+z[a+12]+z[a+13])/4; break;
  }

  return r;

 }

 void DrawFlatness( int a )
 {

  int i, z[24];

  switch(a)
  {

   case 12:

   if((x[11]-x[0])*(y[1]-y[0])-(x[1]-x[0])*(y[11]-y[0])>=0)
   {
    for(i=0;i<12;i++) { z[2*i]=x[i]+320; z[2*i+1]=150-y[i]; }
    fillpoly(12, z);
   } break;

   case 13:

   if((x[12]-x[23])*(y[13]-y[12])-(x[13]-x[12])*(y[12]-y[23])>=0)
   {
    for(i=0;i<12;i++) { z[2*i]=x[i+12]+320; z[2*i+1]=150-y[i+12]; }
    fillpoly(12, z);
   } break;

   case 11:

   if((x[0]-x[11])*(y[12]-y[0])-(x[12]-x[0])*(y[0]-y[11])>=0)
   {
    z[0]=x[11]+320;
    z[1]=150-y[11];
    z[2]=x[0]+320;
    z[3]=150-y[0];
    z[4]=x[12]+320;
    z[5]=150-y[12];
    z[6]=x[23]+320;
    z[7]=150-y[23];
    fillpoly(4, z);
   } break;

   default:

   if((x[a+1]-x[a])*(y[a+13]-y[a+1])-(x[a+13]-x[a+1])*(y[a+1]-y[a])>=0)
   {
    z[0]=x[a]+320;
    z[1]=150-y[a];
    z[2]=x[a+12]+320;
    z[3]=150-y[a+12];
    z[4]=x[a+13]+320;
    z[5]=150-y[a+13];
    z[6]=x[a+1]+320;
    z[7]=150-y[a+1];
    fillpoly(4, z);
   }
  }
 }

 public:

 float x[24], y[24], z[24];

 Y ( void )
 {
  int i;

  x[0]=-50; y[0]=70;
  x[1]=-30; y[1]=70;
  x[2]=-1; y[2]=20;
  x[3]=17; y[3]=70;
  x[4]=37; y[4]=70;
  x[5]=-10; y[5]=-50;
  x[6]=-12; y[6]=-53;
  x[7]=-18; y[7]=-54;
  x[8]=-25; y[8]=-53;
  x[9]=-28; y[9]=-52;
  x[10]=-29; y[10]=-50;
  x[11]=-10; y[11]=0;

  for(i=0;i<12;i++) z[i]=10;
  for(i=12;i<24;i++)
  {
   x[i]=x[i-12];
   y[i]=y[i-12];
   z[i]=-z[i-12];
  }
 }

 void draw (int T)
 {
  int i, j, k, m[14];
  float p;
  setvisualpage(page);
  delay(d);
  page=(page==0)?1:0;
  setactivepage(page);
  cleardevice();

  if(T==1)
  {

   for(i=0;i<11;i++)
   line(x[i]+320, 150-y[i], x[i+1]+320, 150-y[i+1]);
   line(x[0]+320, 150-y[0], x[11]+320, 150-y[11]);

   for(i=12;i<23;i++)
   line(x[i]+320, 150-y[i], x[i+1]+320, 150-y[i+1]);
   line(x[12]+320, 150-y[12], x[23]+320, 150-y[23]);

   for(i=0;i<12;i++)
   line(x[i]+320, 150-y[i], x[i+12]+320, 150-y[i+12]);
  }
  else
  {
   if(zindex(0)<zindex(1)) { m[0]=0; m[1]=1; } else { m[0]=1; m[1]=0; } for(i=2;i<14;i++) { for(j=><zindex(m[j])&&i<12&&i!=4) { for(k=i; k>j; k--) m[k]=m[k-1]; break; }
    m[j]=i;
   }

   for(i=0;i<14;i++)
   DrawFlatness(m[i]);
  }
 }

 void increase ( void )
 {
  int i;
  for(i=0;i<24;i++) { x[i]*=k; y[i]*=k; z[i]*=k; }
 }

 void rotate_z( void )
 {
  int i;
  float xn[24], yn[24];
  for(i=0;i<24;i++)
  {
   xn[i]=x[i]*cos(f)-y[i]*sin(f);
   yn[i]=x[i]*sin(f)+y[i]*cos(f);
  }
  for(i=0;i<24;i++) { x[i]=xn[i]; y[i]=yn[i]; }
 }

 void rotate_y( void )
 {
  int i;
  float xn[24], zn[24];
  for(i=0;i<24;i++)
  {
   xn[i]=x[i]*cos(f)-z[i]*sin(f);
   zn[i]=x[i]*sin(f)+z[i]*cos(f);
  }
  for(i=0;i<24;i++) { x[i]=xn[i]; z[i]=zn[i]; }
 }

 void rotate_x( void )
 {
  int i;
  float yn[24], zn[24];
  for(i=0;i<24;i++)
  {
   yn[i]=y[i]*cos(f)-z[i]*sin(f);
   zn[i]=y[i]*sin(f)+z[i]*cos(f);
  }
  for(i=0;i<24;i++) { y[i]=yn[i]; z[i]=zn[i]; }
 }

 void MoveAlongAxisX(void)
 {
  int i;
  for(i=0;i<24;i++)
  x[i]+=f;
 }

 void MoveAlongAxisY(void)
 {
  int i;
  for(i=0;i<24;i++)
  y[i]+=f;
 }

 void MoveAlongAxisZ(void)
 {
  int i;
  for(i=0;i<24;i++)
  z[i]+=f;
 }


};


void main (void)
{
 Y y;

 int key, K, gd=VGA, gm=1;

 page=0; d=10; t=1;

 l:
 closegraph;
 printf("Just press F1 to show this help any time\n");
 printf("Press F5 to see the framework\n");
 printf("Press F6 for deleting invisible lines\n");
 printf("Press F7 for color facets\n");
 printf("Press w to rotate the letter around axis z clockwise\n");
 printf("Press q to rotate the letter around axis z anticlockwise\n");
 printf("Press s to rotate the letter around axis x clockwise\n");
 printf("Press a to rotate the letter around axis x anticlockwise\n");
 printf("Press x to rotate the letter around axis y clockwise\n");
 printf("Press z to rotate the letter around axis y anticlockwise\n");
 printf("Press 1 to increase the letter\n");
 printf("Press 2 to decrease the letter\n");
 printf("Press e or r to move the letter along axis x\n");
 printf("Press d or f to move the letter along axis y\n");
 printf("Press c or v to move the letter along axis z\n");
 printf("Press up or down to accelerate or decelerate moving and rotating\n");
 printf("Press Enter to stop any moving\n");
 printf("Press any key to begin to work with the letter imidiately\n");

 getch(); key=-1;
 initgraph(&gd, &gm, "");

 for(;;)
 {
  if(kbhit()!=0) key=getch();

  switch(key)
  {
   case '1': k=1.001; K=key; break;
   case '2': k=0.999; K=key; break;
   case 'q': f=0.005; K=key; break;
   case 'w': f=-0.005; K=key; break;
   case 'a': f=0.005; K=key; break;
   case 's': f=-0.005;K=key;  break;
   case 'z': f=0.005; K=key; break;
   case 'x': f=-0.005; K=key; break;
   case 'e': f=0.5; K=key; break;
   case 'r': f=-0.5; K=key; break;
   case 'd': f=0.5; K=key; break;
   case 'f': f=-0.5; K=key; break;
   case 'c': f=0.5; K=key; break;
   case 'v': f=-0.5; K=key; break;
   case 27:  closegraph(); return;
   case 72: f+=0.005; k+=0.001; d=d>5?d-0.01:d; key=0; break;
   case 80: f-=0.005; k-=0.001; d=d<15?d+0.01:d; key=0; break;
   case 13: K=key; break;
   case 63: t=1; key=0; break;
   case 64: t=2; setfillstyle(1, 0); key=0; break;
   case 65: t=2; setfillstyle(1, 2); key=0; break;
   case 59: goto l;
  }

  switch(K)
  {
   case '1': y.increase(); break;
   case '2': y.increase(); break;
   case 'q': y.rotate_z(); break;
   case 'w': y.rotate_z(); break;
   case 'a': y.rotate_x(); break;
   case 's': y.rotate_x(); break;
   case 'z': y.rotate_y(); break;
   case 'x': y.rotate_y(); break;
   case 'e': y.MoveAlongAxisX(); break;
   case 'r': y.MoveAlongAxisX(); break;
   case 'd': y.MoveAlongAxisY(); break;
   case 'f': y.MoveAlongAxisY(); break;
   case 'c': y.MoveAlongAxisZ(); break;
   case 'v': y.MoveAlongAxisZ(); break;
   case 27:  closegraph(); return;
  }
  y.draw(t);

 }
}
Вложения 1
1 файл • Общий размер: 40,5 KB
Всё не так плохо как Вы думаете. Всё намного хуже!
В ответ пользователю Hermit
Hermit
Сегодня нашёл дискету с 5-ю программами, которые писал ещё очень-очень-очень давно. Четыре из них можно разок запустить ради интереса. Две самые лучшие с текстурой и освещением не запустились из-за видеокарты, а вот другие две выклыдываю. ( Я их там объединил в одну. ) Писал на C, но потом ещё на паскаль переделал. Если будете смотреть - обязательно нажмите F7 в процессе.
М-да, мне до такого еще конечно очень далеко, хотя я буду стараться :D
А сколько времени пришлось потратить, чтобы научиться писать подобные вещи? И где вообще научили? :)
O God of Earth and Altar,
Bow down and hear our cry,
Our earthly rulers falter,
Our people drift and die,
The walls of gold entomb us,
The swords of scorn divide,
Take not thy thunder from us,
Take away our pride.


G.K. Chesterton: English Hymnal
Аватар пользователя
Есть люди знающие Visual Basic?
Небо – мольбы не ждёт
Небо – угроз не слышит
Небо – ведёт особый счёт
Небо – тебя найдёт

По вопросам модерации: nebov24@gmail.com
Аватар пользователя
А почему бейсик? Моё мнение: он морально устарел.
P.S. А я не знал, что тут есть такая тема!!! Как я раньше мог жить, не понимаю! Уррррааааааааааа!!!!!!!!!!!
:smile44: :smile44: :smile44: :smile44: :smile44: :smile44: :smile44: :smile44: :smile44:

Добавлено через 2 минуты
Я знаю Паскаль, очень люблю Delphi, кой-чего понимаю в C(не плюсы), изучаю Java, ассемблер люблю.
 

К А
Стикеры GBF в Telegram
Аватар пользователя
Ты крут)
Почему бейсик? Потому что наша система образования постоянно отстает, по этому мы вынужденны работать в бейсике 6.0 и в 2003 ворде по методичкам 2001 ворда..
Ну так знаешь бейсик или нет?) Мне просто прогу надо написать, но я не очень шарю в этом.
Небо – мольбы не ждёт
Небо – угроз не слышит
Небо – ведёт особый счёт
Небо – тебя найдёт

По вопросам модерации: nebov24@gmail.com
Аватар пользователя
Бейсик нет, увы :( Даже не интересовался. В школе проходил Паскаль. Но тут вот народ знает, как погляжу.
 

К А
Стикеры GBF в Telegram
Аватар пользователя
Эх блин, не повезло мне..

Добавлено через 42 минуты
Где же вы, программисты, когда вы так нужны?
Небо – мольбы не ждёт
Небо – угроз не слышит
Небо – ведёт особый счёт
Небо – тебя найдёт

По вопросам модерации: nebov24@gmail.com
Аватар пользователя
Баллы за рекламу! Баллы за рекламу!
My sword, my trusted ally, unphased by my aspect.
В ответ пользователю Небо
Аватар пользователя
Небо
Где же вы, программисты, когда вы так нужны?
Можешь ко мне обратиться через 4 года :>
Пряня забыл свой пароль и имейл, заварите ему чаю.
A pocket full of frogs.
A frog full of pockets?
Аватар пользователя
Вы изучаете бейсик? Иногда я не понимаю школьную программу...
 

К А
Стикеры GBF в Telegram

Статистика

Приветствуем новейшего участника: Emil