вторник, октября 20, 2009

РодственныЕ сайты

Скажи мне кто твой друг...




ps: и ведь не поспоришь


четверг, июля 30, 2009

Мне стыдно в этом признаться, но с недавних пор я пью безалкогольное пиво :(

понедельник, июня 29, 2009

Народ, скажите мне что ЭТО?

В картинках сорри за качество:







прилагаю также видео:






ps
: увидел в луже на грунтовой дороге по дороге на дачу, в размерах около 5 см, зарываются глубоко в грунт, постоянно плавают брюхом вверх к поверхности...впереди на панцире пара рядом посаженных глаз :) явно хищник :) от хвоста пара усиков, спереди по бокам по паре усиков




pps: сразу предупреждаю, деревня не рядом с припятью :-D



воскресенье, июня 07, 2009

джоли джампинг

Попробовал, хочу еще :))) :










Побегал, хотя наверно все таки походил :), буквально минут 15-20, но масса ощущений, ужасно устают ноги, но как сказали, просто с непривычки, люди, которые не первый раз уже встают на "прыгунки" бегают со скоростью до 30 км в час, заявленная :) максимальная высота прыжка порядка 2х метров...но это пока не для меня :)


а вообще, стал выбор между приобретением велосипеда и jollyjamper девайса, причем цена вопроса у обоих приблизительно одинаковая и выходит за рамки 10 тыс. рублей что за велосипед, что за взрослый комплект jolly jumper


пятница, июня 05, 2009

ЛабрадойЛЕР

Один из фильмов, которые обязательно стоит посмотреть и можно поставить в один ряд с фильмом "В погоне за щастьем" с Вилл Смитом - название фильма конечно не "лабрадойлер" - фильм "Марли и Я"

фильм конкретно меняет мировозрение, однозначно в видиотеку....

ps: как я смог проиграть спор своей девушке о том, как назвал один из героев фильма породу собаки лабрадойлером, а не лабрадойЗЕРом, понятия не имею :)

Само...

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

среда, марта 25, 2009

Удивительный мир шахмат

Вот уже третий год подсел на шахматы, реально подсел, другими словами это не назовешь, когда так сильно затягивает игра ...

Сижу на http://freechess.org/, из всех клиентов использую BabasChess (http://www.babaschess.net/) - самый продвинутый клиент, с очень богатым GUI, очень шустрый и удобный, так что если кто решится войти в мир шахмат, лучше начать сразу же с него :)

Поводом для написания темы послужили те игры и ситуации, пару скриншотов которых выкладываю сейчас - впредь хочу "коллекционировать" интересные ситуации в шахматах и заливать сюда :) просто чтобы похвастаться :) ... иногда, рассматривая какие то ситуации на шазматном поле, понимаешь что вообщем-то безвыходные ситуации существуют :)

итак, для затравки:








Вот тоже интересная ситуация, когда ход белых, т.е. просто реально почти физическое давление на противника:





ps: если кто захочет со мной сыграть, welcom, мой fics username - dushes
pps: в основном специализируюсь :) на суперблитцах 3-0, когда дается всего 3 минуты каждому игроку на проведение игры, или 2-12, 2 минуты времени, с каждым ходом дается 12 секунд.




вторник, марта 24, 2009

Кастомизация стандартных валидаторов

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


В результате родился скрипт, текст которого приведен в конце топика.





В качестве примера покажу, как выглядит страница с использованием стандартных валидаторов:






И после применения javascript:









Чтобы добиться такого эффекта, мне требуется дописать в конце страницы или на событие pageLoaded (если использую на странице ScriptManager & PageRequestManager) следующий javascript-код:




<script language="javascript" type="text/javascript">
Web.Customization.validatorsStylingApply();
Web.Customization.invalidatedControlStyleName = "invalidatedControl";
Web.Customization.invalidatedSelectControlStyleName = "invalidatedSelectControl";
</script>





