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

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


Выпуск # 668

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


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

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

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

Форумы Kbyte.Ru

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

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

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

Алексей, а не могли бы Вы небольшой пример привести к тексту: "...Тогда целесообразно сделать в классе Users коллекцию Computers..." со статьи "Ведение журнала изменений объектов в .NET Framework". Классы очень удобные для работы, а вот с коллекциями не разберусь. Привязка только по одному ключевому полю ведь. Или я что-то не так понял. С уважением.

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

Ответ #1 @Aleksey Nemiro 15.12.2011 13:11
Коллекции автоматически не создаются, придется добавлять руками.
В главном классе, нужно создать перегрузку методов Load и Save, в котором прописать код сохранения коллекций.
  Public Overloads Sub Load()
    MyBase.Load() ' грузим основные данные 

    'грузим коллекцию
    'допустим коллекция Cities
    Me.Cities = new List(Of City)' инициализация коллекции (Citites - это свойство класса типа new List(Of City), где City - класс представляющий таблицу City)
    'получаем данные
    Using myConn As New SqlConnection(_ConnectionString)
        myConn.Open()
        Dim myCmd As New SqlCommand("SELECT * FROM cities", myConn)
        Dim DA As New SqlDataAdapter(myCmd)
        Dim DT As New DataTable()
        DA.Fill(DT)
        'листаем полученные данные циклом и добавляем в коллекцию
        For Each r As DataRow in DT.Rows
          Me.Cities.Add(New City(r)) 'так лучше
          'но если не выйдет, или будет непонятно, можно и так:
          'Me.Cities.Add(New City(r("id_cities")))  'где id_cities - ключевое поле  (идентификатор, primary key, identity) таблицы cities
        Next
    End Using

    'но лучше грузить сразу все из DataSet, одним запросом (для повышения производительности)
  End Sub

  Public Overloads Sub Save()
    'основные данные
    MyBase.Save()
    'коллекция
    If Me.Cities Is Nothing Then Return ' нету данных
    For Each c As City In Me.Cities
      c.Save()'возможно потребуется установка связи класса коллекции с основным классом (например, если основной класс countries, то видимо нужно будет передать в класс city код страны, прежде чем сохранять город)
    Next
  End Sub
В базовом классе (SqlDataManager) нужно сделать дополнительный метод Load, который будуте принимать одну строку данных (DataRow) и формировать на их основе себя.
    Public Sub Load(r As DataRow)
      For Each p As PropertyInfo In Me.GetType().GetProperties()
        Dim atr As SqlColumnAttribute = GetColumnAttribute(p)
        If atr IsNot Nothing Then
          p.SetValue(Me, r(atr.ColumnName), Nothing)
        End If
      Next
    End Sub
Аналогично, для DataRow, нужно добавить перегрузку в конструктор класса (New).

PS: Приведенные здесь фрагменты кода я на работоспособность не проверял.

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

Ответ #2 @Aleksey Nemiro 15.12.2011 13:16
В статье похоже ссылка на пример битая, если нужно, пример прикреплен к этому сообщению.

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

Ответ #3 @nemo 15.12.2011 13:22
Спасибо большое за ответ. Буду разбираться.

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

Добавить свой ответ в эту тему
У меня Windows 7 Домашняя. При попытки загрузить Adobe Photoshop CS5 появляется: "Ошибка выполнения Microsoft VBScript". Что делать?

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

Доброго времени суток!

Обстоятельства сложились таким образом что пришлось создавать базу данных по учету аварийности на предприятии. Все бы ничего если бы не два минуса: 1. Я Полный чайник в ACCESS, 2. Предприятие с большим парком автомобилей и своеобразной спецификой их эксплуатации.
от сюда возникло несколько проблемм:

1.)База заполняется сейчас как обычно из формы, вот только необходимо сделать одну особенность Занесение в базу должно происходить не постепенно (по мере заполнения полей) а за 1 раз только после того как заполнится форма целиком
Видится тут нужно писать макрос для добавления значений из формы в соответствующие графы таблицы БД. Вот тут у меня не хватает познаний.

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

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

Столкнулся с очередной проблемой.
Как я уже писал ранее, я работаю над созданием Веб - телефонной книги. Я поборол ADO.Net, но теперь столкнулся с вопросом распределения прав пользователей.
Я, конечно, долго вникал как организована авторизация в ASP.Net Майкрософт, но когда немного разобрался, то понял, что ребята серьезно поработали над безопасностью.
Я понял, что моя таблица пользователей с простым хранением паролей и прав просто детский сад. Решил внедрить предлагаемый Майкрософтом вариант работы с пользователями, но столкнулся с проблемами.
Создал SQLскрипт, который создает все объекты моей старой БД + данные. В VS создал БД ASPNETDB в папке App_Data. Запускаю скрипт - пишет не может найти такую БД.
Пытаюсь подключиться к этой БД через SQL Server ManagementStudio - пишет ошибку 5120.

