воскресенье, 30 декабря 2012 г.

Exduct coupons

Coupon Code:  5off60 
Buy $60 product value,save $5 off,
This coupon can be used up to 200 times.

Coupon Code:  10off100
Buy $100 product value,save $10 off
This coupon can be used up to 200 times.

среда, 19 декабря 2012 г.

понедельник, 17 декабря 2012 г.

Как получить URL из поля гиперссылка (hyperlink) SharePoint

И не надо никаких String.Substring! Просто:
var url = new SPFieldUrlValue(item["URL"].ToString()).Url;

А если очень умничать и юзать стандартные поля, то так:
var url = new SPFieldUrlValue(item[SPBuiltInFieldId.URL].ToString()).Url;

Для других страшных типов полей (Lookup, User) алгоритм такой же.

вторник, 4 декабря 2012 г.

Локализация в SharePoint. Получение строк из ресурсов

При получении строк из ресурсных файлов при разработке под SharePoint используют метод SPUtility.GetLocalizedString.

Одним из параметров идёт язык (uint language), т.е. для какого языка нам нужна строка. Проблема возникает откуда узнать текущий язык.

Самая первая ошибка - это использовать SPWeb.Language. Но это всего лишь дефолтный язык создания узла, только чтение, совсем нам не подходит. Вы могли создать узел на английском языке, а потом поменять язык на русский (SPWeb.Language останется английским)

Следующая ошибка - System.Threading.Thread.CurrentThread.CurrentCulture или CultureInfo.CurrentCulture, либо не CurrentCulture, а CurrentUICulture. В любом случае не верно. Тред может быть под любой культурой, ещё хуже, что эту культуру можно изменить, например в какой-нить другой веб-части. Ну и просто архитектурно не верно - мы опускаемся ниже объектной модели SharePoint, а это чревато игнорированием его особенностей, что, собственно, и произошло.

Верный способSPWeb.Locale - вернёт региональные настройки (в SiteSettings которые). Зависят/влияют ли они на культуру треда, язык операционки сервера или клиента нас не волнует.

Таким образом, для SPUtility.GetLocalizedString надо использовать SPWeb.Locale.LCID в качестве параметра language, в этом случае ваши решения будут использовать тот же формат, что выставлен в настройках узла.

понедельник, 3 декабря 2012 г.

Как исправить страшные шрифты в TotalCommander под Windows 7 и выше

Проблема в ClearType - если отключить, то TotalCommander будет смотреться хорошо, но весь остальной интерфейс винды будет ужасен =).

Решение простое - другой шрифт. Лучше всего смотрится Segoe UI.

четверг, 29 ноября 2012 г.

Microsoft SharePoint 2010 SiteMap Providers


SPNavigationProvider
SPSiteMapProvider
SPContentMapProvider
SPXmlContentMapProvider
ExtendedSearchXmlContentMapProvider Provider for navigation in Extended Search pages
AdministrationQuickLaunchProvider QuickLaunch navigation provider for the central administration site
SharedServicesQuickLaunchProvider QuickLaunch navigation provider for shared services administration sites
PWASiteMapProvider Project Web App provider for global navigation
GlobalNavSiteMapProvider CMS provider for Global navigation
CombinedNavSiteMapProvider CMS provider for Combined navigation
CurrentNavSiteMapProvider CMS provider for Current navigation
CurrentNavSiteMapProviderNoEncode CMS provider for Current navigation, no encoding of output
GlobalNavigation Provider for MOSS Global Navigation
CurrentNavigation Provider for MOSS Current Navigation
SiteDirectoryCategoryProvider Site Directory category provider
MySiteMapProvider MySite provider that returns areas and based on the current user context
MySiteLeftNavProvider MySite Left Nav provider that returns areas and based on the current user context
MySiteSubNavProvider MySite Sub Nav provider that returns areas and based on the current user context

вторник, 20 ноября 2012 г.

Щипание за попу

Нет, здесь не будет статьи про это =) И так есть прекрасная статья http://nibler.ru/pics/16919-schipanie-za-zhopu.html
Тут я хочу поделиться тем, что нашёл в гугле после прочтения той статьи.

Например, это http://www.pickupforum.ru/lofiversion/index.php/t79953.html
Просто умереть:
- Есть барышня с которой периодически общаемся, секса не было, короче недавно начала хватать за задницу, т.е. я её подколю например а она хвать и мне больно. Шутка. Короче носит ли это действие скрытый сексуальный подтекст или характер что ли?
- Да как сказать.... НЕ ТАК, ЧТОБЫ ОЧЕНЬ СКРЫТЫЙ, но сексуальный подтекст есть, да. Можно, в принципе, не долго думая, сказать, что этот подтекст ПИЗДЕЦ КАКОЙ ОТКРЫТЫЙ. Проще говоря - можно приглашать её кормить рыбок.
- Ну тогда так и ходи с жопой в синяках, а не со спиной в царапинах)))))
Или фраза оттуда же "А в чем кощунство-то? Трахать тех, кто напрашивается?" =)))

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

Серьёзное бабье обсуждение щипания за попу в публичных местах. "Щиплет. Я бы даже сказала - жамкает! И не только за попу, за все, за что можно жимкнуть", "щиплет. и меня это бесит. и когда не щиплет - бесит.", "Всех оказываецо щипают....=))) Наверное я много теряю=)) Сёдня приду - предложу пощипать наверна))", "а у нас, наоборот, обожаю к нему на людях поприставать, в штаны например руку засунуть.."

