Category Archives: Technology

Get Yesterday’s date in MS DOS Batch file

A useful snippet of DOS Batch Scripting to get yesterday’s date (or any other historical date for that matter). Very useful to then use with other DOS commands like xcopy or forfiles.

Linux though, it’s a hell of a lot user, just add options to the find command

@echo off
set yyyy=
set $tok=1-3
for /f "tokens=1 delims=.:/-, " %%u in ('date /t') do set $d1=%%u
if "%$d1:~0,1%" GTR "9" set $tok=2-4
for /f "tokens=%$tok% delims=.:/-, " %%u in ('date /t') do (
for /f "skip=1 tokens=2-4 delims=/-,()." %%x in ('echo.^|date') do (
set %%x=%%u
set %%y=%%v
set %%z=%%w
set $d1=
set $tok=))
if "%yyyy%"=="" set yyyy=%yy%
if /I %yyyy% LSS 100 set /A yyyy=2000 + 1%yyyy% - 100
set CurDate=%mm%/%dd%/%yyyy%
set dayCnt=%1
if "%dayCnt%"=="" set dayCnt=1
REM Substract your days here
set /A dd=1%dd% - 100 - %dayCnt%
set /A mm=1%mm% - 100
:CHKDAY
if /I %dd% GTR 0 goto DONE
set /A mm=%mm% - 1
if /I %mm% GTR 0 goto ADJUSTDAY
set /A mm=12
set /A yyyy=%yyyy% - 1
:ADJUSTDAY
if %mm%==1 goto SET31
if %mm%==2 goto LEAPCHK
if %mm%==3 goto SET31
if %mm%==4 goto SET30
if %mm%==5 goto SET31
if %mm%==6 goto SET30
if %mm%==7 goto SET31
if %mm%==8 goto SET31
if %mm%==9 goto SET30
if %mm%==10 goto SET31
if %mm%==11 goto SET30
REM ** Month 12 falls through
:SET31
set /A dd=31 + %dd%
goto CHKDAY
:SET30
set /A dd=30 + %dd%
goto CHKDAY
:LEAPCHK
set /A tt=%yyyy% %% 4
if not %tt%==0 goto SET28
set /A tt=%yyyy% %% 100
if not %tt%==0 goto SET29
set /A tt=%yyyy% %% 400
if %tt%==0 goto SET29
:SET28
set /A dd=28 + %dd%
goto CHKDAY
:SET29
set /A dd=29 + %dd%
goto CHKDAY
:DONE
if /I %mm% LSS 10 set mm=0%mm%
if /I %dd% LSS 10 set dd=0%dd%
REM Set IIS and AWS date variables
set IISDT=%yyyy:~2,2%%mm%%dd%
set AWSDT=%yyyy%-%mm%-%dd%

PowerCram: Get Yesterday’s date in MS DOS Batch file.

Custom URLs in Chromium (Edited)

