понедельник, 19 ноября 2012 г.

C# - WebRequest class

using System;using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Collections;
using System.IO;

namespace BlankTimeLine.Framework.Core

{

class ServerRequest

{

HttpWebResponse response = null;
HttpWebRequest req;

Hashtable htResponse;

public ServerRequest()
{
htResponse = new Hashtable();
}

public void SendCommand(Hashtable htHttpRequestParams)
{
req = (HttpWebRequest)HttpWebRequest.Create("http://localhost/" + htHttpRequestParams["script"].ToString());
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";

byte[] sentBytes = null;
string sendParams = "";

foreach(DictionaryEntry entry in htHttpRequestParams)
{
sendParams += entry.Key + "=" + entry.Value + "&";
}

// System.Windows.Forms.MessageBox.Show(sendParams);

sentBytes = Encoding.UTF8.GetBytes(sendParams);
req.ContentLength = sentBytes.Length;
Stream newStream = req.GetRequestStream();
newStream.Write(sentBytes, 0, sentBytes.Length);
newStream.Close();

try
{
response = (HttpWebResponse)req.GetResponse();
}
catch (Exception ex)
{
System.Windows.Forms.MessageBox.Show(ex.Message, "Исключение:");
}
}
public Stream GetResponseStream()
{
return response.GetResponseStream();
}
}
}

C# - Дополнительные поля в WinForms

1. Задаем дополнительные поля в WinForms:

using System.Collections;
...

Form frmInterface = new Form();

Hashtable frmProps = new Hashtable();
frmProps["prop1"] = "Property 1";
frmProps["prop2"] = "Property 2";
...
frmProps["propN"] = "Property N";

frmInterface.Tag = frmProps;



2. Считываем заданные поля:

string prop1 = (frmInterface.Tag as Hashtable)["prop1"].ToString();
string prop2 = (frmInterface.Tag as Hashtable)["prop2"].ToString();
...
string propN = (frmInterface.Tag as Hashtable)["propN"].ToString();
...

RTF - Rich Text Format

1. RTF-Фрагменты.

1.1. Поле для отправки почты:

{\field{\*\fldinst{HYPERLINK "mailto:((E-mail))\par
"}}{\fldrslt{\pard\cf1\ul mailto:((E-mail))\cf0\ulnone\v
}}}}

2. Спецификация RTF 1.9.


Спецификация RTF 1.9


3. Пример создания формы акта вручную.


rtf_handjob_example.zip

пятница, 16 ноября 2012 г.

Windows 7 + Apache + PHP 5.3 + Firebird

Порядок установки:

1. Устанавливаем Apache 2.2 + PHP 5.3;
2. Устанавливаем Firebird 2.5;
3. Скачиваем IBExpert (не обязательно);
4. php.ini -> "
extension=php_interbase.dll"
5. Копируем php.ini в c:\windows;
6. Копируем 3 файла из прилагаемого архива в PHP 5.3\extensions;
7. Копируем 3 файла из прилагаемого архива в c:\Windows\system32;
8. Перезапускаем Apache.

Скачать php_interbase.dll, fbclient.dll, gds32.dll


9. Создаем базу данных *.fdb, в ней создаем таблицу about с одним полем, в это поле пишем любое (ые) значение (я);
10. Тестируем соединение с базой данных:

<?php
    $link = ibase_connect("c:/test.fdb", "SYSDBA", "masterkey");
    $res = ibase_query($link, "select * from about");

    while ($row = ibase_fetch_row($res)) {
        echo $row[0];
    }

    ibase_free_result($res);
    ibase_close();
?>

C# + Oracle

Задача:

Подключение к удаленной БД Oracle средствами .NET C#.


Теоретический экскурс:

Для подключения к удаленной БД Oracle, на ПК, с которого планируется производить подключение должны быть установлены компоненты Oracle.


Исходные данные:

1. Среда разработки: Microsoft Visual C# 2008 Express;
2. На компьютере, с которого планируется работа с удаленной БД установлено Oracle Client 11g (ODTwithODAC1120320_32bit.zip 229 MB, качаем с http://www.oracle.com/technetwork/topics/dotnet/utilsoft-086879.html);
3. Сервер БД - Oracle 9i Release 9.2.0.4.0.


Порядок выполнения работы:

1. Создаем проект "Project1";
~
2. Добавляем к проекту Reference (Project > Add Reference... > Browse > "c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Data.OracleClient.dll");
~
3. В проекте Project1 создаем каталог 'Framework', в нем создаем класс 'OracleConnector' следующего содержания:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.OracleClient;
using System.Windows.Forms;
using System.Data;
namespace Project1.Framework
{
    public class OracleConnector
    {
        string oraConnectionStr = "";

        OracleConnection oraConnection;
        OracleCommand oraCmd;
        OracleDataReader oraReader;

        public string errorMessage = "";

        string username = "";

        // Устанавливаем соединение с БД, результат пишем в лог.
        public OracleConnector()
        {
            oraConnection = new OracleConnection(oraConnectionStr);
        }

        // Выполняем запрос к базе данных и возвращаем DataTable
        public DataTable ExecQuery(string query)
        {
            DataTable table = new DataTable();

            oraCmd = new OracleCommand(query, oraConnection);

            try
            {
                oraReader = oraCmd.ExecuteReader();
                table.Load(oraReader);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

            return table;
        }

        public bool doConnect(string server, string username, string password)
        {
            this.username = username;

            oraConnectionStr = "Data Source = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = " + server + ")(PORT = 1521))) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME= orcl))); User Id=" + username + ";Password=" + password + ";";

            try
            {
                oraConnection.ConnectionString = oraConnectionStr;
                oraConnection.Open();
            }
            catch (Exception ex)
            {
                errorMessage = ex.Message;
                return false;
            }

            return true;
        }
    }

}
~
4. Прописываем в код формы namespace, и создаем объект для работы с удаленной БД:
...
// Подключаем namespace.
using Project1.Framework;
...
// объект для работы с удаленной БД.
OracleConnector oraConnector
...
~
5. На форму добавляем компонент DataGridView (имя dgv1) и Button (имя btnDo). Для кнопки btnDo создаем обработчик:
...

private void btnDo_Click(object sender, EventArgs e)
{
      oraConnector = new OracleConnector();
      if (!oraConnector.doConnect("sr-dbserver", "username", "pwd"))
      {
            MessageBox.Show(oraConnector.errorMessage);
            return;

      }

      DataTable dTable = new DataTable();


      dTable = new DataTable();

      dTable = this.oraConnector.ExecQuery("select * from table1");

      dgv1.DataSource = dTable;
      dgv1.Update();

}

...

Docker. Первые контейнеры

Источник:  php.dragomano.ru Структура каталогов: ~/develop/web/project/                  nginx/      - сервис web-сервера                php...