Свойство invalidatedControlStyleName используется для указания, какой стиль будет применен к валидируемому контролу в случае, если сам валидатор !isvalid; После того, как валидатор стал валидным - восстанавливается тот класс контрола, который был до применения стиля;

И описать соотвествующий стиль:

<style type="text/css">

.invalidatedControl {
border: 2px solid #DD0000;
}

</style>



Также поддерживается та ситуация, когда к контролу применяется несколько валидаторов, например:


<td>
<asp:TextBox ID="txtAdministrativeEmail" runat="server" Text="" Columns="40" MaxLength="40" Width="240px"></asp:TextBox>
<asp:RequiredFieldValidator ID="rfvEmail" runat="server"
ControlToValidate="txtAdministrativeEmail"
SetFocusOnError="false"
EnableClientScript="true"
Display="Dynamic"
ErrorMessage="Enter the correct administrative email"
Font-Size="12pt"></asp:RequiredFieldValidator>

<asp:RegularExpressionValidator ID="revEmail"
runat="server"
ControlToValidate="txtAdministrativeEmail"
Display="Dynamic"
SetFocusOnError="false"
EnableClientScript="true"
ErrorMessage="Invalid administrative email, please enter correct value..."
ValidationExpression=".*@.*\..*" ></asp:RegularExpressionValidator>
</td>






Собственно, сам код javascript-класса Web.Customization:



/* customization of validation controls */
var Web = {};
Web.Customization = function() {
///
///Helper class for the standart asp.net validators styling
///

this.invalidatedControlStyleName = "invalidatedControl";
this.invalidatedSelectControlStyleName = "invalidatedControl";
}

Web.Customization.prototype.validate = function() {
///
///Custom Validation proxy method
///

var hooked_result = false;
if (typeof Page_Validators != 'undefined' &&
Page_Validators != null) {

if (this["fwvalidator"] != null) {

var validator = this["fwvalidator"];
var fwevaluationfunction_object = eval("hooked_validator = " + this["fwevaluationfunction"]);
eval("hooked_result = hooked_validator(validator);")
validator.isvalid = hooked_result;
var object = $get(this["controltovalidate"]);
var controlstyle = "";

if (hooked_result) {
for (var i = 0; i < Page_Validators.length; i++) {
var previousValidator = Page_Validators[i];

if (previousValidator.controltovalidate == this.controltovalidate) {
if (previousValidator.id != this.id) {
hooked_result = previousValidator.isvalid;
}
else if (previousValidator.id == this.id) {
break;
}
}
}
}

if (hooked_result) {
if (this["controlstyle"] != null) {
controlstyle = this["controlstyle"];
object.className = controlstyle;

}
else
object.removeAttribute("className");

if (object.tagName == 'SELECT') {
var parentObj = object.parentElement;
if (parentObj.tagName == 'DIV') {
parentObj.removeAttribute("className");
}
}

}
else {
if (object.tagName == 'SELECT') {
var parentObj = object.parentElement;
if (parentObj.tagName == 'DIV') {
parentObj.className = Web.Customization.invalidatedSelectControlStyleName;
}
}
else {
object.className = Web.Customization.invalidatedControlStyleName;
}
}
}
}

return hooked_result;
};

Web.Customization.prototype.validatorsStylingApply = function() {
///
///Applies the custom styling logic into the all validators on the current page
///

if (typeof Page_Validators != 'undefined' &&
Page_Validators != null) {
var validators = Page_Validators;

for (var i = 0; i < validators.length; i++) {
if (validators[i].attributes["evaluationfunction"] != null) {

if (validators[i].attributes["display"] != null) {
validators[i].attributes.removeNamedItem("display");
}

var displayAttribute = document.createAttribute("display");
displayAttribute.value = "None";
validators[i].attributes.setNamedItem(displayAttribute);

if (validators[i]["fwvalidator"] == null) {
validators[i]["fwvalidator"] = validators[i];
validators[i]["fwevaluationfunction"] = validators[i].attributes["evaluationfunction"].value;
validators[i]["controltovalidate"] = validators[i].attributes["controltovalidate"].value;

var control = $get(validators[i]["controltovalidate"]);
if (control != null &&
control.className != null &&
control.className != '')
validators[i]["controlstyle"] = control.className;

validators[i].attributes["evaluationfunction"].nodeValue = Web.Customization.validate;
}
}
}
}
}

