by mitkoka
14. Юни 2009 13:27
Има разлика между VARCHAR(1-8000) и VARCHAR(MAX).
Когато в дадена колона се записват данни от тип VARCHAR(1-8000) те се записват физически точно по този начин в съответния ред. Но когато колоната съдържа данни от тип VARCHAR(MAX) задкулистно данните се записват като данни от тип TEXT. Ето защо има допълнитна работа когато използваме VARCHAR(MAX) и такъв тип колна трябва да се използва само когато знаем, че данните ще превишат 8000.
VARCHAR(MAX) и NVARCHAR(MAX) не държат данните си в самия ред, а на друго място. В реда има единствено указател към това място. Дефоутно сървърът ще опита да задържи данните в реда, но ако става въпрос за голямо количество ще ги постави на друго място. Това поставяне на данни на място различно от текущия ред ще доведе до допълнителна работа на сървъра и съответно до леко забавяне. Още по темата:
http://msdn2.microsoft.com/en-us/library/ms189087.aspx
by mitkoka
17. Май 2009 09:40
Сигурност в .NET
Тази статия е предназаначена за тези, които искат да разберат повече за CAS.Тъй като повечето източници, които намерих не бяха особенно полезни за мен, реших да синтезирам полезните. Предварително се извинявам за англицизмите, които използвам.
.NET предлага два типа сигурност:
Role Based Security - Сигурност базирана на ролите на потребителите
Code Access Security - Сигурност свързана с кода
В тази статия ще разгледаме CAS сигурноста.
"Сигурност свързана с кода" - това означва, че .net ни дава ваъзможност да определяме какви права има кода, който пишем от гледна точка на това
какви действия може да извършва и кой има право да го.
Ето някой основни понятия:
* permissions
* permission sets
* code groups
* evidence
* policy
Permissions
Пермишъните в .net са събрани в System.Security.Permissions Namespacе. На първо място пермишъните са класове.За повече информация за тях вижте в MSDN натози линк: http://msdn.microsoft.com/en-us/library/system.security.permissions.aspx.Ето няколко от тях :FileIOPermission, UIPermission, SecurityPermission пълният списък е на посочения линк. Пермишъна дава право нещо да бъде извършено или право на достъп до даден ресурс.
Пермишъна означава право на достъп. Колкото повече пермишъни токлкова повече права. За да бъде по лесно задаването на тези права пермишъните биват събирани в "Пермишън сетове" - Permission sets.
Permission sets
Пермишън сетовете са групи от пермишъни. Съществуват стандартни пермишън сетове като FullTrust, LocalIntranet, Internet, Execution и Nothing. Които включват в себе си определени пермишъни. Това са вградените в .net пермишън сетове.(FUll trust включва всички пермишъни, Nothing не включва нищо). Освен това потребителя може да създава свой като определя кои пермишъни да включи в тях. Tези, които са се занимавали с ASP.NET вероятно знаят, че един уеб сайт или приложение може да работи в различна среда на сигурност. Ако сайтът ви е хостнат на вашия компютър тогава бихте могли да зададете FullTrust (какъвто е пермишън сета по подразбиране).Това става в C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG\web.config. Ако обаче използвате хостинг компания за вашия сайт тогава той най - вероятно работи в MediumTrust среда, определена пак на същото място в web.config. Ето как изглежда честа от кода, която трябва да се промени за да се смени средата, в която работи уеб сайта:
<location allowOverride="true">
<system.web>
<securityPolicy>
<trustLevel name="Full" policyFile="internal"/>
<trustLevel name="High" policyFile="web_hightrust.config"/>
<trustLevel name="Medium" policyFile="web_mediumtrust.config"/>
<trustLevel name="Low" policyFile="web_lowtrust.config"/>
<trustLevel name="Minimal" policyFile="web_minimaltrust.config"/>
</securityPolicy>
<trust level="Medium" originUrl=""/>
</system.web>
</location>
На личния ми компютър съм заложил Medium trust среда за да симулирам средата, в която ще работи сайтът ми качен на сърварите на хостинг компанията. Както се вижда има няколко предварително създадени файла, които отговарят на пермишън сетовете и съдържат пемишъните за всеки един trustLevel. Ето как може да бъде създаден нов пермишън сет. Просто създаваме нов фаил - да го наречем web_modifiedMediumtrust.config с правата, които искме да има пермишън сета. Новия фаил стои на същото място като останалите C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG. След това добавяме нов елемент към <securityPolicy> </securityPolicy> и променяме атрибута в level на елемента <trust/>
Получаваме следното:
<location allowOverride="true">
<system.web>
<securityPolicy>
<trustLevel name="Full" policyFile="internal"/>
<trustLevel name="High" policyFile="web_hightrust.config"/>
<trustLevel name="Medium" policyFile="web_mediumtrust.config"/>
<trustLevel name="ModifiedMedium" policyFile="web_modifiedMediumtrustt.config"/>
<trustLevel name="Low" policyFile="web_lowtrust.config"/>
<trustLevel name="Minimal" policyFile="web_minimaltrust.config"/>
</securityPolicy>
<trust level="ModifiedMedium" originUrl=""/>
</system.web>
</location>
Атрибута name може да има всякакво име избрано от вас. На практика хостинг компаниите предлагат точно такаква среда - модифициран Medium.
Code groups
Кодът, който пишем попада в предварителни групи - "Код групи". Както при пермишън сетовете тук имаме вградени код групи, имаме и възможност сами да създаваме такива. Ето пример за вградени код групи My_Computer_Zone, LocalIntranet_Zone, Internet_Zone. Кодът, който пишем може да попадне в една или повече от тези код групи. Това дали даден код попада в определена код група зависи от "доказателствата" - evidence , които предоставя. Например код с определен strong name може да попадне в една код група, ако идва от http://www.somewebsite.com/ може да принадлежи на друга и т.н.т.
Policy
(Снимка)
Да ги наречем политики. Вградените са Enterprise, Machine, User и Application Domain. Политиките представляват обединение на пермишъните -> пермишън сетовете -> код групите. Както казахме кодът попада в определена код група. Тази код група с всичко онова, което се съдържа в нея попада в определена политика. Това означава, че код попаднал в различни код групи част от различни политики попада в тези различни политики. Или правата (и тук привършваме), с които разполага кода са сечение на всички политики, в които той попада, а кои са те зависи от код групите на съответните политики.
Пример
Асембли записано на нашия компютър. Даказателствата, които то представя го поставят в определени код групи (част от вградените политики) и съответно то получава правата си от тях (пермишън сети). Тъй като попада в повече от една под група правата, които получава, са тези които присъстват във всички политики или сечение на правата от всички политики.Ако предположим че нашето асембли има FullTrust, Everithing и Internet пермишън сетове, тъй като първите два включват всички пермишъни, то правата на асемблито се ограничават само до тези част от Internet пермишън сет-а.
by mitkoka
7. Март 2009 08:53
Ето една доста интересна статия описваща разликата между синхронното и асинхроното постване на данни.
http://edndoc.esri.com/arcobjects/9.2/NET_Server_Doc/developer/ADF/pagepost_clientcall.htm
Когато постваме данни асинхронно (т.е. използваме AJAX) ние правим CallBack. Дали данните са постнати чрез AJAX можем да проверим чрез Page.IsCallBack. Независимо дали имаме CallBack или не при постване на данни пропъртито IsPostBack винаги е TRUE.
Асинхронното постване на данни използва технологи присъщи за всеки един по - съвременен браузър:
- Презентационна част включваща XHTML and CSS
- Използване на (DOM) модела с цел взаимодействие между отделните елементи
- Трансфер на данни в текстов вариант, често под формата на XML
- Използване на http request object
- JavaScript
Използването на AJAX повишава бързината на отваряне на страницата цлед като данните са изпратени. Причината е че при CallBack страницата не се рендира на ново. Живота(Page live cycle) на една страница при CallBack е различен от този при PostBack. Това може да се види от следната илюстрация:

by mitkoka
23. Февруари 2009 16:06
Varcahar идва от variable-length characte. Това е текстов тип, чиято максимална дължина е 8000 байт. Това е свързано с максималния размер на един ред в таблица.
NVarcahar - N идва от uNicode. (Защото би било тъпо да се казва UVarchar). NVarchar не е нищо повече от Varcahar , който поддържа 2 -у байтови символи, Това означава че всеки един символ в стринга намиращ се в колона от тип NVarchar заема 2 байта място. Тъй като позволенто пространство тук също е 8000 байта. Това означава че използвайки NVarchar може да се събере двойно по малко текст или пък да се събере еднакъв текст, но в едия случй (Varchar) този текст ще заема двойно по - малко място. От друга страна използвайки Varchar не би могло да се записват символи, които не са част от английската азбука като например български букви, китайски яруглифи или нубийски заврънтулки.
Това е една от разликите. По - икономичния Varchar ни ограничава до определени символи.
Една важна добавка към SQL SERVER 2005 са типовете VARCHAR(MAX) и NVARCHAR(MAX). Ако създадете колна от тип VARCHAR(MAX) тя може да съдържа в себе си до 2^31 байта данни, докато колона от тип NVARCHAR(MAX) 1,073,741,823 символа (двойно по - малко сещате се защо).
by mitkoka
6. Януари 2009 13:03
Ако някога сте имали проблеми с javaScript - това вече е минало. Jquery е javascript библиотека, която значително улеснява работата на програмиста. За повече информация посетете: http://jquery.com/
Разработена на е от Джон Ресиг (http://ejohn.org/).
Освен всичките си положителни черти jquery е вече част от Visual Studio 2008, което и осигурява интелисенс. Библиотеката прави програмирането на javaScript наистина лесно, а и вече има доста готови неща, които могат да бъдат използвани. Разгледайте ги в официалния сайт на библиотеката.
by mitkoka
9. Декември 2008 09:25
Някой динамични сайтове предоставят възможност за търсене в самия уеб сайт на базата на определени критерии. Например търсене на продукт по ключова дума в уеб магазин, търсене по дестинация в сайт на туроператорска фирма, търсене на автомобил в сайт за продажба на автомобили и др. Вътрешните търсачки естествено са предназначени за потребителите на сайта, а не за търсещите машини. Ето защо данните които излизат като ресултат от вътрешното търсене в сайта остават скрити за потребителите. Затова трябва да се измисли механизъм, който да ги показва на търсачките. Решенито на проблема е чрез линк в самия сайт, който води до каталог от всички резултати от вътрешното търсене.
Друго решение на проблема:В уеб сайта може да бъде добавен механизъм, който определя дали в сайта се влиза от търсачка, от рефериращ сайт или пряко(чрез въвеждане на уеб адрес в браузъра). Ако се влиза от търсачка, то може да се разбере коя е ключовата дума, по която е станало търсенето в търсачката и по нея да се направи вътрешно търсене. Така вътрешните резултати за сайта няма да останат скрити.Този вариант е особенно подходящ за уеб мазагзини, които предлагат различни различни варианти от определен продукт.
by mitkoka
9. Декември 2008 09:11
Вече уточнихме, че е дно от най важните неща за доброто представяне на уеб сайта са линковете към него. Има обаче една особеност. Важно е какъв е текстът който потребителя клика за да дойде във вашия сайт. Например:Продавате мебели.В такъв случай най - добрият вариант е линкът да съдържа думата "мебели". Това в последствие ще окаже влияние на представянето на сайта при търсене с ключова дума "мебели".
http://www.moiatafirmazamebeli.com e лош вариант за разлика от: най - добрите мебели,
повече информация е лош вариант за разлика от: мебели по ваш вкус
by mitkoka
9. Декември 2008 08:48
За разлика от флаш анимациите JavaScript кода е в текстов вариант. Ето защо той може да бъде прочетен от търсещите машини. Проблемът тук е не в това че не се вижда от търсачките, а именно в това, че се вижда. Някой търсещи машини не могат да разпозначт JavaScript - a като код, а го приемат като част от съдържанието на страницата.Ето защо ви съветваме да държите този код в отделен фаил а не в самата страница. Така няма да бъде прочетен от търсачките, а кода на страницата ще остане чист.
by mitkoka
9. Декември 2008 08:27
Много сайтове използват флаш анимации за своите сайтове .Флаш технологията прави сайтовете доста по - атрактивни за посетителите, но не и за търсачките. Голяма част от търсещите машини, не могат да познаят флашовете. Решението е освен флаш анимациите да се направи и HTML версия на сайта. Това е полезно и за потребителите, които нямат инсталиран флаш плеър и не желаят да чакат неговото инсталиране. Програмистите могат да помислят за алтернативната SilveLight технология, при която данните се предава в текстов формат и по - този начин са видими за търсачните. Проблемът тук е друг: въпреки, че е много добра технология SilverLight не присъства в по - голямата част от браузърите, но това ще се промени много скоро.
by mitkoka
9. Декември 2008 07:57
Вече споменахме, че он-лайн каталозите, в които регистрирате вашият сайт повишават в много малка степен вашият пейдж ранк, защото техният пейдж ранк се разделя на броя на всички изходящи линкове от този каталог. Но освен това тези каталози могат да бъдат и опасни за сайта ви, т.е. не само че няма да му помогнат в борбата за по - добри позиции, но и ще му попречат да се класира по - добре. Голяма част от он-лайн каталозите биват разглеждани от Гугъл като сайтове с "death penalty".Те не помагат на сайта ви. Запомнете, че най добрият начин за добро класиране е предоставянето на качествена информация! Алгоритъма на Гъгъл е изключително добър.Той отсява качествените от не качествените сайтове. Например Гугъл лесно открива скрити линкове в сайтовете - текст представляващ хиперлинк с черни букви върху черен фон.
Та накратко. Предоставяте качествена информация и избягвайте изкушението да регистрирате сайта си в големите уеб ферми, които по всяка вероятност са банднати от Гугъл.