Народ, подскажите что испытывает мужчина трогая за попу чужую девушку? "Я не дура. Если б хотел вдуть - не играл бы, а переходил к более действенным способам. 
Я просила подвезти до дома в дождь например. А он сказал, что сегодня ему в другую сторону, даже до метро не довез, умчался.", "Нет, никогда. К нему бабы клеются, а он наоборо артачится. Его бухгалтерша больше года не может добиться. Даже чтоб за попу потрогал - ни фига   Если она узнает, что он меня щупает - я буду ее врагом №1", "- Скажите, а что означает у мужчины жест "облизывание губ"? - У него нет гигиенической помады. ", " - Пока все по прежнему. Пересекаемяс мельком при всех, он даже не смотрит в мою сторону. - Это оттого что жену отпялил и представлял вас. удовлетворил свою похоть наверно. " и там всё идёт к сексу =)


вторник, 30 октября 2012 г.

Происхождение говна

Слово «говно» произошло от праславянского «govno», что означает «коровий» и первоначально связывалось только с коровьими «лепёшками». «Говядо» — «крупный рогатый скот», отсюда же «говядина», «говяжий». Кстати, от того же индоевропейского корня и английское название коровы — cow, а также пастуха этих коров — cowboy. Т. е. выражение «сраный ковбой» — не случайное, в нём — глубокая родственная связь.

понедельник, 15 октября 2012 г.

DES или ГОСТ 28147-89

Сегодня тупанул на работе и согласился что наш ГОСТовский алгоритм это просто Triple DES переписанный. Это совсем не так, исправляюсь.
ГОСТ - это блочный 64-битный алгоритм с 256-битным ключом плюс добавочный ключ.
Алгоритм предусматривает 32 раунда. Текст бьётся на левую L и правую R части. на каждом раунде используется ключ Ki. Раунд:
Li = Ri-1
Ri = Li-1 xor f(Ri-1, Ki)
Функция f складывает аргументы по модулю 2^32, а результат бьётся на восем 4-битных блоков которые поступают на "узел замены" (S-блоки).

Если сравнивать с DES, то получаем:

  • в DES сложная генерация подключей из ключей, а в ГОСТ простая.
  • в DES 56-битный ключ, а ГОСТ 256-битный + секретные S-блоки.
  • в DES 16 раундов, а в ГОСТ - 32 раунда.
  • в DES используются нерегулярные перестановки (P-блоки), а в ГОСТ 11-битный циклический сдвиг.

Самое слабое место ГОСТ - это циклические сдвиги на фоне нерегулярных перестановок DES, но это компенсируется с лихвой 32 проходами. ГОСТ устойчивее DES к дифференциальному и линейному криптоанализу.
Итого получаем, что в 2 раза больше раундов, сильно длинее ключ, устойчивость к линейному и дифференциальному криптоанализу. Итого ГОСТ рвёт DES, причём никак не копируя его.

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


воскресенье, 30 сентября 2012 г.

Чанахи по-быстрому, по-простому, по-диетически


Очень простой и лёгкий способ сделать чанахи в горшочке. Времени и трудозатрат минимум!

Нужна баранина без жилок и жира грамм 400, 3 средних баклажана, 2 болгарских перца, 2 острых перца, 2 луковицы, чеснок, 3 плотных помидора, кинза, специи (зира, кориандр, чёрный перец), 2 стакана томатного сока. Ну и глиняные горшочки. Это на 4 горшочка.

Мясо порезать квадратиками 1 см, луковицы порезать на 4 части. Всё это выложить на противень, полить маслов и отправить запекаться при 200 градусах 10-15 минут, пока лук чуть подгорит сверху и мясо пропечётся.

Пока запекается, все остальные овощи порезать на крпные (1-2 см) куски. Смешаем специи: 1 столовая ложка зиры, 2 столовых ложки кориандра, 1/2 столовой ложки чёрного перца, 1/2 столовой ложка соли. Всё перемешать и желательно размолоть.

Мысо сготовилось - собираем горшочки. На дно кладём запечёные мясо и лук, сверху кладём 1-2 целых дольки чеснока, половину острого перца без семян, 1 ложка специй, 1/2 стакана томатного сока. Кладём баклажаны и плотно утрамбовываем, сверху сладкий перец, помидоры.

Теперь горшки в духовку на 200 градусов на 60 минут. Готово! Жира совсем нет, так что типа диетическое блюдо для худеющих ;)


Ажвар


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


Ингредиенты:
  • Болгарский перец (паприка) - 1 килограмм
  • Бакалажан - 1 средний
  • Острый перец - 2-3 штуки
  • Лук репчатый - 1 головка
  • Чеснок - 1 головка
  • Сахар, соль, уксус, масло растительное
Опционально:
  • Укроп для вкуса
  • Помидор (1-2 штуки) для кислоты
В результате получится чуть более 1 литра ажвара.

Всё (перцы, бакалажан, лук, чеснок и, если хотите, помидоры) режем и прокручиваем через мясорубку или запихиваем в овощерезку в кухонном комбайне. А если у вас есть бленедр, то половину баклажана отложите, а то всё будет в виде пюре, что не интересно. Измельчить нужно до очень мелкого размера.

Полученную кашу выкладывайте в кастрюлю. Добавьте отложенную ранее (если был блендер) половинку баклажана, мелко порезав. Засыпайте туда: 4 столовых ложки сахара, 2 столовых ложки соли, 4 ложки растительного масла.