I’ve been tinkering with Second Life and Spotify on Linux, and discovered there’s a known bug in XDG whereby it complains when you try to access a custom protocol link (e.g. secondlife:// or spotify://) that is already registered within XDG. There’s a (rather cumbersome) way of getting around it, if you’re using Chromium (probably works with Chrome, but I haven’t tried it) First step, add a mime desktop entry – usually in ~/.local/share/application/. This entry must contain a MimeType entry, and a NoDisplay entry. Use the %u to pass the url. This desktop entry will NOT be visible on the menus, and is solely to “connect” to the application you want to invoke when the link is clicked. This example is using the Singularity viewer as an example.

[Desktop Entry]
 Name=Singularity
 Comment=Client for Online Virtual Worlds, such as Second Life
 Exec=~/.singularity-install/handle_secondlifeprotocol.sh %u
 Icon=~/.singularity-install/singularity_icon.png
 Terminal=false
 Type=Application
 Categories=Application;Network;
 StartupNotify=true
 X-Desktop-File-Install-Version=3.0
 MimeType=x-scheme-handler/x-secondlife-url
 NoDisplay=true

Next, inside the program you are calling, you may need to do some manipulation of the passed URL as it will come with escapes (e.g. %20 = space).  See later in the post for an example

Finally, make Chromium aware of this new handler, by editing the Chromium preferences, found in (for the Default user), in ~/.config/chromium/Default/Preferences. Chromium must be closed for this to work, or you will lose your changes. In the Preferences file, add this block of code:

"custom_handlers": {
 "enabled": true,
 "ignored_protocol_handlers": [ ],
 "registered_protocol_handlers": [ {
 "default": true,
 "protocol": "secondlife",
 "title": "Second Life",
 "url": "x-secondlife-url:%s"
 } ]
 },

Note the trailing comma, and the url must be prefixed with the mime type you declared in the desktop entry. Start up Chromium afterwards, then click the link. When you click on the link, Chromium gets the link, finds there is a custom handler (in Preferences file), passes it to the mime desktop link you created (which contains the mime type), finds the program to use from the desktop link, and passes the url to the program using the arguments you specified.

Here’s an example of what I mean by manipulating of the passed URL. This is the script from the Firestorm Viewer. Singularity uses a VERY similar script so the code should be nearly interchangeable. I have hacked this script (changes I have made are in bold) so that it works with SLURLs (Second Life URLs)  with both spaces, and prefixed with “app/region”

#!/bin/bash

URL="$1"
NEWURL=$(echo $URL| perl -pe 's/^x-secondlife-url://; tr/+/ /; s/%([a-fA-F0-9]{2,2})/chr(hex($1))/eg;')
URL=echo $NEWURL | sed 's/secondlife:\/\///g' | sed 's/\/app\/region\///g'
if [ -z "$URL" ]; then
#echo Usage: $0 secondlife://...
echo "Usage: $0 [ secondlife:// | hop:// ] ..."
exit
fi
RUN_PATH=
dirname "$0" || echo .
#cd “${RUN_PATH}/..”
cd “${RUN_PATH}”
#exec ./firestorm -url \'”${URL}”\’
if [ pidof do-not-directly-run-firestorm-bin ]; then
exec dbus-send –type=method_call –dest=com.secondlife.ViewerAppAPIService /com/secondlife/ViewerAppAPI com.secondlife.ViewerAppAPI.GoSLURL string:$URL
else
exec ../firestorm -url $URL
fi

Bad Tech: Biggest tech lies we all fall for | T3

Tech lies we all fall for

  1. Facebook statuses saying “I’m Poorly”
  2. Sat-Nav Directions (I can relate to this)
  3. “Full Mailbox” warning
  4. Washing Machine time
  5. Microwave cooking time
  6. “Best Venues” apps
  7. Any recommendation
  8. Heart rate/Calorie monitors
  9. A rich friend saying he’s broke
  10. Running Apps

Interestingly, the last one caught my attention. Here’s the main description:

Recently two members of Team T3 did the same half marathon using the same training plan with the same app. They trained twice together and noticed one of them was recording about a mile less than the other each time. There was no way to test who was being short-changed in their preparation until race day, when one of them hadn’t done enough training and nearly died in the last couple of miles. Lesson: don’t trust apps, trust watches.

“Don’t trust apps, trust watches”? I kind of expected that. After all, a phone is not built to be used as a GPS receiver (even though it is a function), whereas a GPS watch is designed for that function. I have run with the Nike+ app and my SportWatch on at the same time, and have noticed a difference of around 0.2 to 0.25 km between the two. Most of the time the app clocks up more mileage than the watch, but I trust the watch more because it is a dedicated GPS receiver.

Bad Tech: Biggest tech lies we all fall for | T3.

Why I quit Facebook and we are sharing much more than you think | LinkedIn

 

Are you still on Facebook? Take  a read of this guy’s experience, who setup shop on FB back in 2007.

Why I quit Facebook and we are sharing much more than you think | LinkedIn.

The Top Programming Languages, Ranked by Job Demand, Popularity, More

Apparently, the most sought after language is Java. Not that surprising considering it powers quite a few things, including Android and anything running Android (well, to a point, I guess since it doesn’t run Java in the same way that you would run the JVM on, say, your desktop.) Still, gives me a reason to brush up on it. And perhaps work towards a Java certification. I did have J2CP, but that was years ago, so I’m not sure if it is even valid any more.

Although it surprises me a little that Ruby and Perl aren’t on this list.

The Top Programming Languages, Ranked by Job Demand, Popularity, More.

ecryptfs Setup

Some ecryptfs sites for reference, in reference to previous post.

In particular, use of the Private directory is the simplest setup as it encrypts stuff inside a known folder, leaving it in a scrambled state when you are not logged in, so that no-one can get at it.

If you only need access to those files on an occasional basis, then using the mount option is better.

File-Level Encryption in Linux Using ecryptfs

TrueCrypt Logo

With the NSA spying scandal, all eyes are on ways to stop the surveillance and protect privacy. Campaigns such as Reset the Net have been used to encourage and push sites and people to amp up their security methods. Disasters such as Heartbleed shows what happens if security is compromised, whether intentionally or accidentally

I used to use TrueCrypt to allocate a virtual hard disk and put my private files in that. One of the benefits of this was that TrueCrypt also supported full disk encryption and Plausible Deniability (e.g. hiding an OS within another OS). However, one of the most frustrating parts of TrueCrypt is that you allocate space and any space you do not use is lost. e.g. if you allocate 10GB, but use only 1GB, there is still 9GB left that allocated to the TrueCrypt volume, but cannot be used by the unencrypted space.

Unfortunately, I recently found out that TrueCrypt shut down, under very suspicious and mysterious circumstances. (check the related articles section below). Sure, you could use LUKS instead, or VeraCrypt (but I haven’t tried VeraCrypt), but considering I only want to encrypt a subset of my files, and not the whole partition, that might be a little overkill.

So, I investigated the ecryptfs. Details can be found on the Wikipedia page, but in short, it allows you to mount directories (it comes with a wrapper to the mount command), but unlike other mount wrappers, you are allowed to mount on top of the same directory. In other words, you can do:

sudo mount.ecryptfs ~/SecuredData ~/SecuredData

And this will take the data stored in the directory and transparently decrypt it when you try to access the directory.

If you copy data into the directory, ecrypt will encrypt it and store it in the underlying directory in an encrypted manner. When you unmount the directory, only the encrypted data is visible. If you combine the mounting process with the optional Filename Encryption, then all you see are files with garbled filenames.

ecrypt supports various encryption methods, from AES and Blowfish, to 3DES and Twofish. Obviously, the higher you choose the encryption level, the slower the access. 3DES encryption resulted in a transfer rate of 7MB/s for me, when copying to the encrypted space, and AES was 16MB/s, so balance your requirement of high encryption vs slow access.

 

 

 

Denial of service attack (part 2) | Building Feedly

Feedly has gone down again, as a result of another DDoS

7:26am PST: We are currently being targeted by a second DDoS attack and are working with our service providers to mitigate the issue.

As with yesterday’s attack, your data is safe. We apologize for the inconvenience and will update this blog post as more information is available or the situation changes.

Denial of service attack (part 2) | Building Feedly.