Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Программирование (VB,C#,ASP,.NET): новости, советы, примеры


Выпуск # 701

Приветствую вас, любители высоких технологий! Вот и очередной выпуск рассылки. За неделю на сайте появилось много новых и интересных материалов, некоторые из которых вы сможете увидеть в этом выпуске.
Надеюсь, этот выпуск будет интересен для вас. Если вы хотите увидеть в следующих выпусках что-то конкретное, напишите мне об этом на ящик subscribe@kbyte.ru.


Содержание выпуска

Читайте в этом выпуске:

Если у вас есть вопросы по программированию или работе с компьютером, не стесняйтесь, спрашивайте.

Форумы Kbyte.Ru

На форумах Kbyte.Ru постоянно появляются новые интересные темы и обсуждения. В этом выпуске представлены лишь новые темы, с момента прошлой рассылки.

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

Задать свой вопрос прямо сейчас

Отличная возможность посетить двухдневный интерактивный курс для Product Owner в Scrum с Робином Даймондом и конференцию AGILEEE. Моделирование проблемных ситуаций, воркшопы, специальные упражнения — эти, а также целый ряд других практик помогут Вам научиться эффективнее использовать Scrum в собственной работе. Регистрируйтесь на конференцию и мастер-класс со скидкой!

http://ow.ly/dP330

[- к содержанию -]

Подскажите, кто сталкивался: Возможно ли создать активную ссылку на какой нибудь сайт (именно в текстбоксе).Спасибо...

[- к содержанию -]

Ответ #1 @Aleksey Nemiro 19.09.2012 13:35
В RichTextBox это относительно просто сделать.
С TextBox наверняка возможно, но гораздо сложнее. Одним только VB не обойтись (в том плане, что может потребоваться использование других языков программирования).

Пример с RichTextBox лежит тут.

[- к содержанию -]

Ответ #2 @Aleksey Nemiro 19.09.2012 13:38
Хотя, если не выделять цветом, то можно попробовать смотреть на текст под курсором, анализировать и обрабатывать клики. Не помню, как это сделано в приведенном примере с RichTextBox (нету vb 6.0), возможно так и сделано.

[- к содержанию -]

Добавить свой ответ в эту тему
Кто может сделать http://kbyte.ru/ru/Programming/Articles.aspx?id=62&mode=art , у меня что-то вообще не получается (безопасный вход), обычный даже на скаченном не работает

[- к содержанию -]

Ответ #1 @Aleksey Nemiro 16.09.2012 17:17
Удивительно, безопасный вход у меня работает, хотя статья уже древняя :)


(открыл пример, ничего не меняя запустил)

А вот вход с вводом логина и пароля в программу, действительно, не работает:

Как видно из текста ошибки, проблема в url. В классе формы frmSignin4RealGuys, стр. 197. Нужно добавить проверку на httpS:
if (!url.ToLower().StartsWith("http://") && !url.ToLower().StartsWith("https://")) { url = String.Format("http://api.vkontakte.ru{0}", url); }

Тоже работает

[- к содержанию -]

Ответ #2 @i32 18.09.2012 15:17
Я того же мнения (пашет автор прав)

[- к содержанию -]

Добавить свой ответ в эту тему
Можно ли как то сделать что то по типу этого:

Const VK_F1
 
keybd_event(надо взять значение из txtbox, 0, 0, 0)

То есть в текст боксе будет написано VK_F1.

[- к содержанию -]

Ответ #1 @i32 18.09.2012 15:31
Наверно тут можно использовать РЕГУЛЯРКУ..Или тут что то не так описано..(непонятно)

[- к содержанию -]

Ответ #2 @Hennasy 19.09.2012 15:30
Мне надо так чтобы если я ввел в текст бокс VK_F1 (константа кнопки), и нажал на кнопку (button1), у меня сработало нажатие кнопки которую я указал в текст боксе т.е:

keybd_event(константа из txtbox, 0, 0, 0)

[- к содержанию -]

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

[- к содержанию -]

Ответ #1 @artF 14.09.2012 18:35
Бывает еще и браузер пишет нечто
К сожалению, Google Chrome не может открыть страницу

[- к содержанию -]

