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

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


Выпуск # 746

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


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

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

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

Форумы Kbyte.Ru

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

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

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

Limbo @Crash666 03.10.2013 22:37
И так я понял что старею и начинаю отбрасывать копыта, поэтому обращаюсь сюда за помощью в пустяковой проблеме и собственно у меня не работает игруня LImbo выдавало что нет библии d3dx9_41 потом еще чего то в итоге установил DirectX 10 запускаю игру и вылезаем из глубин ада и подмышки сатаны ошибка "No gfx hardware acceleration found (DX9 Error - 2005530518)" как же мне её установить??

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

У меня слева есть меню. В одном из пуктов меню есть список пользователей внутри UpdatePanel
<% if (!Request.IsAuthenticated) {%>
    <asp:Button ID="LoginButton" runat="server" OnClick="LoginButton_Click"/>
<%}else {%>
  <asp:TextBox runat="server" ID="Textbox"></asp:TextBox>
  <asp:Button ID="Filter_ClientButton" runat="server" OnClick="Filter_ClientButton_Click" />
  <asp:UpdatePanel ID="UpdatePanel_Client" runat="server">
   <ContentTemplate>
    ТУТ СПИСОК КЛИЕНТОВ
 </ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="Filter_ClientButton" EventName="Click" />
    </Triggers>
</asp:UpdatePanel><%} %>
Меню лежит в MasterPage.

Есть на сайте простая страничка Default.aspx
На ней тоже есть UpdatePanel
<asp:UpdatePanel ID="panel_search" UpdateMode="Conditional" runat="server" >
  <ContentTemplate>
     Repeater
  </ContentTemplate>
</asp:UpdatePanel>
Этот второй UpdatePanel не имеет Тригеров. В середине есть контрол листания страниц этого контента.

Проблема в том, что когда на сайте аноним (UpdatePanel_Client в меню не виден и физически не формируется) то все события в panel_search не работают и в режиме дебага ошибок не выдает.

Но когда на сайте залогинится, тогда все работает. Даже кожна кликаю в panel_search, события срабатывают и в UpdatePanel_Client

Помогите разобраться с этой проблемой. И я не пойму как и почему разные UpdatePanel так действуют друг на друга.

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

Сделал в SmallBasic-e.
Исходник здесь: http://smallbasic.com/program/?QRG188-0
Пощелкайте кнопочками."Как прекрасен этот мир, посмотри..."

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

В статье про прокси сервер дан пример
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Sockets;
using System.IO;
using System.Net;
using System.Text.RegularExpressions;
using System.Threading;

namespace ProxyEasyWithThreads
{
  class Program
  {
    static void Main(string[] args)
    {
      // слушаем локальный апишник (127.0.0.1) и порт 8888
      TcpListener myTCP = new TcpListener(IPAddress.Parse("127.0.0.1"), 8888);
      // поехали!
      myTCP.Start();

      while (true)
      {
        // смотрим, есть запрос или нет
        if (myTCP.Pending())
        {
          // запрос есть
          // передаем его в отдельный поток
          Thread t = new Thread(ExecuteRequest);
          t.IsBackground = true;
          t.Start(myTCP.AcceptSocket());
        }
      }

      myTCP.Stop();
    }

    private static void ExecuteRequest(object arg)
    {
      Socket myClient = (Socket)arg;
      // соединяемся
      if (myClient.Connected)
      {
        // получаем тело запроса
        byte[] httpRequest = ReadToEnd(myClient);
        // ищем хост и порт
        Regex myReg = new Regex(@"Host: (((?<host>.+?):(?<port>\d+?))|(?<host>.+?))\s+", RegexOptions.Multiline | RegexOptions.IgnoreCase);
        Match m = myReg.Match(System.Text.Encoding.ASCII.GetString(httpRequest));
        string host = m.Groups["host"].Value;
        int port = 0;
        // если порта нет, то используем 80 по умолчанию
        if (!int.TryParse(m.Groups["port"].Value, out port)) { port = 80; }

        // получаем апишник по хосту
        IPHostEntry myIPHostEntry = Dns.GetHostEntry(host);

        // создаем точку доступа
        IPEndPoint myIPEndPoint = new IPEndPoint(myIPHostEntry.AddressList[0], port);

        // создаем сокет и передаем ему запрос
        using (Socket myRerouting = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))
        {
          myRerouting.Connect(myIPEndPoint);
          if (myRerouting.Send(httpRequest, httpRequest.Length, SocketFlags.None) != httpRequest.Length)
          {
            Console.WriteLine("При отправке данных удаленному серверу произошла ошибка...");
          }
          else
          {
            // получаем ответ
            byte[] httpResponse = ReadToEnd(myRerouting);
            // передаем ответ обратно клиенту
            if (httpResponse != null && httpResponse.Length > 0)
            {
              myClient.Send(httpResponse, httpResponse.Length, SocketFlags.None);
            }
          }
        }
        myClient.Close();
      }
    }