1. Как перенести свою базу в базу ASPNETDB в папке App_Data?

Насколько я понял, что путь в webconfig будет теперь выглядеть примерно так:
<connectionStrings>
 <add name="AddressBookString" connectionString="data source=.\SQLEXPRESS;Integrated Security=true;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient" />
</connectionStrings>

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

Ответ #1 @Aleksey Nemiro 12.12.2011 13:19
А как ты раньше программно подключался к SQL Server? :)

Видимо базу нужно подключить к SQL Server в MS SQL Server Management Studio.



Что касается безопасности, то золотое правило - не хранить пароли в открытом виде в базе, лучше хранить хеш, или шифровать их (последнее выйдет дороже, в плане производительности). С хешем проще. Например, можно использовать MD5.

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

Ответ #2 @Павел 12.12.2011 20:11
"Видимо базу нужно подключить к SQL Server в MS SQL Server Management Studio."
Как раз это и не получается.
"Пытаюсь подключиться к этой БД через SQL Server ManagementStudio - пишет ошибку 5120."

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

Ответ #3 @Aleksey Nemiro 12.12.2011 22:35
Значит прав не хватает. Нужно в проводнике Windows войти в свойства файла БД (aspnetdb.mdf) и поставить разрешение на доступ к нему SQL Server. Кому давать права (имя пользователя), можно посмотреть в свойствах файлов бд, которые лежат в папке C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA (путь может быть другим, в зависимости от версии).

Еще можно попробовать приаттачить базу, запустив MS SQL Server Management Studio из под администратора.

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

Ответ #4 @Павел 14.12.2011 11:06
Нашел другой способ.
Есть такая утилита aspnet_regsql.exe (лежит в папке windows/microsoft.net/frameworks/4.x.x). Она или создает или добавляет к существующей БД таблицы, необходимые для работы с пользователями.

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

Добавить свой ответ в эту тему
Всем доброй ночи суть вопроса такова: при сохранении картинки в Jpeg слишком низкое качество как им управлять? Просьба не говорить про bmp.

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

Ответ #1 @Aleksey Nemiro 11.12.2011 12:22
Public Sub Main()
  Dim myImage As Image = Image.FromFile("C:\image.bmp") 'укажите файл, или изображение
  Dim myEncoder As System.Drawing.Imaging.Encoder = System.Drawing.Imaging.Encoder.Quality
  Dim myEncoderParameter As System.Drawing.Imaging.EncoderParameter
  Dim myEncoderParameters As New System.Drawing.Imaging.EncoderParameters(1)
  Dim myImageCodecInfo As System.Drawing.Imaging.ImageCodecInfo
  myImageCodecInfo = GetEncoderInfo(System.Drawing.Imaging.ImageFormat.Jpeg)
  myEncoderParameter = New System.Drawing.Imaging.EncoderParameter(myEncoder, CType(75L, Integer))'75 - качество изображение, от 0 до 100
  myEncoderParameters.Param(0) = myEncoderParameter
  myImage.Save("C:\kbyte.jpg", myImageCodecInfo, myEncoderParameters)
End Sub

Private Function GetEncoderInfo(ByVal format As System.Drawing.Imaging.ImageFormat) As System.Drawing.Imaging.ImageCodecInfo
  Dim j As Integer
  Dim encoders() As System.Drawing.Imaging.ImageCodecInfo
  encoders = System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders()
  j = 0
  While j < encoders.Length
   If encoders(j).FormatID = format.Guid Then
    Return encoders(j)
   End If
   j += 1
  End While
  Return Nothing
End Function 'GetEncoderInfo

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

Добавить свой ответ в эту тему

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

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

Как в DataGridView изменить тип столбца на DataGridViewLinkColumn?

Visual Basic .NET: Базы данных @roma_rio 13.12.2011 14:36
При создании столбцов DataGridView средствами студии, тип столбца без проблем можно указать. В этом примере показано, как изменить тип столбца программно.
Private Sub FillGridUrl()
  db = New SqlCeConnection("Data Source=" & PathToDataBase)
  Dim comand As New SqlCeCommand("SELECT url_id, url_name, url_prim FROM urls", db)
  Dim adapter As New SqlCeDataAdapter(comand)
  Dim dataset As New DataSet
  adapter.Fill(dataset, "urls")
  With GridViewUrl
   .DataSource = dataset
   .DataMember = "urls"
   .Columns(0).Visible = False
   .Columns(1).Visible = False
  End With
  Dim column As New DataGridViewLinkColumn
  column.DataPropertyName = "url_name"
  column.HeaderText = "Ссылка"
  GridViewUrl.Columns.Add(column)
  db.Close()
  GridViewUrl.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill
 End Sub

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

