вторник, 14 декабря 2010 г.

IIS Compression in IIS6.0

I've applied gzip compression on IIS 6.0!
It's very simple.

1 step: Enable Compression in IIS
- From the IIS snap-in, right-click on the Web Sites node and click on Properties
- Select the Service tab - Enable Compress application files
- Enable Compress static files
- Save and close the Web Site Properties dialog

2 step:
- Stop "World Wide Web Publishing Service" in System Settings -> Services.
- Open the metabase located at C:\Windows\system32\inetsrv\metabase.xml
- Search for <IIsCompressionScheme
- There should be two of them, one for deflate and one for gzip. Basically they are two means of compression that IIS supports.
- First thing to do is add aspx, asmx, php and any other extension that you need to the list extensions in HcScriptFileExtensions. Make sure to follow the existing format carefully, an extra space will keep this from working correctly. Do this for both deflate and gzip.
- Set option HcDynamicCompressionLevel to 9. Do this for both deflate and gzip.
- Start "World Wide Web Publishing Service".

Thanks Scott Forsyth for the post: http://weblogs.asp.net/owscott/archive/2004/01/12/57916.aspx

p.s.: yes, i'm sorry to say that our customer still use IIS 6.0 in 2010 and he didn't apply compression earlier.

понедельник, 8 ноября 2010 г.

MIME Types

MIME Types

MIME (Multipurpose Internet Mail Extensions) is an Internet standard for describes message content types.

There most popular Mime Types By File Extension:

acx application/internet-property-stream
asf video/x-ms-asf
asx video/x-ms-asf
au audio/basic
avi video/x-msvideo
bin application/octet-stream
bmp image/bmp
c text/plain
css text/css
dll application/x-msdownload
doc application/msword
dot application/msword
exe application/octet-stream
gif image/gif
gtar application/x-gtar
gz application/x-gzip
h text/plain
hdf application/x-hdf
hlp application/winhlp
hta application/hta
htc text/x-component
htm text/html
html text/html
ico image/x-icon
ief image/ief
iii application/x-iphone
ins application/x-internet-signup
isp application/x-internet-signup
jfif image/pipeg
jpe image/jpeg
jpeg image/jpeg
jpg image/jpeg
js application/x-javascript
lsx video/x-la-asf
m3u audio/x-mpegurl
mov video/quicktime
movie video/x-sgi-movie
mp2 video/mpeg
mp3 audio/mpeg
mpa video/mpeg
mpe video/mpeg
mpeg video/mpeg
mpg video/mpeg
pdf application/pdf
pps application/vnd.ms-powerpoint
ppt application/vnd.ms-powerpoint
rtf application/rtf
tgz application/x-compressed
txt text/plain
wav audio/x-wav
xls application/vnd.ms-excel
zip application/zip


Source: http://www.w3schools.com/media/media_mimeref.asp

четверг, 21 октября 2010 г.

So you want a day off?

So you want a day off?
So you want a day off. Let's take a look at what you are asking for.
There are 365 days per year available for work.
There are 52 weeks per year in which you already have 2 days off per week, leaving 261 days available for work.
Since you spend 16 hours each day away fron work, you have used up 170 days, leaving only 91 days available.
You spend 30 minutes each day on coffee break which counts for 23 days each year, leaving only 68 days available.
With a 1 hour lunch each day, you used up another 46 days, leaving only 22 days available for work.
You normally spend 2 days per year on sick leave.
This leaves you only 20 days per year available for work.
We are off 5 holidays per year, so your available working time is down to 15 days.
We generously give 14 days vacation per year which leaves only 1 day available for work.
There's no way I'll let you take that day off!


Source: http://www.4hb.com/0730soyouwantadayoff.html

среда, 20 октября 2010 г.

Classic ASP - ADO constants include file

Somtimes I need to come back to the very old code. So, just to have it there:

'---- ParameterDirectionEnum Values ----
adParamUnknown = &H0000
adParamInput = &H0001
adParamOutput = &H0002
adParamInputOutput = &H0003
adParamReturnValue = &H0004

'---- CommandTypeEnum Values ----
adCmdUnknown = 0
adCmdText = &H0001
adCmdTable = &H0002
adCmdStoredProc = &H0004

'---- CursorTypeEnum Values ----
adOpenForwardOnly = 0
adOpenKeyset = 1
adOpenDynamic = 2
adOpenStatic = 3

'---- LockTypeEnum Values ----
adLockReadOnly = 1
adLockPessimistic = 2
adLockOptimistic = 3
adLockBatchOptimistic = 4

'---- DataTypeEnum Values ----
adEmpty = 0
adTinyInt = 16
adSmallInt = 2
adInteger = 3
adBigInt = 20
adUnsignedTinyInt = 17
adUnsignedSmallInt = 18
adUnsignedInt = 19
adUnsignedBigInt = 21
adSingle = 4
adDouble = 5
adCurrency = 6
adDecimal = 14
adNumeric = 131
adBoolean = 11
adError = 10
adUserDefined = 132
adVariant = 12
adIDispatch = 9
adIUnknown = 13
adGUID = 72
adDate = 7
adDBDate = 133
adDBTime = 134
adDBTimeStamp = 135
adBSTR = 8
adChar = 129
adVarChar = 200
adLongVarChar = 201
adWChar = 130
adVarWChar = 202
adLongVarWChar = 203
adBinary = 128
adVarBinary = 204
adLongVarBinary = 205

'---------------------end of file


* This source code was highlighted with Source Code Highlighter.

sources:
http://www.asp101.com/articles/john/adovbs/
http://www.asp101.com/articles/john/adovbs/adovbs.inc.txt
http://www.eggheadcafe.com/PrintSearchContent.asp?LINKID=122

четверг, 1 июля 2010 г.

(Exception from HRESULT: 0x80070057 (E_INVALIDARG))

Server Error in '...' Application.

Could not load file or assembly '...' or one of its dependencies. The parameter is incorrect. (Exception from HRESULT: 0x80070057 (E_INVALIDARG))

В один прекрасный момент одно из приложений перестало работать выдавая вот такую ошибку, якобы ругаясь на стороннюю библиотеку в Reference-ах, дак вот как оказалось библиотека тут не причем, все в дело в конфликте между новой версией скомпилированного кода и его временной копией в папке C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\
Все что нужно - это вручную почистить временную папку "Temporary ASP.NET Files" и все.

линки:
http://social.msdn.microsoft.com/forums/en/csharpide/thread/352c58ec-65d8-4d77-ac7b-d2338c621ef3/
http://www.solutioncottage.com/ShowSolution.aspx?solID=59

среда, 30 июня 2010 г.

0wnZ youuuuuuuuuuuu !

Сегодня хакнули часть сайтов нашего заказчика (к которым, мы не имеем отношения, заказчик как-то сам их клепает)!
корень сатов забили файлами типа:
index.htm
index.html
index.asp
index.php
default.asp
...
и в каждом из них был следующий текст:
0wnZ youuuuuuuuuuuu !

что же это такое...



(картинка для привлечения внимания взята отсюда: http://img217.imageshack.us/i/tik.png/)

пятница, 25 июня 2010 г.

ASP.NET MVC Framework

Сегодня получил по почте книгу Гайдара Магданурова и Владимира Юнева "ASP.NET MVC Framework", заказанную на сайте books.ru.

Давно у меня текли слюнки на MVC Framework, но все то-ли времени не хватало, то-ли просто руки не доходили, а теперь у меня есть живая бумажная книжка :) и я буду читать ее в свободное время, перед сном, в туалете, на даче, в дороге - жаль за рулем не смогу читать :)
Главное, что необходимо извлеч из прочтения - обоснование выбора MVC Framework на замену стандартному WebForms.

