Архив

Архив автора

Отправка почты в C#

3 Февраль 2012 Нет комментариев

В предыдущем посте я писал о получении и чтении мейлов, теперь же речь пойдёт об отправке сообщений из того же . В целом, тут сложностей нет никаких. Нет необходимости искать какие-то внешние библиотеки и компоненты. .Net Framework содержит в своем пространстве имен все необходимое для формирования письма и его отправки по протоколу.  Прежде всего добавьте:

using System.Net.Mail;

Тут содержится все, что нам необходимо для отправки почты.

Далее приведу функцию, которая отправляет сообщение:

  void SendMess(string subject, string body, string host, int port, string user, string pass, string From, string To,bool usessl)

{

try

{

MailMessage Msg = new MailMessage();

Msg.To.Add(To);

 

 

// From

System.Net.Mail.MailAddress mailAddress = new System.Net.Mail.MailAddress(From);

Msg.From = mailAddress;

Читать далее…

VN:F [1.9.13_1145]
Rating: 0.0/10 (0 votes cast)
Categories: C#, Общее Tags: , ,

C#. Работа с почтой через OpenPop

18 Январь 2012 Нет комментариев

Недавно была задача обработки писем по протоколу. Перекопал кучу компонент, но наконец нашёл подходящую во всех отношениях библиотеку . У одних были проблемы с кодировками, другие «кушали» много ресурсов, третьи ещё чем-то не подошли.

Качать тут:  http://hpop.sourceforge.net/

Привожу код, который, надеюсь, кому-то когда-то поможет :)

Читать далее…

VN:F [1.9.13_1145]
Rating: 10.0/10 (1 vote cast)
Categories: C# Tags: , , ,

Закончилось место под счетчик в таблице Integer IDENTITY runs out of scope

16 Январь 2012 Нет комментариев

Если у вас в таблице есть автоинкрементное поле, к примеру, типа int , и следующее автоинкрементное значение превышает максимальное значение для типа этого поля, не отчаивайтесь — это не беда :)

Такое происходит с большими таблицами, откуда часто удаляют и вставляют новые значения. Таким образом в нумерации имеются провалы из-за удаления данных, а максимальное значение для типа данных счетчика быстро достигается. Ошибка будет примерно такой такой:  Server: Msg 8115, Level 16, State 1, Line 2 Arithmetic overflow error converting IDENTITY to data type int. Arithmetic overflow occurred.

Варианты решения:

  1. Расширьте тип данных. Если у вас был int, поставьте bigint. Помните, если у вас значение этого поля использовалось в процедурах и прочем коде, вам придется их исправить на использование нового типа!
  2. Второй вариант ленивый. Если у Вас данные в таблице постоянно обновляются и есть большой кусок места до минимального значения счетчика( selectmin(auto_inc_field) fromyour_table) в этом поле, если смотреть от нуля, и если вы уверены, что если вы начнете нумерацию с нуля, то пока вы заполните этот промежуток, старые данные уже будут удалены, соответственно блок нумерации счетчика освободится, то этот вариант для Вас!   Вы можете элементарно начать нумерацию заново или с какого-то конкретного стартового номера следующей командой:
    DBCC CHECKIDENT ("your_table", RESEED, 1);
    GO

    Эта команда заменяет значение следующего автоинкрементного значение на 1. То есть, это есть замена текущего автоикремента.

     

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

Если есть вопросы или другие способы решения проблемы, то милости прошу, в коменты!

VN:F [1.9.13_1145]
Rating: 10.0/10 (1 vote cast)

Снова в строю !

14 Январь 2012 Нет комментариев

Наконец-то выкупил доменное имя и восстановил свой блог. Ожидайте скоро много новостей :)

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