Ставим на огонь выше среднего, даём закипеть и теперь начинаем неустанно помешивать, чтобы не пригорало и испарилась вода. И так где-то 40 минут =). Увариваем до состояния, когда будет вертикально держать вашу ложку, не позволяя ей упасть.

Теперь доливаем столовую ложку уксуса (лучше яблочного), можете добавить укропа. Теперь мешаем ещё 10 минут и готово!

Полученную "аджику" из перцев можно запихать в банку и хранить в холодильнике несколько месяцев (4-5 месяца).



пятница, 28 сентября 2012 г.

Как очистить таблицу аудита в SharePoint 2010


Размер таблицы аудита бывает огромным, несколько десятков гигабайт. Чтобы посмотреть, зайдите в базу данных контента портала в SQL Management Studio, раскройте список таблиц, правой кнопкой на dbo.Audit и во вкладке слева выберите Storage.

Для очистки выполните следующие строчки в PowerShell:

$site = Get-SPSite -Identity http://адреспортала
$date = Get-Date
$date = $date.AddDays(-1)
$site.Audit.DeleteEntries($date)

среда, 26 сентября 2012 г.

Определение проблем производительности SQL Server


Запросом ниже получите список всех waits (задержек?) которые происходят на SQL Server, там есть столбец как и с процентом возникновения относительно остальных, так и с абсолютным значением для каждой конкретной waits. Особенно полезно для оценки скорости доступа к диску.

WITH Waits AS
(SELECT
wait_type,
wait_time_ms / 1000.0 AS WaitS,
(wait_time_ms - signal_wait_time_ms) / 1000.0 AS ResourceS,
signal_wait_time_ms / 1000.0 AS SignalS,
waiting_tasks_count AS WaitCount,
100.0 * wait_time_ms / SUM (wait_time_ms) OVER() AS Percentage,
ROW_NUMBER() OVER(ORDER BY wait_time_ms DESC) AS RowNum
FROM sys.dm_os_wait_stats
WHERE wait_type NOT IN (
'CLR_SEMAPHORE', 'LAZYWRITER_SLEEP', 'RESOURCE_QUEUE', 'SLEEP_TASK',
'SLEEP_SYSTEMTASK', 'SQLTRACE_BUFFER_FLUSH', 'WAITFOR', 'LOGMGR_QUEUE',
'CHECKPOINT_QUEUE', 'REQUEST_FOR_DEADLOCK_SEARCH', 'XE_TIMER_EVENT', 'BROKER_TO_FLUSH',
'BROKER_TASK_STOP', 'CLR_MANUAL_EVENT', 'CLR_AUTO_EVENT', 'DISPATCHER_QUEUE_SEMAPHORE',
'FT_IFTS_SCHEDULER_IDLE_WAIT', 'XE_DISPATCHER_WAIT', 'XE_DISPATCHER_JOIN', 'BROKER_EVENTHANDLER',
'TRACEWRITE', 'FT_IFTSHC_MUTEX', 'SQLTRACE_INCREMENTAL_FLUSH_SLEEP',
'BROKER_RECEIVE_WAITFOR', 'ONDEMAND_TASK_QUEUE', 'DBMIRROR_EVENTS_QUEUE',
'DBMIRRORING_CMD', 'BROKER_TRANSMITTER', 'SQLTRACE_WAIT_ENTRIES',
'SLEEP_BPOOL_FLUSH', 'SQLTRACE_LOCK', 'DBMIRROR_WORKER_QUEUE')
)
SELECT
W1.wait_type AS WaitType, 
CAST (W1.WaitS AS DECIMAL(14, 2)) AS Wait_S,
CAST (W1.ResourceS AS DECIMAL(14, 2)) AS Resource_S,
CAST (W1.SignalS AS DECIMAL(14, 2)) AS Signal_S,
W1.WaitCount AS WaitCount,
CAST (W1.Percentage AS DECIMAL(4, 2)) AS Percentage,
CAST ((W1.WaitS / W1.WaitCount) AS DECIMAL (14, 4)) AS AvgWait_S,
CAST ((W1.ResourceS / W1.WaitCount) AS DECIMAL (14, 4)) AS AvgRes_S,
CAST ((W1.SignalS / W1.WaitCount) AS DECIMAL (14, 4)) AS AvgSig_S
FROM Waits AS W1
INNER JOIN Waits AS W2
ON W2.RowNum <= W1.RowNum
GROUP BY W1.RowNum, W1.wait_type, W1.WaitS, W1.ResourceS, W1.SignalS, W1.WaitCount, W1.Percentage
HAVING SUM (W2.Percentage) - W1.Percentage < 95; -- percentage threshold
GO

Необычный способ узнать редакцию SharePoint 2010


Запускаем regedit.exe и лезем по адресу HKLM\SOFTWARE\Microsoft\Shared Tools\Web Server Extensions\14.0\WSS\InstalledProducts и сравниваем GUID:
BEED1F75-C398-4447-AEF1-E66E1F0DF91E: SharePoint Foundation 2010
1328E89E-7EC8-4F7E-809E-7E945796E511: Search Server Express 2010
B2C0B444-3914-4ACB-A0B8-7CF50A8F7AA0: SharePoint Server 2010 Standard Trial
3FDFBCC8-B3E4-4482-91FA-122C6432805C: SharePoint Server 2010 Standard
88BED06D-8C6B-4E62-AB01-546D6005FE97: SharePoint Server 2010 Enterprise Trial
D5595F62-449B-4061-B0B2-0CBAD410BB51: SharePoint Server 2010 Enterprise
BC4C1C97-9013-4033-A0DD-9DC9E6D6C887: Search Server 2010 Trial
08460AA2-A176-442C-BDCA-26928704D80B: Search Server 2010
84902853-59F6-4B20-BC7C-DE4F419FEFAD: Project Server 2010 Trial
ED21638F-97FF-4A65-AD9B-6889B93065E2: Project Server 2010
926E4E17-087B-47D1-8BD7-91A394BC6196: Office Web Companions 2010

