Blog se mi konečně podařilo přesunout na vlastní doménu pavelnovotny.info, respektive se mi podařilo dokopad sebe sama, prozkoumat alternativy blogovacích nástrojů a pustit se do toho. Nakonec jsem použil BlogEngine.NET, hlavně pro svoji rychlou a snadnou instalaci, konfiguraci, skinovatelnost – vše bez nutnosti hlubokého zkoumání dokumentace, šlo to tak nějak samo.
Author: novotny@pavelnovotny.info
Vyšla nová verze SharePoint Server 2007 SDK 1.4
Vyšla nová verze SDK pro SharePoint Server 2007, stahujte zde http://www.microsoft.com/downloads/details.aspx?FamilyId=6D94E307-67D9-41AC-B2D6-0074D6286FA9&displaylang=en
netsh winsock reset – Resetování Winsock katalogu řeší problém s připojením do sítě a nefunkčním internetem
Příkaz netsh winsock reset je dostupný v edicích Windows XP, Vista, 2003 Server, 2008 Server.
Problém se může vyznačovat:
– Internet nebo síťové připojení přestalo fungovat po odinstalování nebo manuálním smazání adwaru, spywaru, virusu, wormu, trojského koně atd.
– ICQ funguje, ale nejdou zobrazit žádné web stránky
– Různé programy zobrazují dialogy s chybou připojení k internetu
– DNS klient nefunguje, nejdou přeložit doménová jména na IP adresy
– Nepřiřazuje se automaticky IP adresa, DHCP nefunguje správně
– Připojení k internetu je omezené, některé domény nefungují vůbec
Řešením je spustit právě příkaz pro resetování katalogu Winsock:
- Spustit příkazovou řádku pod uživatelským účtem administrátora PC
- Napsat příkaz „netsh winsock reset“ a stisknout Enter
- restartovat počítač
nebo si stáhnout a spustit malou aplikaci řešící předchozí kroky automaticky: http://www.snapfiles.com/get/winsockxpfix.html
Hyper-V Monitor Gadget for Windows Sidebar
Našel jsem mikro utilitku pro rychlý přehled stavu VPC v Hyper-V serveru pomocí rozšíření do Sidebaru
Ke stažení zde: http://mindre.net/post/Hyper-V-Monitor-Gadget-for-Windows-Sidebar.aspx
Version history
3.2 (01.07.2008)
– Fixed a bug with VM Control not using the custom credentials
3.1 (01.07.2008)
– Added support for custom credentials
3.0 (30.06.2008)
– Hyper-V Manager installation is now detected automaticly
– You can now open Hyper-V Manager by clicking on the server name
– You can now select either Single or Double Click action for links and buttons
– Added a new feature (WM Control) that allows you to control the VM's
directly in the gadget (Turn Off, Shut Down, Save and Start)
– Added highlight text to the VM Control buttons (The gadget need to be focused to show them)
– Fixed a bug if you happened to have two VM's with the same name on the same server
– Fixed javascript errors
2.3 (24.06.2008)
– VM's are now sorted alphabetically
2.2 (21.06.2008)
– Minor changes in the settings dialog
2.1 (21.06.2008)
– First public version
Programové nastavení UseUnsafeHeaderParsing
Vzhledem k častému rozpadání spojení při volání některých java webservices serverů je nutné buď vypnout keep alive nebo nastavit useUnsafeHeaderParsing. První metoda výrazným způsobem ovlivní výkon, protože se při každém requestu znovu navazuje tcp spojení, druhá se zase doporučuje pouze u „bezpečných“ serverů, u kterých nehrozí nebezpečí útoků pomocí přetečení bufferu.
V případě projektů, při kterých je i server v naší režii, je určitě lepší cesta nastavením useUnsafeHeaderParsing, to je možné jak v app.config, tak i programově pomocí reflexe:
Nastavení v app.config:
<system.net> <settings> <httpWebRequest useUnsafeHeaderParsing = "true"/> </settings> </system.net>
Programové nastavení pomocí reflexe:
[more]
public static bool SetAllowUnsafeHeaderParsing() { Assembly aNetAssembly = Assembly.GetAssembly( typeof(System.Net.Configuration.SettingsSection)); if (aNetAssembly != null) { Type aSettingsType = aNetAssembly.GetType( "System.Net.Configuration.SettingsSectionInternal"); if (aSettingsType != null) { object anInstance = aSettingsType.InvokeMember("Section", BindingFlags.Static | BindingFlags.GetProperty | BindingFlags.NonPublic, null, null, new object[] { }); if (anInstance != null) { FieldInfo aUseUnsafeHeaderParsing = aSettingsType.GetField( "useUnsafeHeaderParsing", BindingFlags.NonPublic | BindingFlags.Instance); if (aUseUnsafeHeaderParsing != null) { aUseUnsafeHeaderParsing.SetValue(anInstance, true); return true; } } } } return false; }
Script pro restartování Mikrotiku každý den v určitou hodinu
Jsem zatím Mikrotik začátečník, ale věřím, že to někoho stejně jako mě může potešit:
/system scheduler add name="Restartovani" on-event="/system reboot" start-date=jan/01/1970 start-time=00:10:00 interval=1d comment="" disabled=no
Klávesové zkratky RDP
Zkratka | Popis |
CTRL+ALT+END | Zobrazí Task Manager (ekvivalent CTRL+ALT+DEL) |
ALT+PAGE UP | Přepíná programy z leva do prava |
ALT+PAGE DOWN | Přepíná programy z prava do leva |
ALT+INSERT | Přepíná mezi často používanými programy |
ALT+HOME | Zobrazí Start menu. Ve fullscreen zobrazení však tlačítko Windows funguje normálně. |
CTRL+ALT+BREAK | Přepínání mězi window a fullscreen módem |
CTRL + ALT + MINUS (–) | Uložení screenshotu aktivního okna do schránky (ekvivalent ALT+PRINT SCREEN) |
CTRL + ALT + PLUS (+) | Uložení screenshotu celé obrazovky do schránky (ekvivalent PRINT SCREEN) |
ALT+HOME | Zobrazí Start menu, funkguje pouze pokud není ve fullscreen módu |
Segway postavený na koleně v garáži
Již dlouho jsem nadšený fanda vozítek Segway, zatím však žádné
nevlastním, protože cena srovnatelná s novým automobilem mi nepřipadá vůbec
adekvátní, bohužel vlivem licenčních politik firmy a platných
patentů se v brzké době jiný levnější Segway na trhu neobjeví 🙁
Trevor
Blackwell si svůj Segway postavil doma a svůj výrobní postup zveřejnil
na svém webu. Hlavním mozkem je 8-bit. controller firmy Atmel, který
vyhodnocuje vstupní informace z gyroskopu a podle toho ovládá oba
motory, SW psal v jazyce C a jak on sám uvádí, kód má cca 500 řádků,
škoda jen, že ho nezveřejnil celý 🙂 Na druhou stranu, každý si alespoň
při jeho psaní na vlastní kůži uvědomí, jaké následky může takový bug 🙂
Stránky Trevora: http://www.tlb.org/scooter.html
Kdyby se někdo rozhodl, že si rovněž postaví vlastní Segway, moc rád uvítám jeho fotky nebo poznatky.
DirectorySearcher vrací maximálně 1000 záznamů
MSDN dokumentace neobsahuje příliš mnoho informací k tomuto problému, naštěstí v diskustní skupině to již někdo řešil.
Objekt DirectorySearcher obsahuje dvě klíčové vlastnosti:
PageSize – defaultně nastaveno na 0 – bez stránkování, určuje počet záznamů v jednom interním requestu na server, o „stránkování“ se stará sám objekt vyhledávače.
SizeLimit – defaultně 1000, maximální počet vrácených záznamů
Při defaultním nastavení nikdy nevrátí více než 1000 záznamů, protože v tom případě vyhledávač nestránkuje. Pokud jste si mysleli, že stačí SizeLimit změnit na vyšší hodnotu, tak jste se spletli. Snad jediná možná cesta je změnit PageSize, aby došlo ke stránkování, ale zde je další vtip dokumentace, nikde nenajdete, ze PageSize musí být z intervalu 0-1000 a už vůbec to, že pokud nastavíte hodnotu 1000, opět nedojde ke stránkování a DS vrátí pouze 1000 záznamů – to považuji snad za bug… Správna cesta je nastavit PageSize na menší hodnotu, například 999, následně již obdržíte záznamy všechny…
Příklad načtení všech uživatelů z LDAPu:
DirectorySearcher mySearcher = new DirectorySearcher(rootEntry); mySearcher.Filter = "(&(objectCategory=Person)(objectClass=User))"; mySearcher.PropertiesToLoad.Add("cn"); mySearcher.PropertiesToLoad.Add("objectClass"); mySearcher.PropertiesToLoad.Add("sAMAccountName"); mySearcher.PageSize = 999; SearchResultCollection mySearcherSearchResult = mySearcher.FindAll();
Zobrazení call stack při chybě
Sharepoint standardně při vzniku exception zobrazuje pouze její message, nikoliv i kompletní call stack, pro zobrazení všech detailů je potřeba modifikovat web.config následovně:
<customErrors mode="Off" /> <compilation debug="true">
a ještě:
<SafeMode MaxControls="200" CallStack="true" DirectFileDependencies="10" TotalFileDependencies="50" AllowPageLevelTrace="false">
nebo ještě lepší způsob je mofikace systémovými prostředky Sharepointu, tedy prostředníctvím objektu SPWebConfigModification:
SPWebApplication webApp = siteCollection.WebApplication; SPWebConfigModification callStackModification = new SPWebConfigModification("CallStack", "configuration/SharePoint/SafeMode"); callStackModification.Value = "true"; callStackModification.Owner = typeof(Program).FullName; callStackModification.Sequence = 0; callStackModification.Type = SPWebConfigModification.SPWebConfigModificationType.EnsureAttribute; SPWebConfigModification customErrorsModification = new SPWebConfigModification("mode", "configuration/system.web/customErrors"); customErrorsModification.Value = "Off"; customErrorsModification.Owner = typeof(Program).FullName; customErrorsModification.Sequence = 1; customErrorsModification.Type = SPWebConfigModification.SPWebConfigModificationType.EnsureAttribute; SPWebConfigModification debugModification = new SPWebConfigModification("debug", "configuration/system.web/compilation"); debugModification.Value = "true"; debugModification.Owner = typeof(Program).FullName; debugModification.Sequence = 2; debugModification.Type = SPWebConfigModification.SPWebConfigModificationType.EnsureAttribute; webApp.WebConfigModifications.Add(callStackModification); webApp.WebConfigModifications.Add(customErrorsModification); webApp.WebConfigModifications.Add(debugModification); webApp.Farm.Services.GetValue<SPWebService>().ApplyWebConfigModifications(); webApp.Update();