Ответ #2 @Aleksey Nemiro 15.09.2012 11:26
либо из за моего интернета,либо из за скрипта
Чтобы узнать точно, нужно поставить что-то типа Яндекс.Метрика

Если речь о сайте studioartf.ru, внешне он довольно простой, не думаю, что он сможет так сильно грузить сервер.
Кеширование?
См. http-заголовки Cache-Control (Pragma), Last-Modified и Expires, по последнему, сейчас сайт выдает 1981 год, т.е. данные браузером не кешируются.
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // запрет кеширования
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // дата последнего изменения содержимого
header("Cache-Control: no-cache, must-revalidate"); // запрет кеширования для HTTP/1.1 
header("Pragma: no-cache"); // запрет кеширования для HTTP/1.0
header("Cache-control: public");
header("Cache-control: max-age=1800"); // кеширование содержимого на 1800 сек. / 60 сек. = 30 мин.
Но обычно кеширование вырубают, чтобы не заморачиваться Тема муторная, может быть много подводных камней.


Возможно, проблема в хостинге. Если сайт действительно иногда падает, то нужно обратиться за разъяснениями в службу поддержки хостинга.

[- к содержанию -]

Ответ #3 @artF 15.09.2012 12:01
Чтобы узнать точно, нужно поставить что-то типа Яндекс.Метрика
поставил уже,и где в ней и что смотреть?)
Если речь о сайте studioartf.ru, внешне он довольно простой, не думаю, что он сможет так сильно грузить сервер.
Да именно о нем, в том то и дело что простой,впринципе я к этому и стремился)) нет неужных "плагинов" как в сторонних cms и прочей ерунды которая мне либо абсолютно не нужна,либо можно прикрутить что то вроде "Сообщения Вконтакте". Запросов к бд тоже не много,но бывает немогу открыть страницу.
Надо обратиться в службу поддержки
уже сделал,вот жду ответа =)
Много подводных камей
Например?
ну можно же делать кеширование для каких либо страниц,которые не так часто изменяются?чтобы лишний запрос к бд не делать...

[- к содержанию -]

Ответ #4 @artF 15.09.2012 12:04
UP:Как же мне нравится мой хостер,довольно быстрый саппорт))
\
************************************************
ОТВЕТ ДОБАВЛЕН:
************************************************

Здравствуйте,

Наш сервер был немного перегружен в тот момент. В данный момент все работает нормально. Приносим свои извинения за временные неудобства. Надеемся на Ваше понимание.

Я буду рад ответить на Ваши любые дополнительные вопросы.

Спасибо Вам за то, что пользуетесь нашими услугами,
Александр Г.

[- к содержанию -]

Ответ #5 @Aleksey Nemiro 15.09.2012 12:18
оставил уже,и где в ней и что смотреть?)
В деталях сайта, меню Мониторинг -> Результат проверки - это лог доступности сайта для Метрики (ошибки отмечены красным цветом). Аптайм сайта никогда не будет 100%, норма 95-99%.
Запросов к бд тоже не много,но бывает немогу открыть страницу.
При проблемах с бд сайт в любом случае должен отвечать, он просто будет выдавать стандартные php-ошибки. БД и PHP напрямую не связаны друг с другом.

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

Если например, сервер работает, но сайт отключен (например, за превышение лимитов выделенных для него ресурсов), то сервер будет выдавать стандартные http-ошибки, а не "К сожалению, Google Chrome не может открыть страницу".
ну можно же делать кеширование для каких либо страниц,которые не так часто изменяются?чтобы лишний запрос к бд не делать...
Можно, достаточно добавлять соответствующие заголовки на эти страницы. Например:
header("Cache-control: public");
header("Cache-control: max-age=1800"); // кеширование содержимого на 1800 сек. / 60 сек. = 30 мин
Но это нужно делать до вывода данных пользователю. В общем нужно будет тщательно проработать логику, с учетом инклудов и т.п. Муторно это

[- к содержанию -]

Добавить свой ответ в эту тему · В теме есть еще 8 ответов. Смотреть все ответы.
Add to DB @rusiko 14.09.2012 14:58
Привет всем. Подскажите пожайлуста как в Visual Basic при нажатии на button1 данные из textbox1 можно добавить в sql БД.