/* global objects initialization */
Web.Customization = new Web.Customization();





удачи в использовании, надеюсь, сама идея решения кому-нить пригодится...



Так и не нашел полный текст - Это я, добрый ЭЭх, а это мое ээхо...



...
- КТО ТАМ?

- Это я, добрый Ээх. Я здесь.
- И я здесь!
- А ты кто такой? Откуда взялся?
- С того берега моря.
- На чем приехал?
- Оседлал хромую блоху, сел и приехал.
- Море, что, лужа?
- Может и лужа, да только ту лужу орел не перелетел.
- Значит, орел - птенец!
- Наверно, птенец. Да только тень от его крыльев город закрывает, в городе ночь настает.
- Город-то, небось, крооохотный!
- Через тот город заяц бежал - не перебежал.
- Выходит, заяц маааленький!
- Заяц – как заяц. Из его шкуры тулуп вышел.
- Куда вышел?
- Вышел из того города, где заяц бежал, на который тень от орла упала, и пошел, куда глаза глядят.
- Чьи глаза???
- Глаза того тулупа, который из шкуры зайца вышел, в городе, где ночь настает, когда над ним птенец пролетает верхом на хромой блохе.
- ЧЕГО?!!!!
- Чего-чего. На хромой блохе с того берега моря, которое зайцу не перелететь, орлу не перебежать, хоть море - не море, а так - лужа посреди города, где тень от блохи на зайца упала и насмерть убила, а из шкуры зайца тулуп вышел и пошел, куда глаза глядят. Тут заяц кааак прыгнет!
- КАКОЙ ЗАЯЦ???
- Насмерть убитый – как прыгнет, куда глаза глядят, аж на тот берег моря, которое ни перелететь, ни перебежать, из которого тулуп вышел, на который тень от блохи упала и зайца убила, хоть заяц – не заяц, а орел!
- КАКОЙ ЗАЯЦ??? КАКОЙ ОРЕЛ??? КАКАЯ БЛОХА?????
- Повторить? Ну, значит, та самая блоха с того берега лужи…
...



ps: Какие мульты мы смотрели :)... ностальгия..

среда, марта 18, 2009

Курю

и читаю:
http://ru.wikipedia.org/wiki/Python


http://www.ibm.com/developerworks/ru/library/l-cpdecor/index.html




ну и собственно bdfl:
http://www.python.org/~guido/



ps: занимаюсь пайтоном второй месяц ... сказать, что сильно полюбил язык пока не могу, но и многих фишек языка уже не хватает :)




судя по отзывам в инете - основной бич это отсутствие вменяемой IDE, сам юзаю Wing - из всех рассматриваемых наиболее достойная




pps: a, b = b, a + b :)

пятница, марта 06, 2009

Удалить????






Курю

четверг, марта 05, 2009

Вот что значит правильно выбрать имя....Gooooooooooooooo!L!e

Альбом: Blog
Ps: стоило ошибиться в одной букве и мы получаем совсем другой поисковик :)

четверг, февраля 19, 2009

Did You Now

Знаете ли Вы что!!!!!


Альбом: Blog

вторник, февраля 03, 2009

Первый признак того, что пора в отпуск