    private static byte[] ReadToEnd(Socket mySocket)
    {
      byte[] b = new byte[mySocket.ReceiveBufferSize];
      int len = 0;
      using (MemoryStream m = new MemoryStream())
      {
        while (mySocket.Poll(1000000, SelectMode.SelectRead) && (len = mySocket.Receive(b, mySocket.ReceiveBufferSize, SocketFlags.None)) > 0)
        {
          m.Write(b, 0, len);
        }
        return m.ToArray();
      }
    }

  }
}

Вообщем он HTTP обрабатывает а вот чтобы HTTPS обрабатывал - Если вы захотите реализовать поддержку этого протокола самостоятельно, то я рекомендую при переадресации запросов клиента использовать классы HttpWebRequest и HttpWebResponse, а не сокеты (в дополнение к сокетам). Знаю что в теории нада сделать так что она меня не интересует, знаю даже примерно где в этом коде. Но чтобы я не пробывал - не получается ПОМОГИТЕ.

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

Webbrowser @KrokadaiL 02.10.2013 17:59
Приветствую! Я уже устал искать решения по всей всемирной сети. Использую VB 2012. Вот решил задать здесь такую задачку:

Есть webbrowser. Мне нужно, чтоб после полной, а не частичной как предлагает событие, прогрузки(и только после неё) страницы исполнялся код. Мне нужно по окончания загрузки взять исходник со страницы. С ним поработать, а потом повторить обновление.
Варианты типа:

OnDocumentComplete


while WebBrowser1.ReadyState<>4 do Application.ProcessMessages

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

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

Ответ #1 @Алексей Немиро 02.10.2013 20:56
В последнем случае из цикла вообще не выходит.
Должен выходить, т.к. у WebBrowser время на выполнение запросов ограничено и следовательно, если какая-то часть страницы не будет загружена, то загрузка будет считаться завершенной.
WebBrowser1.Navigate("http://kbyte.ru")'открываем страничку
   Do While Not WebBrowser1.ReadyState = WebBrowserReadyState.Complete'крутить цикл, пока документ не будет загружен
        Application.DoEvents()'возвращаем управление приложению, чтобы программа не сильно подвисала
    Loop
'Документ полностью загружен

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

Ответ #2 @KrokadaiL 03.10.2013 01:33
Спасибо попробую... Ещё такой вопросик: можно ли получить исходный код не прогружая картинки?

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

Ответ #3 @KrokadaiL 03.10.2013 01:49
Алексей Немиро: А можно ли снизить нагрузку на процессор во время ожидания?

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

Ответ #4 @Алексей Немиро 03.10.2013 11:02
можно ли получить исходный код не прогружая картинки
Если нужен только html, можно (нужно) вообще не использовать WebBrowser.

Самый простой способ - WebClient:
Dim myWeb As New System.Net.WebClient()
Dim pageData As String = myWeb.DownloadString("http://kbyte.ru/ru/Forums/Show.aspx?id=15490")
'в переменной pageData будет html текущей страницы форума

Для более сложных запросов может потребоваться использовать HttpWebRequest и HttpWebResponse, хотя в .NET Framework 4.5 (который не совместим с Windows XP) есть более простые классы. Либо можно использовать вспомогательный класс из хитрой библиотеки (если нужны куки/поддержка session, отправка сложных форм), тут можно найти пример.
А можно ли снизить нагрузку на процессор во время ожидания?
Самый простой способ, проверять Timer-ом, вместо цикла. Поставить интервал, например 100. В обработчике события тика написать условие:
If
WebBrowser1.ReadyState = WebBrowserReadyState.Complete Then
  Timer1.Enabled = False 'выключаем таймер, чтобы исключить повторное срабатывание условия (таймер нужно включать после установки нового Navigate)
  MsgBox("страница полностью загружена!")
End If

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

