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

Клуб профессиональных программистов :: Выпуск #98


Клуб профессиональных программистов "Весельчак У"
Информационная рассылка сайта и форума.  Выпуск No98 (2010-09-06).

Здравствуйте, уважаемые читатели!

Сегодня в выпуске фрагмент статьи «Семантика контента». Польностью ее можно прочесть на нашем сайте, в разделе «Web».

Также предлагаем вашему вниманию подборку интересных тем форума за прошедшую неделю.



Эта заметка появилась после неоднократного общения с «нулевым» представителем Заказчика о правилах наполнения сайта.

Когда мы учились в школе, на уроках языка и литературы нас учили писать сочинения. И методика написания сочинения основывалась на ПЛАНЕ. Составь План сочинения. А далее придерживайся этого порядка.

Не забывай, литературное произведение отличается от разговорной речи. Эмоции повествователя выражаются в дополнительном описании чувств и выражений. На листе бумаги невозможно повысить или понизить голос. Что-то сказать приглушенно или же томным голосом.

Сегодня в мир информационных технологий семимильными шагами входит Интернет. Интернет как носитель информации. Эту информацию нужно найти. В этом помогают поисковые системы. Слово «индексация» знают практически все. Поисковая система, по сути, представляет собой некоего паука, который распускает свои щупальца по всем доступным местам. Я не буду говорить о технологиях индексации.

Моя учительница рекомендовала перед сочинением на свободную тему писать какой-нибудь эпиграф. А все это я рассказываю к тому, чтобы сравнить работу паука и человеческого мозга. Ты долго ищешь «контент» для эпиграфа и находишь/не находишь. «Паук» — это робот. У него механическая память. И эпиграф он найдет уже после того, как увидит написанное сочинение.

Я как-то в разговоре с товарищем, который ничего не понимает в SEO, спросил его вот о чем. Есть сочинение на одну тему. Есть ученики, которые пишут это сочинение. Одни написали его на пять, другие на 4, третьи на 3, остальные на два. Оценку за сочинение выставлял человек. Все эти сочинения разместили в Интернете на одинаковых условиях. Какую оценку за сочинение поставил бы паук? И второе. Например, это было бы тематическое сочинение с заранее известными ключевыми словами. Какое сочинение появилось бы в ТОПе поискового запроса? Он, почти не задумываясь, ответил — то, которое написано на три. И даже аргументировал — паук есть машина, чем чаще будут встречаться нужные слова, тем лучше.



