Рассылка закрыта
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
Программирование (VB,C#,ASP,.NET): новости, советы, примеры
Выпуск # 682Очередной выпуск рассылки! За последнее время на сайте произошло столько всего, столько всего, что все просто не уместилось в этот выпуск! Но ничего, ведь вы всегда можете ознакомиться со всеми обновлениями непосредственно посетив сайт. Кстати, помимо изменения в содержании Kbyte.Ru, появлении новых интересных материалов, проект постоянно совершенствуется технически, и вы можете принять в этом непосредственное участие, присылая свои идеи и предложения. Содержание выпускаЧитайте в этом выпуске: Если у вас есть вопросы по программированию или работе с компьютером, не стесняйтесь, спрашивайте.Форумы Kbyte.RuНа форумах Kbyte.Ru постоянно появляются новые интересные темы и обсуждения. В этом выпуске представлены лишь новые темы, с момента прошлой рассылки. Кстати, любой желающий может на форумах Kbyte.Ru совершенно свободно получить помощь грамотных специалистов в области программирования, да и в целом информационных технологий. Задать свой вопрос прямо сейчас Форум и поиск @artF 29.03.2012 23:03 Всем доброго времени суток.Вопрос либо я не внимательный и не заметил кнопку поиска но помоему при посмотре форума нигде нет поиска по форуму
конкретно.Именно при просмотре форума http://kbyte.ru/ru/Forums лично сейчас я хотел найти но такой функции не обнаружил, предлогаю добавить такую,должно быть удобнее) Ответ #1 @Aleksey Nemiro 29.03.2012 23:39 Это слишком дорогое удовольствие.
Нагрузка на базу будет высокой, сейчас и без поиска все напределе. На главной есть справа поиск от Google. Возможно, на новом сервере появится, это пока только в планах. Трехуровневая модель архитектуры @InfoMaster 29.03.2012 00:55 Ребят, всем привет, помогите разобраться с одним вопросом... Изучаю патерны проектирования, изучил одну статейку на codeproject.com, а именно Разъясните этот вопрос более подробно... Эквалайзер для медиапроигрывателя @Oleg
27.03.2012 23:17 Подскажите кто знает как добавить эквалайзер в проигрыватель? Что для этого нужно. Меня интерисует как сделать команды на СКРОЛБАРЫ: панорама, срез низкие частоты, срез высокие частоты, делей (эхо). в среде Delphi Работа с процессами
@InfoMaster 25.03.2012 21:10 Ребят, помогите разобрать тему процессов и потоков... Вообщем надо организовать WinForms приложение, которое работает с потоками выполнения, нужно использовать Thread, Treadpool, Backgroundwoker, которые будут выполнять метод в разных потоках, можно для примера просто пересчет от 1 до 100, отобразить ход выполнения в Label, при чем сделать нужно так, есть кнопка, по нажатию которой добавляется новый поток в котором начинает выполняться метод, при чем добавляет новый Label где отображается выполнение метода в новом потоке... Помогите разобраться с работой потоков и как вообще правильно делать это все... P.S. буду крайне признателен за комментарии в коде, хотя бы минимальные, заранее благодарю Ответ
#1 @Aleksey Nemiro 27.03.2012 12:29 можно для примера простоПросто не получится, работа с потоками, и в частности синхронизация - сложная тема, для каждой конкретной задачи решение будет уникальным ![]() С Label-ами решение может быть таким: public partial class Form1 : Form { private int _TotalThreads = 0; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { // отправляем label на panel Label l = new Label(); l.Text = "новый поток"; l.AutoSize = true; panel1.Controls.Add(l); // создаем поток Thread t = new Thread(ThreadMethod); t.IsBackground = true; t.Start(l);// передаем ссылку на Label в поток // увеличиваем счетчик потоков _TotalThreads++; } private void ThreadMethod(object arg) { // получаем ссылку на Label Label l = arg as Label; // цикл, для наглядности for (int i = 1; i <= 100; i++) { // определяем размер паузы int sleepTime = new Random(DateTime.Now.Millisecond).Next(1000, 5000); // меняем текст в Label UpdateLabel(l, String.Format("цикл: {0}, пауза: {1} сек.", i, sleepTime / 1000)); // ставим поток на паузу Thread.Sleep(sleepTime); } // работа почти завершена // удаляем label RemoveLabel(l); // уменьшаем счетчик потоков _TotalThreads--; } /// <summary> /// Метод обновления текста в Label /// </summary> /// <param name="l">Ссылка на Label, текст в котором нужно обновить</param> /// <param name="msg">Новый текст</param> private void UpdateLabel(Label l, string msg) { if (this.InvokeRequired) { this.Invoke(new MethodInvoker(delegate { UpdateLabel(l, msg); })); return; } l.Text = msg; } /// <summary> /// Метод удаляет Label из panel /// </summary> /// <param name="l">Label, который нужно удалить</param> private void RemoveLabel(Label l) { if (this.InvokeRequired) { this.Invoke(new MethodInvoker(delegate { RemoveLabel(l); })); return; } panel1.Controls.Remove(l); } #region обновление расположения Label-ов в panel, чтобы не было пробелов private void panel1_ControlAdded(object sender, ControlEventArgs e) { UpdateLabelPostions(); } private void panel1_ControlRemoved(object sender, ControlEventArgs e) { UpdateLabelPostions(); } private void UpdateLabelPostions() { for (int i = 0; i <= panel1.Controls.Count - 1; i++) { if (i == 0) { panel1.Controls[i].Top = 0; } else { panel1.Controls[i].Top = panel1.Controls[i - 1].Top + panel1.Controls[i - 1].Height; } } } #endregion } partial class Form1 { /// <summary> /// Требуется переменная конструктора. /// </summary> private System.ComponentModel.IContainer components = null; /// <summary> /// Освободить все используемые ресурсы. /// </summary> /// <param name="disposing">истинно, если управляемый ресурс должен быть удален; иначе ложно.</param> protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Код, автоматически созданный конструктором форм Windows /// <summary> /// Обязательный метод для поддержки конструктора - не изменяйте /// содержимое данного метода при помощи редактора кода. /// </summary> private void InitializeComponent() { this.panel1 = new System.Windows.Forms.Panel(); this.button1 = new System.Windows.Forms.Button(); this.SuspendLayout(); // // panel1 // this.panel1.AutoScroll = true; this.panel1.Borderstyle="System.Windows.Forms.BorderStyle.FixedSingle;" this.panel1.Location = new System.Drawing.Point(12, 55); this.panel1.Name = "panel1"; this.panel1.Size = new System.Drawing.Size(530, 231); this.panel1.TabIndex = 0; this.panel1.ControlAdded += new System.Windows.Forms.ControlEventHandler(this.panel1_ControlAdded); this.panel1.ControlRemoved += new System.Windows.Forms.ControlEventHandler(this.panel1_ControlRemoved); // // button1 // this.button1.Location = new System.Drawing.Point(12, 12); this.button1.Name = "button1"; this.button1.Size = new System.Drawing.Size(139, 37); this.button1.TabIndex = 1; this.button1.Text = "Добавить поток"; this.button1.UseVisualStyleBackColor = true; this.button1.Click += new System.EventHandler(this.button1_Click); // // Form1 // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(554, 330); this.Controls.Add(this.button1); this.Controls.Add(this.panel1); this.Name = "Form1"; this.Text = "Form1"; this.ResumeLayout(false); } #endregion private System.Windows.Forms.Panel panel1; private System.Windows.Forms.Button button1; } Как уже говорил, универсального решения в таких задачах быть не может. Тема сложная, если есть возможность обойтись без потоков, то лучше использовать эту возможность. Неправильная организация работы многопоточного приложения может стать причиной смерти проекта на стадии зачатия ![]() Ответ #2 @InfoMaster 28.03.2012 12:42 Спасибо огромное, Алексей, буду изучать тему на вашем примере Порядок обновления программы @Леонид 25.03.2012 02:44 Подскажите.Ни разу не пробовал делать программу, с возможностью обновления
через интернет при необходимости. Подскажите технологию каким образом это делается. Спасибо... Ответ #1 @Aleksey Nemiro 26.03.2012 14:39 1. Сделать запрос на страницу в интернет, которая будет возвращать номер последней версии программы,
или дату обновления. Для этого нужен сайт, домен. 2. Если версия текущей программы уже устарела, то нужно загрузить новую версию. Удобней закачивать дистрибутив. Когда программа будет закачена, нужно выключить текущую работающую версию (которая закачивала новую версию) и запустить установщик. Технически, реализовать проверку обновлений и загрузку дистрибутива можно при помощи сокетов. Ответ #2 @Леонид 27.03.2012 04:01 А можно ли на примере как то объяснить? Спасибо... Программа на VB5. Ответ #3 @Aleksey
Nemiro 27.03.2012 11:33 Примеры получения данных из Интернет при помощи Visual Basic 5.0/6.0 вот: USD And Euro Course Загружаем любой файл из интернета InternetNews Серверную часть, если нет домена и нормального хостинга, можно сделать даже на бесплатном хостинге. Например, narod.ru. Сделать файлик, например: http://mydomain.narod.ru/version.html который будет содержать версию программы. Например:
Файл http://mydomain.narod.ru/version.html обновлять вручную, при необходимости. Программа будет периодически загружать этот файл http://mydomain.narod.ru/version.html - т.е. там буквально одна строка данных будет, состоящая из нескольких символов. Если число в файле больше, чем число вшитое в программу, то программа должна будет закачать новый дистрибутив. Например, в программу вшито число 1, в файлике http://mydomain.narod.ru/version.html стоит 2. Новый дистрибутив лежит (где именно, зависит от фантазии разработчика) по адресу: http://mydomain.narod.ru/updates/2/file.exe Программа должна его закачать, одним из способов, показанных в приведенных выше примерах. Затем запустить, при помощи команды Shell. Собственно, файл http://mydomain.narod.ru/version.html может содержать не номер версии, а ссылку на последний дистрибутив программы. Да и вообще, все что угодно может содержать. Я привел максимально простую схему. Ответ #4 @artF 29.03.2012 20:28 Можно так же сделать вроди этого- файл http://mydomain.narod.ru/version.html:
пример как парсить все данные на VB6( думаю с VB5 похож синтаксис): Dim version1 As Integer version1 = InStrRev(strResponse, "[/ver]") Dim version2 As Integer version2 = InStrRev(strResponse, "<result>", version1) result = Mid(strResponse, version2 + Len("[ver]"), version1 - Len("[ver]") - version2) тут: strResponse это строка с ответом от сервера( в нашем случае с заголовками и содержимым от http://mydomain.narod.ru/version.html result строка с нашими нужными данными Доступ к массиву внутри класса @InfoMaster 23.03.2012 19:02 Ребят, нужна помощь есть класс внутри которого описан такой вот массив: public TimeSpan[] TimeSpanArrayField; Как написать свойство для доступа к нему используя атрибуты set и get P.S. индексатор здесь не подойдет, я не использую класс как обертку над единственным массивом Заранее благодарю! Ответ #1 @InfoMaster
23.03.2012 19:16 Решил проблему, кому интересно делается это так: public string[] TimeSpanArray { get { string[] strings = new string[TimeSpanArrayField.Length]; for (int number = 1; number <= TimeSpanArrayField.Length; number++) strings[number - 1] = TimeSpanArrayField[number - 1].ToString(); return strings; } set { TimeSpanArrayField = new TimeSpan[value.Length]; for (int number = 1; number <= value.Length; number++) TimeSpanArrayField[number - 1] = TimeSpan.Parse(value[number - 1]); } } Исходные кодыGimme Light in WPFVisual Basic .NET: Мультимедиа @Shark1 25.03.2012 17:17 Пример одного уровня игры похожей на "Gimme Light". К данном исходному коду прилагаются файлы примеров. Скачать. Вакансии в ITВедущий разработчик (Руководитель группы)Россия, Москва | Работа в офисе Разработчик БДРоссия, Москва | Работа в офисе | 60 000.00 RUB Разработчик программного обеспечения С#/ Программист С#Россия, Москва | Работа в офисе | 50 000.00 RUB Java разработчикРоссия, Москва | Работа в офисе | 110 000.00 RUB Специалист / программист по адаптации flash сайтаРоссия, Москва | Удаленная работа ПрограммистРоссия, Москва | Работа в офисе | 100 000.00 RUB Инженер-программист BIOSРоссия, Москва | Работа в офисе Программист для создания ГИСРоссия, Москва | Работа в офисе | 55 000.00 RUB Программист DelphiРоссия, Москва | Работа в офисе | 60 000.00 RUB ПрограммистРоссия,
Москва | Работа в офисе | 80 000.00 RUB Все вакансии в IT · Новости мира ITЕвропа создаст единый центр по борьбе с киберпреступлениямиПо сообщению агентства Associated Press, Еврокомиссия намерена учредить специализированный центр по работе с киберпреступностью и защите граждан от "незаконной онлайн-активности". Сегодня в Брюсселе поступило предложение по созданию соответствующего центра как части Европола - европейского полицейского ведомства. Расположить новый общеевропейский центр по борьбе с киберпреступностью предлагается в Гааге (Нидерланды).
В заявлении Еврокомиссии говорится, что крупномасштабные кибератаки в Европе становятся все более частыми и сложными, дойдя до той стадии, когда они начали представлять собой реальную угрозу европейским финансовым учреждениям и объектам критически важной общественной инфраструктуры. 29.03.2012 12:01 · Категория: Безопасность · Источник: CyberSecurity.ru Google работает над продвинутыми веб-технологиямиGoogle работает над рядом продвинутых техник программирования, позволяющих облегчить написание сложных веб-приложений. "Мы находимся в точке, когда веб превращается в место интеграции платформ и аппаратных компонентов", - говорит Алекс Рассел, инженер Google, ведущий разработку браузера Chrome и создатель фреймворка Dojo JavaScript.
Рассел накануне представил свой доклад на технической конференции EclipseCon в американском Рестоне (шт Вирджиния), где признал, что несмотря на популярность концепции современного веб-пространства, современная веб-среда имеет лишь сравнительно примитивные средства программирования по сравнению с теми средствами, что имеют операционные системы. "Одной из наиболее очевидных проблем веб-технологий является отсутствие общей компонентной модели", - говорит Рассел. "Это значительно затрудняет тестирование
кода и его последующее использование". 29.03.2012 12:00 · Категория: Бизнес в IT · Источник: CyberSecurity.ru Самый большой в мире OLED-телевизор оценили в 8 тысяч долларовOLED-телевизор LG с 55-дюймовым экраном будет стоить 7,9 тысячи долларов и поступит в продажу до летних Олимпийских игр в Лондоне. Ранее сообщалось, что устройство выйдет во второй половине года. Аналогичный телевизор готовит к выпуску Samsung, но цена на него пока не раскрывается. 29.03.2012 11:59 · Категория: Железо · Источник: Lenta.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. |
В избранное | ||