Для более продвинутых: get-spfarm | select Products

Ну и совсем для глупых: в админку фермы, в Upgrade and Migration, в Enable Enterprise Features и смотрим что включено.

понедельник, 27 августа 2012 г.

Как узнать общее число загруженных документов на портал SharePoint

Для того, чтобы узнать число файлов на всех узлах, нужно выполнить следующий код в SQL Server Management Studio для таблицы с контентом:



SELECT COUNT(*)
FROM     Docs INNER JOIN Webs On Docs.WebId = Webs.Id
INNER JOIN Sites ON Webs.SiteId = SItes.Id
WHERE
Docs.Type <> 1 AND (LeafName NOT LIKE '%.stp')  
               AND (LeafName NOT LIKE '%.aspx') 
               AND (LeafName NOT LIKE '%.xfp') 
               AND (LeafName NOT LIKE '%.dwp') 
               AND (LeafName NOT LIKE '%template%') 
               AND (LeafName NOT LIKE '%.inf') 
               AND (LeafName NOT LIKE '%.css')
               AND (LeafName NOT LIKE '%.master')
               AND (LeafName NOT LIKE '%.webpart')

четверг, 26 июля 2012 г.

Нифига себе цены


"If you need the job done in the EU, you must pay me in advance 5000 EUR in preparation for the job.
If you need the job done outside the EU, you must pay me in advance 10 000 EUR in preparation for the job.

To eliminate: 
  • Ordinary person: 20 000 EUR
  • Criminal or lower rank goverment official: 50 000 EUR
  • High rank goverment official: 100 000 EUR
  • Paparazzi: 50 000 EUR
  • Journalist: 65 000 EUR
  • Business Associate: ranging from 50 000 EUR to 200 000 EUR
  • Spouse: price depending on the secondary aspects of person(job, social status etc)"

Если нет выпадающего меню в 7-zip в Windows 8 x64

Значит вы поставили 32 битную версию =)
1. Обязательно удалите старую версию 7-zip, также руками потрите папку в Program files (x86)
2. Скачайте 64 битную версию и поставьте её.
3. проверяйте, меню должно появиться.

Если не удалили старую версию, то ничего не выйдет.
Если вс сделали так, но меню не появилось, то идите в regedit.exe, HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers, правой кнопкой, Permission (Разрешения), Advanced (Дополнительно), поставьте галочку "Replace all child object permission...", ok, ok, ok.

суббота, 14 июля 2012 г.

Пример неумелой мотивации

Предложите что-то, согласитесь, скажите, что чуть позже это сделаете, положите хуй.

Такой подход на удивление часто начал срабатывать. За последние пару месяцев аж два раза.


Случай 1. Предложили купить книжки по профессии сотрудникам, чтобы они развивались. За неделю я собрал большой список книг с сотрудников. Отдал. Ждал. Ждал. Ждал. Плюнул, пошёл узнавать как дела. Только в этот момент посмотрели список. Сказали, окей, купим. Всем сказал.Все ждали. Плюнул. Спросил. Сказали, "ой, не, это не надо, я вот хочу такую книгу (нет в списке), давай её купим и всё".


Случай 2. Собрали ВСЕХ сотрудников послушать как руководство себя хвалит (слава богу это редко в этой компании). Несколько часов все сидели и слушали, изредка засыпая. В конце предложили пиво и разбиться на команды и написать пожелания. Собрали пожелания, обсудили их, выбрали лучшие. Сказали, окей, но только в следующем квартале ;). естественно в следующем квартале никто не вспомнил про это и ничего не сделали.


Оба случая объединяет очень неудачная попытка мотивации. Причём сначала это неплохо мотивирует сотрудников, но чем выше взлетел, тем больнее падать - все надеялись, а тут такой облом.
Бесплатная мотивация сотрудника всегда должна быть направлена на удовлетворение в самореализации, которая в конечном счёте повысит эффективность работы. Самый простой пример - это вручение в советском союзе различных орденов, вымпелов, знамён, размещение на доске почёта Стоимость минимальна или отсутствует, а эффект даёт хороший, спросите своих бабушек и дедушек. Более современный пример - устроить турнир по какой-нить игре после работы (онлайн, компьтерная, настольная), сплотит команду, позволит раскрепоститься и лучше узнать друг друга.
Ещё часто в нашей стране забывают, что бесплатная мотивация работает только только если платная мотивация сработала, не наоборот.

пятница, 13 июля 2012 г.

Блок «Поделиться» для вашего сайта

Яндекс позволяет на портале разместить настраиваемую панельку с кнопочками поделиться в куче социальных сетей. Круть, не знал.
http://api.yandex.ru/share/

Промышленная картотека, случай No 3.