Сел за соседний комп, установил тортойс, сделал checkout, скопировал путь рабочей папки ctrl+insert, сажусь за свой, делаю shift+insert и тупо не понимаю, почему не вставляет...:(

пятница, января 30, 2009

Specified argument was out of the range of valid values. Parameter name: utcDate

В очередной раз выкладывая на сервер приложение, заметил, что ajax-овый tab container control не загружает свои сборки..т.е. просто пропали стили обрамления самих вкладок, их подсветка при onmouseover, т.е. собственно то, что раньше отдавал ScriptResource.axd

Фидлером увидел 500 ошибку на обращение к обработчику ресурсов:


Specified argument was out of the range of valid values.
Parameter name: utcDate
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values.
Parameter name: utcDate

Source Error:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace:

[ArgumentOutOfRangeException: Specified argument was out of the range of valid values.
Parameter name: utcDate]
System.Web.HttpCachePolicy.UtcSetLastModified(DateTime utcDate) +3261043
System.Web.HttpCachePolicy.SetLastModified(DateTime date) +47
System.Web.Handlers.ScriptResourceHandler.PrepareResponseCache(HttpResponse response, Assembly assembly) +194
System.Web.Handlers.ScriptResourceHandler.ProcessRequest(HttpContext context) +1154
System.Web.Handlers.ScriptResourceHandler.System.Web.IHttpHandler.ProcessRequest(HttpContext context) +4
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +154
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +64





этот эффект происходит изза эффекта "assemplies in the future" :)
т.е. из-за разницы в таймзонах у меня сборка ушла на сервер с датой поздней, чем серверное время и обработчик ресурсов для ajax сходит с ума

Как решение, просто откомпилить сборку с датой ранее даты серверного времени;

пятница, января 23, 2009

Динамическое создание вкладок для ajax tab container

Динамическое создание вкладок для ajax tab container;
Ситуация была следующая - в разметке был размещен контейнер, для которого создавал вкладки динамически...
разметка:

<ajaxtoolkit:tabcontainer id="tabContainerCompanyProfile" runat="server" enableviewstate="true" width="100%">
</ajaxtoolkit:tabcontainer>


до постбека все происходило нормально, при переходе на другую страницу или при постбеке получал сообщение:

System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values.

ну и stack trace до вызова set_ActiveTabIndex;

лечится только динамическим созданием самого tab container как показано ниже:
помещаем в place holder и затем уже добавляем вкладки...


разметка:


<table>
<tr>
<td>
<asp:PlaceHolder ID="phTabContainer" runat="server" EnableViewState="true">
</asp:PlaceHolder>
</td>
</tr>
...........................


фрагмент кода:


var availableTabs = (from pd in this.ProfileDescriptors
where pd.CompanyTypes.Contains(this.CompanyType) &&
(pd.EditMode == EditMode.All || pd.EditMode == this.ProfileMode)
select pd).ToList();


if (availableTabs != null &&
availableTabs.Count > 0)
{

AjaxControlToolkit.TabContainer tabContainer = new AjaxControlToolkit.TabContainer();
tabContainer.Width = Unit.Parse("100%");
tabContainer.Enabled = true;
tabContainer.Visible = true;

phTabContainer.Controls.Add(tabContainer);

foreach (ProfileDescriptor profileDescriptor in availableTabs)
{
foreach (TabDescriptor tabDescriptor in profileDescriptor.TabDescriptors)
{
CompanyProfileTabs.CompanyPropertiesTabBase propertiesEditor = (CompanyProfileTabs.CompanyPropertiesTabBase)this.LoadControl(tabDescriptor.TabControlURL);
if (propertiesEditor != null)
{
AjaxControlToolkit.TabPanel tab = new AjaxControlToolkit.TabPanel();
tab.Visible = true;
tab.Width = Unit.Percentage(100);
tab.Enabled = true;
tab.HeaderText = tabDescriptor.HeaderCaption;

propertiesEditor.Visible = true;
tab.Controls.Add(propertiesEditor);


tabContainer.Tabs.Add(tab);

this.Tabs.Add(propertiesEditor);
}
}

}

if (this.Tabs.Count > 0)
{
tabContainer.ActiveTabIndex = 0;
}
}