Ответы пользователя Sergey - CodeHelper

Sergey

Sergey
Карма 2841
Имя Sergey
Возраст Неизвестно
Сайт Неизвестно
Twitter Неизвестно
Участвует в проекте 1110 дн., 23 час., 43 мин.
Последняя активность 513 дн., 22 час., 2 мин. назад
О себе ничего не указано

Ответы

Новые Лучшие
1
...
5
6
7
8
9
...
14
Перейти к вопросу →

Можно использовать в меппинге конструкцию:

<join table="second_table">
     <key column="ref_first_table_id"/>
     <property name="PropertyName" column="second_id" update="false"/>
</join>

Параметр update="false" используется для того, чтобы при изменениях сущности таблица меппинга не апдейтилась.

Перейти к вопросу →

Назначить событию onclick ячейки:

function cancelClick(event) {
    event = event || window.event;  // cross browser          
    event.cancelBubble = true;      // Internet Explorer:
    if (event.stopPropagation) {
        event.stopPropagation()     // W3C:          
    }
}
Перейти к вопросу →

1 В настройках web.config добавить

<authentication mode="Windows"/>
<identity impersonate="true" />

2 В настройках IIS: "встроенная проверка Windows" анонимный доступ отключён.

3 Смена прав для Application Pool на Local System дала возможность использовать Active Directory.

4 Internet Explorer автоматически использует NTML аутентификацию только для сайтов из зон Trusted Sites и Local Intranet. Скорее всего компьютер на котором запущеен IIS не воспринимается как входящий в одну из этих зон (посмотри что пишется справа в строке статуса). Тебе должно помочь ручное добавление сайта в Local Intranet.

Перейти к вопросу →

Вот тут неплохая статья для старта с log4net: Использование log4net, Ежедневные логи на log4net

Перейти к вопросу →

Нужно применить стиль

textarea
{
    resize: none;
}

Cвойство resize относиться к CSS3, к счастью Safari и Chrome поддерживают его, но возникнут проблемы с валидации на CSS2.1

Перейти к вопросу →

Уже забыл php) Но думаю, если ничего нового не изобрели, то как-то так:

if (isset($_POST) and $_SERVER["REQUEST_METHOD"]=="POST"){

}

Перейти к вопросу →

Пример переноса базы детачем на 2005-м и аттачем на 2008-м.

--На 2005-м:
use tempdb
alter database AdventureWorks_2005 set read_only with rollback immediate

exec sp_detach_db @dbname = 'AdventureWorks_2005'

--Копируем файлы БД, иначе при аттаче их займет 2008-й и 2005-й не сможет их зацепить обратно.
--2008-й, кстати, их проапгрейдит автоматом, так что 2005-й обратно уже не примет.
exec sp_configure 'show advanced options', 1
reconfigure with override
exec sp_configure 'xp_cmdshell', 1
reconfigure with override
exec xp_cmdshell 'copy "C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\AdventureWorks2005_Data.mdf" "C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA"'
exec xp_cmdshell 'copy "C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\AdventureWorks2005_Log.ldf" "C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA"'

--На 2008-м:
use tempdb

if exists (select 1 from sys.databases where name = 'AdventureWorks_2005') begin
 alter database AdventureWorks_2005 set single_user with rollback immediate
 drop database AdventureWorks_2005
end 