[- к содержанию -]

Ответ #1 @Aleksey Nemiro 15.09.2012 11:48
Using myConn As New SqlConnection("строка соединения
с базой данных")
  myConn.Open() ' открываем соединение
  Dim myCmd As New SqlCommand("INSERT INTO [имя таблицы] ([имя поля]) VALUES (@text_box1)", myConn) ' создаем запрос на вставку данных в таблицу
  myCmd.Parameters.Add("@text_box1", SqlDbType.NVarChar).Value = TextBox1.Text ' добавляем параметр @text_box1 (имя может быть любым) в запрос
  myCmd.ExecuteNonQuery() 'выполняем запрос
End Using

[- к содержанию -]

Ответ #2 @i32 18.09.2012 15:54
Import (наверное..Алексей??)Или я что то не вкурю..

[- к содержанию -]

Ответ #3 @Aleksey Nemiro 18.09.2012 16:02
Import (наверное..Алексей??)Или я что то не вкурю..
Import System.Data
Import System.Data.SqlClient

[- к содержанию -]

Добавить свой ответ в эту тему
Пытаюсь добавить в бд текст,содержащий html код но выдает ошибку и ругается на синтаксис.хотя добавление в бд без html проходит успешно. Причем если присутствует немного кода и без кавычек,типа <b> то все добавляется.Мне нужно весь код добавлять,с кавычками, их замена не годится(код будет не рабочим же)
Помогите
Вот вырезка:
<?
/*
* Если мы нажали на кнопку в форме, то обрабатываем переданные данные
* Иначе выводим форму для добавления статьи
*/
if ( isset ( $_POST["send"] ) ) {

$name=$_POST["name"];
$title=$_POST["title"];
$text=$_POST["text"];
$fulltext=$_POST["fulltext"];
$view=0;
$rating=0;
$author=$_POST["author"];
$category=$_POST["category"];


	// Заносим дату с временем в переменную
	$day = date ( "d-m-Y H:i" );
	
	// Добавляем статью в базу
	if(mysql_query('INSERT INTO `public` (`name`, `title`, `text`, `fulltext`, `category`, `date`, `author`) VALUES("'.$name.'", "'.$title.'", "'.$text.'", "'.$fulltext.'", "'.$category.'", "'.$day.'", "'.$author.'")'))
{
		echo "Статья успешно добавлена";
	} else {
		echo "Статью добавить не удалось<br>";
		echo mysql_error();
	}
} else {
	?>

<form action="" method="POST">
Название статьи(в транслите)<br />
<input type = 'text' name = 'name' /> <br /><br />
Заголовок статьи<br />
<input type = 'text' name = 'title' /> <br /><br />
Краткое описание статьи<br />
<textarea rows = '3' cols = '60' name = 'text'></textarea><br /><br />
Полная статья<br />
<textarea rows = '16' cols = '60' name = 'fulltext'></textarea><br /><br />
Автор статьи<br />
<input type = 'text' name = 'author' value="artF"/> <br /><br />
Категория<br />
<input type = 'text' name = 'category' value=""/> <br /><br />

<input type = 'submit' name = 'send' value = 'Добавить' />
<input type="reset" name="reset" value="Очистить" />
</form>
<?
}
?>

[- к содержанию -]

Ответ #1 @Aleksey Nemiro 14.09.2012 12:33
Я как-то публиковал на сайте хелпер-класс для работы с MySQL в PHP, вот он (пока это единственный на сайте код на php ).

Там используются параметры, а не как у тебя, внедрение данных в sql-запрос (потенциальная sql injection).

В твоем случае, код будет примерно таким:
if ( isset ( $_POST["send"] ) ) 
{
##########################################
// константы лучше объявить один раз в файле, который подключается ко всем страницам
define("DB_NAME", "kbyte_database"); // имя базы данных
define("DB_USER", "kbyte_user"); // имя пользователя
define("DB_PASSWORD", "1234567890"); // пароль к бд
define("DB_HOST", "localhost"); // адрес сервера баз данных
define("DB_CHARSET", "utf8"); // кодировка бд
define("DB_COLLATE", "");
define("DB_DEBUG", false); // дебаг (true или false)
define("DB_MODE", 2); // 0 - в ручную откр/закр, 
// 1 - автоматически при запросе (не рекомендуется, т.к. много конектов),
// 2 - открывает само и закрывает когда нужно (рекомендуется)
##########################################

// создаем экземпляр класса MySql:
$MySql = new MySql();

// выполняем запрос
$MySql->ExecuteNonQuery("INSERT INTO `public` (`name`, `title`, `text`, `fulltext`, `category`, `date`, `author`) VALUES (%s, %s, %s, %s, %s, %s, %s)", array($_POST["name"], $_POST["title"], $_POST["text"], $_POST["fulltext"], $_POST["category"], date ( "d-m-Y H:i" ), $_POST["author"]));
}

[- к содержанию -]

Ответ #2 @artF 14.09.2012 15:47
(пока это единственный на сайте код на php ).
define("DB_COLLATE", "");
Что означает этот кусок?

Сам класс надо инклудить?
В твоем случае так
а где конкретно обрабатывать "статья успешно добавлена" ?

В остальных случаях работы с базой так же делать только меняя это да?
$MySql->ExecuteNonQuery("SQl", array($param));

[- к содержанию -]

Ответ #3 @Aleksey Nemiro 14.09.2012 16:00
define("DB_COLLATE", "");
Что означает этот кусок?
Это какой-то хвост, не используется.
Сам класс надо инклудить?
Да, иначе не получится его использовать.
а где конкретно обрабатывать "статья успешно добавлена" ?
Можно по errorMessage проверить :)
if($MySql->errorMessage == ""){
 echo "статья успешно добавлена";
}
else {
 echo "ошибка: ".$MySql->errorMessage;
}
Хотя это кривовато. Можно подкрутить класс.
Там еще есть метод ExecuteScalar, который в случае успеха, должен вернуть идентификатор стать (при условии, что id будет числовым типом):
$id = $MySql->ExecuteScalar("INSERT INTO `public` (`name`, `title`, `text`, `fulltext`, `category`, `date`, `author`) VALUES (%s, %s, %s, %s, %s, %s, %s)", array($_POST["name"], $_POST["title"], $_POST["text"], $_POST["fulltext"],
$_POST["category"], date ( "d-m-Y H:i" ), $_POST["author"]));
if($id > 0){
 echo "Статья успешно добавлена. <a href='/articles.php?id=$id'>Посмотреть статью</a>";
}
else {
 echo "Ошибка: ".$MySql->errorMessage;
}
В остальных случаях работы с базой так же делать только меняя это да?
Там разные методы работы с БД. В самом классе, вверху описано, что к чему.
-----------------------------------------------------------------------
| ExecuteNonQuery     | выполнить запрос                              |
| ExecuteScalar       | выполнить и вернуть идентификатор             |
| GetTable            | вернуть таблицу                               |
| GetRow              | вернуть строку (через таблицу, для удобства)  |
-----------------------------------------------------------------------
| Run                 | ExecuteNonQuery                               |
| ReturnId            | ExecuteScalar                                 |
-----------------------------------------------------------------------
А принцип работы, да, такой же.
$article = $MySql->GetRow("SELECT * FROM public WHERE id = %s", array($_POST["id"]));
if($article==null){
  echo "статья не найдена";
}else{
  echo $article["fulltext"];
}

