J'ai trouvé cette parabole des aveugles extrêmement intéressante à propos de la vérité...
La parabole des aveugles et de l'éléphant
Recherche par Arduinna
Il y avait jadis un roi nommé Face de Miroir, qui réunit une fois des aveugles de naissance et leur dis: " Ô aveugles de naissance, connaissez-vous les éléphants?" Il répondirent;" Ô grand roi, nous ne les connaissons pas, nous n'en avons aucune notion." Le roi leur dit encore:" Désirez-vous connaître leur forme?"-Nous désirons certes la connaître." Aussiôt, le roi ordonna à ses serviteurs
d'amener un éléphant et aux aveugles de toucher eux-mêmes l'animal avec leurs mains. Parmis ceux-ci, certains en tâtant l'éléphant, prirent la trompe et le roi leur dit:" Ceci est l'éléphant." Les autres, en tâtant l'éléphant, saisirent soit l'oreille, soit les défense, soit la tête, soit le dos, soit le flanc, soit la cuisse, soit la queue etc..
À tous, le roi dit: "Ceci est l'éléphant." Alors le roi Face de Miroir fit écarter l'éléphant et demanda aux aveugles:" De quelle nature est l'éléphant?" Les aveugles qui avaient prit la trompe dirent:"L'éléphant est semblable à un timon courbé." Ceux qui avaient pris l'oreil dirent:" L'éléphant est semblable à un van." Ceux qui avaient pris une défense dirent:" L'éléphant est semblable à un pilon." Ceux qui avaient pris la tête dirent:" L'éléphant est semblable à un chaudron." Ceux qui avaient pris le dos dirent:" L'éléphant est semblable à un monticule." Ceux qui avaient pris le flanc dirent:" L'éléphant est semblable à un mur." Ceux qui avaient pris la cuisse dirent:" L'éléphant est semblable à un arbre." Ceux qui avaient pris la queue dirent:" L'éléphant est semblable à une corde." Ils s'accusèrent tous mutuellement d'avoir tort. Les uns disaient:" C'est ainsi." Les autres répliquaient:" Non, ce n'est pas ainsi." Au lieu de s'apaiser, leur discussion devint une querelle. Quand le roi vit cela, il ne put s'empêcher de rire, puis il prononça cette stance: "Les aveugles ici réunis se disputent et se querellent. Le corps de l'éléphant est naturellement unique, ce sont les perceptions différentes qui on produit ces erreurs divergentes."
Le Bouddha dit:" Ô moines, il en est de même des doctrines diverses des hétérodoxes. Ils ne connaissent ni la vérité de la douleur, ni la vérité de l'origine, ni la vérité de la cessation, ni la vérité de la Voie. Chacun d'eux produit une opinion différente de celles des autres et ils se critiquent mutuellement. Chacun prétend avoir raison et cela fait naître les disputes et les querelles.
Sometimes I want to have control over a SQL Server database, but always some connection blocks.
We can use this
USE MASTER;
ALTER DATABASE MyDatabase SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
BUT, sometime, we cannot do it! Well, we have this solution...
SET NOCOUNT ON;
DECLARE @ToKill AS NVARCHAR(max);
SET @ToKill = '';
--SELECT @toKill = @ToKill + 'kill ' + cast(spid AS NVARCHAR(10)) + ';'
SELECT @toKill = @ToKill + 'begin try kill ' + cast(spid AS NVARCHAR(10)) + '; print ''Ok to kill : ' + cast(spid AS NVARCHAR(10)) + '''; end try begin catch print ''Fail to kill : ' + cast(spid AS NVARCHAR(10)) + '''; end catch;'
FROM master..sysprocesses WHERE
spid <> @@spid -- Not my self
AND dbid = DB_ID(db_name()) -- only my database
--print @tokill;
EXEC (@tokill);
Solution without "DECLARE", it's useful when many times you need to kill connections.
exec('PRINT ''Kill connection of database: '' + db_name();DECLARE @kill AS NVARCHAR (MAX);SET @kill = '''';SELECT @kill = @kill + ''begin try kill '' + CAST (spid AS NVARCHAR (10)) + ''; print ''''Kill spid: '' + CAST (spid AS NVARCHAR (10)) + '' ('' + RTRIM(ISNULL(hostname, ''*NULL*'')) + ''|'' + RTRIM(ISNULL(nt_username, ''*NULL*'')) + '')'''' ; end try begin catch print ''''Fail to kill : '' + CAST (spid AS NVARCHAR (10)) + ''''''; end catch;'' FROM master..sysprocesses WHERE dbid = DB_ID(db_name()) AND spid <> @@spid AND hostprocess <> '''';PRINT (@kill);');
Chaque fois que je dois créer une application du type console, c'est le même problème.
Alors, je publie la version que je vais utiliser sur toutes mes applications.
Effet, j'ai analysé plusieurs solutions, et détails techniques de chaque solution et j'ai fini pour choisir une solution publiée sur CodeProject.
Ma version de la solution est normalisée selon le standard du Reshaper, et il y a un *petit* changement de l'expression régulier.
using System;
namespace MyConsoleApplication
{
class Program
{
#region Private Static Methods
private static void HowToUse()
{
Console.WriteLine("--------------------");
Console.WriteLine("Syntax : ");
Console.WriteLine("");
Console.WriteLine("MyConsoleApplication /myparam1=value1 /myparamBool /mypar2 /myvalueX=C:\\temp\\");
Console.WriteLine("");
Console.WriteLine("--------------------");
}
static void Main(string[] args)
{
Arguments commandLine;
commandLine = new Arguments(args);
//commandLine line : /myparam1=TestValue1 /myparamBool
if (commandLine["myparam1"].HasValue)
{
Console.WriteLine(commandLine["myparam1"].Value);
}
Console.WriteLine(commandLine["myparamBool"].ValueBool ? "has parameter" : "no parameter");
ShowArguments(commandLine);
WaitConfirmation();
}
private static void ShowArguments(Arguments commandLine)
{
const string message = @"::
:: Parameters :
::";
Console.WriteLine(message);
if (commandLine.Parameters.Count == 0)
{
Console.WriteLine("** No parameters **");
HowToUse();
}
foreach (var c in commandLine.Parameters)
{
Console.WriteLine(" " + (c.HasValue ? string.Format("/{0}={1}", c.Name, c.Value) : string.Format("/{0}", c.Name)));
}
Console.WriteLine("");
}
private static void WaitConfirmation()
{
Console.WriteLine("\r\nPress a key to continue: ");
ConsoleKeyInfo cki = Console.ReadKey(true);
}
#endregion Private Static Methods
}
}
Link de la solution:
http://www.codeproject.com/Articles/3111/C-NET-Command-Line-Arguments-Parser
USE msdb;
GO
EXEC sp_configure 'Database Mail XPs'
GO
RECONFIGURE
GO
EXEC sp_configure 'Database Mail XPs', 1
GO
RECONFIGURE
GO
EXEC sp_configure 'Database Mail XPs'
GO
To configure database mail
USE msdb
GO
DECLARE @ProfileName VARCHAR(255)
DECLARE @AccountName VARCHAR(255)
DECLARE @SMTPAddress VARCHAR(255)
DECLARE @EmailAddress VARCHAR(128)
DECLARE @DisplayUser VARCHAR(128)
SET @ProfileName = 'DBMailProfile';
SET @AccountName = 'DBMailAccount';
SET @SMTPAddress = 'smtp.server.com';
SET @EmailAddress = 'myemail@email.com';
SET @DisplayUser = 'Myname Noname';
EXECUTE msdb.dbo.sysmail_add_account_sp @account_name = @AccountName, @email_address = @EmailAddress, @display_name = @DisplayUser, @mailserver_name = @SMTPAddress
EXECUTE msdb.dbo.sysmail_add_profile_sp @profile_name = @ProfileName
EXECUTE msdb.dbo.sysmail_add_profileaccount_sp @profile_name = @ProfileName, @account_name = @AccountName, @sequence_number = 1;
--Now that everything is setup, I will send a test e-mail.
EXEC msdb.dbo.sp_send_dbmail @recipients = N'myemail@email.com', @body = 'Test Email Body', @subject = 'Test Email Subject from SQL', @profile_name = 'DBMailProfile'
Vérifier s’il est la première fois que l’on appelle une page : IsPostBack
Créer ou recréer de contrôles dynamiques;
Configurer la page « Master »;
Configurer le thème dynamiquement;
Lire et écrire des values de propriétés;
S’il est un « PostBack »
Vérifier les valeurs des contrôles avant le « restore » du « ViewState »;
Récrire des valeurs de propriétés;
Init
L’événement qui est déclenché en premier;
Événement est utilisé pour initialiser les propriétés du contrôle;
IniComplete
Les changements faits sur le « ViewState » sont persistés après le prochain « PostBack »;
PreLoad
L’événement qui fait le traitement du « PostBack » et aussi du « Request ».
Load
Cet événement appelle la méthode « OnLoad »;
L’événement « Load » de la page est déclenché avant des contrôles individuels;
ControlEvents
Cet événement est utilisé avec des spécifiques évents de contrôles comme « Button » avec l’événement « Click », ou le contrôle « TextBox »avec l’événement « TextChanged »;
Dans le cas d’un « PostBack », et si la page contient validation de contrôles, le « Page.IsValid » et les validations de chaque contrôle sont déclenchés;
LoadComplete
Cet événement est déclenché après tout « PostBack »and « View-State » sont chargés, et après la méthode « OnLoad » des tous les contrôles ont été déclenchés;
PreRender
Cet événement est pour effectuer des changements sur un contrôle avant qu’il soit sur la page, mais ces modifications ne sont pas sauvegardées. On peut l’utiliser pour associer un « DataSourceId » à un « DataBind »;
PreRenderComplete
Cet événement est déclenché après l’événement « PreRender » est fini;
SaveStateComplete
Cet événement est déclenché après le « View-State » a été sauvegardé de tous les contrôles et la page;
Tout le changement ne sont plus sauvegardé;
RenderComplete
C’est le dernier événement déclenché avant d’affichage de la page;
Unload
Cet événement est déclenché quand le contrôle est déchargé de la mémoire;
Il est utilisé pour finaliser des connexions, fermer des fichiers, effacer de données temporaires.