Ответ #5 @KrokadaiL 04.10.2013 05:42
Самый простой способ - WebClient:
Dim myWeb As New System.Net.WebClient()
Dim pageData As String = myWeb.DownloadString("http://kbyte.ru/ru/Forums/Show.aspx?id=15490")
'в переменной pageData будет html текущей страницы форума


Нужно ещё учесть кодировку:

Dim myWeb As New System.Net.WebClient()
Dim pageData As String
Dim Encoding As System.Text.Encoding

myWeb.Encoding = Encoding.UTF8
pageData = myWeb.DownloadString("http://kbyte.ru/ru/Forums/Show.aspx?id=15490")

Благодарю - это очень полезно было для меня... Ну для контрольного в голову: можно ли через эту штуку нажимать на кнопаськи и вводить данные?

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

Добавить свой ответ в эту тему
Вот адрес исходника: http://smallbasic.com/program/?WVP500
У кого имеется эта среда ИМПОРТ: WVP500 . Она требует (FC.dll) и (LitDev.dll)
Удачи.

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

Ответ #1 @Akiva 29.09.2013 06:07

Добавлено с кнопочкой <ball>.
ИМПОРТ: MVL195

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

Ответ #2 @Akiva 02.10.2013 07:00
Любителям легкого "флирта" с программированием. (...Было-бы не плохо маленького уголочка для SmallBasic-a)?
1)Создал возможность фигурам(Shape1-Shape4) и (Polygon5-Polygon8),кнопочка<Opacity>(с 0 до 100%)-прозрачности.
2)Кнопочка<Zoom>,этим фигурам можно масштабно менять высоту и ширину (с 0.1 до 20).
Все добавления здесь: http://smallbasic.com/program/?CMC632-0
Удачи. С уважением, Akiva

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

Добавить свой ответ в эту тему
День добрый уважаемые форумчане.

Пытаюсь подружить PHP -> XMLRPC -> WPF
Написал простенький сервер, работает все норм. Теперь надо чтобы из класса/метода который запускается удаленно, оперировать формой.
Вопрос как добраться до WPF окна и как то манипулировать его поведением.

Попытался таким способом.
Создал класс в котом прячу ссылку на форму в момент ее создания.

Public Class Wrapper

Private form As Window1

Public Sub New(ByVal window As Window1)
Me.form = window
End Sub


Public Function getForm() As Window1
Return Me.form
End Function


End Class


Внутри Window1_Loaded

wrapp = New Wrapper(Me)


потом при вызове метода пытаюсь так

wrapp.getForm().txtDebug.Text = tmp.ToString()

В итоге при попытке выполнить последнюю строчку кода, появляется ошибка

Вызывающий поток не может получить доступ к данному объекту, так как владельцем этого объекта является другой поток.

Помогите победить проблему.
Заранее благодарен за помощь.

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

Ответ #1 @Алексей Немиро 29.09.2013 12:05
Вероятно нужно менять через Dispatcher.BeginInvoke, чтобы вернуть в свой поток.
Me.Dispatcher.BeginInvoke(Function() wrapp.getForm().txtDebug.Text = tmp.ToString())

Хотя, возможно работать не будет.
Нужно в форме сделать публичный метод, который будет менять текст и там уже возвращаться в свой поток.

Public Sub SetDebugText(value
As String)
  Me.Dispatcher.BeginInvoke(Function() txtDebug.Text = value)
End Sub
wrapp.getForm().SetDebugText(tmp.ToString())
Код не проверял.

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

Добавить свой ответ в эту тему
Как изменить сам цвет выделения в RTB не цвет текста и не задний план а САМ ЦВЕТ выделяемой облости, спасибо!

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

Ответ #1 @Алексей Немиро 27.09.2013 16:54
Это системный параметр, зависит от настроек Windows.

Можно попробовать найти что-нибудь из WinApi. Либо наследоваться от RichTextBox и попробовать изменить цвет выделения в событии выделения, или прорисовки выделения.

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

Ответ #2 @Crash666 27.09.2013 18:21
попробовать изменить цвет выделения в событии выделения, или прорисовки выделения.
а что за событие?

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

Ответ #3 @Алексей Немиро 27.09.2013 18:51
а что за событие?
Понятия не имею, нужно смотреть, искать. Наверняка должно что-то подобное быть Вопрос не ординарный, так что скорее всего решение будет сложным.

Я сейчас на тормознутом ноуте, не могу посмотреть, мышка двигает со скоростью 10 кадров в секунду

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