[- к содержанию -]

Ответ #4 @artF 14.09.2012 16:07
Потому что у меня реализована постраничная навигация и надо переделать вывод, как будет выглядеть код тогда?
вот как он выглядит у меня сейчас:
$res
= mysql_query("SELECT COUNT(*) FROM public");
$row = mysql_fetch_row($res);
$maxs = $row[0]; // всего записей

if($maxs<1){
echo '<h2>Записей нет</h2>';
include "bottom.php";
die();
}
// Переменная хранит число сообщений выводимых на станице 
$num = 10; 
// Извлекаем из URL текущую страницу 
$page = $_GET['page']; 
// Определяем общее число сообщений в базе данных 
$result = mysql_query("SELECT COUNT(*) FROM public"); 
$posts = mysql_result($result, 0); 
// Находим общее число страниц 
$total = intval(($posts - 1) / $num) + 1; 
// Определяем начало сообщений для текущей страницы 
$page = intval($page); 
// Если значение $page меньше единицы или отрицательно 
// переходим на первую страницу 
// А если слишком большое, то переходим на последнюю 
if(empty($page) or $page < 0) $page = 1; 
 if($page > $total) {

echo '<h2>Запрошенной страницы не существует</h2><br>';
$page=1;
} 
// Вычисляем начиная к какого номера 
// следует выводить сообщения 
$start = $page * $num - $num; 
// Выбираем $num сообщений начиная с номера $start 
$result = mysql_query("SELECT * FROM `public` ORDER BY `id` DESC LIMIT $start, $num"); 

