понедельник, 8 июня 2009 г.

.NET: Отладка приложений / сервисов

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


C#:
if (!Debugger.IsAttached) Debugger.Break();
* This source code was highlighted with Source Code Highlighter.

VB.NET:
If Not Debugger.IsAttached Then
  Debugger.Break()
End If

* This source code was highlighted with Source Code Highlighter.

среда, 3 июня 2009 г.

ORACLE: Перемещение таблиц и индексов пользователя в другой tablespace

собственно ответ на вопросы:
How to move LOB data to another tablespace?
How to move user tables to a different tablespace?
How to move user indexes to a different tablespace?

скрипт пока не умеет перемещать индекс-таблицы и секционированные таблицы.

  1. DECLARE
  2.   table_ts_name  VARCHAR2 (30) := 'USER_DATA'; –- табличное пространство для перемещения таблиц
  3.   index_ts_name  VARCHAR2 (30) := 'USER_INDEX'; –- табличное пространство для перемещения индексов
  4.   varUser VARCHAR2(30) := 'HR'; – схема объекты которой необходимо переместить
  5. BEGIN
  6.   FOR obj
  7.   IN ( -- перемещение таблиц содержащих поля LOB типов
  8.     SELECT 'alter table '||owner||'.'|| table_name||' move lob('|| column_name 
  9.         ||') store as (tablespace '|| table_ts_name move_sql
  10.      FROM  dba_tab_cols
  11.     WHERE  owner=varUser and data_type='%LOB'
  12.     UNION ALL
  13.     -- перемещение остальных таблиц   
  14.     SELECT 'alter table '||t1.owner|| '.'||t1.object_name||' move tablespace '||table_ts_name move_sql
  15.      FROM all_objects t1
  16.     WHERE t1.owner=varUser
  17.        AND t1.object_type = 'TABLE'
  18.        AND t1.temporary = 'N'
  19.        AND NOT EXISTS (
  20.                 SELECT 1 from dba_tab_cols t2
  21.                 where t1.owner = t2.owner
  22.                 AND t1.object_name = t2.table_name
  23.                 AND t2.data_type = 'LONG'
  24.                 AND t2.data_type = 'LONG RAW')
  25.     UNION ALL
  26.     -- перемещение и ребилд индексов, за исключением IOT индексов
  27.     SELECT 'alter index '||owner||'.'|| index_name|| ' rebuild tablespace '|| index_ts_name move_sql
  28.      FROM  all_indexes
  29.     WHERE  owner=varUser AND index_type <> 'IOT - TOP')
  30.   LOOP
  31.   dbms_output.put_line(obj.move_sql);
  32.    EXECUTE IMMEDIATE obj.move_sql;
  33.   END LOOP;
  34. END;
* This source code was highlighted with Source Code Highlighter.

понедельник, 1 июня 2009 г.

DateTime.ToString и "/" подстава

задолбался
      DateTime dt = DateTime.Now;
      Trace.WriteLine("ToString() - " + dt.ToString());
      Trace.WriteLine("dd/MM/yyyy HH:mm - " + dt.ToString("dd/MM/yyyy HH:mm"));
      Trace.WriteLine("dd[MM[yyyy HH^mm - " + dt.ToString("dd[MM[yyyy HH^mm"));
      Trace.WriteLine(@"dd\/MM\/yyyy HH:mm - " + dt.ToString(@"dd\/MM\/yyyy HH:mm"));
      Trace.WriteLine("System.Globalization.DateTimeFormatInfo.CurrentInfo.DateSeparator - " +
        System.Globalization.DateTimeFormatInfo.CurrentInfo.DateSeparator);


* This source code was highlighted with Source Code Highlighter.


Output:
ToString() - 01.06.2009 15:44:54
dd/MM/yyyy HH:mm - 01.06.2009 15:44
dd[MM[yyyy HH^mm - 01[06[2009 15^44
dd\/MM\/yyyy HH:mm - 01/06/2009 15:44
System.Globalization.DateTimeFormatInfo.CurrentInfo.DateSeparator - .

Спрашивается чем слеш(/) неугодил?