четверг, 24 июня 2010 г.

:first-child and :last-child

Why does the CSS2.1 support the pseudo-class ":first-child" and doesn't support ":last-child"?
It needs to find the last column by server-side code and assign the special css-class.

----

Почему CSS2.1 поддерживает псевдо-класс ":first-child" и не поддерживает ":last-child"?
Приходится на стороне сервере вычислять последний столбец и присваивать ему соответствующий класс в ручную.

четверг, 17 июня 2010 г.

IE6 css min-width hack

Css-хаков для всеми ненавистного IE много. Вот например css свойство min-width совсем не работает в IE6, хотя в IE7 уже прекрасно функционирует.

ну дак вот, на этой страничке с незапамятных времен подробно написано как поборот сей недостаток треклятого браузера: http://www.webreference.com/programming/min-width/
В кратце метод вот такой:


.blockName {min-width:145px;} /*для нормальных браузеров */
* html .blockName { margin-right:-145px; border-right:145px solid #000;} /*для ie6*/

Cоответственно мы получим блок который отображется в IE6 с минимальной шириной 145px.

среда, 16 июня 2010 г.

HTTP_FROM:googlebot(at)googlebot.com

Дак вот он какой - северный олень! )

HTTP_FROM: googlebot(at)googlebot.com;
HTTP_USER_AGENT: Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html);
REMOTE_ADDR: 66.249.71.114;

Вот так можно опознать ботов гугла которые шарят по инету!
По этой причине нам приходит целая куча сообщений об ошибках на странице которые пытается запросить бот при этом используя кривые параметры в query string.

Сегодня наконец-то дошли руки создать robots.txt с директивами запрета доступа для ботов. посмотрим много ли дебаг сообщений придет за ночь )

Кстати вот этот сервис мне очень нравится: http://www.geobytes.com/IpLocator.htm?GetLocation&IpAddress=66.249.71.114

с его помощью узнал где живет этот самый бот )

вторник, 20 апреля 2010 г.

jQuery Validation plugin - multiemail

Вчера пикрутил jQuery Validation plugin. Замечательная вещь!
Но встал вопрос валидации списка из нескольких email-адрессов... и тут мне попался
замечательный скрипт расширяющий функциональность jQuery Validation plugin - MultipleEmail:


  1. jQuery.validator.addMethod("multiemail", function(value, element) {
  2.     if (this.optional(element)) // return true on optional element
  3.       return true;
  4.     var emails = value.split( new RegExp( "\\s*,\\s*", "gi" ) );
  5.      valid = true;
  6.         for(var i in emails) {
  7.          value = emails[i];
  8.          valid=valid && jQuery.validator.methods.email.call(this, value, element);
  9.         }
  10.       return valid;
  11. }, 'The format for one or more emails is incorrect.');
* This source code was highlighted with Source Code Highlighter.

скрипт найден здесь
http://forum.jquery.com/topic/jquery-validation-calling-the-email-method-inside-a-custom-method

среда, 24 марта 2010 г.

Как продавать рекламу на сайте

Интересный и познавательный доклад о том как правильно продавать рекламу на сайте.
Автору респект.


 

Автор Сергей Петренко (gray) разместил ссылку на Хабре, дак там прежде всего стали придираться к оформлению, написали недовольные комментарии - как всегда.

четверг, 18 марта 2010 г.

Random in C#

This code is wrong example of using Random class. Each element of the arr will be the same.
And don't trust the Debug mode! Because in Debug mode with breakpoints you will see different values each time.

  1. int[] arr = new int[count];
  2.  
  3. for (int j = 0; j < count; j++)
  4. {
  5.   Random rnd = new Random();
  6.  
  7.   arr[j] = rnd.Next(int.MaxValue);
  8. }
* This source code was highlighted with Source Code Highlighter.