Э. Тянулинг начал работать в ремонтной автомастерской в качестве ученика, выделялса интересом к делу и рвением, а потому был произведен в механики. Занимая эту должность, он проявил исключительное умение обнаруживать неисправности, а также бесконечное терпение при их устранении и был назначен старшим мастером.
Однако здесь его любовь к механике и стремление к совершенству стали помехой. Он берется за любую работу, которая кажется ему интересной, не задумываясь над тем, насколько загружена мастерская. "Как-нибудь вывернемся",- говорит он. Тянулинг не выпустит машины из мастерской, пока сам своими руками не проверит каждую деталь. Он вмешивается в работу своих подчиненных, не занимаясь своим прямым делом. Его редко можно застать в конторе. 
Обычно он с засученными рукавами возится с разобранным двигателем, тогда как тот, кто должен был выполнять эту операцию, стоит рядом сложа руки, а остальные рабочие покуривают в ожидании наряда. В результате мастерская всегда перегружена работой, в ней постоянно царит неразбериха, а сроки выполнения заказов часто нарушаются.
Тянулинг не способен понять, что среднего клиента мало трогает доведение до совершенства каждой мелочи - он хочет получить машину в срок, и только Тянулингу невдомек, что большинство его подчиненных двигатели интересуют куда меньше, чем зарплата. В итоге Тянулинг не может найти общего языка ни с клиентами, ни с подчиненными.
Он был компетентным механиком, а стал некомпетентным мастером.


Далее здесь

четверг, 28 июня 2012 г.

Как расположить коллекцию сайтов SharePoint в другой базе данных



  1. Создать новую контентную базу данных.
  2. Коллекция помещается в ту базу, где меньше всего сайтов.
  3. Через интерфейс нельзя указать в какую базу положить.
  4. Через shell (New-SPSite) можно указать в какую базу положить, используя параметр ContentDatabase.


Можно также существующую коллекцию сайтов переместить в другую базу контента

  1. Делаем stsadm -o enumsites в файл, там будет XML.
  2. В файле удаляем все коллекции, которые не хотим перемещать, т.е. останутся только те, которые надо переместить.
  3. Теперь вызываем stsadm - o mergecontentdb, указывая исходную и конечные базы, а также наш файл (через атрибут -filename)
  4. Обязательно iisreset!

среда, 20 июня 2012 г.

Display Google Maps in a Sharepoint Web Part using a Sharepoint List

http://googlemapswebpart.codeplex.com/


Project Description

Using this web part you can display points and locations on a Google map and get directions to an from that point. You can either manually enter an individual point or select a list from your Sharepoint site that holds the information that is required - ie. a field for the Buidling Name, its Longitude and its Lattitude.

Features

  • Pick your zoom level - comes with handy real world scales
  • Choose any map type
  • Enter your own Google Maps API Key
  • Create a List using an inbuilt feature that is already set up for optimal performance with the web part
  • Or Pick a list from your MOSS site using the Site Picker pop up window (That thing you see when you're using the Content Query Web Part)
  • Match fields from your list that have the
    • Longitude
    • Lattitude
    • Name of Site
    • URL of an image
  • Or select a default image using the Asset Selector pop up window (That thing you see when creating hyperlinks in your text or inserting pictures)
  • Centre the map on any of your sites
  • Get directions
    • From one of your sites to another site
    • From one of your sites to an address
    • From an address to one of your sites
  • And you don't have to use a list! You can enter information for a single point
    • Longitude
    • Lattitude
    • Name of Site
    • URL of an image

Screenshots

Displaying a point
googlemaps_displaypoint.png

Getting Directions
googlemaps_directions.png

вторник, 12 июня 2012 г.

Подмышка: как писать?

Пишется и слитно, и раздельно.

Слитно, когда существительное.
Жмёт в подмышках.

Раздельно, когда наречие.
Тащить под мышкой.

Кстати, мышка - это мышца или связка между рукой и толовищем

Как пользоваться нашим электронным градусником

На будущее, а то опять забудем =)
Вставить его под мышку, только потом включить.
Далее пищалка:

  • первый раз пропищит - оставляем, это для тех, кто в заднице меряет.
  • второй раз - оставить, это для измерения во рту (после задницы лучше вытереть).
  • третий раз - то, что нужно, это для измерений под мышкой.

среда, 6 июня 2012 г.

Умер Рэй Брэдбери

В 1950 году вы написали книгу, принёсшую вам всемирную славу, — сборник рассказов «Марсианские хроники». Там говорилось: уже к началу второго тысячелетия на Марсе будут поселения, целые города землян. Как вы думаете, почему этого в итоге так и не произошло?

— Меня часто про такое спрашивают, и я люблю фантазировать над ответами. Чтобы они были разными! Ответ сегодняшнего дня: потому что люди — идиоты. Они сделали кучу глупостей: придумывали костюмы для собак, должность рекламного менеджера и штуки вроде айфона, не получив взамен ничего, кроме кислого послевкусия. А вот если бы мы развивали науку, осваивали Луну, Марс, Венеру… Кто знает, каким был бы мир тогда? Человечеству дали возможность бороздить космос, но оно хочет заниматься потреблением — пить пиво и смотреть сериалы. Вы особенно не обращайте внимания, это старческое брюзжание (смеётся) — мне же скоро сто лет.

вторник, 5 июня 2012 г.

Список доступных для назначения юзеров в Team Foundation Server

По умолчанию, по крайней мере у меня в списке юзеров для назначения задачи или требования выводятся все юзеры - от нужных до системных (Local service и т.п.). Мешает.

