Powershell script, executing commands to lots of files
Following powershell script goes recursively the folder “J:\pictures” and converts all avi file to mp4 files. It uses ffmpeg (remember to download newest binary)
I couldn’t get invoke-expression to work (it gave some error about “-” operator), so I just sticked all the commands to a text file d:\commands.txt and run it as a normal batch script.
I used this script to convert lots of videos shot with my camera to more compatible format.
"" > d:\commands.txt
foreach ($file in get-childitem "j:\pictures" -recurse -include "*.avi"){
$ffmpegprog = "`"C:\Program Files (x86)\WinFF\ffmpeg.exe`"";
$ffmpegparams = " -threads 2 -f mp4 -vcodec libx264 -b 1500k -flags +loop -cmp +chroma -deblockalpha 0 -deblockbeta 0 -b 1500k -maxrate 2000k -bufsize 4M -bt 256k -refs 1 -bf 3 -coder 1 -me_method umh -me_range 16 -subq 7 -partitions +parti4x4+parti8x8+partp8x8+partb8x8 -g 250 -keyint_min 25 -level 30 -qmin 10 -qmax 51 -qcomp 0.6 -trellis 2 -sc_threshold 40 -i_qfactor 0.71 -acodec aac -ab 256k -ac 2 -ar 44100";
$command = ($ffmpegprog + " -i `"" + $file.FullName + "`"" + $ffmpegparams + " `"" + [System.IO.Path]::ChangeExtension($file.FullName, ".mp4") + "`"");
$("$command") >> D:\commands.txt
}
You can just copy-paste the file to a powershell window.
For some reason direct execution of the commands.txt batch file didn’t work so you can just run it throught type
type d:\commands.txt > d:\commands.bat
USB Drive letters changing in Windows?
Try this program:
USBDLM
It allows user to make ntfs folder mounts automatically, similar to unix systems.
[Settings]
DeleteMountPointsOnRemoval=1
WriteDebugInfo=1
LogLevel=3
WriteLogFile=1
LogFile=D:\Apps\USBDLM\USBDLM.LOG
;
;Remove unused folder mounts
[DeleteUnusedNtfsMountpoints]
Folder1=C:\mount\
;
;If drive has usbdlm.ini file, use it! Otherwise assign drive letter manually
;Not that by default this works only for USB drives, add BusType definitions
;to process Firewire drives too
[DriveLetters]
Letters=%drive%\usbdlm.ini
Letter1=H
Letter2=I
Letter3=J
Letter4=K
Letter5=L
Letter6=N
;
;If you want to hide particular devices from "safe remove" hardware dialog
;[HideFromSafelyRemoveHardware]
;DeviceID1=USB\VID_0424&PID_2228\26020128B005
;DeviceID2=USB\VID_0424&PID_2602\6&1B3E90B3&0&1
Now, the usb drive should have a configuration file, usbdlm.ini, with the following contents:
[DriveLetters]
Letter1=C:\mount\usbdrive
Much more information is found in the program manual.
ASP.NET Tracing ja System.Diagnostics Tracing
Miten saada ASP.Netin trace logit ylös?
Pitää kääntää sivut käyttäen trace define-vipua eli seuraavat attribuutit pitää lisätä kääntäjille (system.codedom/compilers/compiler) web.config-asetustiedostossa
c#: compilerOptions="/d:TRACE"
vb:compilerOptions="/d:Trace=true"
Sen lisäksi tietenkin tracekuuntelijat:
<system.diagnostics>
<trace autoflush="true">
<listeners>
<add name="WebPageTraceListener"
type="System.Web.WebPageTraceListener, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
<add name="TestTracer"
type="System.Diagnostics.TextWriterTraceListener, System, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
initializeData="Asptesttrace.log" />
</listeners>
</trace>
lähde:
Walkthrough: Integrating ASP.NET Tracing with System.Diagnostics Tracing
BackgroundWorker ei kaappaa poikkeuksia DoWork-metodin sisällä jos ohjelmaa ajetaan debug-moodissa VS:llä
BackgroundWorker ei kaappaa poikkeuksia DoWork-metodin sisällä jos ohjelmaa ajetaan debug-moodissa VS:llä. Poikkeuksethan pitäisi pystyä käsittelemään RunWorkerCompleted-eventhandlerin avulla (e.Error)
Syynä on se, että VS on kovin innokas varastamaaan lentävän poikkeuksen.
Korjaus:Jotta ohjelma käyttäytyisi debug-moodissa kuten release-moodissa pitää DoWork-metodi koristella [System.Diagnostics.DebuggerNonUserCodeAttribute()] attribuutilla. esim
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
void worker_DoWork(object sender, DoWorkEventArgs e)
{
…
}
lähde:
ASP.NET MVC Preview 2
Latasin ja asensin MVC Preview 2:n (saatavilla asp.net -sivulta). Release noteissa sanotaan ettei toimi asp.net AJAX:n kanssa.
Harmi.
sen verran iso puute tuo on, että en tiedä jaksaako leikkiä tuolla pidempään.
featureita, jotka pisti kuitenkin silmään:
- Viewien cacheaminen yhdellä koodi-attribuutilla.
- helppo unit testaus
Virallista RTM-päivää ei MVC:lle ole, veikattu on 2008Q3-Q4.
DateTime parsimisesta
| format specifier | selite |
| yy,yyyy | vuodet |
| M, MM | kuukaudet |
| d, dd | päivät |
| H, HH | tunnit |
| m, mm | minuutit |
| s, ss | sekunnit |
| f,ff,fff,ffff | sekunnin murto-osa (eri tarkkuuksia) |
| \” | teksti |
| ‘ | teksti |
| : | aika-erotin |
| / | päivämäärä-erotin |
Lisää tietoa löytyy MSDN:stä:
Standard DateTime Format Strings
Custom DateTime Format Strings
Yleisimpiä formaatteja
yyyy’.'MM’.'dd
yyyy’-'MM’-'dd
yyyy’-'MM’-'dd’ ‘HH’-'MM’-’ss
yyyy’-'MM’-'dd’ ‘HH’:'MM’:’ss
yyyyMMdd
dd’.'MM’.'yyyy
dd’-'MM’-'yyyy’ ‘HH’:'MM’:’ss
ddMMyyyy
msxml4 ongelmanratkaisua
Jos käy niin, että msxml4 sp2 kirjastoa käytettäessä dokumentin loadaus onnistuu näennäisesti oikein (ei herjoja) mutta documentElement on null/nothing, saattaa syynä olla parseError
1: set source2 = Server.CreateObject("MSXML2.DOMDocument.4.0")
2: source2.async = false
3: source2.load("c:files.xml")
4: set sourceRoot2 = source2.documentElement
5: 'nyt tässä vaiheessa sourceRoot2 on nothing,'mutta source2 ei ole.
6: 'tarkasta aina parseError seuraavasti
7: if source2.parseError then
8: response.write source2.parseError.reason
9: response.end
10: end if
11: ...
Minulla oli eräs tilanne, että xml oli linkattu schemaan xsi:noNamespaceSchema attribuutilla, ja msxml tarkasti automaattisesti xmlää schemaa vasten. Vastaisuudessa kyllä laitan aina virheentarkistukset niin ei tarvitse tulkita outoja virheilmoituksia.