Ответ #4 @Crash666 27.09.2013 21:30
мышка двигает со скоростью 10 кадров в секунду

Как же у вас много приспособлений

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

Добавить свой ответ в эту тему
Задача состоит в том, что на форме есть рамка, при изменении размера формы она также изменяет свои размеры. Из файла загружаются данные и по ним внутри рамки отрисовывается видимая часть изображения, которая также должна изменять масштаб при изменении размера окга. Вопрос: как вычислить координаты точки, относительно которой масштабировать изображение, чтобы оно было неподвижным относительно рамки?

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

Ответ #1 @Алексей Немиро 27.09.2013 11:20
Если будет меняться размер рамки, то изображение в любом случае должно смещаться относительно нее.
Если координаты вывода будут фиксированными, то рамка может "наехать" на изображение.

Левая сторона холста = Ширина рамки
Верхняя сторона холста = Высота рамки

Правая сторона холста = Ширина рамки * 2
Нижняя сторона холста = Высота рамки * 2

Холст - место внутри рамки. Можно добавить дополнительные поля:

Левая сторона холста = Поле + Ширина рамки
Верхняя сторона холста = Поле + Высота рамки

Правая сторона холста = (Поле + Ширина рамки) * 2
Нижняя сторона холста = (Поле + Высота рамки) * 2

Если Поле = 10px, то внутри рамки от каждого края будет отступ в 10 пикселей.

Если рамка выводится не по краям формы, то нужно будет еще учитывать в расчетах X и Y вывода рамки.

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

Добавить свой ответ в эту тему
Active Directory @rusiko 26.09.2013 16:55
Привет всем. Помогите пожайлуста с вопросом об администрировании Windows Server 2008R2 Active Directory. Вроде бы службу Active Directory нормально установил и все отлично работает. Пользователей тоже добавил в домен. Вот только в настройках Active Directory не могу найти как можно полноценно управлять пользователями. Очень прошу если можно поподробнее опишите как настраивать, управлять пользователями в домене. В интернете я нашел очень много статей на эту тему, но все они описывают как правильно устанавливать Active Directory, а мне нужно как с помощью службы Active Directory я могу изменять параметры, отключать или включать пользователей, подключатся к их рабочему столу, как контролировать их в сети и тому подобное. Одним словом хочу понять и увидеть все преимущества Active Directory от одноранговой сети. Спасибо большое.

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

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

Вакансии в IT

Менеджер по продажам

Россия, Иркутск | Работа в офисе | 40 000,00 KBP

Дизайнер интерфейсов

Россия, Красноярск | Работа в офисе | 40 000,00 KBP

Junior C# Developer(стажировка)

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

Программист Professional Services

Россия, Новосибирск | Работа в офисе | 29 000,00 KBP

Android Developer

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

Junior Android Developer

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

Программист C#

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

Ведущий программист(C#)

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

Старший инженер-программист

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

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

Россия, Новосибирск | Работа в офисе | 45 000,00 KBP

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

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

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

Новая платформа «Яндекса» адаптирует сайты под пользователей

Интернет-поисковик «Яндекс» анонсировал создание платформы «Атом», которая позволит владельцам интернет-ресурсов адаптировать контент на своих сайтах под каждого конкретного пользователя. Платформа будет анализировать интернет-активность пользователей и составлять наиболее вероятные модели их поведения на сайтах.

03.10.2013 17:34 · Категория: Бизнес в IT · Источник: Lenta.ru

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

В Калифорнии запретили публиковать интимные фотографии без разрешения героев

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

03.10.2013 17:34 · Категория: Безопасность · Источник: Lenta.ru

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

Freedom House приравняла свободу интернета в России к Зимбабве

Правозащитная организация Freedom House сохранила за Россией статус страны с «частично свободным» интернетом. В рейтинге Freedom House, распределяющем страны по уровню свободы пользования Сетью, Россия заняла 41-е место, расположившись между Венесуэлой и Зимбабве. Общий рейтинг интернет-цензуры в России составил 54 балла.

03.10.2013 13:46 · Категория: Бизнес в IT · Источник: 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.
Kbyte.Ru является парнёром компаний Mail.Ru Group, WebMoney Transfer, Ozon.Ru и др.
Выпуск рассылки подготовлен автоматически. Все права на материалы выпуска принадлежат Kbyte.Ru если иное не указано отдельно.


В избранное