public static string Capitalize(this string value)
{
if(string.IsNullOrEmpty(value)) return value;
if(value.Length == 1) return value.ToUpper();
return value.Substring(0, 1).ToUpper() + value.Substring(1).ToLower();
}
четвер, 30 грудня 2010 р.
Ext-method: Capitalize
середа, 8 грудня 2010 р.
CSS хаки
div {
background: red; /* для нормальных браузеров */
//background: green; /* для всех ie */
-background: blue; /* “_”, или дефис “-“ для ie6 и ниже */
*background: blue; /* для ie7 и ниже */
}
background: red; /* для нормальных браузеров */
//background: green; /* для всех ie */
-background: blue; /* “_”, или дефис “-“ для ie6 и ниже */
*background: blue; /* для ie7 и ниже */
}
середа, 1 грудня 2010 р.
вівторок, 30 листопада 2010 р.
Render user control to a string
Simple render:
Execute and render:
var c = LoadControl("uc.ascx");
using(var sw = new System.IO.StringWriter())
using(var tw = new HtmlTextWriter(sw))
{
c.RenderControl(tw);
Controls.Add(new LiteralControl(sw.ToString()));
}
Execute and render:
var c = LoadControl("uc.ascx");
var page = new Page();
page.Controls.Add(c);
using(var sw = new System.IO.StringWriter())
using(var tw = new HtmlTextWriter(sw))
{
Server.Execute(page, tw, false);
Controls.Add(new LiteralControl(sw.ToString()));
}
субота, 20 листопада 2010 р.
Add mime types with IIS7
<configuration>
<system.webServer>
<staticContent>
<mimeMap fileExtension=".mp4" mimeType="video/mp4" />
</staticContent>
</system.webServer>
</configuration>
середа, 17 листопада 2010 р.
.NET Round
Math.Round(3.5);//=4
Math.Round(4.5);//=4
Math.Round(3.5, MidpointRounding.AwayFromZero);//=4
Math.Round(4.5, MidpointRounding.AwayFromZero);//=5
середа, 10 листопада 2010 р.
Call webservice with basic auth
var srv = new SalersService();
srv.Credentials = new NetworkCredential("[user]", "[pass]");
...
Call webservice via proxy
var srv = new SalersService();
var proxy = new WebProxy("[url]", [port]);
proxy.Credentials = new NetworkCredential("[user]", "[pass]", "[domain]");
srv.Proxy = proxy;
...
понеділок, 1 листопада 2010 р.
Кириллица в куках
Можно использовать UrlEncode, UrlDecode:
var cookie = new HttpCookie("user", Server.UrlEncode(name));
...
var name = Server.UrlDecode(cookie.Value);
вівторок, 26 жовтня 2010 р.
пʼятниця, 15 жовтня 2010 р.
четвер, 14 жовтня 2010 р.
Write to appSettings
System.Configuration.Configuration config =
ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
config.AppSettings.Settings["LastMsgID"].Value = value.ToString();
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appSettings");
WPF & Thread.CurrentPrincipal
так неправильно:
System.Threading.Thread.CurrentPrincipal = [YourPrincipal];
так правильно:
AppDomain.CurrentDomain.SetThreadPrincipal([YourPrincipal]);
вівторок, 28 вересня 2010 р.
Select Top n Random Items
class Item
{
public string Name { get; set; }
}
...
var list = new List- {
new Item() { Name="Item1" },
new Item() { Name="Item2" },
new Item() { Name="Item3" },
new Item() { Name="Item4" },
new Item() { Name="Item5" },
};
Random rnd = new Random();
var items = from i in list
orderby rnd.Next()
select i;
var top = items.Take(3);
понеділок, 27 вересня 2010 р.
.NET 3.5 RSS Feed Handler
public void ProcessRequest(HttpContext context)
{
SyndicationFeed feed = GetNoveltiesFeed();
var output = new StringWriter();
var writer = new XmlTextWriter(output);
new Rss20FeedFormatter(feed).WriteTo(writer);
context.Response.ContentType = "application/rss+xml";
context.Response.Write(output.ToString());
}
четвер, 23 вересня 2010 р.
Получить top, left static-элемента
var div = $('#div1');
var top = Math.round(div.offset().top);
var left = Math.round(div.offset().left);
четвер, 9 вересня 2010 р.
Remove html-tags from string
var value = Regex.Replace(value, "<[^>]*?>", string.Empty, RegexOptions.IgnoreCase);
пʼятниця, 27 серпня 2010 р.
Метод для провірки телефона
public static bool IsPhone(this string phone)
{
return Regex.IsMatch(phone, @"^\+?[0-9\-() ]{5,19}$");
}
субота, 21 серпня 2010 р.
Custom css for IE 6
<!--[if lt IE 7]>
<link rel="stylesheet" type="text/css" href="ie6.css" />
<![endif]-->
вівторок, 27 липня 2010 р.
ExtJS grid wrap column
Добавляєм в наше апп метод:
потім використовуємо:
App.Globals.wrapRenderer = function(val) {
return '<div style="white-space:normal !important;">' + val + '</div>';
}
потім використовуємо:
...
{
header: "Описание",
dataIndex: "DESCRIPTION",
renderer: App.Globals.wrapRenderer,
width: 200
},
...
середа, 21 липня 2010 р.
ExtJS app errors handling
Для того щоб будь-які помилки від сервера виводились в спеціальному вікні
можна зробити override метода request:
можна зробити override метода request:
Ext.override(Ext.data.Connection, {
request: Ext.data.Connection.prototype.request.createSequence(function(o) {
if (!o.failure) {
o.failure = function(response) {
var msg = "Unknown server error";
var resp = Ext.decode(response.responseText);
if (resp && resp.Message) {
msg = resp.Message;
}
Ext.Msg.show({
title: "Server Error",
msg: msg,
minWidth: 300,
buttons: Ext.Msg.OK,
icon: Ext.Msg.ERROR
});
}
}
})
});
пʼятниця, 16 липня 2010 р.
MSSQL paging + sorting + filtering
CREATE PROCEDURE [TestTable_GetPagedAndSortedAndFiltered]
(
@startRowIndex int,
@maximumRows int,
@order nvarchar(50),
@ID int = null,
@Name nvarchar(50) = null,
@Size int = null,
@From datetime = null,
@To datetime = null
)
AS
BEGIN
declare @lastKey int
declare @lastAsc sql_variant
declare @lastDesc sql_variant
set rowcount @startRowIndex
select
@lastAsc = OrderAsc,
@lastDesc = OrderDesc,
@lastKey = OrderKey
from
(
select *,
ID as OrderKey,
case @order
when 'ID' then cast(ID as sql_variant)
when 'Name' then cast(Name as sql_variant)
when 'Size' then cast(Size as sql_variant)
when 'Created' then cast(Created as sql_variant)
else ID
END as OrderAsc,
case @order
when 'ID DESC' then cast(ID as sql_variant)
when 'Name DESC' then cast(Name as sql_variant)
when 'Size DESC' then cast(Size as sql_variant)
when 'Created DESC' then cast(Created as sql_variant)
END as OrderDesc
from TestTable
where
((@ID is null) or (@ID = ID))
and
((@Name is null) or (Name like @Name))
and
((@Size is null) or (@Size = Size))
and
((@From is null) or (@From < Created))
and
((@To is null) or (dateadd(day,1,@To) > Created))
) as T
order by OrderAsc,OrderDesc desc,OrderKey
set rowcount @maximumRows
select *
from
(
select *,
ID as OrderKey,
case @order
when 'ID' then cast(ID as sql_variant)
when 'Name' then cast(Name as sql_variant)
when 'Size' then cast(Size as sql_variant)
when 'Created' then cast(Created as sql_variant)
else ID
END as OrderAsc,
case @order
when 'ID DESC' then cast(ID as sql_variant)
when 'Name DESC' then cast(Name as sql_variant)
when 'Size DESC' then cast(Size as sql_variant)
when 'Created DESC' then cast(Created as sql_variant)
END as OrderDesc
from TestTable
where
((@ID is null) or (@ID = ID))
and
((@Name is null) or (Name like @Name))
and
((@Size is null) or (@Size = Size))
and
((@From is null) or (@From < Created))
and
((@To is null) or (dateadd(day,1,@To) > Created))
)as T
where
(
@lastAsc is null
and
@lastDesc is null
and
@lastKey is null
)
or
(
@lastAsc is not null
and
(
OrderAsc > @lastAsc
or
OrderAsc = @lastAsc
and
OrderKey >= @lastKey
)
)
or
(
@lastDesc is not null
and
(
OrderDesc < @lastDesc
or
OrderDesc = @lastDesc
and
OrderKey >= @lastKey
)
)
order by OrderAsc,OrderDesc desc,OrderKey
set rowcount 0
END
MSSQL sort and filter procedure
Припустимо в нас є табличка:
Для сортування і фільтрації по всіх полях можна використати процедуру:
CREATE TABLE [TestTable](
[ID] [int] PRIMARY KEY IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](50) NULL,
[Size] [int] NULL,
[Created] [datetime] NULL
)
Для сортування і фільтрації по всіх полях можна використати процедуру:
CREATE PROCEDURE [TestTable_GetPagedAndSorted]
(
@startRowIndex int,
@maximumRows int,
@order nvarchar(50)
)
AS
BEGIN
declare @lastKey int
declare @lastAsc sql_variant
declare @lastDesc sql_variant
set rowcount @startRowIndex
select
@lastAsc = OrderAsc,
@lastDesc = OrderDesc,
@lastKey = OrderKey
from
(
select *,
ID as OrderKey,
case @order
when 'ID' then cast(ID as sql_variant)
when 'Name' then cast(Name as sql_variant)
when 'Size' then cast(Size as sql_variant)
when 'Created' then cast(Created as sql_variant)
else ID
END as OrderAsc,
case @order
when 'ID DESC' then cast(ID as sql_variant)
when 'Name DESC' then cast(Name as sql_variant)
when 'Size DESC' then cast(Size as sql_variant)
when 'Created DESC' then cast(Created as sql_variant)
END as OrderDesc
from TestTable
) as T
order by OrderAsc,OrderDesc desc,OrderKey
set rowcount @maximumRows
select *
from
(
select *,
ID as OrderKey,
case @order
when 'ID' then cast(ID as sql_variant)
when 'Name' then cast(Name as sql_variant)
when 'Size' then cast(Size as sql_variant)
when 'Created' then cast(Created as sql_variant)
else ID
END as OrderAsc,
case @order
when 'ID DESC' then cast(ID as sql_variant)
when 'Name DESC' then cast(Name as sql_variant)
when 'Size DESC' then cast(Size as sql_variant)
when 'Created DESC' then cast(Created as sql_variant)
END as OrderDesc
from TestTable
)as T
where
(
@lastAsc is null
and
@lastDesc is null
and
@lastKey is null
)
or
(
@lastAsc is not null
and
(
OrderAsc > @lastAsc
or
OrderAsc = @lastAsc
and
OrderKey > @lastKey
)
)
or
(
@lastDesc is not null
and
(
OrderDesc < @lastDesc
or
OrderDesc = @lastDesc
and
OrderKey > @lastKey
)
)
order by OrderAsc,OrderDesc desc,OrderKey
set rowcount 0
END
MSSQL ORDER BY CASE
Припустимо в нас є табличка:
Сортувати її за значення певного параметра можна так:
CREATE TABLE [TestTable](
[ID] [int] PRIMARY KEY IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](50) NULL,
[Size] [int] NULL,
[Created] [datetime] NULL
)
Сортувати її за значення певного параметра можна так:
declare @order nvarchar(50)
set @order = 'Created DESC'
select *
from TestTable
order by
case @order
when 'ID' then cast(ID as sql_variant)
when 'Name' then cast(Name as sql_variant)
when 'Size' then cast(Size as sql_variant)
when 'Created' then cast(Created as sql_variant)
END,
case @order
when 'ID DESC' then cast(ID as sql_variant)
when 'Name DESC' then cast(Name as sql_variant)
when 'Size DESC' then cast(Size as sql_variant)
when 'Created DESC' then cast(Created as sql_variant)
END desc
субота, 10 липня 2010 р.
четвер, 8 липня 2010 р.
ExtJs store для json web-сервиса
Используя proxy из предыдущего поста, напишем и сохраним в файл
Ext.data.WsJsonStore.js следуючий код:
Потом, подключив оба файла, используем:
Ext.data.WsJsonStore.js следуючий код:
Ext.data.WsJsonStore = Ext.extend(Ext.data.JsonStore, {
constructor: function(c) {
var d = {
root: 'd',
proxy: new Ext.data.WsProxy({
url: c.url
})
}
Ext.data.WsJsonStore.superclass.constructor
.call(this, Ext.apply(d, c));
}
});
Потом, подключив оба файла, используем:
var store = new Ext.data.WsJsonStore({
url:'url',
fields: [fields],
...
});
ExtJs proxy для web-сервиса
В файл Ext.data.WsProxy.js сохраним такой код:
Потом, подключив его, используем:
Ext.data.WsProxy = Ext.extend(Ext.data.HttpProxy, {
constructor: function(c) {
var d = {
method: 'POST',
headers: {
'Content-Type': 'application/json;charset=utf-8'
}
}
Ext.data.WsProxy.superclass.constructor
.call(this, Ext.apply(d, c));
}
});
Потом, подключив его, используем:
var proxy = new Ext.data.WsProxy({
url:'url'
});
субота, 26 червня 2010 р.
JSON запрос к web-сервису на ExtJs
Для удобства создадим метод:
Потом используем:
Ext.Ajax.ws = function(o){
Ext.Ajax.request({
method : "POST",
url : o.url,
jsonData : o.data || "{}",
headers : {
"Content-Type": "application/json;charset=utf-8"
},
success : function(resp){
o.success(Ext.decode(resp.responseText));
}
});
}
Потом используем:
Ext.Ajax.ws({
url:"url",
data:"json data",
success:function(data){
}
});
четвер, 24 червня 2010 р.
неділя, 30 травня 2010 р.
Знайшов цікаві уроки по Photoshop
вівторок, 4 травня 2010 р.
MS SQL sysobjects table
SELECT * FROM sysobjects WHERE xtype = <type>
<type>:
C: Check constraint
D: Default constraint
F: Foreign Key constraint
L: Log
P: Stored procedure
PK: Primary Key constraint
RF: Replication Filter stored procedure
S: System table
TR: Trigger
U: User table
UQ: Unique constraint
V: View
X: Extended stored procedure
1. Get all tables:
SELECT [name]
FROM sysobjects
WHERE xtype = 'U'
order by [name]
2. Get all columns by table:
SELECT syscolumns.name as [name],
systypes.name as [datatype],
syscolumns.length as [length]
FROM sysobjects
JOIN syscolumns ON sysobjects.id = syscolumns.id
JOIN systypes ON syscolumns.xtype=systypes.xtype
WHERE sysobjects.xtype='U' and sysobjects.name = <table name>
ORDER BY syscolumns.colid
<type>:
C: Check constraint
D: Default constraint
F: Foreign Key constraint
L: Log
P: Stored procedure
PK: Primary Key constraint
RF: Replication Filter stored procedure
S: System table
TR: Trigger
U: User table
UQ: Unique constraint
V: View
X: Extended stored procedure
1. Get all tables:
SELECT [name]
FROM sysobjects
WHERE xtype = 'U'
order by [name]
2. Get all columns by table:
SELECT syscolumns.name as [name],
systypes.name as [datatype],
syscolumns.length as [length]
FROM sysobjects
JOIN syscolumns ON sysobjects.id = syscolumns.id
JOIN systypes ON syscolumns.xtype=systypes.xtype
WHERE sysobjects.xtype='U' and sysobjects.name = <table name>
ORDER BY syscolumns.colid
субота, 1 травня 2010 р.
четвер, 15 квітня 2010 р.
AJAX Control Toolkit CalenderExtender localization
The Calendar Extendar supports localization ,and you can localize it by setting the EnableScriptGlobalization Script Manager property to true , this way the calendar extendar will display its contents based on the current page culture.
субота, 10 квітня 2010 р.
Новые возможности C# 3.0
Вывод типа (Type Inference)
// Можно объявить переменную так:
var localVar = new MyLongFooClassWithTemplate<MyLongTypeParameter>();
Анонимные типы (Anonymous Type)
// Вот так выглядит объявление нового типа:
var anon = new { a = 3, b = 4.81, c = "string data" };
Расширяющие методы (Extension Methods)
// добавить this перед первым параметром метода
public static int ElementCount(this IEnumerable enumerable)
...
// и вызывать этот утилитный метод можно так
int count = array.ElementCount();
Лямбда-выражения (Lambda Expression
//old
var filtered = items.Filter(delegate(int i) { return i % 2 == 0; });
//new
var filtered = items.Filter(n => n % 2 == 0);
Auto Properties
public string Name { get; set; }
Ленивые вычисления (Lazy Evaluation)
Частичные методы (Partial Methods)
субота, 20 березня 2010 р.
Cистемные требования windows XP, Vista, 7
Win XP Professional:
- PC: 300 MHz; min: 233 MHz
- RAM: 128 MB; min: 64 MB
- HDD: 1.5 Gb
Win Vista:
- PC: 1 GHz; min: 800 MHz
- RAM: 1 GB; min: 512 MB
- HDD: 15 Gb
- Graphics: DirectX 9.0
- Video: 32Mb (Home Basic), 128Mb(other)
Win 7:
- PC: 1 GHz;
- RAM: 1 GB(x86); 2 GB(x64);
- HDD: 16 Gb(x86); 20 Gb(x64);
- Graphics: DirectX 9.0
- Video: 128Mb
- PC: 300 MHz; min: 233 MHz
- RAM: 128 MB; min: 64 MB
- HDD: 1.5 Gb
Win Vista:
- PC: 1 GHz; min: 800 MHz
- RAM: 1 GB; min: 512 MB
- HDD: 15 Gb
- Graphics: DirectX 9.0
- Video: 32Mb (Home Basic), 128Mb(other)
Win 7:
- PC: 1 GHz;
- RAM: 1 GB(x86); 2 GB(x64);
- HDD: 16 Gb(x86); 20 Gb(x64);
- Graphics: DirectX 9.0
- Video: 128Mb
пʼятниця, 19 березня 2010 р.
вівторок, 16 березня 2010 р.
Закладки
Знайшов кілька закладок
http://www.searchlast.co.uk/blog/search-engine-optimisation/how-to-create-a-twitter-bookmark/
http://www.searchlast.co.uk/blog/search-engine-optimisation/how-to-create-a-twitter-bookmark/
del.icio.us
<a href="http://del.icio.us/post?url=http://www.searchlast.
co.uk/blog/&title=Product+Price+Comparison+and+E-commerce
+News+Blog" >Del.icio.us</a>
Digg
<a href="http://digg.com/submit?url=http://www.searchlast.
co.uk/blog/&title=Product+Price+Comparison+and+E-commerce
+News+Blog" >Digg.com</a>
<a href="http://reddit.com/submit?url=http://www.searchlast.
co.uk/blog/&title=Product+Price+Comparison+and+E-commerce+
News+Blog" >Reddit.com</a>
<a href="http://www.facebook.com/sharer.php?u=http://www.
searchlast.co.uk/blog/">Facebook.com</a>
StumbleUpon
<a href="http://www.stumbleupon.com/submit?url=http://www.
searchlast.co.uk/blog/&title=Product+Price+Comparison+and
+E-commerce+News+Blog" >StumbleUpon.com</a>
<a href="http://www.twitter.com/home?status=Currently+reading
+http://www.searchlast.co.uk/blog/" >Twitter.com</a>
Мітки:
del.icio.us,
Digg,
Facebook,
Reddit,
StumbleUpon,
twitter
субота, 20 лютого 2010 р.
JavaScript: replace XML special characters
XmlHelper = {};
XmlHelper.getExp = function(str)
{
return new RegExp(str, 'g');
}
XmlHelper.encodeInvalidChars = function(str) {
return str
.replace(this.getExp('&'),'&')
.replace(this.getExp('<'),'<')
.replace(this.getExp('>'),'>')
.replace(this.getExp('\''),''')
.replace(this.getExp('"'),'"')
}
XmlHelper.decodeInvalidChars = function(str) {
return str
.replace(this.getExp('&'),'&')
.replace(this.getExp('<'),'<')
.replace(this.getExp('>'),'>')
.replace(this.getExp('''),'\'')
.replace(this.getExp('"'),'"')
}
четвер, 18 лютого 2010 р.
C#: replace XML special characters
System.Security.SecurityElement.Escape(string str);
& - &
< - <
> - >
" - "
' - '
Підписатися на:
Дописи (Atom)