define(‘WP_TEMP_DIR’,'/tmp’); 

в файл конфига. Нужно было также добавить эту папку и дать на неё права на запись.

 

VN:F [1.9.13_1145]
Rating: 10.0/10 (1 vote cast)
Categories: Общее Tags:

SQL Server Driver for PHP 1.1 — October 2009

27 Октябрь 2009 Нет комментариев

Майкрософт выпустил собственный драйвер для PHP, с поддержкой возможностей Native SQL Client. Доступен также его исходный код:

http://sqlsrvphp.codeplex.com/SourceControl/ListDownloadableCommits.aspx#DownloadLatest

Сам драйвер можно скачать тут:

http://www.microsoft.com/downloads/details.aspx?FamilyID=ccdf728b-1ea0-48a8-a84a-5052214caad9&displaylang=en

VN:F [1.9.13_1145]
Rating: 0.0/10 (0 votes cast)

История одного восстановления БД(MS SQL Server 2005). Часть 2

22 Октябрь 2009 Нет комментариев

Продолжаю тему восстановления  БД, начатую тут. Закончилось всё довольно таки успешно.

Итак…. Не помог мне

ALTER DATABASE ‘DatabaseName’SET SINGLE_USER
(‘DatabaseName’, REPAIR_REBUILD)
ALTER DATABASE ‘DatabaseName’ SET MULTI_USER

не помог и

DBCC CHECKDB(‘DatabaseName’, REPAIR_ALLOW_DATA_LOSS)

Так как удалось найти битую таблицу(в ней как раз наибольшее кол-во строк), принялся её реанимировать нестандартными способами. Попробовал сделать выборку данных- выкинуло в ошибку, но успело вернуть несколько миллионов записей. Попробовал сделать выборку, с ключом desc — таким образом вытащил ещё кусок данных с конца таблицы. Кстати, select стал выбирать больше записей после того как убил все индексы кроме Primary Key. Пошаманив ещё несколько часов и не получив желаемого результата, создал клон битой таблицы без данных и с помощью:

insert into tablename(fields) select top КОЛ-ВО_СТРОК1 *  from tableoriginal order by fieldnamePK asc

insert into tablename(fields) select top КОЛ-ВО_СТРОК2 *  from tableoriginal order by fieldnamePK desc

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

Должен сказать, что таким образом удалось восстановить почти все записи.

Для остальных БД выполнил DBCC CHECKDB() , откуда узнал какие из таблиц битые. Им помогла DBCC DBReidex(‘Tablename’) для битых таблиц.

На этом всё и закончилось.

Желаю вам надёжных хардов и меньше подобных проблем!

VN:F [1.9.13_1145]
Rating: 0.0/10 (0 votes cast)

GPS мониторинг.

16 Октябрь 2009 Нет комментариев

Продолжаем работать с системами мониторинга. Скоро выйдет версия v2.0, с множеством новых функций, которые приятно удивят пользователей системы. Сейчас, упор как раз и делаем на онлайновую web версию. Она имеет ряд преимуществ по сравнению с классической оффлайновой версией. Пользователю системы не нужно дополнительное программное обеспечение, сервер с базой данных, а нужен лишь доступ в интернет и простой интернет браузер. При этом  открываются широчайшие возможности по мониторингу, анализу, контролю передвижения и прочие, которыми вы можете пользоваться  из любой точки мира с доступом в интернет. За считанные секунды вы получаете доступ к системе со всем её функционалом в независимости от вашего местоположения: дома, на работе, в отпуске на островах.

Не смотря на быстрое развитие WEB версии, не забываем и об оффлайновых системах. Для них мы разрабатываем новые отчёты, улучшаем интерфейс и интегрируем с такими картами как Google, Bing, Yandex и т.п.

В целом, нашу систему уже можно представить как гибрид — объединёние оффлайновой и онлайновой версии. При этом обе части полноценны.

Ознакомиться с WEB версией можно  тут: http://www.monitoring-gps.com.ua/gps_monitoring/index.php

Подробнее можно узнать тут: http://monitoring-gps.com.ua/

Продолжение следует…

VN:F [1.9.13_1145]
Rating: 10.0/10 (1 vote cast)
Categories: Общее Tags:

История одного восстановления БД(MS SQL Server 2005)

15 Октябрь 2009 Нет комментариев

История началась с того, что умер винт в (0). Слава Богам, удалось создать виртуальный образ с помощью RAID Reconstructor от Runtime Software. С помощью приложения Captain Nemo(от того же Runtime Software) часов за 8-10(два винта по 300 ГБ) удалось построить структуру и файловой системы опираясь на виртуальный образ созданный RAID Reconstructor»ом. Ещё за несколько часов восстановились базы, общим весом около 10 ГБ. 70% работы, казалось бы, выполнено! Особо не радуясь, принялся восстанавливать сервер.

Взял новые винты. Установил ту же систему, тот же SQL Server 2005 с тем же collation. Сделал Attach DataBase для всех восстановленных баз, кроме системных. Для того, чтобы избежать лишних проблем, базы нужно размещать в те же папки что и до того как система упала. Заменил базу master на свою восстановленную(о том как перемещать системные базы, в том числе master и MSDB, читал тут http://msdn.microsoft.com/ru-ru/library/ms345408.aspx; позже выложу у себя весь текст статьи).

Выполнил несколько селектов — кажется, всё ок.

Запускаю приложение, использующие эти базы… и на одной из форм получаю красивенький exception: «SQL Server detected a logical consistency-based i/o error: incorrect pageid».

Выполняю () — не спасло.

Пробую (‘DatabaseName’) - после ряда сообщений, команда прерывается с сообщением об ошибке:

Msg 8967, Level 16, State 216, Line 1
An internal error occurred in DBCC which prevented further processing. Please contact Product Support.

Выполнение остановилось как раз на самой большой таблице в базе.

Деваться некуда, запускаю

ALTER DATABASE ‘DatabaseName’SET SINGLE_USER
DBCC CHECKDB(‘DatabaseName’, REPAIR_REBUILD)
ALTER DATABASE ‘DatabaseName’ SET MULTI_USER

REPAIR_REBUILD-попробует восстановить БД без потери данных.

Жду завершения  выполнения команды.

Если не восстановит, буду пробовать

DBCC CHECKDB(‘DatabaseName’, REPAIR_ALLOW_DATA_LOSS)

Обязательно отпишусь чем всё закончилось. Ещё не выполнял DBCC CHECKDB(‘DatabaseName’) для остальных баз.

Продолжение следует….

VN:F [1.9.13_1145]
Rating: 10.0/10 (1 vote cast)

Поиск оптимального маршрута в Google Maps теперь для пользователей Украины!

3 Октябрь 2009 Нет комментариев

Наконец, стала доступной долгожданная функция поиска оптимального маршрута на картах Google по территории Украины!

Вы получаете возможность прокладки оптимального пути(для хотьбы или авто) по указанным пунктам назначения(до 25 точек). Сервис очень гибкий и удобный.  http://maps.google.com/

Использование данного сервиса не территории Украины стало возможным благодаря компании Transnavicom

тут:  http://code.google.com/intl/ru/apis/maps/

VN:F [1.9.13_1145]
Rating: 10.0/10 (2 votes cast)

GPS Monitoring ONLINE

29 Сентябрь 2009 Нет комментариев

Работаем над http://online.monitoring-gps.com.ua/.

Обновились вот до версии v1.2

 

Как-нибудь напишу о сложностях, с которыми пришлось столкнуться при проектировании БД.

VN:F [1.9.13_1145]
Rating: 10.0/10 (1 vote cast)
Categories: Общее Tags: ,