Проблема решается довольно просто - нужно отредактировать файл с описанием этой формы. Редактировать можно через Visual Studio Power Tools.

  1. Ставим на клиента (где стоит VS) эту утилиту
  2. Tools\Process Editor\Work Item Types\Open WIT from server
  3. Выбираем нужный нам тип элемента (задача, требования и т.п.)
  4. Ищем поле "кому назначеное", открываем
  5. Вкладка Rules
  6. Удаляем там два стандартных правила и добавляем своё "ALLOWEDVALUES"
  7. В открывшемся окна добавляем в нижний список список групп, где лежат наши участники:
  8. [Project]\Project Administrators
  9. [Project]\Участники
  10. И ставим галку Explude groups - чтобы не выводились в списке группы
  11. Всё. Закрываем, сохраняем, проверяем
Огромный минус, нужно это делать для каждого поля каждого типа элемента. Но один раз потерпеть можно, если западло не обращать внимание =)

Как придумали духи и про говно =)

Есть такие вещи, которые я терпеть не могу, например духи, парики, соусницы и даже дискотеки. Причём не нравится мне это всё не из-за того, во что сейчас это превратилось, а из-за того, откуда всё это взялось.
Стоит отдать должное Людовикам (14-ому и 16-ому =)), да и вообще всему средневековью, которые всё это нам дали.
Краткое введение. Средневековье, отсутствие какой-либо гигиены, в туалет ходили у городских стен (там были сортиры), отходы сливались в ров вокруг городов. И так годами... Вы всё ещё думаете, что ров вокруг города был только для защиты и наполнялся проточной водой как рисовали в книжках? ;) Ров - обязательное сооружение у любого города того времени, выполняющее функцию канализации! Ну а защита? Ну это просто - кто полезет в ров с говном и мочёй десятилетней выдержки...


В Париже, кстати, был случай, когда кучи отходов за стенами были выше самих стен. Стены надстроили, но не помогло.


Отсюда следует ещё одна вещь - все крутые районы города были максимально далеко от стен/рва из-за запаха, а самый главный (король, царь и т. п.) жил на самом равноудалённом месте (в центре) и на самом высоком, кстати. Высоком - потому, что тогда всё то говно, тёкшее по специальным желобкам по центру тротуаров шло мимо высокого места. Но это не помогало.
Помимо этого было ещё кое-что, что позволило изобрести парик - это почти все знают, поэтому не останавливаемся. Выливание отходов из окна дома было нормальным явлением, его пытались запрещать, потом разрешать и приказывали кричать по три раза предупреждение, но в итоге всё равно изобрели парик, дабы голову дерьмом не марать.


Дерьмо, дерьмо, дерьмо... Откуда его столько? Ну как откуда, антисанитария тесно связана с чем? Диарея - причина и следствие куч говна в те времена (да и до конца 19 века кстати). Диареей страдали все, это было нормально, это сказывалось на архитектуре, моде и т.п.
Архитектура. Нигде, никогда не было туалетов, даже в Версале, да и в любом здании менее крутом подавно. Диарея могла застать внезапно, быстро и безотлагательно. Тогдашняя логика учитывала это и предлагала простое решение - в туалет ходить можно где угодно. Вместо туалетов были просторные залы, тупики, ниши за шторами. А вы думали там шпионы прятались? Не позавидуешь работе, подскользнуться можно.



Кстати, потом таки придумали интересное устройство для туалета - эдакая смесь окна, ниши и туалета:

И более продвинутая версия:



Мода. Диарея и отсутствие санитарии сказалось и на ней. Те же ужасно пышные женские платья использовались для того, чтобы там жила маленькая собачка и не пускала блох. Плюс узкие юбки испачкать можно, когда в туалет ходишь да и люди чего лишнего увидят. Кстати, в те времены не было моды на короткие интимные стрижки по той причине, что с волосами гораздо проще не промазать и не испортить платье. У мужчин же широкие панталоны из одних полосок многослойной ткани - вроди и тела не видно, но в любой момент можно раздвинуть и присесть =).



Кстати о Версале, ну и о Лувре. В туалет там ходили на лестницы, в углы залов и т.п. Даже в окна. Окна специально строились на уровне, простите, жопы, чтобы дамам, которые ходили в туалет, было легко сидеть на подоконнике, вывесив её наружу. Но люди пили, пили много, а следовательно и падали из окон часто. Решение нашли быстро - окна до пола и снизу решёткой выступающей наружу, французский балкончик называется сейчас это.



Удобно, практично, гигенично, безопасно. Ну про то, что в Лувре невыносимо воняло дерьмом хотят легенды. Раз 1-3 месяца все выезжали и дворец мыли. Но это не спасало. Можно запросто найти историй про то, как послам во дворце становилось плохо от вони, они выходили в сад, а там они вообще теряли сознание.
Когда люди начали хоть как-то думать о гигиене, да и просто чтоб соседние платья не пачкать на многочасовых (более 5-6 часов) выступлениях Людовика стали появляться специальные женские туалеты в виде нынешних соусниц. Присел, между ног зажал, не брызнает, обхватывает по всему периметру, большой объём. Удобно, одним словом! Позже появились даже подобия современных биотуалетов - переносные стулья с нишами для говна. Появился особый вид приёмов - с королём на туалете (это придумал король Франсуа в 16 веке).
А теперь о тротуарах. Средневековье изобрело крутую вещь - желоба. Хоть для отходов, хоть для питьевой воды они были очень удобны. На тротуарах были желоба для отходов прямо по середине тротуара. Скажете неудобно, почему не сбоку? Как бы не так, а как тогда в туалет ходить на тротуаре? Я серьёзно. Помимо плюсов в виде возможности быстро (диарея!)сходить по нужде, это ещё и давало минусы - женские платья постоянно пачкались в дерьме из этих желобов. Вот так и появились духи, ведь невозможно же стирать платье после каждого выхода на улицу, тем более мылись в те времена редко - 1-2 раза в год, да и то в фонтанах (поэтому их много раньше было), а бань не было - церковь не велит =).