if (mysql_num_rows($result) > 0){
$myrow = mysql_fetch_array($result);

do{echo '<h2 class="title"><a href="/public/'.$myrow["category"].'/'.$myrow["name"].'/'.$myrow["id"].'">'.$myrow["title"].'</a></h2><div class="meta">'.$myrow["date"].' by '.$myrow["author"].'</div><div class="content">'.$myrow["text"].'</div><a href="/public/'.$myrow["category"].'/'.$myrow["name"].'/'.$myrow["id"].'"
class="morelink">Читать далее →</a><div><div class="links"><span class="comments">Просмотров: '.$myrow["view"].'</span><br><br><br></div></div>';}
while ($myrow = mysql_fetch_array($result));
}

// Проверяем нужны ли стрелки назад 
if ($page != 1) $pervpage = '<a href= ./?page=1><<</a> 
                <a href= ./?page='. ($page - 1) .'><</a> '; 
// Проверяем нужны ли стрелки вперед 
if ($page != $total) $nextpage = ' <a href= ./?page='. ($page + 1) .'>></a> 
                  <a href= ./?page=' .$total. '>>></a>'; 

// Находим две ближайшие станицы с обоих краев, если они есть 
if($page - 2 > 0) $page2left = ' <a href= ./?page='. ($page - 2) .'>'. ($page - 2) .'</a> '; 
if($page - 1 > 0) $page1left = '<a href= ./?page='. ($page - 1) .'>'. ($page - 1) .'</a> '; 
if($page + 2 <= $total) $page2right = ' <a href= ./?page='. ($page + 2) .'>'. ($page + 2) .'</a>'; 
if($page + 1 <= $total) $page1right = ' <a href= ./?page='. ($page + 1) .'>'. ($page + 1) .'</a>'; 

// Вывод меню 
?>
<div class="pagenav">
<?
echo $pervpage.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$nextpage; 
?>
</div>
Также вывод последних 5-ти статей,но с ним думаю по проще будет..что то типа этого?
$MySql = new MySql();

$t = $MySql->GetTable("SELECT * FROM public ORDER BY id DESC LIMIT 5");

if ($t != NULL && count($t) > 0)
{
 // листаем циклом полученные данные из таблицы - $t в строку $r
 foreach ($t as $r)
 {

 echo "<li><a href="/public/'.$r["category"].'/'.$r["name"].'/'.$r["id"].'">'.$r["title"].'</a></li>"; // выводим на страницу данные из поля (колонки) nickname
 }
}
else
{
 echo "Последних статей нет";
}

[- к содержанию -]

Ответ #5 @Aleksey Nemiro 14.09.2012 16:11
Также вывод последних 5-ти статей,но с ним думаю по проще будет..что то типа этого?
Верно.
Потому что у меня реализована постраничная навигация
// Определяем общее число сообщений в базе данных 
$posts = $MySql->ExecuteScalar("SELECT COUNT(id) FROM public"); // вместо * лучше ставить поле, например, id - работать будет быстрее
// выбор данных для данной странице
$result = $MySql->GetTable("SELECT * FROM public ORDER BY id DESC LIMIT $start, $num");

[- к содержанию -]

Добавить свой ответ в эту тему · В теме есть еще 16 ответов. Смотреть все ответы.

Все темы и обсуждения

Исходные коды

Zoom Application

Visual Basic .NET: Графика @Shark1 15.09.2012 19:57
Пример организации увеличения в WPF.

К данном исходному коду прилагаются файлы примеров. Скачать.

[- к содержанию -]

Все исходные коды

Вакансии в IT

Агент консультант по рекламе и распространению Банковских услуг и продуктов

Россия | Удаленная работа | 50 000.00 RUB

Веб дизайнер

Россия, Нижний Новгород | Работа в офисе | 30 000.00 KBP

Web дизайнер

Россия, Нижний Новгород | Работа в офисе | 30 000.00 KBP

Контент-менеджер, seo-специалист, smm, продвижение сайтов

Россия, Нижний Новгород | Работа в офисе | 20 000.00 KBP

Программист-консультант

Россия, Казань | Работа в офисе | 24 000.00 KBP

Web-дизайнер

Россия, Новосибирск | Работа в офисе | 50 000.00 KBP

IOS разработчик

Россия, Ростов-на-Дону | Работа в офисе | 20 000.00 KBP

Ведущий программист

Россия, Ростов-на-Дону | Работа в офисе | 25 000.00 KBP

Программист стажер

Россия, Ростов-на-Дону | Работа в офисе | 15 000.00 KBP

Веб-дизайнер

Россия, Ростов-на-Дону | Работа в офисе | 40 000.00 KBP

Все вакансии в IT · Создать резюме

[- к содержанию -]

Новости мира IT

Apple выпустила iOS 6

Компания Apple выпустила мобильную операционную систему iOS 6. В ней насчитывается более 200 новшеств. Установить iOS 6 могут владельцы смартфонов iPhone 3GS, iPhone 4 и iPhone 4S, плееров iPod touch четвертого поколения и планшетов iPad второго и третьего поколений.

20.09.2012 09:22 · Категория: Бизнес в IT · Источник: Lenta.ru

[- к содержанию -]

Бренд Apple оценили в два Google

Бренд корпорации Apple оценивается в 100 миллиардов евро и является самым дорогим в мире. Для сравнения, у идущего на пятой строчке Google аналогичный показатель составляет 50 миллиардов евро. У социальной сети Facebook, расположившейся на 74 месте, бренд стоит "только" 11,5 миллиарда евро.

20.09.2012 09:15 · Категория: Бизнес в IT · Источник: Lenta.ru

[- к содержанию -]

Samsung начала выпуск новых чипов памяти LPDDR3

Samsung Electronics начала производство нового типа памяти для мобильных устройств, при помощи которых можно значительно увеличить производительность будущих смартфонов и планшетов. Новые чипы памяти формата LPDDR3 строятся на стандартах, впервые анонсированных в мае этого года и позволяющих мобильным устройствам в реальном времени работать с HD-видео на больших экранах.

Новые модули RAM-памяти имеют пропускную способность в 12,8 Гбит/сек, против современных чипов с полосой в 8,5 Гбит/сек. В Samsung говорят, что в современных мобильных устройствах требования к подсистеме памяти и процессоров постоянно увеличиваются, так как пользователям становятся доступны все более крупные мобильные экраны, а сети поддерживают все более высокие скорости передачи данных.

19.09.2012 11:11 · Категория: Железо · Источник: CyberSecurity.ru

[- к содержанию -]

Все новости


Подпишитесь на тематические RSS-ленты Kbyte.Ru, чтобы быть в курсе последних новостей:

Основная лента · Форумы (темы и сообщения) · Visual Basic 5.0/6.0 · Visual Basic .NET · C# (Си шарп) · Delphi · JavaScript · ActionScript · ASP .NET · ASP .NET MVC

Ищите Kbyte.Ru в социальных сетях FaceBook, ВКонтакте, Twitter.

Если вы занимаетесь программированием, то наверняка вам пригодятся хитрые инструменты.


Международный портал для программистов и разработчиков Kbyte.Ru основан в 2006 году. Целью портала является объединение программистов и специалистов IT-бизнеса, студентов и преподавателей для обмена опытом и знаниями, оказания помощи во всех делах и начинаниях в области IT.
Kbyte.Ru является парнёром компаний Mail.Ru Group, WebMoney Transfer, Ozon.Ru и др.
Выпуск рассылки подготовлен автоматически. Все права на материалы выпуска принадлежат Kbyte.Ru если иное не указано отдельно.


В избранное