Как задать качество JPEG?

Visual Basic .NET: Графика @Команда Kbyte.Ru 11.12.2011 12:20
Данный пример показывает, как на Visual Basic .NET сохранить изображение в формате JPEG с определенной степенью сжатия. Чем выше сжатие, тем меньше размер файла картинки, но тем хуже качество изображения. В примере можно указывать качество изображения в диапазоне от 0 до 100.
Public Sub Main()
  Dim myImage As Image = Image.FromFile("C:\image.bmp") 'укажите файл, или изображение
  Dim myEncoder As System.Drawing.Imaging.Encoder = System.Drawing.Imaging.Encoder.Quality
  Dim myEncoderParameter As System.Drawing.Imaging.EncoderParameter
  Dim myEncoderParameters As New System.Drawing.Imaging.EncoderParameters(1)
  Dim myImageCodecInfo As System.Drawing.Imaging.ImageCodecInfo
  myImageCodecInfo = GetEncoderInfo(System.Drawing.Imaging.ImageFormat.Jpeg)
  myEncoderParameter = New System.Drawing.Imaging.EncoderParameter(myEncoder, CType(75L, Integer))'75 - качество изображение, от 0 до 100
  myEncoderParameters.Param(0) = myEncoderParameter
  myImage.Save("C:\kbyte.jpg", myImageCodecInfo, myEncoderParameters)
End Sub

Private Function GetEncoderInfo(ByVal format As System.Drawing.Imaging.ImageFormat) As System.Drawing.Imaging.ImageCodecInfo
  Dim j As Integer
  Dim encoders() As System.Drawing.Imaging.ImageCodecInfo
  encoders = System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders()
  j = 0
  While j < encoders.Length
   If encoders(j).FormatID = format.Guid Then
    Return encoders(j)
   End If
   j += 1
  End While
  Return Nothing
End Function 'GetEncoderInfo

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

Алгоритм Евклида

Visual Basic 5.0/6.0: Простые математические операции @Петр (Skript) Пономарев 11.12.2011 03:36
Программа вычисляет дискриминант и дроби.
Dim n
As Double
Dim m As Double

Private Sub Command1_Click()
m = InputBox("Введите значение первого числа")
n = InputBox("Введите значение второго числа")
While (m <> 0) And (n <> 0)
If m > n Then
m = m - n
End If
n = n - m
Wend
Print m
End Sub

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

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

Вакансии в IT

Программист filemaker

Россия, Москва | Работа в офисе

Тестировщик - программист

Россия, Москва | Работа в офисе | 55 000.00 RUB

Программист базы данных 1С8

Россия, Москва | Работа в офисе

Инженер-программист (для кодов систем видеонаблюдения)

Россия, Москва | Работа в офисе | 55 000.00 RUB

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

Россия, Москва | Работа в офисе | 33 000.00 RUB

Инженер программист (наладчик) АСУ и КИПиА

Россия, Москва | Работа в офисе | 40 000.00 RUB

Программист . Net

Россия, Москва | Работа в офисе

Программист Clarion

Россия, Москва | Работа в офисе | 55 300.00 RUB

Java-программист

Россия, Москва | Работа в офисе

Программист

Россия, Москва | Работа в офисе

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

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

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

Microsoft запустила интернет-проект Answer Desk

 

Корпорация Microsoft запустила новый технический сайт поддержки, где зарегистрированные эксперты могут проводить платные 1- или 2-часовые сессии, направленные на оказание услуг "народной техподдержки". В рамках данной услуги, эксперты могут оказывать услуги по настройке Windows и Office, удалять вредоносное ПО с компьютера и решать другие распространенные проблемы. Стоимость технической консультации составляет 99 долларов.

Система Answer Desk была запущена корпорацией без каких-либо дополнительных анонсов и официальных заявлений, о новом проекте не было сообщено даже в соответствующем разделе, посвященном Windows. Как сообщает сайт Fusible.com, система Answer Desk была запущена в прошлую среду на базе технологий компании NameRally, купленной Microsoft в сентябре прошлого года.

Сейчас на сайте расценки варьируются от 49 долларов за час персонального тренинга до 99 долларов за 2-часовую сессию.

Работает сайт http://www.answerdesk.com на данный момент только для посетителей из США.

15.12.2011 11:17 · Категория: Бизнес в IT · Источник: CyberSecurity.ru

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