Гороховый суп



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

Старт. Два варианта с 1.5 стаканами гороха:

  1. Замочить горох на ночь и потом варить его 1 час
  2. Забить с замачиванием, но варить 2 часа.

Варим в небольшом количестве воды, на 1-2 сантиметра выше слоя гороха. Периодически доливаем кипятка.

За 15-20 минут до готовности гороха, начинаем жарить мелко нарезанные овощи: морковь, сельдерей, лук, порей. Пассеруем на медленном огне, чтобы ничего не подгорело и даже не зарумянилось - главное чтоб размягчилось. Для пущего вкуса можно перед жаркой растопить в сковородке сала.
В качестве опции в конце жарки добавляем грудинку, копчёные рёбрышки или любое другое копчёное мясо.
Потом всё вываливаем в горох, который к этому моменту уже почти разварился. Доливаем кипятка литра два, тут уже на ваш вкус по консистенции.
За 5 минут до готовности кладём лаврушку, через пару минут чабрей, зиру и чёрный перец. Потом вынимаем лаврушку и кладём толчёный чеснок с солью.
Всё.

Если хочется что-то более кремообразное, то поджариваем столовую ложку муки до коричневатого цвета и кидаем в суп.
Если хочется ярче, то кидаем треть чайной ложки куркумы (не карри! =) ).

Подавать обязательно с луком и укропом. Можно гренки сделать, пожарив кусочки белого хлеба в сковородке.

среда, 30 мая 2012 г.

Отправка письма через SMTP Google


var smtp = new SmtpClient("smtp.gmail.com", 587);
smtp.UseDefaultCredentials = false;
smtp.Credentials = new NetworkCredential("LOGIN@gmail.com", "PASSWORD");
smtp.EnableSsl = true;
var msg = new MailMessage("FROM@gmail.com", " TO@gmail.com ", "test", "body");
smtp.Send(msg);

Порт 587, не 465!!! Как задолбало каждый раз попадать в одну и ту же ловушку с портом.


Для быстрой проверки можно через PowerShell:

$smtp = New-Object System.Net.Mail.SmtpClient("smtp.gmail.com", 587);
$smtp.UseDefaultCredentials = "False";
$smtp.Credentials = New-Object System.Net.NetworkCredential("LOGIN@gmail.com", "PASSWORD");
$smtp.EnableSsl = "True";
$msg = New-Object System.Net.Mail.MailMessage("FROM@gmail.com", "TO@gmail.com", "test", "body");
$smtp.Send($msg);

вторник, 29 мая 2012 г.

Как посмотреть, где используется тип содержимого SharePoint

Бывает, что при удалении типа содержимого (content type) SharePoint 2007 вылезает ошибка:
Этот тип содержимого сейчас используется.
The content type is in use.


А вот где он используется - непонятно, средств посмотреть нет.
Как ни странно, в контентной БД (WSS_Content) есть процедуры для этого:
[proc_ListContentTypeInUse] 'SiteId', ContentTypeId

ContentTypeId получаем так:
Заходим в параметры узла, Коллекции -> Типы содержимого узла, заходим в нужный тип содержимого и смотрим URL.
http://portal/_layouts/ManageContentType.aspx?ctype=0x010100C568DB52D9D0A14D9B2FDCC96666E9F2007948130EC3DB064584E219954237AF39&Source=http%3A%2F%2Fzdrav%2Emonitoring%2Dmsk%2Eru%2F%5Flayouts%2Fmngctype%2Easpx
Нас интересует значение ctype, это и есть ContentTypeId :
0x010100C568DB52D9D0A14D9B2FDCC96666E9F2007948130EC3DB064584E219954237AF39

SiteId можно получить так:

SELECT SiteId, sys.fn_varbintohexstr(ContentTypeId) AS ID, WebId, ListId, IsFieldId, Class
FROM ContentTypeUsage
WHERE (sys.fn_varbintohexstr(ContentTypeId) LIKE '[ContentTypeID]%')

Выполняем:

SELECT SiteId, sys.fn_varbintohexstr(ContentTypeId) AS ID, WebId, ListId, IsFieldId, Class
FROM ContentTypeUsage
WHERE (sys.fn_varbintohexstr(ContentTypeId) LIKE '0x010100C568DB52D9D0A14D9B2FDCC96666E9F2007948130EC3DB064584E219954237AF39%')

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

Всё, теперь выполняем proc_ListContentTypeInUse, например, так:
[proc_ListContentTypeInUse] 'C135DCB5-6116-4033-9140-44EEA2A45F31', 0x010100C568DB52D9D0A14D9B2FDCC96666E9F2007948130EC3DB064584E219954237AF39


И мы видим, где используется искомый тип содержимого!



пятница, 11 мая 2012 г.

Embarcadero RAD Studio XE2



Понадобилось тут по леваку в Дельфи поработать, решил глянуть что Embarcadero там намутили за последние пару лет. Оказалось "ну нифига себе", а я то думал они там загибаются и еле ноги волочат.

Наконец:
  • 64 бита
  • MacOS (причём проект может быть один, только компилятор поменять)
  • Мобильные приложения (Android, iOS)
  • FireMonkey (аналог WPF)

Прям получается что охват-то пошире будет, чем у Visual Studio...

На удивление дело живёт и развивается, теперь посомтрим как всё запустится на Windows 8 для пущего извращения =)