create database AdventureWorks_2005 on primary 
(filename = 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\AdventureWorks2005_Data.mdf')
log on 
(filename = 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\AdventureWorks2005_Log.ldf')
for attach

--Или
exec sp_attach_db @dbname = 'AdventureWorks_2005', 
    @filename1 = 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\AdventureWorks2005_Data.mdf', 
    @filename2 = 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\AdventureWorks2005_Log.ldf'
--что является обсолитной конструкцией.

Пример переноса базы восстановлением на 2008-м резервной копии, сделанной на 2005-м.

--На 2005-м:
use tempdb
alter database AdventureWorks_2005 set read_only with rollback immediate

backup database AdventureWorks_2005 to disk = 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\AdventureWorks_2005.bak' 
with init, stats = 10, name = 'Полный бэкап', description = 'Для апгрейда на 2008'

--На 2008-м:
use tempdb

--Проверяем на фсякей содержание бэкапа
restore headeronly from disk = 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\AdventureWorks_2005.bak' 
restore filelistonly from disk = 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\AdventureWorks_2005.bak' with file = 1

--И восстанавливаемся из него
restore database AdventureWorks_2005 from disk = 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\AdventureWorks_2005.bak' 
with 
move 'AdventureWorks_Data' to 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\AdventureWorks_2005.mdf',
move 'AdventureWorks_Log'  to 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\AdventureWorks_2005.ldf',
recovery, stats = 10, replace

alter database AdventureWorks_2005 set read_write

use AdventureWorks_2005

--Перестройка индексов, апдейт статистики и перевод базы в режим поддержки новой версии
exec sp_MSforeachtable @command1 = "print '?'", @command2 = 'alter index all on ? rebuild with (online = on)'
exec sp_updatestats
alter database AdventureWorks_2005 set compatibility_level = 100

Полная версия

Перейти к вопросу →

Он и не установится из соображений безопасности. Один из вариантов решения данной проблемы:

UserPassword.Attributes.Add("value", "Password");

Второй вариант - сделать свой контрол на базе TextBox. Приблизительно таким образом:

public class TestBox : TextBox 
{
    protected override void AddAttributesToRender(HtmlTextWriter writer)
    {
        base.AddAttributesToRender(writer);
        if (this.TextMode == TextBoxMode.Password) 
        {
            writer.AddAttribute("value",this.Text);
        }
    }
}

Ну можно и javascript ом установить значение.

Перейти к вопросу →

Советую для удачного старта почитать блог Стива Ласкера, например про Privately Deploying SQL Server Compact with the ADO.NET Entity Provider

Перейти к вопросу →

И все же мне удалось решить проблему

Сначала код:

BinaryReader instr = new BinaryReader(File.OpenRead(path));
byte[] data = instr.ReadBytes((int)instr.BaseStream.Length);
instr.Close();

// определяем BOM (EF BB BF)
if (data.Length > 2 && data[0] == 0xef && data[1] == 0xbb && data[2] == 0xbf) {
    if (data.Length != 3) return Encoding.UTF8.GetString(data, 3, data.Length - 3);
    else return "";
}

int i = 0;
while (i < data.Length - 1) {
    if (data[i] > 0x7f) { // не ANSI-символ
        if ((data[i] >> 5) == 6) {
            if ((i > data.Length - 2) || ((data[i + 1] >> 6) != 2))
                return Encoding.GetEncoding(1251).GetString(data);
            i++;
        } else if ((data[i] >> 4) == 14) {
            if ((i > data.Length - 3) || ((data[i + 1] >> 6) != 2) || ((data[i + 2] >> 6) != 2))
                return Encoding.GetEncoding(1251).GetString(data);
            i += 2;
        } else if ((data[i] >> 3) == 30) {
            if ((i > data.Length - 4) || ((data[i + 1] >> 6) != 2) || ((data[i + 2] >> 6) != 2) || ((data[i + 3] >> 6) != 2))
                return Encoding.GetEncoding(1251).GetString(data);
            i += 3;
        } else {
            return Encoding.GetEncoding(1251).GetString(data);
        }
    }
    i++;
}

return Encoding.UTF8.GetString(data);

Теперь немного поясню: Сиволы в UTF-8 кодируются последовательностями длиной от 1 до 4 байт (октетов).

Вот в таком формате:

U+000000-U+00007F: 0xxxxxxx (ANSI)
U+000080-U+0007FF: 110xxxxx 10xxxxxx (сюда входит кириллица)
U+000800-U+00FFFF: 1110xxxx 10xxxxxx 10xxxxxx
U+010000-U+10FFFF: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

По маске первого октета определяется общее число октет в последовательности, а затем они проверяются на соответствие маске 10xxxxxx. Если какой-то байт не соответсвует маске, значит кодировка отличная от UTF-8 (в моем случае win1251).

Код, конечно, громоздкий, но для демонтрации самого алгоритма вполне достаточный

Источник


1
...
5
6
7
8
9
...
14
v1.7.123.556
© 2009—2010 CodeHelper FAQ | О сайте | Обратная связь | История изменений | Статьи
Creative Commons LicenseМатериалы сайта распространяются под лицензией Creative Commons Attribution-Share Alike 3.0 Unported.