Полностью это описано здесь.

  • Программирование :: Общий
  • Добрый день. Настало время снова обратиться к вам, уважаемые программисты.
    Итак, на повестке клиент-сервер. Я пытаюсь реализовать реалтайм онлайн игру.
    Предполагается, что сервер:

    1. будет поддерживать арены по 2 игрока, т.е., они между собой там разбираются. И таких арен онлайн около 200-500.
    Я не могу точно себе представить архитектуру сервера.
    Изначально я предполагал сервлеты.
    Затем добрые люди на других форумах сказали, что можно обойтись без них.
    Но нужно создавать некий цикл, в котором обрабатывать всех этих клиентов.
    Как это вообще делается?

    2. будет отправлять сообщения клиенту каждые 100мс. Пакеты около 100байт. В связи с этим он, по идее, должен быть на сокетах.
    Т.е. создать сокет на сервере получилось, а вот сделать отправку через интервалы не получается.
    Таймер не могу подружить с сокетами, если такое вообще можно делать.

    То есть, пока эти два ключевых вопроса меня сильно беспокоят и нюансы, с ними связанные.
    В теме сокетов и сетевых решений у меня большие пробелы, поэтому если у вас есть ссылки на полезную литературу или примеры....

    Благодарю за внимание.


  • У меня вопрос из области кодировок.
    Написал скрипт на PHP (кодировка utf-8) и открываю его в браузере IE8. Методом get передаю несколько строк (символы кириллические). Не кодирую функциями, типа encode(). Другой скрипт (в начале которого я прописал header, устанавливающий  кодировку utf-8. Сам скрипт - в ней же (без BOM)) принимает эти строки и, разбирая массив $_GET, выводит их на экран. Но на экране отображаются кракозябры.
    Подскажите, пожалуйста, почему такое происходит? Здесь дело не в коде, как я понимаю, потому что в разных браузерах (и даже в разных версиях IE) эти скрипты ведут себя по-разному. Бывает, что работают так, как и задуманы - без кракозябр.
    Механизма передачи через адресную строку я не понимаю.
  • Собственно, сабж.
    Сначала сделал по привязке ко времени. Все хорошо, но оказалось, что событие App.Instance.CurrentTool.OnMouseDown будет вызываться даже тогда, когда вызывается App.Instance.CurrentTool.OnDoubleClick. Работа с графикой, поэтому при двойном клике появляется лишняя точка, это плохо.

    Код:
                  if (DateTime.Now.Ticks - lastTicks < 2010000)
                    {//Обработка двойного щелчка
                        Debug.WriteLine("Обработка двойного щелчка");

                        if (App.Instance.CurrentTool != null)
                            App.Instance.CurrentTool.OnDoubleClick(0, Convert.ToInt32(hostPoint.X), Convert.ToInt32(hostPoint.Y));
                    }
                    else
                    {
                        Debug.WriteLine("Обработка щелчка");

                        if (App.Instance.CurrentTool != null)
                            App.Instance.CurrentTool.OnMouseDown(0, Convert.ToInt32(hostPoint.X), Convert.ToInt32(hostPoint.Y));
                    }

                    lastTicks = DateTime.Now.Ticks;

    Пробовал реализовать по примеру (http://silverlight.su/viewtopic.php?id=33), но тогда возникает следующая проблема - каждый клик идет с задержкой в 200 млсек, хотя лишних кликов уже нет.
    Код:
            // время ожидания второго клика истекло
            void _doubleClickTimer_Tick(object sender, EventArgs e)
            {
                _doubleClickTimer.Stop();
                Debug.WriteLine("Обработка щелчка");
                if (App.Instance.CurrentTool != null)
                    App.Instance.CurrentTool.OnMouseDown(0, Convert.ToInt32(hostPoint.X), Convert.ToInt32(hostPoint.Y));
            }

       
    Код:
        
          protected void OnMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
            {
                hostPoint = e.GetPosition(m_viewBox);
                hostPoint.X += offsetView.X - m_scrollViewer.HorizontalOffset;
                hostPoint.Y += offsetView.Y - m_scrollViewer.VerticalOffset;

                if (!doubleClickTimer.IsEnabled)
                {
                    doubleClickTimer.Start();
                }

                else
                {
                    // произошел двойной клик
                    doubleClickTimer.Stop();

                    {//Обработка двойного щелчка
                        Debug.WriteLine("Обработка двойного щелчка");

                        if (App.Instance.CurrentTool != null)
                            App.Instance.CurrentTool.OnDoubleClick(0, Convert.ToInt32(hostPoint.X), Convert.ToInt32(hostPoint.Y));
                    }

            }
       
    Подскажите, как это реализовано, допустим, в Windows (сообщение ON_MOUSE_DOUBLECLICK)
  • Программирование :: .NET технология от и до
  • Добрый день,
    У меня тут такая вот проблемка стоит:

    Нужно отобразить в окне динамический график. Обновление вида графика раз в 50мс,а поступление новой точки графика раз в 4мс. Графиков 5 штук + на каждом отображается по 1000 точек. Рисую прямо в canvas используя polyline.
    По таймеру обновления экрана тупо добавляю новые полученные точки к polyline и удаляю лишее точки слева + сдвигаю его (нужно чтобы отображалось всегда последние 1000 точек на экране, так уж надо=) )
    В общем все бы хорошо, но загвоздка тут в том, что грузит процессор сильновато на 60-65% примерно.

     Может кто подсказать или посоветовать как разгрузить процессор?

     Были умные мысли на тему того, чтобы использовать DirectDraw и внеэкранные поверхности для прорисовки и последующей подмены изображений(сейчас вот разбираюсь с этим, если у кого есть что-то об этом тоже был бы благодарен).
  • Программирование :: .NET технология от и до :: ASP.NET
  • Здравствуйте! Помогите. На C# только учусь писать, c ASP  та же история, поэтому заранее прошу прощения за, возможно глупые, вопросы!!!!!

    Задача: На Web странице есть TreeView данные в который выгружаются динамически из бд (порядка полутора тысяч объектов). Дерево выстраивается в зависимости от того какой элемент выбран в DropDownList, данные в который грузятся так же из бд. Это пока всё что я написала:

    Код:
    using
    System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.Data.SqlClient;
    using System.Drawing.Design;


    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
           
        }


        protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
        {
           // lableStatus.Text = "ты выбрал: " + TreeView1.SelectedNode.Text;
        }

        protected void TreeView1_TreeNodePopulate(object sender, System.Web.UI.WebControls.TreeNodeEventArgs e)   
        {
            if (e.Node.ChildNodes.Count == 0)
            {

                switch (e.Node.Depth)
                {
                    case 0:
                        PopulateCategories(e.Node);     
                        break;
                    case 1:
                        PopulateProducts(e.Node);       
                        break;
                    case 2:
                        PopulateProducts_TreeLayer(e.Node);   
                        break;
                    case 3:
                        PopulateProducts_TreeNextLayer(e.Node);   
                        break;
                    case 4:
                        PopulateProducts_TreeNextLayer_1(e.Node);   
                        break;
                    case 5:
                        PopulateProducts_TreeNextLayer_2(e.Node);   
                        break;
                    case 6:
                        PopulateProducts_TreeNextLayer_3(e.Node);     
                        break;
                }
            }
        }


        private DataSet RunQuery(SqlCommand sqlQuery) 
        {
            string connectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
            SqlConnection DBConnection = new SqlConnection(connectionString);
            SqlDataAdapter dbAdapter = new SqlDataAdapter();
            dbAdapter.SelectCommand = sqlQuery;
            sqlQuery.Connection = DBConnection;
            DataSet resultsDataSet = new DataSet();
            try
            {
                dbAdapter.Fill(resultsDataSet);
            }
            catch
            {
                lableStatus.Text = "Unable to connect to SQL Server";
            }
            return resultsDataSet;
        }




        void PopulateProducts_TreeNextLayer_3(TreeNode node)
        {
            string parentID3 = node.Value.Trim();
            SqlCommand sqlQuery = new SqlCommand();
            sqlQuery.CommandText = "SELECT ........ = '" + parentID3 + "'";
            DataSet ResultSet = RunQuery(sqlQuery);


            foreach (DataRow row in ResultSet.Tables[0].Rows)
            {
                TreeNode NewNode = new TreeNode("<font color = 000000>" + row["CODE"].ToString() + "</font>" + "_ " + row["SP1738"].ToString(), row["ID"].ToString());
                NewNode.PopulateOnDemand = true;
                NewNode.SelectAction = TreeNodeSelectAction.Select;
                node.ChildNodes.Add(NewNode);
            }

        }




        void PopulateProducts_TreeNextLayer_2(TreeNode node) 
        {
            string parentID2 = node.Value.Trim();
            SqlCommand sqlQuery = new SqlCommand();
            sqlQuery.CommandText = "SELECT ....... = '" + parentID2 + "'";
            DataSet ResultSet = RunQuery(sqlQuery);

           
            foreach (DataRow row in ResultSet.Tables[0].Rows)
            {
                TreeNode NewNode = new TreeNode("<font color = 000000>" + row["CODE"].ToString() + "</font>" + "_ " + row["SP1738"].ToString(), row["ID"].ToString());
                NewNode.PopulateOnDemand = true;
                NewNode.SelectAction = TreeNodeSelectAction.Select;
                node.ChildNodes.Add(NewNode);
            }

        }

        void PopulateProducts_TreeNextLayer_1(TreeNode node) 
        {
            string parentID1 = node.Value.Trim();
            SqlCommand sqlQuery = new SqlCommand();
            sqlQuery.CommandText = "SELECT ....... = '" + parentID1 + "'";
            DataSet ResultSet = RunQuery(sqlQuery);

             foreach (DataRow row in ResultSet.Tables[0].Rows)
            {
                TreeNode NewNode = new TreeNode("<font color = 000000>" + row["CODE"].ToString() + "</font>" + "_ " + row["SP1738"].ToString(), row["ID"].ToString());
                NewNode.PopulateOnDemand = true;
                NewNode.SelectAction = TreeNodeSelectAction.Select;
                node.ChildNodes.Add(NewNode);
            }
         
        }





        void PopulateProducts_TreeNextLayer(TreeNode node) // класс построения четвёртого уровня дерева
        {
            string parentID = node.Value.Trim();
            SqlCommand sqlQuery = new SqlCommand();
            sqlQuery.CommandText = "SELECT .......... = '" + parentID + "'";
            DataSet ResultSet = RunQuery(sqlQuery);

            foreach (DataRow row in ResultSet.Tables[0].Rows)
            {
                TreeNode NewNode = new TreeNode("<font color = 000000>" + row["CODE"].ToString() + "</font>" + "_ " + row["SP1738"].ToString(), row["ID"].ToString());
                NewNode.PopulateOnDemand = true;
                NewNode.SelectAction = TreeNodeSelectAction.Select;
                node.ChildNodes.Add(NewNode);
            }
        }





        void PopulateProducts_TreeLayer(TreeNode node)
        {
            string parextID = node.Value.Trim();
            SqlCommand sqlQuery = new SqlCommand();
            sqlQuery.CommandText = "SELECT ............ = '" + parextID + "'";
            DataSet ResultSet = RunQuery(sqlQuery);

            foreach (DataRow row in ResultSet.Tables[0].Rows)
            {
                TreeNode NewNode = new TreeNode("<font color = 000000>" + row["CODE"].ToString() + "</font>" + "_ " + row["SP1738"].ToString(), row["ID"].ToString());
                NewNode.PopulateOnDemand = true;
                NewNode.SelectAction = TreeNodeSelectAction.Select;
                node.ChildNodes.Add(NewNode);
            }
        }




        void PopulateProducts(TreeNode node)
        {
            string parID = node.Value.Trim();
            SqlCommand sqlQuery = new SqlCommand();
            sqlQuery.CommandText = "SELECT .............. = '" + parID + "'";
            DataSet ResultSet = RunQuery(sqlQuery);

            foreach (DataRow row in ResultSet.Tables[0].Rows)
            {
                TreeNode NewNode = new TreeNode("<font color = 000000>" + row["CODE"].ToString() + "</font>" + "_ " + row["SP1731"].ToString(), row["ID"].ToString());
                NewNode.PopulateOnDemand = true;
                NewNode.SelectAction = TreeNodeSelectAction.Select;
                node.ChildNodes.Add(NewNode);

            }
        }




        void PopulateCategories(TreeNode node)   
        {
           string value_Item = DropDownList1.SelectedValue.Trim();
            SqlCommand sqlQuery = new SqlCommand("SELECT ........... = '" + value_Item + "'");
            DataSet resultSet;
            resultSet = RunQuery(sqlQuery);
            if (resultSet.Tables.Count > 0)   
            {
                foreach (DataRow row in resultSet.Tables[0].Rows)   
                {
                    TreeNode NewNode = new TreeNode(row["SP1731"].ToString(), row["ID"].ToString());
                    NewNode.ImageUrl = "http://...";
                    NewNode.PopulateOnDemand = true;   
                    NewNode.SelectAction = TreeNodeSelectAction.Select;
                    node.ChildNodes.Add(NewNode);
                }
            }
        }
        protected void SqlDataSource1_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
        {

        }
    protected void DropDownList1_SelectIndexChange(object sender, EventArgs e)
    {

    }
    }
    Теперь непосредственно в чём проблемы:

    1) При каждом изменении в DropDownList перестраивать дерево(на данный момент оно 2 раза перестраивает дерево, а на третий уже построенное дерево просто не меняется, не понимаю почему)

    2) Как правильно выводить сообщение-предупреждение пользователю, дорустим о том что что сначала неоюходимо выбрать элемент в  DropDownList? (MessegeDox-не работает, это WindowsForms, alert-тоже, это javascript? не понимаю)

    3) Необходимо реализовать поиск объектов в дереве, с раскрытием необходимого узла дерева автоматически! Как? ведь оно грузится динамически? это вообще возможно реализовать?

    4) Ещё хотелось бы рядом с каждым treenode разместить нечто типа imegebutton, либо всплывающего меню, цель которого открыть открыть новую страницу, на которой в textbox отобразится имя выбранного в дереве обьекта, ну и парочку таблиц с информацией по данному объекту, в общем выполнить межстраничную передачу данных, но чтоб новая страница открывалась в новой вкладке или новом окне IE.
  • Программирование :: С/С++
  • Хочу сделать графическую надстройку над консольным приложением.
    Создать новый процес и передать ему аргументы не сложно.
    Но само консольное приложение работает в диалоге с пользователем, значит, простой вызов system() не прокатит... :(
    Пробую этот механизм реализовать на Qt, используя класс QProcess.
    В нём есть возможность установить сигнал readAllStandardOutput и выводить его куда-то... :-/
    Но мне надо ещё и вводить данные пользователем.

    Может, кто видел уже решение этого, не важно, на какой билиотекЕ (GTK+, WxWidgets, boost, Qt и т.д.)?
  • Вот такую тему я придумал -
    иногда находишь решение какой-нибудь проблемки, этим хочется поделиться со всеми - вдруг кто тоже мучается, а то и ещё раньше решил и подскажет лучший вариант.
    В статью такое не выливается, а иногда важная деталь например:
  • Программирование :: С/С++ :: ANSI С/С++
  • Не знает ли  кто-нибудь, толковой документации по STL, где было бы чётко написано какие методы должен содержать класс, который мы используем для шаблона.

    Например, у нас есть структура, я хочу запихнуть её в список.
    Код:
    enum Gender {male, female};
    struct Member {string name, Gender gender, int age};

    list <Member> members;

    При компиляции происходят ошибки. Как я понял, потому что в Member должны наличествовать некоторые операторы, в частности *, <, ==...

    Вот и хочется узнать, что нужно конкретно для каждого из контейнеров STL.
  • Вопрос такой: тип параметров некой функции может со временем поменяться, поэтому: как указать компилятору, чтобы он не делал неявных приведений типов аргументов при вызове этой функции, то есть чтобы ругань происходила даже если пытаемся переменную типа short  передать в агрумент типа int ?

    По всему коду это не требуется, а только для  конкретной одной функции, для контроля
  • Программирование :: С/С++ :: WinAPI & Visual C++
  • Добрый день.

    Пытаюсь из VC6.0 отсортировать диапазон данных на странице Excel:

    Код:
    //....

    using namespace Excel;
    CoInitialize(NULL);

    _ApplicationPtr pXL;

    pXL.CreateInstance(L"Excel.Application");

    WorkbooksPtr pBooks = pXL->GetWorkbooks();
    _WorkbookPtr pBook  = pBooks->Open((_bstr_t)filename,vtMissing,VARIANT_FALSE);
    WorksheetsPtr pSheets = pBook->GetSheets();
    _WorksheetPtr pSheet = pSheets->GetItem((long)1);
             
    pSheet->Activate();


    RangePtr pRangeSort;
    LPDISPATCH lpdisp;
    _variant_t var[3];

    lpdisp = pSheet->GetRange((_bstr_t)"C3",(_bstr_t)"C10");
    var[0].vt = VT_DISPATCH;
    var[0].pdispVal = lpdisp;

    lpdisp = pSheet->GetRange((_bstr_t)"D3",(_bstr_t)"D10");
    var[1].vt = VT_DISPATCH;
    var[1].pdispVal = lpdisp;

    lpdisp = pSheet->GetRange((_bstr_t)"A3",(_bstr_t)"A10");
    var[2].vt = VT_DISPATCH;
    var[2].pdispVal = lpdisp;

    pRangeSort = pSheet->GetRange((_bstr_t)"A3",(_bstr_t)"D10");
    pRangeSort->Select();

    pRangeSort->Sort(var[0], xlAscending,
              var[1], vtMissing, xlAscending,
    var[2], xlAscending,
    xlNo,
    (long)1,
    VARIANT_FALSE,
    xlSortColumns,
    xlPinYin,
    xlSortNormal,
    xlSortNormal,
    xlSortTextAsNumbers);

    //.....

    Вызов метода Sort некорректен, но причину понять не могу.
    (Под дебагером на этой строке выскакивает эксепшн: (OLEAUT32.DLL):OxC0000005: Access Violation)

    Может быть кто-нибудь делал похожее (задачка то тривиальная), ну или просто видит ясным взглядом, где я лопухнулся... подскажите пожалуйста)
  • Создаю файл с флагом FILE_FLAG_DELETE_ON_CLOSE, то есть файл должен удалиться системой, как только будут освобождены все хендлы этого файла.

    Затем, запускаю некий процесс, указав данный файл в параметрах командной строки. Процесс запускается, открывает файл, работает с ним.

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

    Для наглядности приведу последовательность действий
    Код:
    HANDLE f=CreateFile("file.txt",...... FILE_FLAG_DELETE_ON_CLOSE.....);

    CreateProcess(...,"programm.exe \"file.txt\"",.....);

    //тут нужно как-то узнать, открыл ли процесс файл

    //дождались, теперь можно закрыть первый хендл файла
    CloseHandle(f);
  • Здравствуйте!
    Написал программу для расчета числа пи методом Монте-карло. Чтобы получить достоверное значение, нужно выполнить некоторый алгоритм n-е число раз. Вкратце, алгоритм такой: генерируем случайное число заданном в диапазоне и проверяем его на вхождение в некоторую область, если число "входит", увеличиваем счетчик вхождений на 1. Эти операции в моей программе повторяются 250 млн. раз (чем больше, тем точнее результат). Решил "помочь" процессору, создав поток, выполняющий те же самые операции
    Вот сам алгоритм:
    Код:
    // passes - кол-во просчетов алгоритма ( == 250 млн.)
    // kv_count - число текущих просчетов
    // kr_count - число "подходящих точек"
    while(kv_count < passes)
    {
    // генерируем случайные координаты в пределах квадрата
    x = rand() % radius;
    y = rand() % radius;

    // увеличиваем число обработанных точек
    InterlockedExchangeAdd(&kv_count, 1);

    // проверяем точку на вхождение в круг
    if((x * x + y * y) <= radius * radius)
    // если точка подходит, увеличиваем число вхождений на 1.
    InterlockedExchangeAdd(&kr_count, 1);

    }

    Расчет алгоритма 250 млн. раз на моем компьютере занимает примерно 35 сек.
    Теперь сама проблема: после просчета я обьявляю переменную r2 и присваиваю ей значение r2 = radius * radius, но в самом цикле не использую. Запускаю - теперь расчет занимает 50 секунд. Пробую закомментировать строку r2 = radius * radius, получаю снова 30 сек. Не понимаю, в чем проблема  :dontknow: 99 % процессорного времени занимает прогон цикла, в котором перменная r2 даже не используется...
    Кто знает,прошу помощи  :)
  • Программирование :: Программирование 1С :: 1С 8.x
  • Всем здравствуйте!
    Продолжаю изучение данной системы.
    Если вопрос глупый просьба особо не ругать.  ;)

    "Управление торговлей" платформа 1С 8.1 редакция 2.0

    Потребовалось создать , как мне кажется, простейший отчёт.

    Дата_прихода | Кол-во Цена | Сумма | Дата_продажи| Кол-во| Цена| Сумма

    Данные по всем столбцам выводятся без проблем, но вот с ценой ничего не получается. Причём даже не понятно, что за цену он отображает в отчёте.

    Если нужно что-то пояснит, то жду вопросов, если и так понятна проблема, то жду помощи.
    Всем спасибо.

    P.S. Сейчас начал читать книжку Е.Ю. Хрусталёв "Разработка сложных отчётов в 1С:Предприятии 8". Что можете сказать по данной книжке, т.е. мнение нормальная книжка? Спасибо.

  • Здравствуйте. Передо мной стоит такая задача: нужно создать обработку, которая программно заполняла бы в документе Расходная накладная 5 субконто (Договор, контрагент, отгрузка - ссылка на саму расходную накладную, заказы, номер заказа). При этом в расходной накладной должно заполнятЬся около 10 строк (товар, количество и сумма). Также нужно с помощью обработки программно создавать контрагентов (контрагент1, контрагент2,..., договор(n)), договора (договор1, договор2,...,договор(n)) и сам товар (товар1, товар2,... ,товар(n)). При этом при всём нужно раскидать документы в течениЕ года.
    Честно говоря, когда мне сказали задание, у меня глаза на лоб закатились О_о

    Как я понимаю, для того, чтобы это всё работало, нужно делать через цикл, причём не один.
    Один цикл на заполнение самой расходной накладной.
    Второй - на создание контрагентов.
    Третий - на создание договоров.
    Четвёртый - на создание товаров.
    Пятый - на заполнение строк с товарами в расходной накладной.
    Шестой - на распределение документов в течениЕ года.

    Платформа 1С Предприятие 8.2

    Я на правильном пути?
  • Операционные системы :: Unix и другие :: Linux
  • MPD (демон медиаплеер)
    все по инструкциям, ошибок при установке, при запуске нету.

    Цитировать
    bind_to_address                 "127.0.0.1"
    port                            "6600"
    это адрес и порт управления плеером.

    MPC - утилита управления демоном

    запускаю
    пишет
    Цитировать
    MPD_HOST and/or MPD_PORT environment variables are not set
    error: problems getting a response from "localhost" on port 6600 : Connection refused
    захожу

    Цитировать
    # telnet localhost 6600
    Trying 127.0.0.1...
    Connected to localhost.
    Escape character is '^]'.
    OK MPD 0.13.0
    Отвечает
     Пока писал подумал, а может не в этом проблема....


    icecast
    Так как он установлен, то решаю запустить второй экземпляр
    создаю новый файл конфигурации
    указываю адрес, порт
    запускаю

    Извне вижу страничку icecast
    Но почему-то не подключается к mpd к icecаst







  • Направления программирования :: Drivers
  • Есть задача определить по имени процесса его ProсessID (конкретно для csrss.exe), как я понимаю, нужно получить список всех процессов в системе и уже там искать. Вроде как должно быть всё просто, но для ядра не нашёл функций вроде NtQuerySystemInformation(). Может кто подскажет?
  •        У меня есть вопросы по UNIОРС - может посоветуете как выкрутится...
    Вопрос состоит в том чтобы сделать драйвер для устройства RS232 (Контроллер WE2108) .
    Есть пример но в нем не ясно ОРС берет функции передачи в порт на себя или нужно все формировать :confused:.
     Коротко драйвера еще не делал.
     Все очень туго...
     И еще придется потом расширяться до 11 устройств (конвертеры в RS485) :shock:
     
     - Помогите пожалуйста  :yes:

  • Направления программирования :: Web :: Серверные скрипты
  • Привет всем.
    Для одной фирмы пишу клиент-серверную прграмму, которая  должна шпионить за сотрудниками в плане интернет-серфинга. В качестве серверной части выбрал PHP-скрипты. Но из-за отсутствия опыта в PHP-скриптах обращаюсь к знатокам.
    Клиент передает данные серверу посредством Get-запроса серверному скрипту:
    Код:
    <?php
    $cn 
    $HTTP_GET_VARS['clientname'];
    $ng $HTTP_GET_VARS['title'];
    $cd $HTTP_GET_VARS['url'];

    if(!(
    $fp fopen("data.txt""a")))
    return;

    $s "<p>" "Client Name = " $cn "</p>\n";
    fwrite($fp$s);
    $s "<p>" "Title = " $ng "</p>\n";
    fwrite($fp$s);
    $s "<p>" "URL = " $cd "</p><br>\n";
    fwrite($fp$s);

    fclose($fp);
    ?>

    Админ получает данные в броузере в бесконечном цикле посредством следующего скрипта:
    Код:
    <html>
    <head>
    <title>Test</title>
    </head>
    <body>
    <h1>Test</h1>
    <?php
    if($fp fopen("data.txt""r"))
    {
       
    fseek($fp, -500SEEK_END);
       
    $buffer fread($fp1000);
       if(
    $buffer)
       print(
    $buffer."\n");
       
    fclose($fp);
    }
    sleep(1);
    ?>


    <script language="JavaScript">
    window.navigate(document.URL);
    </script>
    </body>
    </html>
    Минут через 30 работы сервер выдает ошибку 500. В чем может быть проблема?
    Сервер Apach на Linux.
  • Практические разделы :: Базы данных
  • Ошибка возникает в работающем проекте когда в существующую таблицу добавляется поле (на сервере), после этого в акцесе из формы - источником которой является эта таблица можно только просмотреть данные, при изменении пишет что во время просмотра данные заблокировал другой пользователь хотите сохранить изменения и вернутся позже. В менеджере таблиц при попытке обновить таблицы выскакивает ошибка ODBC драйвера (как название темы дословно без всяких кодов). Иногда (в прошлые разы) ошибка эта лечилась перелинкованием таблицы, но в этот раз почему то не работает.
    Таблицы находятся на sql2000 клиентская часть в access2007, знаю что данная ошибка возникает и при работе access2003 + sql.
  • Практические разделы :: Безопасность PC
  • Вот роюсь, и не могу найти сабж для MS Essential и китаёзной Rising.

    Помогите/подскажите, мне очень срочно надо со всем этим разобраться  :mad:

    А вот для каспера и нода32 всё прямо в справке у них и написано было. Красота )

А теперь прощаемся с Вами до следующего выпуска.


С уважением, команда Клуба.


В избранное