вторник, 3 апреля 2012 г.

Как удалить веб-часть со страницы, если страница не открывается в SharePoint 2007

Часто бывает так, что настроили веб-часть, применили, опубликовали и тут бац и страница издохла.


Чтобы это починить, нужно грохнуть веб-часть, которая рушит страницу, для этого просто к адресу странциы добавляем "?Contents=1"

.../Pages/default.aspx -> .../Pages/default.aspx?Contents=1

И попадаем на страницу сопровождения веб-частей, где можно выделить и удалить нужную веб-часть.

пятница, 9 марта 2012 г.

Компонент "2510d73f-7109-4ccc-8a1c-314894deeb3a" для шаблона списка "433" не установлен в этой ферме.

При переносе сервера возникла ошибка на страницах вывода отчётов Reporting Server:

Сервер отчетов обнаружил ошибку SharePoint. (rsSharePointError)
Компонент "2510d73f-7109-4ccc-8a1c-314894deeb3a" для шаблона списка "433" не установлен в этой ферме. Завершить операцию не удалось. 


Feature '2510d73f-7109-4ccc-8a1c-314894deeb3a' for list template '433' is not installed in this farm.

Лечится легко, переустановкой фичи:

stsadm -o uninstallfeature -force -name ReportListTemplate 
а потом
stsadm -o installfeature -force -name ReportListTemplate 

Ошибка скорей всего возникает из-за смены в механизмах аутентификации NTLM <-> Kerberos



вторник, 6 марта 2012 г.

Пришла весна!

Долго спал медведь в берлоге,
Всё воняет - руки, ноги;
Жопа преет, спину крючит,
Хрен вспотел, животик пучит,
Глаз заплыл, замёрзли пальцы,
Сопли прут, распухли яйца,
Но мораль уже ясна - хватит спать!
ПРИШЛА ВЕСНА!!

ПМС



Самый лучший совет: соберите вещи и уйдите из дома. На несколько дней. В тайгу. Телефон держите включённым. Парадокс в том, что вас будут ненавидеть, но при этом будут искать. Не спрашивайте, просто поверьте.

Если ПМС застал вас неожиданно и из дома уйти всё же не удалось... Займите оборонительную позицию. Забаррикадируйтесь где-нибудь в тихом, укромном месте. Оккупируйте как можно меньше пространства. Например за батареей. Или на антресолях. Оттуда вас будет труднее выковыривать длинным твердым предметом.

В разговоры не вступайте. На вопросы отвечайте коротко, чётко, быстро. “Да”, “нет”. Лучше “да”. Избегайте намёков. Ваши слова не должны иметь второго смысла. А желательно и первого. Вообще.

В глаза не смотрите. Следите за своей мимикой. ("Я не умею!" - не оправдание. У вас был месяц потренироваться). Помните, ваша поднятая бровь - диверсия. Две поднятые брови - теракт. Кривая усмешка - объявление войны.

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

Помните: сиденье унитаза должно быть всегда опущено. И при этом сухое. (“Как это?” - не аргумент. У вас был месяц потренироваться).

Важно! Других женщин не существует. Буквально. Совсем. Нет, вам показалось. В минуты сомнения вспоминайте о длинном твёрдом предмете.

Запомните следующие фразы. Не спрашивайте - что они означают, просто заучите: “Да, люблю”, “Нет, не забыл“, “Конечно помою”, “Ни о чём не думаю”. Произносите их когда другие слова закончились. Или когда поблизости нет балкона.

Когда первый кризис пройдет, сделайте ей приятное. Утром, пока она спит, приготовьте ей завтрак. Желательно что-нибудь лёгкое, успокаивающее. Например, кусок сырого мяса и стакан свежевыжатой крови. И обратно на антресоли.

И помните - когда-нибудь это обязательно закончится. Совсем-совсем скоро. Вот увидите. И тогда у вас будет еще месяц потренироваться. 

четверг, 1 марта 2012 г.

SharePoint guideline for optimum performance


ObjectScopeGuideline for optimum performanceComment
Site collections
Database
50,000
Total throughput degrades as the number of site collections increases.
Web sites
Web site
2,000
The interface for enumerating subsites of a given Web site does not perform well much beyond 2,000 subsites.
Web sites
Site collection
250,000
You can create a very large total number of Web sites by nesting the subsites. For example, 100 sites each with 1000 subsites is 100,100 Web sites.
Documents
Folder
2,000
The interfaces for enumerating documents in a folder do not perform well beyond a thousand entries.
Documents
Library
2 million
You can create very large document libraries by nesting folders.
Security principals
Web site
2,000
The size of the access control list is limited to a few thousand security principals, in other words users and groups in the Web site.
Users
Web site
2 million
You can add millions of people to your Web site by using Microsoft Windows security groups to manage security instead of using individual users.
Items
List
2,000
The interface for enumerating list items does not perform well beyond a few thousand items.
Web Parts
Page
100
Pages with more than 100 Web Parts are slow to render.
Web Part personalization
Page
10,000
Pages with more than a few thousand user personalizations are slow to render.
Lists
Web site
2,000
The interface for enumerating lists and libraries in a Web site does not perform well beyond a few thousand entries.
Document size
File
50 MB
The file save performance degrades as the file size grows. The default maximum is 50 MB. This maximum is enforced by the system, but you can change it to any value up to 2 GB (2047 MB) if you have applied Windows SharePoint Services Service Pack 1. For more information, see "Configuring large file support" in Installing and Using Service Packs for Windows SharePoint Services 2.0.