Эксперты говорят о росте популярности Java-эксплоитов и опасных PDF

Антивирусная компания G Data Software представила очередной ежемесячный отчет о наиболее опасных и популярных вредоносах в ноябре 2011 года. Каждый 10-ый зловред, который пробирается на компьютер пользователя, является участником ноябрьского Top10 от G Data SecurityLabs и каждый 25-ый – использует уязвимость CVE 2010-0840, обновления для которой были выпущены компанией Oracle в марте 2010 года. Иными словами, киберпреступники опять полагаются на неаккуратность пользователей в обновлении программ на своем ПК и невнимательностью в работе с самозапускаемыми файлами.

«CVE 2010-0840 уже давно используется в охоте на пользователей, – рассказывает Ральф Бенцмюллер, руководитель лаборатории безопасности G Data SecurityLabs. – Но для преступников эта уязвимость в Java до сих пор остается ключевой, так как пользователи недостаточно внимательно относятся к обновлению ПО, и оставляют всезаводские настройки «по умолчапнию». Дело в том, что эксплоит Exploit.CV E-2010-0840.E, который в ноябре стал лидером нашего рейтинга, автоматические закачивает вредоносное ПО на компьютер, обходя механизмы защиты песочницы. После активации, он начинает закачивать зловредов, которые регистрируют себя в качестве сервиса с помощью Microsoft Register Server. Поэтому, используя настройки автозапуска файлов при включении системы, которые изначально не были отключены пользователем, вредоносный код при активации системы начинает закачиваться автоматически».  

Как бороться с проникновением этого вредоноса?
для Java: Установите специальное ПО от Java, которое проверит, какая версия программы работает на Вашем ПК www.java.com/en/download/installed.jsp. Если у Вас не установлена новейшая версия Java, для начала удалите старую версию, а лишь затем поставьте новую. Следуйте официальным инструкциям Oracle на сайте компании: www.java.com/en/download/
для Автозапуска: как объясняет Microsoft, «автозапуск представляет собой программный ответ на аппаратные действия, которые начинаются на ПК». Например, при использовании USB-накопителя, флешка открывается автоматически. И именно по умолчанию может запускаться вредоносное ПО. Отключить функцию автоматического исполнения файлов для пользователей Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003 or Windows XP можно по ссылке http://support.microsoft.com/kb/967715/en-us


Возвращение PDF-вредоносов
В течение многих месяцев вирусы, использующие уязвимости в PDF, не появлялись в ежемесячном вирусном рейтинге G Date SecurityLabs. Но ноябрь также отметился возвращением этой группы вредоносов, которые работают только в старых версиях Adobe Acrobat Reader 8 ( < 8.21) и 9 ( < 9.31 ). Пользователи Adobe Reader X пока могут быть спокойны.

История атак на PDF-файлы сегодня насчитывает более 250 уязвимостей, которые использовались мошенниками в разные годы с 2000 года. 2009 был «черным годом» для этого ПО, но после выхода версии Adobe Reader X со встроенной песочницей программа стала безопаснее. Но как бы то ни было многие автоматические эксплоиты, такие как Eleonore, Liberty Exploit Pack или Elfiesta, до сих пор могут создавать зараженные PDF-файлы, не требуя высокого профессионализма от киберпреступников.

15.12.2011 11:17 · Категория: Безопасность · Источник: CyberSecurity.ru

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

Антивирусная компания предупреждает об ИТ-атаке Nitro

Антивирусная компания Symantec обнародовала данные об обнаружении крупномасштабной таргетированной атаки, ориентированной на кражу данных у химических и оборонно-промышленных компаний. Новая атака с условными названием Nitro была запущена еще в конце апреля, но сначала она была ориентирована на правозащитные организации и лишь потом ее создатели переориентировались на промышленность.

По данным Symantec, атака начала реализовываться с прицелом на промышленные компании с конца июля. С тех пор в ее фокус попали 29 компаний в 19 отраслях, в том числе химической и оборонной. Достоверно известно, что за несколько месяцев атакующим удалось заразить более сотни промышленных компьютеров и похитить с них данные.

Атакующие использовали ставший уже традиционным метод целевых атак, ориентированных на конкретных работников. Хакеры направляли им электронные письма, оформленные как корпоративная электронная корреспонденция и под различными предлогами выуживали закрытые данные. Большинство писем содержали приложенные архивы с троянским софтом китайского производства. Согласно данным Symantec, в большинстве случаев применялись самораспаковывающиеся троянцы Poisonlvy.

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

15.12.2011 11:15 · Категория: Безопасность · Источник: 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 если иное не указано отдельно.


В избранное