Use this one! good Example below:

  1. int[] arr = new int[count];
  2. Random rnd = new Random();
  3.  
  4. for (int j = 0; j < count; j++)
  5. {
  6.   arr[j] = rnd.Next(int.MaxValue);
  7. }
* This source code was highlighted with Source Code Highlighter.

суббота, 13 марта 2010 г.


Notebook cooler ZM-NC2000 – это охлаждающая подставка под ноутбук. Давно хотел приобрести что-нибудь подобное, но никак не решался, и вдруг мне его подарили. Уже около месяца пользуюсь данным девайсом и решил рассказать об этом. Дареному коню в зубы не смотрят, поэтому сравнивать с другими конями не буду, лишь представлю посильное описание.

пятница, 12 марта 2010 г.

Параметр onerror в теге img

Не все браузеры одинокого полезны отображают отсутствующие картинки. Вот так например ведут себя IE и Safari соответственно:

No Image Safari

No Image IE
Но есть одно простое средство! Указать параметр onerror тега img:
<img onerror="this.style.display = 'none';" src="" ... />

четверг, 11 марта 2010 г.

Наблюдения в сети

Вот вроде солидная фирма, красивый сайт: http://hmarasoft.com, но чуть чуть не дотянули ребята, подправьте плиз :)

Решил написать им о маленькой аппечатке, а теперь еще добавлю, что форму обратной связи тоже надо бы подправить - расширить поле для сообщения до уровня остальных полей.

четверг, 4 марта 2010 г.

Different Authemtification types - Различные типы уатентификации на одном сайте

Задача:
Имеем рабочий сайт (Classic ASP) с настроенной Windows-аутентификацией (WindowsAuthentification): http://somedomainname.com/

Нужно создать вирутальную директорию в которой будет новая ASP.NET версия сайта с использование аутентификацией формой (FormsAuthentification):
http://somedomainname.com/2.0/

Решение:
Очень простое - создаем виртуальную директорию, в которой отмечаем галочкой:
"Properties" -> Tab "Directory Security" -> Button "Athentification Methods" -> отметить "Enable anomonous access".

И главное! - Подводный камень:
(Такое может произойти если отладка на локальной машине провадилась с размещением приложения как отдельной сайта в IIS. )
Если в клиентской части кода будут использованы ссылки типа: "/Controls/Image/image.gif", "/style/style.css"б тогда при загрузке страницы содержащей эту ссылку будет выполнен запрос по адресу: "http://somedomainname.com/Controls/Image/image.gif", "http://somedomainname.com/style/style.css". Это само собой потребует Windows-аутентификации. Поэтому очень важно проверить все клиентские ссылки, на кореектность пути.

вторник, 2 марта 2010 г.

Authentification-None for one folder(page) when the project is under FormsAuthentifications

Does anybody know how to share (Authentification None) one folder(page) when the project is under FormsAuthentifications?
I've posted the question on the StackOverflow:
http://stackoverflow.com/questions/2364618/authentification-none-for-one-folderpage-when-the-project-is-under-formsauthent

----
Может кто знает как расшарить одну папку(страницу) посредством authentication mode="None", когда весь проект под authentication mode="Forms"?

Бюсь над проблемой, даже запостил ее на StackOverflow, вдруг повезет и подскажут чего-нибудь:
http://stackoverflow.com/questions/2364618/authentification-none-for-one-folderpage-when-the-project-is-under-formsauthent

пятница, 19 февраля 2010 г.

Надо обязательно посмотреть лучшие видео 2009 года вот отсюда:
http://www.vimeo.com/album/159627/

How to convert Stream to byte array

It's pretty easy!

Code on C#:
  1. int length = Convert.ToInt32(inputStream.Length); // get strem length
  2. byte[] byteArr = new byte[length]; // create a byte array
  3. inputStream.Read(byteArr, 0, length);
  4. inputStream.Close();
* This source code was highlighted with Source Code Highlighter.

Code on VB you can find here: http://snipplr.com/view/2012/stream-to-byte-array/