[Google Chrome Windows step]
- * Note: Google Chrome Portable has these parameters automatically included when calling the Chrome.exe program.
[Git for Windows step]
- * after the new branch name, provide a commit hash on which to base the new branch
[Google Chrome Windows step]
- * Note: The incognito option starts the browser with an open Incognito window
[VB.Net Code step]
- * Call new NReco.PdfGenerator.HtmlToPdfConverter().GeneratePdfFromFile(ur_in_html_file, Nothing, strOUT_PDF_FILE)
[GitHub.com Website step]
- * Download program named like "gs9540w64.exe">>
[Folder Structure step]
- * Run GhostScript Installation -> Opens form
[GhostScript Installer step]
- * Click button Install -> Navigates form
[IrfanView Windows step]
- * Click button Postscript options -> Opens dialog2
- * Open PDF file
- * Click option Save as -> Opens dialog
[Google Chrome Android step]
- * Click the three-lines menu, option Add to Home screen -> Opens dialog
[Google Play Store Android step]
- * Install app Screenshot Easy by Ice Cold Apps
[Screenshot Easy Android step]
- * Open app Screenshot Easy
[QLua Code step]
- * This creates a 'ioexec' function that runs a shell command and returns a table you can store
[Google Chrome Windows step]
- * Click in the Address bar and press Ctrl-A then Ctrl-C to copy the page's address to the clipboard
[VLC for Windows step]
- * [Menu bar, Tools menu]
- * Click option Codec Information -> Opens dialog
[Google Chrome Windows step]
- * Right-click on the video file -> Opens menu
- * Click option Save Video As -> Opens dialog
[TiddlyWiki Advanced Search step]
- * Click button Export Tiddlers (resembles arrow coming out of tray) -> Opens menu
- * Click option JSON -> Downloads file
[Folder Structure step]
- * You can drag the file onto a TiddlyWiki page to re-import the cards
[Google Chrome Windows step]
[Windows CLI step]
- * ffprobe -show_format UrFilePath.ext
-> Output lines
[Windows DiskPart command step]
- * Start the Windows Command Line program DiskPart
-> Opens a new window
- * Use the List Disk
and Select Disk UrDiskNumber
commands to choose the USB Drive
- * Use the Clean
command to erase all partitions on the USB Drive
- * Use the Create Partition Primary Size=32000
, Active
, and Format Fs=fat32 Unit=64k Quick
commands to create a new FAT32 partition
- * Use the Exit command to close the DiskPart window
[Google Chrome Windows step]
- * search for Language -> Filters results
- * checkbox Spell check = clear -> Chrome will not highlight spelling errors
[Plus.codes Website step]
- * Click the three-lines menu, option Grid -> Refreshes window
- * Grouping these by two digits each helps identify a percent up or right in the rectangle: 0.2, 0.3, 1.4, 1.5, 2.6, 2,7, 3.8, 3.9, 4.C, 4.F, 5.G, 5.H, 6.J, 6.M, 7.P, 7.Q, 8.R, 8.V, 9.W, 9.X
- * The first North digit uses less codes, so they have a different percentage: 2.3, 3.4, 4.5, 5.6, 6.7, 7.8, 8.9
[JavaScript Code step]
- * Global function Object.getOwnPropertyNames() returns an object with "length" property and base-zero numbered properties up to "length" - 1
[TiddlyWiki Code step]
- * tag = $:/tags/Stylesheet
- * text = .cls_full_width { width:100%; }
- * class = cls_full_width
[Pocket Git Android step]
- * Click the Remotes menu (looks like a cloud), click option Fetch -> Starts process
- * Click the Remotes menu, click option Pull -> Starts process
[Google Play Store Android step]
- * Install app AnyDesk by AnyDesk Software GmbH
[AnyDesk Android step]
- * The other installed devices will show when connected to the same WiFi network
[RealVNC.com Website step]
- * Download app VNC Connect for Windows
[VNC Connect for Windows step]
- * Connects to login
[Google Play Store Android step]
- * Install app VNC Viewer by RealVNC Limited
[VNC Viewer Android step]
- * Connects to login
[QLua Android step]
- * Click button Run (looks like a right-arrow play button) -> Navigates page
[QLua Console Android step]
- * Note: The the last line says "Press enter to exit"
[QLua Android step]
- * Click button Console -> Navigates page
[QLua Console Android step]
- * Note: Commands in Lua are case sensitive
[Google Play Store Android step]
- * Install app WebDAV Server - BestDAV
[WebDav Server Android step]
[Google Play Store Android step]
- * Install app WebDAV Server by The Olive Tree
[WebDav Server Android step]
[Google Chrome Windows step]
[Windows CLI step]
[HTML5 Code step]
- * The profile attribute of the HEAD specifies the location of a meta data profile.
[JavaScript Code step]
- * try {eval('var n = 023;'); alert("not strict")} catch (error) {alert("is strict")}
[Windows CLI form]
wmic path Win32_VideoController get VideoModeDescription,CurrentVerticalResolution,CurrentHorizontalResolution /format:value
Example output:
CurrentHorizontalResolution=2104
CurrentVerticalResolution=1560
VideoModeDescription=2104 x 1560 x 4294967296 colors
[Google Play Store Android form]
- * Digital Clock : Bed/Desk Clock - Apps on Google Play
- Swipe up/down for font style
- Swipe left/right for background color
[HTML5 Code form]
<html>
<body><script type = "text/javascript">window.onerror=function(msg,url,line){alert("Line number = "+line+"\nMessage:\n\n"+msg)}</script>
<script type="text/javascript">
alert('hi';
</script>
</body>
</html>
[TiddlyWiki Code form]
<$button>
<$action-setfield $tiddler="Test1" tags="COPY"/>
Reset Test1 Card's Tag list with just COPY
</$button>
<$button>
<$list variable=cur_card filter="[is[tiddler]!prefix[$:/state/]]">
<$list variable=has_tag filter="[<cur_card>tags[]count[]!match[0]]">
<$action-listops $tiddler=<<cur_card>> $tags="+[append[COPY]]"/>
</$list>
</$list>
Append COPY tag to all Cards that already have tags
</$button>
<$button>
<$list variable=cur_card filter="[tag[COPY]]">
<$action-listops $tiddler=<<cur_card>> $tags="+[remove[COPY]]"/>
</$list>
Remove COPY tag from all Cards
</$button>
[TiddlyWiki Code form]
Title = ext TW Return
\define TW_Return(ur_url, ur_link_title)
<div style="float:right"><a href="$ur_url$"> ($ur_link_title$)</a></div>
\end
<$list filter="[<tv-config-toolbar-icons>match[no]]">
<$list filter="[{$:/info/url/full}split[.html]join[.htm]]">
<$macrocall $name=TW_Return ur_url=<<currentTiddler>> ur_link_title="TiddlyWiki view of website" />
</$list>
</$list>
<$list filter="[<tv-config-toolbar-icons>!match[no]]">
<$list filter="[{$:/info/url/full}split[.html]join[.htm]split[.htm]join[.html]]">
<$macrocall $name=TW_Return ur_url=<<currentTiddler>> ur_link_title="Static HTML view of website" />
</$list>
</$list>
[Google Chrome Android form]
- Navigate to file:///sdcard/
- [Directory list]
- Select which sub-folder you want to bookmark
- [Navigation bar, Top-right icons]
- Click button Bookmark Page (looks like a star shape) -> Opens dialog
- [Bookmark Added dialog]
- Name = UrShortName
- Click button Done -> Closes dialog
- [Navigation bar]
- Address = UrShortName -> Shows suggestions
- [Suggestion list]
- Select the suggested link -> Navigates page
Note: You can also use Total Commander to create a local file desktop shortcut
[Google Chrome Windows form]
- Navigate to file:///C:/
- [Directory list]
- Select which sub-folder you want to bookmark
- [Navigation bar, Top-right icons]
- Click button Bookmark Page (looks like a star shape) -> Opens dialog
- [Bookmark Added dialog]
- Name = UrShortName
- Click button Done -> Closes dialog
- [Navigation bar]
- Address = UrShortName -> Shows suggestions
- [Suggestion list]
- Select the suggested link -> Navigates page
Note: You can also create a Website shortcut on the Desktop from Google Chrome
[Excel VBA form]
- * Make sure you put a space between the power operator ( ^ ) and the numbers
- CalcResult = 2^5
- Note: This gives a compilation error on 64-bit Excel
- CalcResult = 2 ^ 5
- Note: CalcResult = 32
[VB.Net Code form]
ret_message.dLine(strFILE)
Dim sha512 = New System.Security.Cryptography.SHA512Managed
Using stmFILE = System.IO.File.OpenRead(strFILE)
Dim hash As Byte() = sha512.ComputeHash(stmFILE)
ret_message.dLine("-").d(s)
ret_message.d(Convert.ToBase64String(hash))
End Using
[Google Chrome Windows form]
- * Note: Google Chrome Portable has these parameters automatically included when calling the Chrome.exe program.
–user-data-dir="%TEMP%"
–disk-cache-dir="%TEMP%\GoogleChromePortable\Cache"
To override the user data and all the cache directories:
- Find the INI file in the PortableApp sub-directory
GoogleChromePortable\Other\Source\GoogleChromePortable.ini
- Copy it to the program main directory
GoogleChromePortable\GoogleChromePortable.ini
- [Edit the file]
- CacheInTemp = false
- Save file
- Note: When you restart Google Chrome Portable, cached files will be stored under the program's folder
C:\TJBF\zPortableInstalls\Chrome\Data\profile\Default\*Cache\
[Git for Windows form]
- * after the new branch name, provide a commit hash on which to base the new branch
@echo off
SET ur_repo=
SET ur_branch=
"C:\UrPath\git.exe" -C %ur_repo% checkout -b test-branch %ur_branch%
rem Use GitHub Desktop to delete the branch
[JavaScript Bookmarklet form]
Clears all the CSS Class and Style attributes
javascript:document.querySelectorAll('img,video,picture,svg,iframe,script,noscript,style,link[rel="stylesheet"]').forEach(item => item.remove());
document.querySelectorAll('*').forEach(item => item.removeAttribute('class'));
document.querySelectorAll('*').forEach(item => item.removeAttribute('style'));
document.querySelectorAll('*').forEach(item => item.removeAttribute('bgcolor'));
document.body.style.backgroundColor="tan";
document.body.style.fontFamily = "Helvetica, Arial, sans-serif";
document.body.style.fontSize=prompt("Please enter font multiplier", "2") + "00%";undefined;
[JavaScript Bookmarklet form]
avascript:document.querySelectorAll('img,picture,svg,video').forEach(function(element){if (element!=null){element.parentNode.removeChild(element)}});
undefined;
[Google Chrome Windows form]
- * Note: The incognito option starts the browser with an open Incognito window
–incognito
[JavaScript Code form]
script
type
attr = text/javascript
/*
)*/
)//
)<script type="text/javascript">/*
Comment text block
*/
alert('User message'); //end of line comment
</style>
[CSS Code form]
/*
)*/
)<style type="text/css">/*
Comment text
*/
.ur_class_name {
width: 50%;
}
</style>
[HTML5 Code form]
--
-->
)!
) before the declaration name / code--
) must itself be doubled ( ----
) when used in a comment declaration, but HTML 5 has no such requirement<!-- a text editor can see the comment text -->
[TiddlyWiki Code form]
<$diff-text source={{t1}} dest={{mcr glbl_section_disp}}/>
Name = mcr glbl_compare_lines
Tag = $:/tags/Macro
\define glbl_compare_lines_results_table(ur_card_pk, ur_second_pk, ur_row_count)
<table><tr>
<th>''Line''</th>
<th>Show text</th>
<th>First Side<br>Second Side</th>
</tr>
<$list filter="[range<intSECOND_COUNT>subtract[1]]" variable="intCUR_ENTRY">
<$list filter="[{$ur_card_pk$}splitregexp[\n]butfirst<intCUR_ENTRY>first[]]" variable="strFIRST_LINE">
<$list filter="[{$ur_second_pk$}splitregexp[\n]butfirst<intCUR_ENTRY>first[]!match<strFIRST_LINE>]" variable="strSECOND_LINE">
<tr>
<td rowspan=2>
!!<<intCUR_ENTRY>>
</td>
<td>
<$button>
<$action-setfield $tiddler="$:/state/popup/CompareTextLine1" text=<<intCUR_ENTRY>>/>
<$action-setfield $tiddler="$:/state/popup/CompareTextSection1" text="""<$edit-text tiddler="$:/state/popup/CompareTextLine1" field=text default="" placeholder="[no text yet]" autoHeight=no tag=input/>
<$list filter="[{$:/state/popup/CompareTextLine1}!match[]else[0]]" variable=intSTART_LINE><$list filter="[<intSTART_LINE>subtract[1]]" variable=intPREV_LINE>
<$list filter="[<intSTART_LINE>add[1]]" variable=intNEXT_LINE>
<$button>
<$action-setfield $tiddler="$:/state/popup/CompareTextLine1" text=<<intPREV_LINE>>/>
<<intPREV_LINE>>
</$button>
<$button>
<$action-setfield $tiddler="$:/state/popup/CompareTextLine1" text=<<intNEXT_LINE>>/>
<<intNEXT_LINE>>
</$button><br>[[$ur_card_pk$]]<br>
<$macrocall $name=glbl_code_disp_group ur_card_pk="$ur_card_pk$" ur_skip_count=<<intSTART_LINE>> />
</$list></$list></$list>""" />
<$action-navigate $to="$:/state/popup/CompareTextSection1"/>
<<intCUR_ENTRY>>
</$button>
</td>
<td><$codeblock code=<<strFIRST_LINE>> /></td>
</tr>
<tr>
<td>
<$button>
<$action-setfield $tiddler="$:/state/popup/CompareTextLine2" text=<<intCUR_ENTRY>>/>
<$action-setfield $tiddler="$:/state/popup/CompareTextSection2" text="""<$edit-text tiddler="$:/state/popup/CompareTextLine2" field=text default="" placeholder="[no text yet]" autoHeight=no tag=input/>
<$list filter="[{$:/state/popup/CompareTextLine2}!match[]else[0]]" variable=intSTART_LINE>
<$list filter="[<intSTART_LINE>subtract[1]]" variable=intPREV_LINE>
<$list filter="[<intSTART_LINE>add[1]]" variable=intNEXT_LINE>
<$button>
<$action-setfield $tiddler="$:/state/popup/CompareTextLine2" text=<<intPREV_LINE>>/>
<<intPREV_LINE>>
</$button>
<$button>
<$action-setfield $tiddler="$:/state/popup/CompareTextLine2" text=<<intNEXT_LINE>>/>
<<intNEXT_LINE>>
</$button><br>[[$ur_second_pk$]]<br>
<$macrocall $name=glbl_code_disp_group ur_card_pk="$ur_second_pk$" ur_skip_count=<<intSTART_LINE>> />
</$list></$list></$list>""" />
<$action-navigate $to="$:/state/popup/CompareTextSection2"/>
<<intCUR_ENTRY>>
</$button>
</td>
<td><$codeblock code=<<strSECOND_LINE>> /></td>
</tr>
</$list></$list></$list>
</table>
\end
\define glbl_compare_lines(ur_card_pk, ur_second_pk)
<$list filter="[{$ur_card_pk$}splitregexp[\n]count[]]" variable="intFIRST_COUNT">
<$list filter="[{$ur_second_pk$}splitregexp[\n]count[]]" variable="intSECOND_COUNT">
<$list filter="[{$ur_second_pk$}splitregexp[\n]count[]subtract<intFIRST_COUNT>]" variable="intSECOND_EXTRA">
[[$ur_card_pk$]] line count: <<intFIRST_COUNT>>
[[$ur_second_pk$]] line count: <<intSECOND_COUNT>>
''$ur_second_pk$'' excess line count: ''<<intSECOND_EXTRA>>''
<$macrocall $name=glbl_compare_lines_results_table ur_card_pk="$ur_card_pk$" ur_second_pk="$ur_second_pk$" ur_row_count=<<intSECOND_COUNT>> />
</$list>
</$list>
</$list>
\end
<!--
<$edit-text tiddler="$:/state/popup/CompareText1" field=text default="" placeholder="[no text yet]" autoHeight=no tag=textarea/>
<$edit-text tiddler="$:/state/popup/CompareText2" field=text default="" placeholder="[no text yet]" autoHeight=no tag=textarea/>
<<glbl_compare_lines "$:/state/popup/CompareText1" "$:/state/popup/CompareText2">>
-->
[VB.Net Code form]
Public Class glblExeCompile
<System.Diagnostics.DebuggerHidden()>
Public Function Result(ur_fn As enfEXECMP.zRunCode, ur_provider As enkEXECMP, ur_code_text As String, ur_ns_class_path As String, ur_fn_name As String, ur_dll_list As Sdata) As Strap
Dim stpRET = Strapd()
Result = stpRET
Dim message_written = False
Dim objMETHOD_MAIN As System.Reflection.MethodInfo = Nothing
Dim objCOMPILER_PARM = New System.CodeDom.Compiler.CompilerParameters
objCOMPILER_PARM.GenerateInMemory = True
objCOMPILER_PARM.GenerateExecutable = False
objCOMPILER_PARM.ReferencedAssemblies.Add("system.dll")
For Each strENTRY In ur_dll_list
objCOMPILER_PARM.ReferencedAssemblies.Add(strENTRY)
Next
'Since I cannot get the AppDomain code to work - which could unload an assembly, the program currently has to close after compiling one Assembly
'Dim sdaPROVIDER_OPTIONS = New System.Collections.Generic.Dictionary(Of String, String)
'sdaPROVIDER_OPTIONS.Add("CompilerVersion", "v4.0")
Dim objPROVIDER = System.CodeDom.Compiler.CodeDomProvider.CreateProvider(ur_provider.name) ', sdaPROVIDER_OPTIONS) 'New Microsoft.VisualBasic.VBCodeProvider
Dim objCOMPILER_RESULT = objPROVIDER.CompileAssemblyFromSource(objCOMPILER_PARM, ur_code_text)
If objCOMPILER_RESULT.Errors.Count > 0 Then
message_written = True
stpRET.dLineNB("Compile Errors")
stpRET.dLine()
For Each errItem As System.CodeDom.Compiler.CompilerError In objCOMPILER_RESULT.Errors
stpRET.dLine(errItem.ErrorText & " [" & errItem.Line + 5 & "]")
stpRET.dLine()
stpRET.dLine()
Next errItem
stpRET.dLine(ur_code_text)
End If
If message_written = False Then
Dim objASSEMBLY = objCOMPILER_RESULT.CompiledAssembly
Dim t As System.Type = objASSEMBLY.CreateInstance(ur_ns_class_path).GetType()
For Each m As System.Reflection.MethodInfo In t.GetMethods
If m.Name = ur_fn_name Then
objMETHOD_MAIN = m
Exit For
End If
Next m
If objMETHOD_MAIN Is Nothing Then
message_written = True
stpRET.dLineNB("Compiled assembly does not contain").dS(ur_ns_class_path).dS("method:").dS(ur_fn_name)
End If
End If
If message_written = False Then
Dim objRESULT = objMETHOD_MAIN.Invoke(Nothing, Nothing)
If objRESULT IsNot Nothing Then
stpRET.d(objRESULT.ToString)
End If
End If
End Function 'zRunCode
End Class 'glblExeCompile
[Windows Command Line form]
https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.textbox?view=windowsdesktop-6.0
In a hard-drive folder
- UrCSFilePath = %HOMEPATH%\Downloads\UrProgram.cs
- UrCMDFilePath = %HOMEPATH%\Downloads\UrProgramCompile.cmd
- UrEXEFilePath = %HOMEPATH%\Downloads\UrProgram.exe
[Notepad]
- [New text file]
- Paste in program text
Command-line program:
public class Program{public static void Main(string [] args){System.Console.WriteLine("UrText");}}
Windows program:
public class MyForm : System.Windows.Forms.Form
{
public MyForm()
{
this.Text = "C# Program";
var txtINPUT = new System.Windows.Forms.TextBox();
txtINPUT.Name = "txtINPUT";
this.Controls.Add(txtINPUT);
txtINPUT.BringToFront();
txtINPUT.Dock = System.Windows.Forms.DockStyle.Fill;
txtINPUT.Multiline = true;
txtINPUT.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
txtINPUT.Text = "UrText";
//System.Windows.Forms.MessageBox.Show("UrText");
//this.Close();
}
public static void Main()
{
System.Windows.Forms.Application.Run(new MyForm());
}
}
- Save file as UrCSFilePath
[Command Line prompt]
- Execute command:
dir /s /b %WINDIR%\csc.exe
- Note: Output line like:
c:\windows\Microsoft.NET\Framework64\v4.0.30319
- UrFramework64Path = the found folder
- Copy UrFramework64Path to the Windows clipboard
[Notepad]
- [New text file]
- Paste in program
Compile command-line program:
del UrNewEXEFilePath
UrFramework64Path\csc.exe /target:exe /out:UrNewEXEFilePath UrUrCSFilePath
start "" UrNewEXEFilePath
Compile Windows program:
del UrNewEXEFilePath
UrFramework64Path\csc.exe /target:winexe /out:UrNewEXEFilePath UrUrCSFilePath
start "" UrNewEXEFilePath
- Save file as UrCMDFilePath
[Command Line prompt]
- Execute command: UrCMDFilePath
- Note: If command-line program, UrText is printed on a line of the console window
- Note: If Windows program, UrText is in a Windows Form textbox
Make a windows program to compile a source code file:
[CSNetScript.cmd]
del CSNetScript.exe
UrFramework64Path\csc.exe /target:winexe /out:CSNetScript.exe CSNetScript.cs
start "" CSNetScript.exe
[CSNetScript.cs]
public class MyForm : System.Windows.Forms.Form
{
public MyForm()
{
this.Text = "CSNetScript";
var txtINPUT = new System.Windows.Forms.TextBox();
txtINPUT.Name = "txtINPUT";
this.Controls.Add(txtINPUT);
txtINPUT.BringToFront();
txtINPUT.Dock = System.Windows.Forms.DockStyle.Fill;
txtINPUT.Multiline = true;
txtINPUT.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
var notice_msg = "";
try
{
var search_subdirs = System.IO.SearchOption.AllDirectories;
var search_folder = System.IO.SearchOption.TopDirectoryOnly;
var app_filepath = System.Reflection.Assembly.GetExecutingAssembly().Location;
var app_folder = System.IO.Path.GetDirectoryName(app_filepath);
var win_dir = System.Environment.ExpandEnvironmentVariables(@"%WINDIR%\Microsoft.NET\Framework64");
var env_parms = System.Environment.GetCommandLineArgs();
var utf8_format = new System.Text.UTF8Encoding(encoderShouldEmitUTF8Identifier:false,throwOnInvalidBytes:true);
var sourcecode_filepath = "";
var newexe_filepath = "";
var csc_path = "";
var csc_notice_msg = "";
try
{
foreach (var entry in System.IO.Directory.GetFiles(win_dir, "csc.exe", search_subdirs))
{
csc_path = entry;
};
} catch (System.Exception ex_skip) {}
if (csc_path == "")
{
notice_msg = "CSC path not found in %WINDIR%";
}
if (notice_msg == "")
{
var parm_seq_b1 = 0;
if (env_parms.Length > 1)
{
foreach (var entry in env_parms)
{
parm_seq_b1 += 1;
sourcecode_filepath = entry;
if (parm_seq_b1 == 2)
{
break;
}
}
}
if (sourcecode_filepath == "")
{
notice_msg = "Please pass in a source code file";
var apptext_content =
@"";
if (string.IsNullOrWhiteSpace(apptext_content) == false)
{
var appfile_basegroup = System.IO.Path.GetFileNameWithoutExtension(app_filepath);
var apptext_filepath = System.IO.Path.Combine(app_folder, appfile_basegroup + ".txt");
var file_exists = false;
try
{
file_exists = System.IO.File.Exists(apptext_filepath);
} catch (System.Exception ex_skip) {}
if (file_exists == false)
{
System.IO.File.WriteAllText(
apptext_filepath,
apptext_content,
utf8_format);
}
}
}
}
if (notice_msg == "")
{
var parent_folder = System.IO.Path.GetDirectoryName(sourcecode_filepath);
var file_basegroup = System.IO.Path.GetFileNameWithoutExtension(sourcecode_filepath);
newexe_filepath = System.IO.Path.Combine(parent_folder, file_basegroup + ".exe");
var file_exists = false;
try
{
file_exists = System.IO.File.Exists(newexe_filepath);
} catch (System.Exception ex_skip) {}
if (file_exists)
{
System.IO.File.Delete(newexe_filepath);
}
//write out .cmd
//del %HOMEPATH%\Downloads\csc.exe
//System.Diagnostics.Process.Start( csc_path /target:winexe /out:app_folder\csc.exe sourcecode_filepath
var csc_args = "/target:winexe /out:" + newexe_filepath+ " " + sourcecode_filepath;
var startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.FileName = csc_path;
startInfo.Arguments = csc_args;
startInfo.RedirectStandardOutput = true;
startInfo.RedirectStandardError = true;
startInfo.UseShellExecute = false;
startInfo.CreateNoWindow = true;
var processTemp = new System.Diagnostics.Process();
processTemp.StartInfo = startInfo;
processTemp.EnableRaisingEvents = true;
try
{
processTemp.Start();
processTemp.WaitForExit();
csc_notice_msg = processTemp.StandardError.ReadToEnd();
if (csc_notice_msg == "")
{
csc_notice_msg = processTemp.StandardOutput.ReadToEnd();
}
} catch (System.Exception e) {throw;}
file_exists = false;
try
{
file_exists = System.IO.File.Exists(newexe_filepath);
} catch (System.Exception ex_skip) {}
if (file_exists == false)
{
notice_msg = csc_notice_msg;
}
}
if (notice_msg == "")
{
//notice_msg = csc_notice_msg + System.Environment.NewLine + newexe_filepath;
System.Diagnostics.Process.Start(newexe_filepath);
this.Close();
}
}
catch (System.Exception ex)
{
notice_msg = ex.Message;
}
txtINPUT.Text = notice_msg;
//System.Windows.Forms.MessageBox.Show("UrText");
//this.Close();
}
public static void Main()
{
System.Windows.Forms.Application.Run(new MyForm());
}
}
[DotNet Core Compiler form]
[https://github.com/dotnet/core/issues/5409]
In .NET 5 the single-file publish may produce more than one file and it's by design. See the expected behavior described here:
https://github.com/dotnet/designs/blob/main/accepted/2020/single-file/design.md#user-experience
In 3.1 single-file is basically just a self-extracting executable - it writes everything into temp and runs from there. As such for the running app nothing really changes (everything is a file, with a path and so on).
In 5 we don't write to disk by default, all managed assemblies are loaded directly from the executable. The problem is native libraries - it's technically VERY difficult to include a random .dll in an executable and run it from the executable directly.
If you only take the .exe and run it, it won't work - it needs those additional files.
If you need .NET 5 but want the self-extracting behavior you can set IncludeAllContentForSelfExtract=true and it will behave basically the same as in 3.1.
There's also a "hybrid" mode IncludeNativeLibrariesForSelfExtract=true which will produce just one executable and that will write the native libraries to temp and then run.
User-replaced value = UrProjectDir
[UrProjectDir folder] - Start with VBNetCode\DotNet Core New Project
[Windows CLI]
- [Compile into an EXE]
- dotnet publish -c Release -r win10-x64 -p:PublishSingleFile=true -p:IncludeAllContentForSelfExtract=true -p:PublishTrimmed=true --output Dep
- Text output ->
Microsoft (R) Build Engine version 16.8.0+126527ff1 for .NET
Copyright (C) Microsoft Corporation. All rights reserved.
Determining projects to restore...
All projects are up-to-date for restore.
t3 -> UrProjectDir\bin\Release\net5.0\win10-x64\UrProjectDir.dll
t3 -> UrProjectDir\Dep\
[UrProjectDir folder]
- [Look for the new folders]
- New sub-folders: bin, Dep
- Note: The compiled program is in the Dep subfolder named UrProjectDir.exe
- - The UrProjectDir.pdb file is used for debugging purposes and would not normally be deployed with your EXE file
[Windows CLI]
- [Remove the temporary folders in the UrProjectDir]
- rd bin /s /q
- rd obj /s /q
- [Run the project]
- Dep\UrProjectDir.exe
- Text output shows as if you ran the command dotnet run
- Note: You can output the System.AppContext.BaseDirectory
to find the Temp that holds the uncompressed program
[Program.vb file]
- [Replaces lines in Main sub]
- Console.WriteLine(System.AppContext.BaseDirectory)
[Windows CLI]
- [Compile into an EXE]
- dotnet publish -c Release -r win10-x64 -p:PublishSingleFile=true -p:IncludeAllContentForSelfExtract=true -p:PublishTrimmed=true --output Dep
- Note: If running DotNet Core 3.1,
- - dotnet publish -c Release -r win-x64 -p:PublishReadyToRun=true -p:PublishSingleFile=true
- - The "–self-contained" option is incompatible with the "-p:PublishReadyToRun=true" and "-p:PublishSingleFile=true" options
- Note: When you choose the Portable publish option, you'll get a package that is capable of running on either x86 (32-bit) machines and x64 (64-bit) machines
- - The next run would have to JIT compile the application again as it is used
- - The advantage here is that you'd only need to distribute one package, and it'll run on both x86/x64 machines
- - dotnet publish -c Release -r portable --self-contained
- [Remove the temporary folders in the UrProjectDir]
- rd bin /s /q
- rd obj /s /q
- [Run the project]
- Dep\UrProjectDir.exe
- Text output =
C:\Users\UrUsername\AppData\Local\Temp\.net\UrProjectDir\SomeRandom-8-letters.SomeRandom-3-letters\
- Note: This folder gets created on the first run the of UrProjectDir.exe
- - The second run starts faster because the files have already been extracted to this temporary folder
- - You can delete the temporary folder, and running the UrProjectDir.exe will create it again.
- Note: You can specify a different temporary folder by setting the Environment Variable DOTNET_BUNDLE_EXTRACT_BASE_DIR
- SET DOTNET_BUNDLE_EXTRACT_BASE_DIR=%USERPROFILE%\Downloads\UrProjectDir\tmp
- Note: You can set the Environment Variable in a batch file and it will not be saved for new Windows CLI windows.
- - To set it permanently, use Control Panel
\ System and Security
\ System
\ Advanced systems settings
\ Advanced
tab \ Environment Variables
button \ top or bottom section \ New
button, Variable Name = DOTNET_BUNDLE_EXTRACT_BASE_DIR
, Variable Value = UrFullPathToTempDirectory
, OK button
- - Trying to use a relative directory path ends up not running the executable
- [Run the project]
- Dep\UrProjectDir.exe
- Text output =
C:\Users\UrUsername\Downloads\UrProjectFolder\tmp\UrProjectFolder\SomeRandom-8-letters.SomeRandom-3-letters\
- [Review the size of the TMP folder]
- dir tmp /s
- Text output = 23 Files, 8 Dirs
- [Remove the temporary directory]
- rd tmp /s /q
[UrProjectDir\Dep folder]
- [Create a script to run the project and clean up the temporary files]
- New file = UrProjectDir.cmd
[UrProjectDir.cmd file]
@@ECHO OFF
SET CUR_DIR=%~dp0
SET DOTNET_BUNDLE_EXTRACT_BASE_DIR=%CUR_DIR%tmp
"%CUR_DIR%UrProjectDir.exe"
rd "%CUR_DIR%bin" /s /q 2> nul
rd "%CUR_DIR%obj" /s /q 2> nul
rd "%CUR_DIR%tmp" /s /q 2> nul
[Windows CLI]
- [Run the clean-execution script]
- Dep\UrProjectDir.cmd
- Note: There is no tmp subfolder
[VB.Net Code form]
Change string with numbers (0 to 9) and/or letters (a-f) into decimal number
[q/a page]
StackOverflow How Convert Hex
Dim strTEXT = "FF"
Dim strHEX_CODE = "&H" & strTEXT
Dim intNUMBER = CInt(strHEX_CODE)
MsgBox(intNUMBER) -> 255
Dim intNUM2 = CInt(&HFF)
Dim intNUM3 = CInt(&B0010_0011)
[JavaScript Bookmarklet form]
Run this script (it takes a while) and then save the web page. All the CSS properties are specified on each element, so it does not need to load any stylesheets.
Missing: [GitHub LukeHorvat Computed Style to Inline]
avascript:(function (global, factory) {
if (typeof define === "function" && define.amd) {
define(["module"], factory);
} else if (typeof exports !== "undefined") {
factory(module);
} else {
var mod = {
exports: {}
};
factory(mod);
global.computedStyleToInlineStyle = mod.exports;
}
})(this, function (module) {
"use strict";
var each = Array.prototype.forEach;
function computedStyleToInlineStyle(nest_level, parent_style, cur_elt) {
var _context2;
if (!cur_elt) {
throw new Error("No element specified.");
}
var cur_style = getComputedStyle(cur_elt);
var _context;
(_context = cur_elt.children, each).call(_context, function (child) {
computedStyleToInlineStyle(nest_level+1, cur_style, child);
});
var parent_copy = document.createElement("an_unknown_tag");
if (nest_level > 1) {
for (var pctr = 0; pctr < parent_style.length; pctr++) {
var pname = parent_style[pctr];
var pval = parent_style.getPropertyValue(pname);
parent_copy.style[pname] = pval;
}
}
var blank_element = document.createElement("an_unknown_tag");
parent_copy.appendChild(blank_element);
document.head.appendChild(parent_copy);
var blank_style = getComputedStyle(blank_element);
for (var dctr = 0; dctr < blank_style.length; dctr++) {
if (dctr < cur_style.length) {
var dname = blank_style[dctr];
var dval = blank_style.getPropertyValue(dname);
var cval = cur_style.getPropertyValue(dname);
if (cval != dval && cur_elt.style[dname] != dval) {
cur_elt.style[dname] = cval;
}
}
}
}
module.exports = computedStyleToInlineStyle;
});
(function(){
var h = document.createElement('div');
var t = document.getElementsByTagName('title')[0];
var cite_remove = '<a href="%23" onclick="document.body.firstChild.style.visibility = \'hidden\';document.body.firstChild.style.height = \'0px\';return false">remove</a>';
var info = '<p><strong>Title(' + t.innerHTML.length + '):</strong> ' + t.innerHTML + '</p>';
var m = document.getElementsByTagName('meta');
for(var i = 0; i < ((m == null) ? 0 : m.length); i++) {
if(null !== m[i].getAttribute('name') ) {
var c=m[i].getAttribute('content');
if (c != null) {info += '<p><strong>' + m[i].getAttribute('name') + '(' + c.length + '):</strong> ' + c + '</p>';}
}
}
var lm = document.lastModified;
var url = location.href;
var d = new Date();
var dd = d.getDate();
var mm = d.getMonth()+1;
var yyyy = d.getFullYear();
info += '<p><strong>Citation: </strong>"' + t.innerHTML + '." Last modified ' + lm + '. <a target="_blank" href="' + url + '">' + url + '</a> (accessed ' + mm + '/' + dd + '/' + yyyy + ').</p><p><strong>Filename:</strong> ' + '0'.repeat(4-yyyy.toString().length) + yyyy + 'm'+'0'.repeat(2-mm.toString().length) + mm + 'd' + '0'.repeat(2-dd.toString().length) + dd + ' ' + url.replace('http://','').replace('https://','').replace('file:///','').replaceAll('/','-fslash-') + '.html</p>';
document.body.insertBefore(h,document.body.firstChild);
h.innerHTML='<div style="border:1px solid %23888;border-radius:5px;-moz-box-shadow:0 0 5px %23888;-webkit-box-shadow:0 0 5px%23888;box-shadow:0 0 5px %23888;background:%23eee;text-align:left;padding:1em;">' + cite_remove + info + cite_remove + '</div>';
})();
document.querySelectorAll('iframe,script,noscript').forEach(function(element){element.parentNode.removeChild(element)});
computedStyleToInlineStyle(1, null, document.body);
document.head.parentNode.removeChild(document.head);
document.querySelectorAll('link').forEach(function(element){element.parentNode.removeChild(element)});
document.body.outerHTML=document.body.outerHTML;
alert("done");
[VB.Net Code form]
- * Call new NReco.PdfGenerator.HtmlToPdfConverter().GeneratePdfFromFile(ur_in_html_file, Nothing, strOUT_PDF_FILE)
Reference: NReco.PdfGenerator.dll
Sub (ur_in_html_file As String, ur_nreco_dll_folder As String)
Dim strOUT_PDF_FILE = ur_in_html_file.Replace(".html", ".pdf")
Call new NReco.PdfGenerator.HtmlToPdfConverter().GeneratePdfFromFile(ur_in_html_file, Nothing, strOUT_PDF_FILE)
Dim strTMP_DIR = System.IO.Path.Combine(ur_nreco_dll_folder, "wkhtmltopdf")
If System.IO.Directory.Exists(strTMP_DIR) Then
System.IO.Directory.Delete(strTMP_DIR, True)
End If
[GitHub.com Website form]
[Folder Structure step]
- * Run GhostScript Installation -> Opens form
[GhostScript Installer step]
- * Click button Install -> Navigates form
[IrfanView Windows step]
- * Click button Postscript options -> Opens dialog2
- * Open PDF file
- * Click option Save as -> Opens dialog
[GitHub.com Website step]
- * Download program named like "gs9540w64.exe">>
[Folder Structure form]
- [Downloads folder]
- * Run GhostScript Installation -> Opens form
[GhostScript Installer step]
- * Click button Install -> Navigates form
[IrfanView Windows step]
- * Click button Postscript options -> Opens dialog2
- * Open PDF file
- * Click option Save as -> Opens dialog
[GitHub.com Website step]
- * Download program named like "gs9540w64.exe">>
[Folder Structure step]
- * Run GhostScript Installation -> Opens form
[GhostScript Installer form]
- [Welcome form]
- Click button Next -> Navigates form
- [License Agreement form]
- Click button I Agree -> Navigates form
- [Choose Install Location form]
- * Click button Install -> Navigates form
- [Installing form]
- Wait for progress bar to complete -> Navigates page
- [Completing Setup form]
- checkbox Generate map for Windows CJK TrueType fonts = clear
- checkbox Show Readme = clear
- Click button Finish -> Closes form
[IrfanView Windows step]
- * Click button Postscript options -> Opens dialog2
- * Open PDF file
- * Click option Save as -> Opens dialog
[GitHub.com Website step]
- * Download program named like "gs9540w64.exe">>
[Folder Structure step]
- * Run GhostScript Installation -> Opens form
[GhostScript Installer step]
- * Click button Install -> Navigates form
[IrfanView Windows form]
- [Menu bar, Options menu]
- Click option Properties/Settings -> Opens dialog
- [Properties/Settings dialog, left-side menu]
- Click tab PlugIns -> Navigates tab
- [Properties/Settings dialog, PlugIns tab, Other PlugIns section]
- * Click button Postscript options -> Opens dialog2
- [Ghostscript PlugIn Options dialog]
- radio-option Retrieve GS location from System Registry = set
- Click OK -> Closes dailag2
- [Properties/Settings ]
- Click OK -> Closes dialog
- [Button bar]
- * Open PDF file
- Note: The PDF file is shown
- [Menu bar, File menu]
- * Click option Save as -> Opens dialog
- [Save Picture As dialog]
- Save as type = PNG
- Click button Save -> Writes file, closes dialog
[VB.Net Code form]
Using stmOUT_FILE = New System.IO.StreamWriter(flnDATA.gCopy.dAppendEXT("TXT"), bolAPPEND_FILE, gUTF8_FileEncoding)
Using stmDATA = New System.IO.StreamReader(flnDATA, gUTF8_FileEncoding)
While stmDATA.EndOfStream = False
'Character copy
Dim intENTRY = stmDATA.Read()
Dim strENTRY = ChrW(intENTRY)
stmOUT_FILE.Write(strENTRY)
'Line copy
Dim strLINE = stmDATA.ReadLine()
stmOUT_FILE.WriteLine(strLINE)
End While 'stmDATA
End Using 'stmDATA
End Using 'stmOUT_FILE
Split File into chunks of 100,000 lines each
Dim intFILE_COUNT = 0
Dim intLINE_COUNT = 0
Using stmDATA = New System.IO.StreamReader(flnDATA, gUTF8_FileEncoding)
While stmDATA.EndOfStream = False
intFILE_COUNT += 1
intLINE_COUNT = 0
Dim strFILE_COUNT = intFILE_COUNT.ToString()
If Len(strFILE_COUNT) = 2 Then
strFILE_COUNT = "c" & strFILE_COUNT
ElseIf Len(strFILE_COUNT) = 3 Then
strFILE_COUNT = "d" & strFILE_COUNT
End If 'strFILE_COUNT
strFILE_COUNT = "e" & strFILE_COUNT
Using stmOUT_FILE = New System.IO.StreamWriter(flnDATA.gCopy.dAppendEXT(strFILE_COUNT & ".TXT"), False, gUTF8_FileEncoding)
While stmDATA.EndOfStream = False
Dim strLINE = stmDATA.ReadLine()
stmOUT_FILE.WriteLine(strLINE)
intLINE_COUNT += 1
If intLINE_COUNT >= 100000 Then
Exit While
End If
End While 'stmDATA
End Using 'stmOUT_FILE
End While 'stmDATA
End Using 'stmDATA
[JavaScript Bookmarklet form]
javascript:(function(){var h=document.createElement('div');var t=document.getElementsByTagName('title')[0];var info='<p><strong>Title('+t.innerHTML.length+'):</strong> '+t.innerHTML+'</p>';var m=document.getElementsByTagName('meta');for(var i=0;i < m.length;i++){if(null !==m[i].getAttribute('name')){var c=m[i].getAttribute('content');info+='<p><strong>'+m[i].getAttribute('name')+'('+c.length+'):</strong> '+c+'</p>';}}var lm=document.lastModified;var url=location.href;var d=new Date();var dd=d.getDate();var mm=d.getMonth()+1;var yyyy=d.getFullYear();info+='<p><strong>Citation: </strong>"' + t.innerHTML + '." Last modified '+lm+'. <a target="_blank" href="'+url+'">'+url+'</a> (accessed '+mm+'/'+dd+'/'+yyyy+').</p>';document.body.insertBefore(h,document.body.firstChild);h.innerHTML='<div style="border:1px solid %23888;border-radius:5px;-moz-box-shadow:0 0 5px %23888;-webkit-box-shadow:0 0 5px%23888;box-shadow:0 0 5px %23888;background:%23eee;text-align:left;padding:1em;"><a href="%23" onclick="document.body.removeChild(document.body.firstChild);return false">remove</a>'+info+'</div>';})();
[QLua Android form]
- Click button Editor -> Navigates page
- [QLua app, Editor page, Top-right side icons]
- * Click button New File (looks like a page with a Plus sign) -> Opens dialog
- [New file dialog]
- Click option Blank file -> Closes dialog
- [QLua app, Editor page, Main Body text]
- Enter some text
- [Bottom bar]
- Click button Save (looks like a 3.5" floppy disk)
[SDCard file list]
- Note: The file gets saved in the folder /sdcard/qlua5
[TiddlyWiki Code form]
\define CalendarEntryDay(ur_ymd,ur_d,ur_cur_date)
<$list filter='$ur_ymd$ +[match[$ur_cur_date$]]'>
//''<span style="background-color:yellow">$ur_ymd$</span>''//<br>
</$list>
<$list filter='[prefix[$ur_ymd$]count[]match[0]]'>
<$list filter='$ur_ymd$ +[!match[$ur_cur_date$]]'>
$ur_ymd$<br>
</$list>
</$list>
<$list filter="[prefix[$ur_ymd$]count[]match[1]]">
''d$ur_d$''<br><<currentTiddler>> entry<br>
</$list>
<$list filter="[prefix[$ur_ymd$]count[]!match[0]!match[1]]">
''d$ur_d$''<br><<currentTiddler>> entries<br>
</$list>
\end
\define CalendarEntryMonth(ur_ym,ur_d,ur_cur_date)
<$list filter="0 1 2 3 4 5 6 7 8 9 +[match[$ur_d$]count[]!match[0]]">
<$macrocall $name="CalendarEntryDay" ur_prefix=<<currentTiddler>> ur_ymd="$ur_ym$d0$ur_d$" ur_d="0$ur_d$" ur_cur_date="$ur_cur_date$" />
</$list>
<$list filter="0 1 2 3 4 5 6 7 8 9 +[match[$ur_d$]count[]match[0]]">
<$macrocall $name="CalendarEntryDay" ur_prefix=<<currentTiddler>> ur_ymd="$ur_ym$d$ur_d$" ur_d="$ur_d$" ur_cur_date="$ur_cur_date$" />
</$list>
\end
\define CalendarListDailyThings(day month year)
<$button class='tc-btn-invisible' style='width:100%;height:100%'>
<div style='height:100%;width:100%;position:relative;text-align:left;vertical-align:top;z-index=0'>
<$list filter="0 1 2 3 4 5 6 7 8 9 +[match[$month$]count[]!match[0]]">
<$macrocall $name="CalendarEntryMonth" ur_prefix=<<currentTiddler>> ur_ym="$year$m0$month$" ur_d="$day$" ur_cur_date=<<now YYYYm0MMd0DD>> />
</$list>
<$list filter="0 1 2 3 4 5 6 7 8 9 +[match[$month$]count[]match[0]]">
<$macrocall $name="CalendarEntryMonth" ur_prefix=<<currentTiddler>> ur_m="$year$m$month$" ur_d="$day$" ur_cur_date=<<now YYYYm0MMd0DD>> />
</$list>
</div>
</$button>
\end
\define date_list_entry(ur_num,ur_cur_date)
<$list filter="[[$ur_num$]match[$ur_cur_date$]]">
//''<span style="background-color:yellow">$ur_cur_date$</span>''//<br>
</$list>
<$list filter="[prefix[$ur_num$]count[]!match[0]]">
<$list filter="[[$ur_num$]!match[$ur_cur_date$]count[]!match[0]]">
$ur_num$<br>
</$list>
</$list>
<<list-links filter:"[prefix[$ur_num$]]" >>
\end
\define date_list_dayunit(ur_num,ur_cur_date)
<$list filter="$ur_num$0 $ur_num$1 $ur_num$2 $ur_num$3 $ur_num$4 $ur_num$5 $ur_num$6 $ur_num$7 $ur_num$8 $ur_num$9">
<$macrocall $name="date_list_entry" ur_num=<<currentTiddler>> ur_cur_date="$ur_cur_date$" />
</$list>
\end
\define date_list_daydec(ur_year_month,ur_num,ur_cur_date)
<$list filter="$ur_year_month$d0 $ur_year_month$d1 $ur_year_month$d2 $ur_year_month$d3 $ur_year_month$d4 $ur_year_month$d5 $ur_year_month$d6 $ur_year_month$d7 $ur_year_month$d8 $ur_year_month$d9">
<$macrocall $name="date_list_dayunit" ur_num=<<currentTiddler>> ur_cur_date="$ur_cur_date$" />
</$list>
\end
\define date_list(ur_year,ur_month)
<$calendar-month year="$ur_year$" month="$ur_month$" />
<$macrocall $name="date_list_daydec" ur_year_month="$ur_year$m$ur_month$" ur_num=<<currentTiddler>> ur_cur_date=<<now YYYYm0MMd0DD>> />
\end
[IrfanView Windows form]
- Open one thumbnail image -> Loads image
- Click the File menu option Thumbnails -> Opens dialog
- [Thumbnails dialog]
- Select all files in the folder
- Click the File menu, option Create Contact Sheet
- 1280x738, 738/1280*320 = 184.5, use -s 320x180 to keep aspect ratio
- paper 150px * 8.5in = 1250px wide, 150px * 11in = 1650in tall
- screen 1920px x 1080px with 7 x 7, stretch small images to maximal size
[Google Chrome Android form]
- [Non-incognito mode]
- Navigate to website page
- Note: This does not work for file:///sdcard HTML files
- [Top-right icons]
- * Click the three-lines menu, option Add to Home screen -> Opens dialog
- [Add to Home screen dialog]
- Shortcut name / UrShortcutName
- Click button Add -> Closes dialog
[Desktop icons]
- Click icon UrShortcutName -> Opens browser
[TotalCommander Android form]
Note: You can also create a Website shortcut on the Desktop from Google Chrome
Note: You can also create a Browser shortcut to a local folder
[Total Commander directory]
- Hold down on file entry named like *.html -> Opens menu
- [context menu]
- Click option Create link on desktop -> Opens dialog
- [Create link dialog, main page, command line section]
- Click button '>>' -> Opens dialog
- [Choose app dialog, main page]
- Click option Choose app * -> Navigates page
- [Choose app dialog, Choose app * page]
- Click option Chrome -> Navigates page
- [Create link dialog, main page]
- Click button OK / Apply -> Closes dialog
[Android Desktop icons]
- Note: The icon was added to the desktop automatically
[Excel for Windows form]
- [Ribbon menus]
- * View menu, option Record Macro -> Starts recording
- View menu, option Stop Recording -> Stops recording
- View menu, option Macros -> Opens dialog
[Macro list]
- Click button Edit Macro -> Opens window
[VBA Editor]
- You can change the name of the macro and add commands
- Close the editor
[Excel for Windows]
- Save the file as a Macro-Enabled workbook (mwb)
[DotNet Core Compiler form]
[https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-new]
You can run dotnet new –list or dotnet new -l to see a list of all installed templates. If the TEMPLATE value isn't an exact match on text in the Templates or Short Name column from the returned table, a substring match is performed on those two columns.
Starting with .NET Core 3.0 SDK, the CLI searches for templates in NuGet.org when you invoke the dotnet new command in the following conditions:
- If the CLI can't find a template match when invoking dotnet new, not even partial.
- If there's a newer version of the template available. In this case, the project or artifact is created but the CLI warns you about an updated version of the template.
[https://docs.microsoft.com/en-us/dotnet/core/deploying/deploy-with-cli]
User-replaced value = UrProjectDir
[Windows CLI]
- [Navigate to the User Downloads folder]
- cd %USERPROFILE%\Downloads
- [Create a new DotNet Core project named UrProjectDir]
- dotnet new console -lang VB -o UrProjectDir
- Text output =
Getting ready...
The template "Console Application" was created successfully.
Processing post-creation actions...
Running 'dotnet restore' on C:\Users\UrUsername\Downloads\UrProjectDir\UrProjectDir.vbproj...
Determining projects to restore...
Restored C:\Users\UrUsername\Downloads\UrProjectDir\UrProjectDir.vbproj (in 65 ms).
Restore succeeded.
- [Navigate to the new UrProjectDir]
- cd UrProjectDir
[UrProjectDir folder]
- [Look for the new files and folders]
- New files: UrProjectDir.vbproj and Program.vb
- New sub-folder: obj
[Windows CLI]
- [Download a dependency]
- dotnet add package Figgle
- Text output =
Determining projects to restore...
Writing C:\Users\Dad\AppData\Local\Temp\tmpE018.tmp
info : Adding PackageReference for package 'Figgle' into project 'C:\Users\Dad\Downloads\t3\t3.vbproj'.
info : GET https://api.nuget.org/v3/registration5-gz-semver2/figgle/index.json
info : OK https://api.nuget.org/v3/registration5-gz-semver2/figgle/index.json 104ms
info : Restoring packages for C:\Users\Dad\Downloads\t3\t3.vbproj...
info : Installing runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple 4.3.0.
info : Installing runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl 4.3.0.
info : Package 'Figgle' is compatible with all the specified frameworks in project 'C:\Users\Dad\Downloads\t3\t3.vbproj'.
info : PackageReference for package 'Figgle' version '0.4.0' added to file 'C:\Users\Dad\Downloads\t3\t3.vbproj'.
info : Committing restore...
info : Writing assets file to disk. Path: C:\Users\Dad\Downloads\t3\obj\project.assets.json
log : Restored C:\Users\Dad\Downloads\t3\t3.vbproj (in 8.04 sec).
[Program.vb file]
- [Replace lines in Main sub]
- Console.WriteLine(Figgle.FiggleFonts.Standard.Render("Hello, World!"))
[Windows CLI]
- [Compile into an EXE and run it]
- dotnet run
- If you did not enter the program line incorrectly, Text output =
Program.vb(5,79): error BC30037: Character is not valid.
The build failed. Fix the build errors and run again.
- If you entered the program line correctly, Text output shows Hello World in a large font
[Google Play Store Android form]
- * Install app Screenshot Easy by Ice Cold Apps
- Note: Contains ads
[Screenshot Easy Android step]
- * Open app Screenshot Easy
[Google Play Store Android step]
- * Install app Screenshot Easy by Ice Cold Apps
[Screenshot Easy Android form]
- * Open app Screenshot Easy
[TotalCommander Android form]
[Total Commander directory]
- [Top of the directory]
- Hold down on the '..' button to see the menu -> Opens menu
- - or Hold down on any subdirectory name to see the menu -> Opens menu
- [context menu]
- Click option New Text file -> Opens dialog
- [Create new text file dialog]
- Enter a new text file name
- Click button OK -> Closes dialog
- [Directory list]
- Note: The new file was added to the current folder
[TiddlyWiki Code form]
<$checkbox default="yes" unchecked="no" checked="yes" field="text" tiddler="$:/state/popup/checkUseIt">Use It</$checkbox>
[QLua Code form]
I created some default functions that I need to see the key/value pairs in Lua tables
[def.lua]
- [def_tcompile]
- This creates a 'tcompile' function that concatenates a table's string values then loads the result as a new function
- [def_ti]
- This creates a 'ti' function that adds a new numbered row to a table
- [def_tia]
- This clears out a global table variable and creates a 'tia' function that calls the 'ti' function for that table without having to pass it in as a parameter
- [def_printk]
- This creates a 'printk' function that prints all the keys in a table, sorted alphabetically
- [def_printv]
- This creates a 'printv' function that prints all the values in a table, sorted alphabetically
- [def_tcopy]
- This creates a 'tcopy' function that copies all records from one table into another
- [def_printiv]
- This creates a 'printiv' function that prints all the values in a table, in their original order (good for numeric-keyed tables)
- [def_printkv]
- This creates a 'printkv' function that prints all keys and values in a table, sorted by key alphabetically
- [def_ioexec]
- * This creates a 'ioexec' function that runs a shell command and returns a table you can store
- - Example: Prints all the .lua files under a directory
local ttbFILE = ioexec('find /sdcard/qlua5 -name "*.lua" -print')
local strFILE = ""
for k,v in pairs(ttbFILE) do
strFILE = v
break
end
print('1: ' .. strFILE)
- [def_printio]
- This creates a 'printio' function that runs printiv on the ioexec table
- - Example: printio('ls /storage')
--[under folder /sdcard/qlua5]
--This file can be run by the QLua command "LoadFile" because it uses the Load function instead of the LoadString function in def_tcompile and def_tia
print()
def_tcompile = {'function tcompile(ur_table) load(table.concat(ur_table, "\\r"))() end'}
load(table.concat(def_tcompile, "\r"))()
def_ti = {'function ti(ur_table, ur_line) table.insert(ur_table, ur_line) end'}
tcompile(def_ti)
def_tia = {}
ti(def_tia, 'function tia(ur_table)')
ti(def_tia, ' local strASSIGN = ur_table .. " = {}; " ')
ti(def_tia, ' strASSIGN = strASSIGN .. "function tii(ur_line) ti(" .. ur_table .. ", ur_line) end" ')
ti(def_tia, ' load(strASSIGN)() ')
ti(def_tia, ' end')
tcompile(def_tia)
tia 'def_printk'
tii 'function printk(ur_table)'
tii ' local pk = {}'
tii ' for k in pairs(ur_table) do'
tii ' table.insert(pk, k)'
tii ' end'
tii ' table.sort(pk)'
tii ' for k,v in pairs(pk) do print(v) end'
tii ' end'
tcompile(def_printk)
tia 'def_printv'
tii 'function printv(ur_table)'
tii ' local pk = {}'
tii ' for k,v in pairs(ur_table) do'
tii ' table.insert(pk, v)'
tii ' end'
tii ' table.sort(pk)'
tii ' for k,v in pairs(pk) do print(v) end'
tii ' end'
tcompile(def_printv)
tia 'def_tcopy'
tii 'function tcopy(ur_src_table, ur_dest_table)'
tii ' for k,v in pairs(ur_src_table) do'
tii ' table.insert(ur_dest_table, v)'
tii ' end'
tii ' end'
tcompile(def_tcopy)
tia 'def_printiv'
tii 'function printiv(ur_table)'
tii ' for k,v in pairs(ur_table) do'
tii ' print(v)'
tii ' end'
tii ' end'
tcompile(def_printiv)
tia 'def_printkv'
tii 'function printkv(ur_table)'
tii ' local pk = {}'
tii ' for k in pairs(ur_table) do'
tii ' table.insert(pk, k)'
tii ' end'
tii ' table.sort(pk)'
tii ' for k,v in pairs(pk) do print(v .. ": " .. type(ur_table[v]) ) end'
tii ' end'
tcompile(def_printkv)
tia 'def_ioexec'
tii 'function ioexec(ur_cmd)'
tii ' local iofile = io.popen(ur_cmd)'
tii ' local retTABLE = {}'
tii ' for k in iofile:lines() do table.insert(retTABLE, k) end'
tii ' iofile:close()'
tii ' return retTABLE'
tii ' end'
tcompile(def_ioexec)
tia 'def_printio'
tii 'function printio(ur_cmd)'
tii ' printiv(ioexec(ur_cmd))'
tii ' end'
tcompile(def_printio)
--printio('ls /storage')
local ttbFILE = ioexec('find /sdcard/Download -name "TWMove_*.htm" -print')
local strFILE = ""
for k,v in pairs(ttbFILE) do
strFILE = v
break
end
print('1: ' .. strFILE)
--[under folder /sdcard/qlua5]
--Create subdir share/5.3
--Put in a copy of def.lua
--This file can be run by the QLua command "require" because it uses the LoadString function instead of the Load function in def_tcompile and def_tia
print()
def_tcompile = {'function tcompile(ur_table) loadstring(table.concat(ur_table, "\\r"))() end'}
loadstring(table.concat(def_tcompile, "\\r"))()
def_ti = {'function ti(ur_table, ur_line) table.insert(ur_table, ur_line) end'}
tcompile(def_ti)
def_tia = {}
ti(def_tia, 'function tia(ur_table)')
ti(def_tia, ' local strASSIGN = ur_table .. " = {}; " ')
ti(def_tia, ' strASSIGN = strASSIGN .. "function tii(ur_line) ti(" .. ur_table .. ", ur_line) end" ')
ti(def_tia, ' loadstring(strASSIGN)() ')
ti(def_tia, ' end')
tcompile(def_tia)
tia 'def_printk'
tii 'function printk(ur_table)'
tii ' local pk = {}'
tii ' for k in pairs(ur_table) do'
tii ' table.insert(pk, k)'
tii ' end'
tii ' table.sort(pk)'
tii ' for k,v in pairs(pk) do print(v) end'
tii ' end'
tcompile(def_printk)
tia 'def_printv'
tii 'function printv(ur_table)'
tii ' local pk = {}'
tii ' for k,v in pairs(ur_table) do'
tii ' table.insert(pk, v)'
tii ' end'
tii ' table.sort(pk)'
tii ' for k,v in pairs(pk) do print(v) end'
tii ' end'
tcompile(def_printv)
tia 'def_tcopy'
tii 'function tcopy(ur_src_table, ur_dest_table)'
tii ' for k,v in pairs(ur_src_table) do'
tii ' table.insert(ur_dest_table, v)'
tii ' end'
tii ' end'
tcompile(def_tcopy)
tia 'def_printiv'
tii 'function printiv(ur_table)'
tii ' for k,v in pairs(ur_table) do'
tii ' print(v)'
tii ' end'
tii ' end'
tcompile(def_printiv)
tia 'def_printkv'
tii 'function printkv(ur_table)'
tii ' local pk = {}'
tii ' for k in pairs(ur_table) do'
tii ' table.insert(pk, k)'
tii ' end'
tii ' table.sort(pk)'
tii ' for k,v in pairs(pk) do print(v .. ": " .. type(ur_table[v]) ) end'
tii ' end'
tcompile(def_printkv)
tia 'def_ioexec'
tii 'function ioexec(ur_cmd)'
tii ' local iofile = io.popen(ur_cmd)'
tii ' local retTABLE = {}'
tii ' for k in iofile:lines() do table.insert(retTABLE, k) end'
tii ' iofile:close()'
tii ' return retTABLE'
tii ' end'
tcompile(def_ioexec)
tia 'def_printio'
tii 'function printio(ur_cmd)'
tii ' printiv(ioexec(ur_cmd))'
tii ' end'
tcompile(def_printio)
--printio('ls /storage')
--[[
local ttbFILE = ioexec('find /sdcard/Download -name "TWMove_*.htm" -print')
local strFILE = ""
for k,v in pairs(ttbFILE) do
strFILE = v
break
end
print('1: ' .. strFILE)
--]]
[TiddlyWiki Code form]
<$button>
<$list filter="[tag[ARTICLE]]"><$action-sendmessage $message=tm-delete-tiddler $param=<<currentTiddler>> /></$list>
Del ARTICLE tagged Cards with Confirmation
</$button>
<$button>
<$list filter="[tag[ARTICLE]]"><$action-deletetiddler $tiddler=<<currentTiddler>> /></$list>
Del ARTICLE tagged Cards without Confirmation
</$button>
<$button>
<$list filter="[tag[DOC]]" variable=doc_pk><$list filter="[<doc_pk>fields[]prefix[e]]" variable=field_pk2><$action-deletefield $tiddler=<<doc_pk>> $field=<<field_pk2>> /></$list></$list>
Del fields starting with `E` in DOC tagged Cards
</$button>
[QLua Android form]
- Note: I had problems using the LoadString
function with the require
command
- - In the Lua code, replace any references to the Load
function with the LoadString
function
- - The LoadString
command needs extra escaping like\\r
for the parameter, so replace \r
with \\r
when using the LoadString
command
- [Bottom bar]
- Click button Save-As (Looks like a page with a Plus in the bottom-right corner) -> Open dialog
- [Save As dialog]
- If necessary,
- - [Bottom bar]
- - Click button New Folder (looks like a Plus sign) -> Opens dialog
- - Directory Name = share
- - Click button OK -> Closes dialog
- Note: The share/5.3
directory under the QLua5 folder is where Lua looks to load "program modules" that must be loaded to the _G array as a prerequisites to running the current program
- [Folder list]
- * Select folder share
- If necessary,
- - [Bottom bar]
- - Click button New Folder (looks like a Plus sign) -> Opens dialog
- - Directory Name = 5.3
- - Click button OK -> Closes dialog
- [Folder list]
- * Select folder 5.3
- [Bottom bar]
- File name = UrFileName.lua
- Click button OK (looks like a checkmark)
[File Manager]
- Note: Your Lua program is stored in folder /sdcard/qlua/share/5.3
[Lua console]
- Note: The require command to loads and runs a program module
- - Do not include the path or the .lua
file extension
require 'UrFileName'
- Output is the Lua program output
[JavaScript Code form]
exports
is a reference to module.exports
module.exports
, exports
is not no longer a reference to it, and exports loses all its power
[JavaScript Code form]
+
)
[TiddlyWiki Code form]
[DivPop.svg]
[DivPop button]
Tag = $:/tags/ViewToolbar
\define divpop_current(ur_ref)
<$button class=<<tv-config-toolbar-class>> >
<$action-setfield $tiddler="$:/state/sidebar" text="yes"/>
<$action-setfield $tiddler="$:/state/popup/DivPopTitle" text="$ur_ref$"/>
<$action-sendmessage $message="tm-close-tiddler" $param="pop_right"/>
<$list filter="[<tv-config-toolbar-icons>match[yes]]">
{{DivPop.svg}}
</$list>
<$list filter="[<tv-config-toolbar-text>match[yes]]">
<span class="tc-btn-text"><$text text="Popup over Sidebar"/></span>
</$list>
</$button>
\end
<$list filter="[all[current]]">
<$macrocall $name=divpop_current ur_ref=<<currentTiddler>> />
</$list>
[DivPop macro]
Tag = $:/tags/BelowStory
<$list filter="[{$:/state/popup/DivPopTitle}is[tiddler]]">
<div style="
position: fixed;
top: 0px;
right: 0px;
width: 350px;
border: 3px solid;
background: white;
bottom: 0%;
">
<div style="overflow-y: scroll; height: 100%;">
<$button>
<$action-setfield $tiddler="$:/state/sidebar" text="no"/>
<$action-setfield $tiddler="$:/state/popup/DivPopTitle" text=""/>
close
</$button>
<$tiddler tiddler=<<currentTiddler>> >
<$transclude mode="block" />
</$tiddler>
</div>
</div>
</$list>
[JavaScript Code form]
- alert
function displays up to 999 characters
- naviator.clipboard.writeText
posts data to the Windows Clipboard
;(
function() {
let obaBODY = document;
let sdaPROP = Object.getOwnPropertyNames(obaBODY);
let strMESSAGE =
'Prop: '.concat(
sdaPROP.join('\n'.concat(' Prop: '))).concat('\n\n').concat(''
)
navigator.clipboard.writeText(strMESSAGE)
alert('Prop count: '.concat(sdaPROP.length));
}
)();
[Google Chrome Windows form]
- Open a YouTube page with a video
- Press the space bar to pause playback
- [In the Address bar]
- * Click in the Address bar and press Ctrl-A then Ctrl-C to copy the page's address to the clipboard
- - Make sure the address says "www.youtube.com" and not "youtu.be"
[VLC for Windows step]
- * [Menu bar, Tools menu]
- * Click option Codec Information -> Opens dialog
[Google Chrome Windows step]
- * Right-click on the video file -> Opens menu
- * Click option Save Video As -> Opens dialog
[Google Chrome Windows step]
- * Click in the Address bar and press Ctrl-A then Ctrl-C to copy the page's address to the clipboard
[VLC for Windows form]
- [Menu bar, Media menu]
- Click option Open Network Stream -> Opens dialog
- [Open Media dialog, Network tab]
- Paste in the YouTube page's address
- Click button Play -> Closes dialog, plays video
- [Video window]
- Press the space bar to pause the video
- * [Menu bar, Tools menu]
- * Click option Codec Information -> Opens dialog
- [Current Media Information dialog, bottom section]
- * Click in the Location box and press Ctrl-A then Ctrl-C to copy the Location address to the clipboard
[Google Chrome Windows step]
- * Right-click on the video file -> Opens menu
- * Click option Save Video As -> Opens dialog
[Google Chrome Windows step]
- * Click in the Address bar and press Ctrl-A then Ctrl-C to copy the page's address to the clipboard
[VLC for Windows step]
- * [Menu bar, Tools menu]
- * Click option Codec Information -> Opens dialog
[Google Chrome Windows form]
- [Address bar]
- Paste in the address and press enter -> Plays video
- [Video window]
- Press the space bar to Pause the video
- * Right-click on the video file -> Opens menu
- [Context menu]
- * Click option Save Video As -> Opens dialog
- [Save As dialog]
- Choose the location and filename to save the video file
[TiddlyWiki Editor form]
[TiddlyWiki Settings form]
[Wiki file]
- [Sidebar, Tools tab]
- Click button Set Password -> Opens dialog
- Password = UrPasswordText
- Repeat password = UrPasswordText
- Click button Set Password -> Closes dialog
[keyboard action SaveAllChanges]
- [<$action-sendmessage $message="tm-download-file"]
- Comment out this tag to keep the HTML Wiki version from being exported
- Save the Wiki file
- Note: The password will be required to start the Wiki application when you open the Wiki file
[Windows CLI form]
RegEdit.exe
HKEY_CURRENT_USER\Control Panel\Input Method
EnableHexNumpad
1
Numlock
Alt
-key, then type the Numeric Keypad Plus (+) key onceAlt
-key, type the hexadecimal sequence using only the letters A-F on the main keyboard and 0-9 on the Numeric KeypadAlt
-key -> Windows pastes the Unicode character in the current program window[In any program]
* Hold down 'Alt'-key, then type the Numeric Keypad Plus (+) key -> Opens dialog box
* Note: The U+
displayed in the window means "Enter a Unicode character number in hexadecimal format"
* Type in a hexadecimal number
* Press enter -or- Click button Send -> Closes window, types desired Unicode character in foreground window
FileFormat.Info UnicodeInput.ZIP
blue circle with white lowercase letter i
@chcp 65001>nul
HKEY_CURRENT_USER\Software\Microsoft\Command Processor
Autorun
chcp 65001
[TiddlyWiki Code form]
- [UrTemplate card]
- tags = $:/tags/Exporter
- field: description = Export as Code
- field: extension = .codetxt
\define renderContent()
<$list variable=cur_export_card filter="$(exportFilter)$">
<hr>
<h2><$link to=<<cur_export_card>> /></h2>
<$list variable=cur_export_text filter="[<cur_export_card>get[text]]">
<$codeblock code=<<cur_export_text>> />
</$list><!--cur_export_text-->
</$list><!--cur_export_card-->
\end
<<renderContent>>
- [Card menu, export tiddler sub-menu]
- Note: There is an Export as Code option
- Click option Export as Code -> Downloads file
[UrCard.codetxt.html]
- Note: You can remove the .hmtl extension, and rename the file with extension .code.txt
Or use a button to specify a file name
- [UrHardCodedTemplate card]
- Make a copy of the UrTemplate card
- Replace the "$(exportFilter)$" text with a standard filter
- [New Card]
<$button>
<$action-sendmessage $message="tm-download-file" $param="UrHardCodedTemplate" filename="UrCard.code.txt" />
Export as Code
</$button>
- Click button Export as Code -> Downloads file
[UrCard.code.txt file] - Note: It contains the card's title and code as text
[TiddlyWiki Advanced Search form]
- Click tab Filter -> Navigates tab
- Filter = [tag[UrTagName]]
- Note: The cards are listed
- * Click button Export Tiddlers (resembles arrow coming out of tray) -> Opens menu
- * Click option JSON -> Downloads file
[Folder Structure step]
- * You can drag the file onto a TiddlyWiki page to re-import the cards
[TiddlyWiki Advanced Search step]
- * Click button Export Tiddlers (resembles arrow coming out of tray) -> Opens menu
- * Click option JSON -> Downloads file
[Folder Structure form]
- Look for the downloaded .JSON file in the Downloads folder
- Rename the file according to your tag name
- * You can drag the file onto a TiddlyWiki page to re-import the cards
[Instapaper.com Website form]
- [https://www.instapaper.com/u]
- [Top-right icon]
- Click login-name menu, option Settings -> Navigates page
- * [Settings page, Export section]
- Click link Download .CSV file -> Opens dialog
- Click button OK -> Starts download, closes dialog
[CSV file]
- Header fields =
URL
Title
Selection
Folder
Timestamp
- Header line =
URL,Title,Selection,Folder,Timestamp
- Sample data 1 =
https://m.youtube.com/watch?v=ABC123DEF&index=14,"""UrQuotedText"" - UrVideoTitle",UrCommentText,"UrInstapaperFolder",1605840648
- Sample data 1 =
https://www.urcompany.com/urfolder/urarticle/,UrArticleTitle,,UrInstapaperFolder,UrCommentText1603883475
[Google.com Contacts form]
- [https://contacts.google.com/]
- [Left-side menu]
- * Click button Export -> Opens dialog
- Export contacts = Contacts (total count)
- Export as = Google CSV
- Click button Export -> Downloads file, Closes dialog
[CSV file]
- Header fields =
Name
Given Name
Additional Name
Family Name
Yomi Name
Given Name Yomi
Additional Name Yomi
Family Name Yomi
Name Prefix
Name Suffix
Initials
Nickname
Short Name
Maiden Name
Birthday
Gender
Location
Billing Information
Directory Server
Mileage
Occupation
Hobby
Sensitivity
Priority
Subject
Notes
Language
Photo
Group Membership
E-mail 1 - Type
E-mail 1 - Value
E-mail 2 - Type
E-mail 2 - Value
Phone 1 - Type
Phone 1 - Value
Phone 2 - Type
Phone 2 - Value
Address 1 - Type
Address 1 - Formatted
Address 1 - Street
Address 1 - City
Address 1 - PO Box
Address 1 - Region
Address 1 - Postal Code
Address 1 - Country
Address 1 - Extended Address
Organization 1 - Type
Organization 1 - Name
Organization 1 - Yomi Name
Organization 1 - Title
Organization 1 - Department
Organization 1 - Symbol
Organization 1 - Location
Organization 1 - Job Description
Relation 1 - Type
Relation 1 - Value
Website 1 - Type
Website 1 - Value
- Header line =
Name,Given Name,Additional Name,Family Name,Yomi Name,Given Name Yomi,Additional Name Yomi,Family Name Yomi,Name Prefix,Name Suffix,Initials,Nickname,Short Name,Maiden Name,Birthday,Gender,Location,Billing Information,Directory Server,Mileage,Occupation,Hobby,Sensitivity,Priority,Subject,Notes,Language,Photo,Group Membership,E-mail 1 - Type,E-mail 1 - Value,E-mail 2 - Type,E-mail 2 - Value,Phone 1 - Type,Phone 1 - Value,Phone 2 - Type,Phone 2 - Value,Address 1 - Type,Address 1 - Formatted,Address 1 - Street,Address 1 - City,Address 1 - PO Box,Address 1 - Region,Address 1 - Postal Code,Address 1 - Country,Address 1 - Extended Address,Organization 1 - Type,Organization 1 - Name,Organization 1 - Yomi Name,Organization 1 - Title,Organization 1 - Department,Organization 1 - Symbol,Organization 1 - Location,Organization 1 - Job Description,Relation 1 - Type,Relation 1 - Value,Website 1 - Type,Website 1 - Value
- Sample data 1
.me,.me,,,,,,,,,,,,,,,,,,,,,,,,,,,Imported 8/5/16 ::: * myContacts,,,,,Mobile,5554443333 ::: 16665554444,,,,,,,,,,,,,,,,,,,,,,,
- Sample data 2
UrContactName,UrContactFirstName,,UrContactLastName,,,,,,,,,,,,,,,,,,,,,,,,,* myContacts,,,,,Mobile,(444) 333-2222,,,,,,,,,,,,,,,,,,,,,,,
[Google.com Takeout form]
- [https://takeout.google.com/]
- * [Products section]
- Click link Deselect All
- [Mail section]
- checkbox = set
- [End of Page section]
- Click button Next Step -> Navigates section
- [Choose file type, frequency & destination]
- Frequency = Export once
- File type = .zip
- File size = 2 GB
- Click button Create Export -> Navigates section
- [Export Progress]
- Note: Google is creating a copy of files from Mail. This process can take a long time (possibly hours or days) to complete. You'll receive an email when your export is done.
[https://mail.google.com/]
- [Message with title "Archive of Google data requested"]
- Note: You can ignore the message or click the link to verify it was you
- [Message with title "Your Google data is ready to download"]
- Click button Download Your Files -> Opens tab
[Google Takeout form]
- Re-enter your password
- [Record where Export = Mail]
- Note: The size of the export file is also in the Export column
- Click button Download -> Downloads file
- Note: The file may take a long time to download depending on your internet connection and the size of the file
[ZIP file]
- Extract the ZIP file to a folder
[Takeout folder]
- Open the archive_browser.html -> Opens browser
[Archive Browser page]
- [File Formats tab]
- Note: An mbox is a way of storing mail messages and is supported by common mail clients like Microsoft Outlook, Mozilla Thunderbird, and Apple's Mail program. These files are most easily opened by a dedicated mail client like those listed above
[Takeout\Mail folder]
- [All mail Including Spam and Trash.mbox]
- Use Mozilla Thunderbird to read the MBOX file
- OR Split this file into smaller text files... somehow
- Format:
Record Start = Leading "From " <- Including the space
Tags = "WordsWithoutSpaces:" <- no spaces in tag name
Tag continuation values = " Every Line With Leading Space Or Tab After Tag Name"
Email Content = "First line that is not a tag or tag continuation -> through last line before next leading " "From "
[JavaScript Bookmarklet form]
avascript:newWindow=window.open("about:blank","newWindow");if(window.focus){;newWindow.document.documentElement.innerHTML='<html><head><title>Source of Page<\/title><\/head><body><pre>'+document.documentElement.outerHTML.replaceAll('&','&').replaceAll('<','<')+'<\/pre><\/body><\/html>';newWindow.document.body.contentEditable = 'true'; newWindow.document.designMode='on';void(newWindow.focus());}
[JavaScript Bookmarklet form]
avascript:newWindow=window.open("about:blank","newWindow");if(window.focus){;newWindow.document.documentElement.innerHTML='<html><head><title>Source of Page<\/title><\/head><body><pre>'+document.documentElement.outerHTML.replaceAll('&','&').replaceAll('<','<').replaceAll('<html','<div').replaceAll('<\/html','<\/div').replaceAll('<body','<div').replaceAll('<\/body','<\/div').replaceAll('position: absolute','position: relative').replaceAll('position: fixed','position: relative').replaceAll('position: flex','position: relative').replaceAll('>remove<\/a>','><\/a>').replaceAll('src="http','src_attr="http').replaceAll('src=\'http','src_attr=\'http')+'<\/pre><\/body><\/html>';newWindow.document.body.contentEditable = 'true'; newWindow.document.designMode='on';void(newWindow.focus());}
[Google Chrome Windows form]
[Windows CLI step]
- *
ffprobe -show_format UrFilePath.ext
-> Output lines
[Google Chrome Windows step]
[Windows CLI form]
- * ffprobe -show_format UrFilePath.ext
-> Output lines
- Note: There may be several lines starting with TAG:
- - TAG:title=
- - TAG:album=
- - TAG:artist=
[FFMpeg Windows form]
- * The output filename must have a .SRT extension
chcp 65001
C:\UrPath\ffmpeg.exe -i "C:\UrPath\UrFile.mp4" "C:\UrPath\UrFile.srt"
pause
[TiddlyWiki Code form]
Tag = $:/tags/Macro
\define glbl_dt_ddd()
<div style="clear:right;float:right;background-color:aquamarine;"><<now "YYYYm0MMd0DD DDD pm0hh12\m0mm">></div>
<$list filter="[<currentTiddler>split[Draft of ']join[]split[ ]first[]split[m]join[]split[d]join[]]">
<$view field="title" format="date" template="[UTC]DDD" />
</$list>
\end
Token | Substituted Value |
---|---|
DDD | Day of week in full (eg, "Monday") |
ddd | Short day of week (eg, "Mon") |
DD | Day of month |
0DD | Adds a leading zero |
DDth | Adds a suffix |
WW | ISO-8601 week number of year |
0WW | Adds a leading zero |
MMM | Month in full (eg, "July") |
mmm | Short month (eg, "Jul") |
MM | Month number |
0MM | Adds leading zero |
YYYY | Full year |
YY | Two digit year |
wYYYY | Full year with respect to week number |
wYY | Two digit year with respect to week number |
hh | Hours |
0hh | Adds a leading zero |
hh12 | Hours in 12 hour clock |
0hh12 | Hours in 12 hour clock with leading zero |
mm | Minutes |
0mm | Minutes with leading zero |
ss | Seconds |
0ss | Seconds with leading zero |
XXX | Milliseconds |
0XXX | Milliseconds with leading zero |
am or pm | Lower case AM/PM indicator |
AM or PM | Upper case AM/PM indicator |
TZD | Timezone offset |
\x | Used to escape a character that would otherwise have special meaning |
[UTC] | Time-shift the represented date to UTC. Must be at very start of format string |
[JavaScript Bookmarklet form]
Copy the HTML body to a new window, so CSS and Javascript are ignored
avascript:newWindow=window.open("about:blank","newWindow");if(window.focus){newWindow.document.documentElement.innerHTML=document.body.innerHTML;void(newWindow.focus());}
Copy the HTML body to a new window showing the HTML tags, so you can see the HTML code
avascript:newWindow=window.open("about:blank","newWindow");if(window.focus){newWindow.document.documentElement.innerHTML=document.body.innerHTML.replace(/&/g,"&").replace(/</g,"<br><");void(newWindow.focus());}
Copy the HTML body without any HTML tags, so the text is loaded without any HTML or CSS styling
avascript:newWindow=window.open("about:blank","newWindow");if(window.focus){newWindow.document.documentElement.innerHTML=document.body.innerHTML.replace(/<[^>]+>/g, '<br>');void(newWindow.focus());}
[JavaScript Bookmarklet form]
(function(){ var imgs = document.getElementsByTagName('iframe'),t=[]; for (var i=0, n=imgs.length;i'+ imgs[i].src+''); if (t.length) { var w=window.open('','_blank'); if (w) {w.document.write(t.join(' '));w.document.close();} else alert('cannot pop a window'); } })();
[JavaScript Bookmarklet form]
avascript:(function(){ var imgs = document.getElementsByTagName('img'),t=[]; for (var i=0, n=imgs.length;i<n;i++) t.push('<a href="'+imgs[i].src+'"><img src="'+ imgs[i].src+'" width="100"></a>'); if (t.length) { var w=window.open('','_blank'); if (w) {w.document.write(t.join(' '));w.document.close();} else alert('cannot pop a window'); } })();
[FFMpeg Windows form]
- * The output filename must have an image file format extension, like .JPG
- -ss 05:00 -t 10:00
means start at 5min and end 10min later at 15min
- -r 1
means 1 frame per second
- -r 0.25
means 1 frame every 4 seconds
- -r 0.083
means 1 frame every 12 seconds, or 5 frames per minute, 50 frames out of every ten minutes, or 300 frames every hour
- IrfanView can create a portrait contact sheet with 5 columns, representing one min of video per row, 10 rows per page showing 10 minutes of video
- IrfanView can create a landscape contact sheet with 7 columns is one 3 min per 2 rows, 7 rows per page showing 10.5 minutes of video, two pages showing 21 minutes
- Open on thumbnail image with IrfanView, select File menu Thumbnails option
- Select all files in the folder, select File menu Create Contact Sheet
- 1280x738, 738/1280*320 = 184.5, use -s 320x180 to keep aspect ratio
- paper 150px * 8.5in = 1250px wide, 150px * 11in = 1650in tall
- screen 1920px x 1080px with 7 x 7, stretch small images to maximal size
chcp 65001
rem -ss 05:00 -t 10:00 means start at 5min and end 10min later at 15min
C:\UrPath\ffmpeg.exe -i "C:\UrPath\UrFile.mp4" -r 0.083 -s 320x180 "UrPath\UrSubdir\output_%%04d.jpg"
[TiddlyWiki Code form]
The [ code specifies the –[– character. The Wikify widget can evaluate the codepoint and store the unicode character in a variable. Then you can use the variable in a filter.
\define calc_open_bracket()[
<$wikify name=lit_open_bracket text=<<calc_open_bracket>> >
<$list variable=cur_title filter="[tag[T!]sort[]]">
<$list variable=filter_text_contents filter="[<cur_title>get[text]split<lit_open_bracket>count[1]!match[1]]">
<$link to=<<cur_title>> />
</$list><!--filter_text_contents-->
</$list><!--cur_title-->
</$wikify><!--lit_open_bracket-->
[TiddlyWiki Code form]
abs - calculate the absolute value of a list of numbers
add - treating each input title as a number, add to each the numeric value of the operand
ceil - rounds a list of numbers up to the next largest integer
divide - treating each input title as a number, divide them by the numeric value of the operand
exponential - convert each number to exponential notation with N digits
fixed - convert each number to fixed point notation with N digits after the decimal point
floor - rounds a list of numbers to the largest integer less than or equal to each number
max - treating each input title as a number, take the maximum of its value and the numeric value of the operand
maxall - find the largest of a list of numbers
min - treating each input title as a number, take the minimum of its value and the numeric value of the operand
minall - find the smallest of a list of numbers
multiply - treating each input title as a number, multiply it by the numeric value of the operand
negate - calculate the negation of a list of numbers
precision - convert each number to a string with N significant digits
product - produce the product of the input numbers
remainder - treating each input title as a number, return the remainder when divided by the numeric value of the operand
round - rounds a list of numbers to the nearest integer
sign - return -1, 0 or 1 for a list of numbers according to whether each number is negative, zero, or positive
subtract - treating each input title as a number, subtract from each the numeric value of the operand
sum - produce the sum of the input numbers
trunc - truncates a list of numbers to their integer part, removing any fractional part
untrunc - rounds a list of numbers to the next integer with largest absolute value, that is, away from zero
[VB.Net Code form]
Function version_info() As String
version_info = "flag CLR 4.5 Features = " & If(Type.GetType(typeName:="System.Reflection.ReflectionContext", throwOnError:=False) Is Nothing, "", "True") & vbCrLf
version_info &= "flag CLR 4.51 Features = " & If(Type.GetType(typeName:="System.Runtime.GCLargeObjectHeapCompactionMode", throwOnError:=False) Is Nothing, "", "True") & vbCrLf
version_info &= "CLR Version = " & System.Environment.Version.ToString & vbCrLf
version_info &= "CLR Local Path = " & System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory() & vbCrLf
version_info &= "Operating System = " & CType(System.Attribute.GetCustomAttribute(System.Reflection.Assembly.GetEntryAssembly(), GetType(System.Runtime.Versioning.TargetFrameworkAttribute)), System.Runtime.Versioning.TargetFrameworkAttribute).FrameworkName & " on " & System.Runtime.InteropServices.RuntimeInformation.OSDescription
End Function
[YouTube.com Website form]
[Plus.codes Website form]
- [https://plus.codes/map/]
- [Search box, Left-side icon]
- Click the three-lines menu, option Satellite -> Refreshes window
- * Click the three-lines menu, option Grid -> Refreshes window
- [Navigate to location]
- When the mouse icon is a hand, double-click to Zoom in
- Each time you click, the location will show as 8 characters, a plus sign, and two suffix characters
- - Example: 73F6C9JH+HR
- The last two Zoom levels allow you to select a single Plus Code rectangle, which has three suffix characters after the plus sign
- - Example: 73F6C9JH+HR7
- Copy the browser address bar
- - Example: https://plus.codes/73F6C9JH+HR7
- Note: You can email the page link to someone
- - They will have to turn on the satellite and / or grid options again
- Note: You can use the browser to bookmark the current page
- - Android O/S Chrome can create a desktop shortcut to the current website page (when not in Incognito mode)
- Note: The plus codes are 8 characters, a plus, and two or three suffix characters
- - The bottom of the Plus.Codes website's map only temporarily shows the three suffix characters after you click, quickly reverting to show only two suffix characters
- - You can still see all three suffix characters in the address bar
- [Bottom location code bar, Right-side icon]
- Click button Navigate (looks like a Right-Turn Only road sign) -> Navigates to Google Maps website
- Note: Android O/S Chrome app will ask to Stay On Web or Use The App
- - Click button Use The App to open the Google Maps app
[GitHub for Windows form]
- The git.exe program is under the GitHub install folder's resources\app sub-folder
- When GitHub Desktop is installed, the Git.exe program can be placed in the %APPDATA% folder
- There may be multiple sub-directories, one for each version of Git that has been downloaded
- Look for the latest version-numbered folder
C:\Users\UrUser\AppData\Local\GitHubDesktop\app-UrVersion
Under the app-UrVersion folder, find the Git.exe program
app-UrVersion\resources\app\git\cmd\git.exe
[Microsoft.com Website form]
Prerequisites
The information that is contained in this topic applies to:Windows Server 2019
Windows Server (Semi-Annual Channel)
Windows Server 2016
Windows Server 2012 R2
Windows Server 2012
Windows Server 2008 R2
Windows Server 2008
Windows 10
Windows 8.1Command shell overview
The Command shell was the first shell built into Windows to automate routine tasks, like user account management or nightly backups, with batch (.bat) files. With Windows Script Host you could run more sophisticated scripts in the Command shell. For more information, see
cscript
or
wscript
. You can perform operations more efficiently by using scripts than you can by using the user interface. Scripts accept all Commands that are available at the command line.
Windows has two command shells: The Command shell and
PowerShell
. Each shell is a software program that provides direct communication between you and the operating system or application, providing an environment to automate IT operations.
PowerShell was designed to extend the capabilities of the Command shell to run PowerShell commands called cmdlets. Cmdlets are similar to Windows Commands but provide a more extensible scripting language. You can run Windows Commands and PowerShell cmdlets in Powershell, but the Command shell can only run Windows Commands and not PowerShell cmdlets.
For the most robust, up-to-date Windows automation, we recommend using PowerShell instead of Windows Commands or Windows Script Host for Windows automation.
Note
You can also download and install
PowerShell Core
, the open source version of PowerShell. Caution
Incorrectly editing the registry may severely damage your system. Before making the following changes to the registry, you should back up any valued data on the computer. Note
To enable or disable file and directory name completion in the Command shell on a computer or user logon session, run
regedit.exe
and set the following
reg_DWOrd value
:
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\completionChar\reg_DWOrd
To set the
reg_DWOrd
value, use the hexadecimal value of a control character for a particular function (for example,
0 9
is Tab and
0 08
is Backspace). User-specified settings take precedence over computer settings, and command-line options take precedence over registry settings.Command-line reference A-Z
To find information about a specific Windows Command, in the following A-Z menu, click the letter that the Command starts with, and then click the Command name.
A append
arp
assoc
at
atmadm
attrib
auditpol
autochk
autoconv
autofmt
B bcdboot
bcdedit
bdehdcfg
bitsadmin
bitsadmin addfile
bitsadmin addfileset
bitsadmin addfilewithranges
bitsadmin cancel
bitsadmin complete
bitsadmin create
bitsadmin getaclflags
bitsadmin getbytestotal
bitsadmin getbytestransferred
bitsadmin getcompletiontime
bitsadmin getcreationtime
bitsadmin getdescription
bitsadmin getdisplayname
bitsadmin geterror
bitsadmin geterrorcount
bitsadmin getfilestotal
bitsadmin getfilestransferred
bitsadmin getminretrydelay
bitsadmin getmodificationtime
bitsadmin getnoprogresstimeout
bitsadmin getnotifycmdline
bitsadmin getnotifyflags
bitsadmin getnotifyinterface
bitsadmin getowner
bitsadmin get priority
bitsadmin getproxybypasslist
bitsadmin getproxylist
bitsadmin getproxyusage
bitsadmin getreplydata
bitsadmin getreplyfilename
bitsadmin getreplyprogress
bitsadmin getstate
bitsadmin gettype
bitsadmin help
bitsadmin info
bitsadmin list
bitsadmin listfiles
bitsadmin monitor
bitsadmin nowrap
bitsadmin rawreturn
bitsadmin removecredentials
bitsadmin replaceremoteprefix
bitsadmin reset
bitsadmin resume
bitsadmin setaclflag
bitsadmin setcredentials
bitsadmin setdescription
bitsadmin setdisplayname
bitsadmin setminretrydelay
bitsadmin setnoprogresstimeout
bitsadmin setnotifycmdline
bitsadmin setnotifyflags
bitsadmin setpriority
bitsadmin setproxysettings
bitsadmin setreplyfilename
bitsadmin suspend
bitsadmin takeownership
bitsadmin Transfer
bitsadmin util
bitsadmin wrap bootcfg
bootcfg addsw
bootcfg copy
bootcfg dbg1394
bootcfg debug
bootcfg default
bootcfg delete
bootcfg ems
bootcfg query
bootcfg raw
bootcfg rmsw
bootcfg timeout break
C cacls
call
cd
certreq
certutil
change
change logon
change port
change user chcp
chdir
chglogon
chgport
chgusr
chkdsk
chkntfs
choice
cipher
cleanmgr
clip
cls
Cmd
cmdkey
cmstp
color
comp
compact
convert
copy
cprofile
cscript
D date
dcgpofix
defrag
del
dfsrmig
diantz
dir
diskcomp
diskcopy
diskpart
diskperf
diskraid
diskshadow
dispdiag
dnscmd
doskey
driverquery
E echo
edit
endlocal
erase
eventcreate
eventquery
eventtriggers
evntcmd
exit
expand
extract
F fc
find
findstr
finger
flattemp
fondue
for
forfiles
format
freedisk
fsutil
fsutil 8dot3name
fsutil behavior
fsutil file
fsutil fsinfo
fsutil hardlink
fsutil objectid
fsutil quota
fsutil repair
fsutil reparsepoint
fsutil resource
fsutil sparse
fsutil tiering
fsutil transaction
fsutil usn
fsutil volume
fsutil wim ftp
ftype
fveupdate
G getmac
gettype
goto
gpfixup
gpresult
gpupdate
graftabl
H help
helpctr
hostname
I icacls
if
inuse
ipconfig
ipxroute
irftp
J jetpack
K klist
ksetup
ksetup:setrealm
ksetup:mapuser
ksetup:addkdc
ksetup:delkdc
ksetup:addkpasswd
ksetup:delkpasswd
ksetup:server
ksetup:setcomputerpassword
ksetup:removerealm
ksetup:domain
ksetup:changepassword
ksetup:listrealmflags
ksetup:setrealmflags
ksetup:addrealmflags
ksetup:delrealmflags
ksetup:dumpstate
ksetup:addhosttorealmmap
ksetup:delhosttorealmmap
ksetup:setenctypeattr
ksetup:getenctypeattr
ksetup:addenctypeattr
ksetup:delenctypeattr ktmutil
ktpass
L label
lodctr
logman
logman create
logman query
logman start &124; stop
logman delete
logman update
logman import &124; export logoff
lpq
lpr
M macfile
makecab
manage-bde
manage-bde: status
manage-bde: on
manage-bde: off
manage-bde: pause
manage-bde: resume
manage-bde: lock
manage-bde: unlock
manage-bde: autounlock
manage-bde: protectors
manage-bde: tpm
manage-bde: setidentifier
manage-bde: ForceRecovery
manage-bde: changepassword
manage-bde: changepin
manage-bde: changekey
manage-bde: KeyPackage
manage-bde: upgrade
manage-bde: WipeFreeSpace mapadmin
Md
mkdir
mklink
mmc
mode
more
mount
mountvol
move
mqbkup
mqsvc
mqtgsvc
msdt
msg
msiexec
msinfo32
mstsc
N nbtstat
netcfg
netsh
netstat
Net print
nfsadmin
nfsshare
nfsstat
nlbmgr
nslookup
nslookup exit command
nslookup finger command
nslookup help
nslookup ls
nslookup lserver
nslookup root
nslookup server
nslookup set
nslookup set all
nslookup set class
nslookup set d2
nslookup set debug
nslookup set domain
nslookup set port
nslookup set querytype
nslookup set recurse
nslookup set retry
nslookup set root
nslookup set search
nslookup set srchlist
nslookup set timeout
nslookup set type
nslookup set vc
nslookup view ntbackup
ntcmdprompt
ntfrsutl
O openfiles
P pagefileconfig
path
pathping
pause
pbadmin
pentnt
perfmon
ping
pnpunattend
pnputil
popd
PowerShell
PowerShell_ise
print
prncnfg
prndrvr
prnjobs
prnmngr
prnport
prnqctl
prompt
pubprn
pushd
pushprinterconnections
Q qappsrv
qprocess
query
quser
qwinsta
R rcp
rd
rdpsign
recover
reg
reg add
reg compare
reg copy
reg delete
reg export
reg import
reg load
reg query
reg restore
reg save
reg unload regini
regsvr32
relog
rem
ren
rename
repair-bde
replace
reset session
rexec
risetup
rmdir
robocopy
route_ws2008
rpcinfo
rpcping
rsh
rundll32
rwinsta
S schtasks
scwcmd
scwcmd: analyze
scwcmd: configure
scwcmd: register
scwcmd: rollback
scwcmd: transform
scwcmd: view
secedit
secedit:analyze
secedit:configure
secedit:export
secedit:generaterollback
secedit:import
secedit:validate serverceipoptin
Servermanagercmd
serverweroptin
set
setlocal
setx
sfc
shadow
shift
showmount
shutdown
sort
start
subst
sxstrace
sysocmgr
systeminfo
T takeown
tapicfg
taskkill
tasklist
tcmsetup
telnet
tftp
time
timeout
title
tlntadmn
tpmvscmgr
tracerpt
tracert
tree
tscon
tsdiscon
tsecimp
tskill
tsprof
type
typeperf
tzutil
U unlodctr
V ver
verifier
verify
vol
vssadmin
-W waitfor
wbadmin
wbadmin enable backup
wbadmin disable backup
wbadmin start backup
wbadmin stop job
wbadmin get versions
wbadmin get items
wbadmin start recovery
wbadmin get status
wbadmin get disks
wbadmin start systemstaterecovery
wbadmin start systemstatebackup
wbadmin delete systemstatebackup
wbadmin start sysrecovery
wbadmin restore catalog
wbadmin delete catalog wdsutil
wecutil
wevtutil
where
whoami
winnt
winnt32
winpop
winrs
wmic
wscript
X xcopy
[Microsoft.com Website form]
Windows Environment Variable List
User-replaced value = UrUserName
ECHO %CD%
C:\UrFolderPath\UrSubfolder
cd %USERPROFILE%
cd
C:\Users\UrUserName
cd %TEMP%
cd
C:\Users\UrUserName\AppData\Local\Temp
cd %APPDATA%
cd
C:\Users\UrUserName\AppData\Roaming
[TiddlyWiki.com Website form]
Missing: [TW Snapshot Review]
Goal: Browse the code inside the WIki file
TW Snapshot v5d01d23 pre-release
[GitHub.com Website form]
[Home button] Tiddly Wiki Home Button source code
{{$:/core/images/home-button}}
[Save button] TiddlyWiki Save Button source code
<$action-sendmessage $message="tm-save-wiki" $param={{$:/config/SaveWikiButton/Template}} filename=<<site-title>>/>
<span class="tc-dirty-indicator">
<span>
to red when the Wiki file has not been saved[TiddlyWiki TopBar Menu]
<$button set="$:/state/sidebar" setTo="no"/>
<$button set="$:/state/sidebar" setTo="yes"/>
$:/state/sidebar
Card is "no" to hide the sidebar, or "yes" show it
[Unicode.org Website form]
All files for the most up-to-date version of the Unicode Character Database can be found at: Unicode Character Database
.The latest text file databases are under the UCD subfolder. The latest set of text file databases is in a ZIP file under ucd/UCD.zip.
The list of Unicode Code Blocks are in the text database under ucd/Blocks.txt.
There is a list of names for the Unicode Code Points under ucd/Index.txt. There same list is sorted in Code Point order at under ucd/NameAliases.txt. Each hex code can have multiple names.
The unique list of Unicode Code Points is under ucd/UnicodeData.txt. There is a character name and possibly an alternative name on each row.
[Wikipedia.org Website form]
Unicode Block 01-Latin Supplement
Base Multilingual Plane (BMP = 0-65535, 0x0-0xFFFF)
Supplementary Multilingual Plane (SMP = 65536-131071, 0x10000-0x1FFFF)
Supplementary Ideographic Plane (SIP = 131072-196607, 0x2000-0x2FFFF)
Tertiary Ideographic Plane (TIP = 196608-262143, 0x3000-0x3FFFF)
Note: Planes 4 to 13 (planes 4 to D in hexadecimal): No characters have yet been assigned to Planes 4 through 13
Note: Plane 14 (E in hexadecimal), the Supplementary Special-purpose Plane (SSP)
Note: Plane 15 (plane F in hexadecimal) = Supplementary Private Use Area-A (PUA-A), is only available for use by parties outside the ISO and the Unicode Consortium.
Note: Plane 16 (plane 10 in hexadecimal) = Supplementary Private Use Area-B (PUA-B), is only available for use by parties outside the ISO and the Unicode Consortium.
[VB.Net Code form]
Microsoft DotNet Char ConvertToUTF32
retval = char.ConvertToUtf32(s:="A", index:=0).Tostring
Result:
65
retval = AscW("A"c)
retval = ChrW(65)
[HTML5 Code form]
noscript
</noscript>
<!--Javascript-disabled browser additional content-->
</noscript>
<!--Ordinary content-->
[HTML5 Comment form]
<!--
and optional whitespacesaved from url=(
- the number of characters in the URL string (including the trailing backslash)
)
- the URL string
- optional whitespace and
-->
about:internet
as a valid URL<!-- saved from url=(0014)about:internet -->
[HTML5 Comment form]
DOCTYPE
html
!
) before the declaration name / code<!DOCTYPE html>
[HTML5 Code form]
style
type
attr = text/css
<style type="text/css">
[JavaScript Bookmarklet form]
Edit webpage
javascript:document.body.contentEditable = 'true'; document.designMode='on'; void 0
Editing Done
javascript:document.body.contentEditable = 'false'; document.designMode='off'; void 0
[HTML5 Meta Tag form]
meta
http-equiv
attr = X-UA-Compatible
content
attr = IE=Edge
or (IE=11
, IE=EmulateIE11
, and similar version number pairs)Internet Explorer begins interpreting markup using the latest version. When Internet Explorer encounters the X-UA-Compatible META tag it starts over using the designated version's engine. This is a performance hit because the browser must stop and restart analyzing the content.
StackOverflow Meta UA-Compatible
<meta http-equiv="X-UA-Compatible" content="IE=Edge"/>
content="IE=Edge"
mode tells Internet Explorer to display content in the highest mode available. With Internet Explorer 9, this is equivalent to IE9 mode. If a future release of Internet Explorer supported a higher compatibility mode, pages set to edge mode would appear in the highest mode supported by that version. Those same pages would still appear in IE9 mode when viewed with Internet Explorer 9.
[HTML5 Meta Tag form]
meta
name
attr = mobile-web-app-capable
yes
GoogleDevelopers FullScreen web app
<meta name="mobile-web-app-capable" content="yes"/>
[HTML5 Meta Tag form]
meta
name
attr = apple-mobile-web-app-capable
content
attr = yes
<meta name="apple-mobile-web-app-capable" content="yes" />
[HTML5 Code form]
lang
attr = an ISO-639 Language code<html lang="en-GB">
[TiddlyWiki Code form]
.alternating-rows tr:nth-child(even) {background-color:white}
.alternating-rows tr:nth-child(odd) {background-color:lightgrey}
Note: The @@ directive must include the leading period (.) to select a CSS class
@@.alternating-rows
<table>
<tr><th>hi</th></tr>
<tr><td>hi</td></tr>
<tr><td>hi</td></tr>
<tr><td>hi</td></tr>
<tr><td>hi</td></tr>
<tr><td>hi</td></tr>
[TiddlyWiki Code form]
```
sample code "here" and "there"
```
You can use the <$codeblock>
widget to display text as the three-backticks TiddlyWiki formatting block. Make sure to put an enter at the end of the string if it ends with d-quotes.
<$codeblock code="""sample code "here" and "there"
"""/>
If you need to show text triple d-quotes in a code string, define a macro to return the string literal instead of passing in a code string.
\define sample_data_e3() sample code "here" and "there"
Make sure to put a leading space or some trailing comment text on any line within the macro that has \end
by itself. Otherwise the macro definition will end early.
\define sample_data_e4()
sample
code """here"""
and "there"
\end <--Last line of macro
Another way to display a Card's content is by using the triple-curly-brace inclusion.
<$codeblock code={{{ [[UrCardPK]get[text]] }}}/>
[TiddlyWiki Code form]
.tc-tiddler-body {
word-break: normal;
word-wrap: break-word;
white-space: pre-wrap;
}
linewrap
[data-tags*="linewrap"] .tc-tiddler-body {
word-break: normal;
word-wrap: break-word;
white-space: pre-wrap;
}
linewrap
tag will use this stylesheet changeSample Code:
@@word-break:normal;word-wrap:break-word;white-space:pre-wrap;
These are
separate lines
here
@@
This is
one big
line
Result:
These are separate lines here This is one big line
Sample Code:
This is
one big
line@@word-break:normal;word-wrap:break-word;white-space:pre-wrap; here.
Followed by a second line,
and a third here@@. And this
extends the
third line.
Result:
This is one big line here. Followed by a second line, and a third here. And this extends the third line.
[SQLite Code form]
WITH RECURSIVE test(c,cur) as (
SELECT '', HEX(blob_field) FROM UrTable WHERE UrPK = 6
UNION ALL
select c || char((case substr(cur,1,1) when 'A' then 10 when 'B' then 11 when 'C' then 12 when 'D' then 13 when 'E' then 14 when 'F' then 15 else substr(cur,1,1) end)*16
+ (case substr(cur,2,1) when 'A' then 10 when 'B' then 11 when 'C' then 12 when 'D' then 13 when 'E' then 14 when 'F' then 15 else substr(cur,2,1) end)),
substr(cur,3)
from test where length(cur)>0
)
select * from test
[HTML5 Code form]
link
rel
attr = icon
, shortcut icon
href
attr = Website icon filename, relative path, or full pathMissing: [MathiasBynens Rel Icon]
Missing: [WHATWg.org Link Icon]
<link rel="shortcut icon" href="favicon.ico">
[HTML5 Code form]
<head>
<title>UrTitle</title>
</head>
[TiddlyWiki Code form]
Name = mcr glbl_dec_to_hex5
Tag = $:/tags/Macro
\define glbl_dec_to_hex5(ur_code)
<$list filter="[[$ur_code$]divide[16]divide[16]divide[16]divide[16]floor[]]" variable=lvl_x4>
<$list filter="[<lvl_x4>multiply[16]multiply[16]multiply[16]multiply[16]]" variable=lvl_d4>
<$list filter="[[$ur_code$]subtract<lvl_d4>divide[16]divide[16]divide[16]floor[]]" variable=lvl_x3>
<$list filter="[<lvl_x3>multiply[16]multiply[16]multiply[16]]" variable=lvl_d3>
<$list filter="[[$ur_code$]subtract<lvl_d4>subtract<lvl_d3>divide[16]divide[16]floor[]]" variable=lvl_x2>
<$list filter="[<lvl_x2>multiply[16]multiply[16]]" variable=lvl_d2>
<$list filter="[[$ur_code$]subtract<lvl_d4>subtract<lvl_d3>subtract<lvl_d2>divide[16]floor[]]" variable=lvl_x1>
<$list filter="[<lvl_x1>multiply[16]]" variable=lvl_d1>
<$list filter="[[$ur_code$]subtract<lvl_d4>subtract<lvl_d3>subtract<lvl_d2>subtract<lvl_d1>]" variable=lvl_xrem>
<$list filter="[range[15]butfirst[9]match<lvl_x4>add[55]] [range[10]subtract[1]match<lvl_x4>add[48]]" variable=lvl_h4>
<$list filter="[range[15]butfirst[9]match<lvl_x3>add[55]] [range[10]subtract[1]match<lvl_x3>add[48]]" variable=lvl_h3>
<$list filter="[range[15]butfirst[9]match<lvl_x2>add[55]] [range[10]subtract[1]match<lvl_x2>add[48]]" variable=lvl_h2>
<$list filter="[range[15]butfirst[9]match<lvl_x1>add[55]] [range[10]subtract[1]match<lvl_x1>add[48]]" variable=lvl_h1>
<$list filter="[range[15]butfirst[9]match<lvl_xrem>add[55]] [range[10]subtract[1]match<lvl_xrem>add[48]]" variable=lvl_hrem>
<$wikify name=str_hex_out text="0x&#<<lvl_h4>>;-&#<<lvl_h3>>;&#<<lvl_h2>>;&#<<lvl_h1>>;&#<<lvl_hrem>>;" >
<<str_hex_out>>
</$wikify>
</$list>
</$list>
</$list>
</$list>
</$list>
</$list>
</$list>
</$list>
</$list>
</$list>
</$list>
</$list>
</$list>
</$list>
\end
[TiddlyWiki Code form]
Every Card shows the Wikified content of the Card content, followed by the Wikified content of every Card with the tag $:/tags/ViewTemplate
.
Create a new Card
template Global Footer
Any Text Here
Add the tag:
And then every Card will show the words "Any Text Here" at the bottom of the Card.
Create a new Card
template Home Button
<div style="float:right">{{$:/core/ui/Buttons/home}}</div>
Add the tag:
And then every Card will show the "Home" icon at the bottom-right of the Card.
[JavaScript Bookmarklet form]
avascript:var temp_bgcolor=prompt("Please enter background color", "black");if(temp_bgcolor=="black"){document.body.style.backgroundColor="black";document.body.style.color="white";}else{document.body.style.backgroundColor=temp_bgcolor;document.body.style.color="black";}undefined;
[JavaScript Bookmarklet form]
avascript:document.body.style.columnCount=prompt("Please enter column count", "2");
document.body.style.columnGap="1em";
undefined;
[HTML5 Meta Tag form]
meta
name
attr = apple-mobile-web-app-status-bar-style
content
attr = default
, black
, black-translucent
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
[HTML5 Meta Tag form]
meta
name
attr = format-detection
content
attr = telephone=no
<meta name="format-detection" content="telephone=no" />
[TiddlyWiki Code form]
white-space:nowrap;
disables normal text wrappingA code line (1) A code line (2) A code line (3) A code line (4) A code line (5) A code line (6) A code line (7) A code line (8) A code line (9) A code line (10) A code line (11) A code line (12) A code line (13) A code line (14)
Results:
A code line (1) A code line (2) A code line (3) A code line (4) A code line (5) A code line (6) A code line (7) A code line (8) A code line (9) A code line (10) A code line (11) A code line (12) A code line (13) A code line (14)
@@white-space:nowrap;A code line (1)@@ @@white-space:nowrap;A code line (2)@@ @@white-space:nowrap;A code line (3)@@ @@white-space:nowrap;A code line (4)@@ @@white-space:nowrap;A code line (5)@@ @@white-space:nowrap;A code line (6)@@ @@white-space:nowrap;A code line (7)@@ @@white-space:nowrap;A code line (8)@@ @@white-space:nowrap;A code line (9)@@ @@white-space:nowrap;A code line (10)@@ @@white-space:nowrap;A code line (11)@@ @@white-space:nowrap;A code line (12)@@ @@white-space:nowrap;A code line (13)@@ @@white-space:nowrap;A code line (14)@@
Results:
A code line (1) A code line (2) A code line (3) A code line (4) A code line (5) A code line (6) A code line (7) A code line (8) A code line (9) A code line (10) A code line (11) A code line (12) A code line (13) A code line (14)
.tc-tiddler-body {
word-break: normal;
word-wrap: break-word;
white-space: pre-wrap;
}
Sample Code:
*bullet 1
*bullet 2
*bullet 3
Pressing enter creates a new line, and does not continue the previous wikitext bullet line.
Every hard line break is shown like you would see in a text file or a ",,,,",,,," wikitext block.
*These lines start with a wikitext code just like the ones above.
*Leading wikitext codes are ignored until preceded by a double-spaced line
*bullet 4 requires a preceding double-spaced line to be interpreted as wikitext
Results:
* bullet 1 * bullet 2 * bullet 3 Pressing enter creates a new line, and does not continue the previous wikitext bullet line. Every hard line break is shown like you would see in a text file or a """ wikitext block. *These lines start with a wikitext code just like the ones above. *Leading wikitext codes are ignored until preceded by a double-spaced line * bullet 4 requires a preceding double-spaced line to be interpreted as wikitext
linewrap
[data-tags*="linewrap"] .tc-tiddler-body {
word-break: normal;
word-wrap: break-word;
white-space: pre-wrap;
}
Sample Code:
@@word-break:normal;word-wrap:break-word;white-space:pre-wrap;
These are
separate lines
here
@@
This is
one big
line
Result:
These are separate lines here This is one big line
Sample Code:
This is
one big
line@@word-break:normal;word-wrap:break-word;white-space:pre-wrap; here.
Followed by a second line,
and a third here@@. And this
extends the
third line.
Result:
This is one big line here. Followed by a second line, and a third here. And this extends the third line.
[TiddlyWiki Code form]
$text
text
attr = `still black colored text`<$text text="`still black colored text`" />
Results:
`still black colored text`
\rules only
at the top of the card text\rules only
`still black colored text`
Results:
`still black colored text`
type
field = text/plain
`still black colored text`
Results:
`still black colored text`
You can type most standard text without problems. Leading, repeated, or paired special characters may need escaped.
Pressing enter at the end of a line does not start a new paragraph.
Both of these lines are one paragraph.
You must leave a blank line between text lines to get a paragraph.
Press enter twice.
For example, see how the above two paragraphs are shown below:
Pressing enter at the end of a line does not start a new paragraph. Both of these lines are one paragraph.
You must leave a blank line between text lines to get a paragraph. Press enter twice.
*Bulleted List Entry
Leading with an asterisk creates a bulleted list entry. To escape, prefix with four single-quotes.
If you want a single blank line between two bullet points, use a !! Heading Line without any title text.
''''*Bulleted List Entry
*Bulleted List Entry
!Heading Line
Starting a new paragraph line with an exclamation mark (!) results in a heading line.
!Heading Line
The above heading markup starts with an exclamation mark. To escape, prefix with four single-quotes.
''''!Heading Line
!Heading Line
```
Mono-spaced Text Block
```
Mono-spaced Text Block
Leading with a triple back-tick creates a mono-space text block. To escape, surround the triple back-tick with doubled square-brackets.
[[''']] Regular typeface
``` Regular typeface
#Numbered List Entry
Leading with a pound-sign creates a numbered list entry. To escape, prefix with four single-quotes.
''''#Numbered List Entry
#Numbered List Entry
<<<
Quoted text block
<<<
Quoted text block
Leading with a triple less-than creates a quoted text block. To escape, surround the
''''<<< Unquoted text
<<< Unquoted text
https://tiddlywiki.com/
Start text with an "http://" "http://" will create a URL link. To escape, place four single-quotes before the colon and between the double forward-slashes.
https'''':/''''/tiddlywiki.com/
https://tiddlywiki.com/
''Bold Text'' //Italic Text// ~~Strike-through Text~~ __Underlined Text__ ^^Raised-Small Text^^ ,,Lowered-Small Text,, `Mono-spaced Text`
Bold Text Italic Text Strike-through Text Underlined Text Raised-Small Text Lowered-Small Text Mono-spaced Text
A number of repeated special characters are used as Wiki Markup to format text. To escape, place four single-quotes between the doubled characters or surround the doubled characters with doubled square-braces.
[['']]Bold Text[['']] /''''/Italic Text/''''/ ~''''~Strike-through Text~''''~ _''''_Underlined Text_''''_ ^''''^Raised-Small Text^''''^ ,'''',Lowered-Small Text,'''', [[`]]Mono-spaced Text[[`]]
''Bold Text'' //Italic Text// ~~Strike-through Text~~ __Underlined Text__ ^^Raised-Small Text^^ ,,Lowered-Small Text,, `Mono-spaced Text`
[[Literal Text]]
Surrounding text with doubled square-brackets shows the literal surrounded text without applying formatting. To escape, place four single-quotes between the first doubled square-brackets.
[''''[Literal Text]]
[[Literal Text]]
{{Other Tiddler Title}}
Note: The other tidder's content is "Other Tiddler Transcluded Text".
Surrounding text with doubled curly-braces shows the full content of another tiddler. To escape, place four single-quotes between the first doubled curly-braces.
{''''{Other Tiddler Title}}
{{Other Tiddler Title}}
<b>HTML Markup</b>
HTML Markup
Surrounding text with angled-brackets uses HTML formatting. To escape, rename the first angle-bracket to <
<b>HTML Markup</b>
<b>HTML Markup</b>
<
Note: < represents a left angle-bracket, or the less-than symbol (<).
<
Surrounding text with an ampersand (&) and a semi-colon translate to an HTML literal. To escape, place four single-quotes after the ampersand.
<
<
You can apply CSS styles in-line with the text. Make sure you put the semi-colon at the end of the style list.
You can apply @@background-color:yellow; CSS styles @@ in-line with the text.
You can apply CSS styles in-line with the text.
|!Cell1 |!Cell2 |
|Cell3 |Cell3 |
|^top left |^ top center |^ top right|
|middle left | middle center | middle right|
|,bottom left |, bottom center |, bottom right|
To merge a table cell with the one above, use the special cell text ~. To merge a cell with the one to its left use the text <. To merge one to its right use >. For example:
|Cell1 |Cell2 |Cell3 |Cell4 |
|Cell5 |Cell6 |Cell7 |<|
|Cell5 |~|Cell7 |Cell8 |
|>|Cell9 |Cell10 |Cell11 |
assigns the CSS classes "myclass" and "anotherClass" to the table
gives the table the caption "This is a caption"
adds a header row of cells with the text "Header"
adds a footer row of cells with the text "Footer"
|myclass anotherClass|k
|This is a caption |c
|Cell1 |Cell2 |
|Cell3 |Cell3 |
|Header|Header|h
|Footer|Footer|f
[SQLite Code form]
SELECT name, sql FROM sqlite_master
WHERE type='table'
ORDER BY name;
sqlite_source_id()
--version string of SQLite Library source code
2020-08-14 13:23:32 fca8dc8b578f215a969cd899336378966156154710873e68b3d9ac5881b0ff3f
sqlite_version()
--version string of SQLite Library running
3.33.0
[SQLite Code form]
--comment
CHAR(unicode_char_list)
COALESCE(field_list)
HEX(field)
IFNULL(field, default_text)
INSTR(field, search_text)
LENGTH(field)
LIKE(field, comparison_text)
LOWER(field)
LTRIM(field)
PRINTF(format_text, field_list)
REPLACE(field, search_text, new_text)
RTRIM(field)
SUBSTR(field, start_char)
TRIM(field)
typeof(field)
UNICODE(number)
UPPER(field)
[Windows DiskPart command form]
- * Start the Windows Command Line program DiskPart
-> Opens a new window
- * Use the List Disk
and Select Disk UrDiskNumber
commands to choose the USB Drive
- * Use the Clean
command to erase all partitions on the USB Drive
- * Use the Create Partition Primary Size=32000
, Active
, and Format Fs=fat32 Unit=64k Quick
commands to create a new FAT32 partition
- * Use the Exit command to close the DiskPart window
list disk
select disk X*
clean
create partition primary
format fs=fat32 unit=64k
list partition
active
exit
[TiddlyWiki Code form]
HTML normally ignores line breaks. TiddlyWiki uses HTML, and includes a way to stop ignoring line breaks.
[TiddlyWiki editor]
- Type three double-quotes ("""
) and press enter to ignore line breaks below this point
- The ("""
) does not show up in the output
Three double-quotes will start a hard line breaks section
"""
line one blends into line two continues
"""
line three stops
line four starts
"""
line one blends into line two continues
line three stops
line four starts
<pre style="font-family: sans-serif;">line three stops
line four starts</pre>
line three stops line four starts
[TiddlyWiki Code form]
<$list filter="[<tv-config-toolbar-icons>match[no]]">
[Windows CLI form]
[Windows CLI]
- [Turn off standard messages being echoed to the console]
- @@ECHO OFF
[https://docs.microsoft.com/en-us/troubleshoot/cpp/redirecting-error-command-prompt]
- To redirect the error message to NUL, use the following command:
dir file.xxx 2> nul
- You can print the errors and standard output to a single file by using the &1 command to redirect the output for STDERR to STDOUT and then sending the output from STDOUT to a file:
dir file.xxx 1> output.msg 2>&1
[HTML5 Code form]
display
none
visibility: hidden
and visibility: visible
, though the parent markup will still take up screen real estate
[Google Chrome Windows form]
- [Top-right icons]
- Click the three-dots menu, option Settings -> Navigates page
- [Settings page[
- * search for Language -> Filters results
- [Languages section]
- * checkbox Spell check = clear -> Chrome will not highlight spelling errors
[Excel VBA form]
Dim wksDATA As Worksheet
Set wksDATA = Application.ActiveSheet
wksDATA.Cells(2,2).Value = "Hi"
'Press F5 to run the macro
'Note: Cell B2 says "Hi"
[Microsoft.com Website form]
As an alternative to the Windows installers for .NET, you can download and manually install the SDK or runtime. Manual install is usually performed as part of continuous integration testing. For a developer or user, it's generally better to use an installer.
Both .NET SDK and .NET Runtime can be manually installed after they've been downloaded. If you install .NET SDK, you don't need to install the corresponding runtime. First, download a binary release for either the SDK or the runtime from one of the following sites:
Create a directory to extract .NET to, for example %USERPROFILE%\dotnet. Then, extract the downloaded zip file into that directory.
By default, .NET CLI commands and apps won't use .NET installed in this way and you must explicitly choose to use it. To do so, change the environment variables with which an application is started:
set DOTNET_ROOT=%USERPROFILE%\dotnet set PATH=%USERPROFILE%\dotnet;%PATH% set DOTNET_MULTILEVEL_LOOKUP=0
This approach lets you install multiple versions into separate locations, then explicitly choose which install location an application should use by running the application with environment variables pointing at that location.
When DOTNET_MULTILEVEL_LOOKUP is set to 0, .NET ignores any globally installed .NET version. Remove that environment setting to let .NET consider the default global install location when selecting the best framework for running the application. The default is typically C:\Program Files\dotnet, which is where the installers install .NET.
When you install .NET from an installer or script, it's installed to a standard folder. Much of the time the installer or script you're using to install .NET gives you an option to install to a different folder. If you choose to install to a different folder, adjust the start of the folder path.
dotnet executable in C:\program files\dotnet\dotnet.exe
.NET SDK in C:\program files\dotnet\sdk\{version}\
.NET Runtime in C:\program files\dotnet\shared\{runtime-type}\{version}\
[Plus.codes Website form]
- [https://plus.codes/map/]
- [Search box, Left-side icon]
- Click the three-lines menu, option Satellite -> Refreshes window
- * Click the three-lines menu, option Grid -> Refreshes window
- [Navigate to location]
- When the mouse icon is a hand, double-click to Zoom in
- Each time you click, the location will show as 8 characters, a plus sign, and two suffix characters
- - Example: 73F6C9JH+HR
- [Look at the grid are zoomed out to the maximum extent]
- The first digit grows from 3 in South America to 9 in North America (Antarctica would be zero)
- The second digit grows from 2 in the Altlantic Ocean to 9 in the Pacific Ocean, and wraps around again to V in the Atlantic Ocean (which touches the 2 rectangle)
- All other zoomed in grid rectangles have a pair of digits from 2 to V
- The first digit is always North from Antarctica (bottom of the rectangle), and the second digit is always East from the International Date Line (left of the rectangle)
- [20 unique numbers]
- The unique codes used are values selected (in order) from the numerals and the capital letters: 2, 3, 4, 5, 6, 7, 8, 9, C, F, G, H, J, M, P, Q, R, V, W, X
- * Grouping these by two digits each helps identify a percent up or right in the rectangle: 0.2, 0.3, 1.4, 1.5, 2.6, 2,7, 3.8, 3.9, 4.C, 4.F, 5.G, 5.H, 6.J, 6.M, 7.P, 7.Q, 8.R, 8.V, 9.W, 9.X
- * The first North digit uses less codes, so they have a different percentage: 2.3, 3.4, 4.5, 5.6, 6.7, 7.8, 8.9
- [Create a text map]
- Now we can make a set of nested rectangles for each embedded percentage
- The number after each decimal point is the actual plus code
- The number before is 10 percent North or 10 percent East in the level's rectangle
| |||||||||||||||||||||
|
|
[TiddlyWiki Code form]
ext
and a space, then the external link description[ext[ur_url]]
ext
macro, but don't include the ext
prefix or the leading space->
on the right side of the Card windowext
Card and change the saved link<<ext "UrExternalLinkDiscption">>
\define ext(ur_extcard_pk)
{{ext $ur_extcard_pk$}}<div style="float:right">[[_|ext $ur_extcard_pk$]]</div>
\end
[TiddlyWiki Code form]
<$list variable=cur_card filter="[[1 Timothy]encodeuri[]]">
-encode_uri:<<cur_card>>-
</$list>
\define CharRef(ur_code, ur_line_grouping)
<$list filter="[[$ur_code$]divide[$ur_line_grouping$]floor[]] " variable=div_val>
<$list filter="[[$ur_code$]divide[$ur_line_grouping$]match<div_val>] "><br><sub>$ur_code$
<<glbl_dec_to_hex5 "$ur_code$">>
</sub><br>
</$list>
</$list>
[&#$ur_code$;]
\end
https://en.wikipedia.org/wiki/Unicode_block
https://en.wikipedia.org/wiki/Plane_(Unicode)
<$button>
<$action-setfield $tiddler="$:/state/mcr CharRef LineGrouping" text=""/>
Line Grouping = 10
</$button>
<$button>
<$action-setfield $tiddler="$:/state/mcr CharRef LineGrouping" text="16"/>
Line Grouping = 16
</$button>
<$button>
<$action-setfield $tiddler="$:/state/mcr CharRef CharacterListBase" text=""/>
Clear selection
</$button>
<$button>
<$action-setfield $tiddler="$:/state/mcr CharRef CharacterListBase" text="0"/>
Show Base Multilingual Plane (BMP = 0-65535, 0x0-0xFFFF)
</$button>
<$button>
<$action-setfield $tiddler="$:/state/mcr CharRef CharacterListBase" text="65536"/>
Show Supplementary Multilingual Plane (SMP = 65536-131071, 0x10000-0x1FFFF)
</$button>
<$button>
<$action-setfield $tiddler="$:/state/mcr CharRef CharacterListBase" text="131072"/>
Show Supplementary Ideographic Plane (SIP = 131072-196607, 0x2000-0x2FFFF)
</$button>
<$button>
<$action-setfield $tiddler="$:/state/mcr CharRef CharacterListBase" text="196608"/>
Show Tertiary Ideographic Plane (TIP = 196608-262143, 0x3000-0x3FFFF)
</$button>
Note: Planes 4 to 13 (planes 4 to D in hexadecimal): No characters have yet been assigned to Planes 4 through 13
Note: Plane 14 (E in hexadecimal), the Supplementary Special-purpose Plane (SSP)
Note: Plane 15 (plane F in hexadecimal) = Supplementary Private Use Area-A (PUA-A), is only available for use by parties outside the ISO and the Unicode Consortium.
Note: Plane 16 (plane 10 in hexadecimal) = Supplementary Private Use Area-B (PUA-B), is only available for use by parties outside the ISO and the Unicode Consortium.
@@font-family: "Lucida Console", Courier, monospace;
<$list filter="[{$:/state/mcr CharRef LineGrouping}!match[]else[10]] " variable=line_grouping>
<$list filter="[[$:/state/mcr CharRef CharacterListBase]get[text]!match[]]">
<$list filter="[range[512]subtract[1]multiply[128]add{$:/state/mcr CharRef CharacterListBase}]" variable=cur_block>
<h2><<cur_block>></h2>
<$list filter="[range[128]subtract[1]] +[add<cur_block>] " variable=cur_code>
<$macrocall $name=CharRef ur_code=<<cur_code>> ur_line_grouping=<<line_grouping>> />
</$list>
</$list>
</$list>
</$list>
\define dec_to_u_hex4()
<$list variable=cur_d4 filter="[[$(dec_num)$]divide[16]floor[]divide[16]floor[]divide[16]floor[]]"
><$list variable=rem_d4 filter="[[0]subtract<cur_d4>multiply[16]multiply[16]multiply[16]add[$(dec_num)$]]"
><$list variable=cur_d3 filter="[<rem_d4>divide[16]floor[]divide[16]floor[]]"
><$list variable=rem_d3 filter="[[0]subtract<cur_d3>multiply[16]multiply[16]add<rem_d4>]"
><$list variable=cur_d2 filter="[<rem_d3>divide[16]floor[]]"
><$list variable=rem_d2 filter="[[0]subtract<cur_d2>multiply[16]add<rem_d3>]"
><$list variable=hex filter="[[;]addsuffix<cur_d4>addsuffix[;]addsuffix<cur_d3>addsuffix[;]addsuffix<cur_d2>addsuffix[;]addsuffix<rem_d2>split[;10]join[A]split[;11]join[B]split[;12]join[C]split[;13]join[D]split[;14]join[E]split[;15]join[F]split[;]join[]]"
>\u<<hex>></$list><!--hex
--></$list><!--rem_d2
--></$list><!--cur_d2
--></$list><!--rem_d3
--></$list><!--cur_d3
--></$list><!--rem_d3
--></$list><!--cur_d4
-->
\end
\define entry_hexcode(ur_char, ur_code_page)
<$list variable=cur_codepage filter="""[[$ur_code_page$]!match[]else[0]multiply[256]]""">
<$list variable=dec_num filter="""[range[256]add<cur_codepage>]""">
<$wikify name=hex_unicode text=<<dec_to_u_hex4>> >
<$list filter="""[[$ur_char$]regexp<hex_unicode>]""" variable=match_text>
-$ur_char$-<<hex_unicode>>-&#<<dec_num>>;
</$list><!--match_text-->
</$wikify><!--hex_unicode-->
</$list><!--cur_unicode-->
</$list><!--cur_unicode-->
\end
\define unicode_points(ur_pk)
<$list variable=code_page filter="[[$:/state/unicode_points_codepage]get[text]else[0]]">
Code page = <<code_page>> <$button
style="margin-left:30px">
<$list variable="next_page" filter="[<code_page>add[1]]"><$action-setfield $tiddler="$:/state/unicode_points_codepage" text=<<next_page>>/></$list>
Next page
</$button><$button
style="margin-left:30px">
<$action-setfield $tiddler="$:/state/unicode_points_codepage" text="0"/>
Reset
</$button><br>
<$list variable=cur_char filter="[[$ur_pk$]get[text]splitregexp[\u005D]count[]!match[1]!match[0]]">-]-\u005D-&#93;
<br>
<br>
</$list><!--cur_char-->
<$list variable=cur_char filter="[[$ur_pk$]get[text]splitregexp[\u0060]count[]!match[1]!match[0]]">-`-\u0060-&#96;
<br>
<br>
</$list><!--cur_char-->
<$list variable=cur_char filter="[[$ur_pk$]get[text]splitregexp[\u005D]join[]splitregexp[\u0060]join[]split[]each:value[]sort[]]">-<<cur_char>>-
<$macrocall $name=entry_hexcode ur_code_page=<<code_page>> ur_char=<<cur_char>> />
<br>
<br>
</$list><!--cur_char-->
</$list><!--code_page-->
\end
<<unicode_points "UrPK">>
[TiddlyWiki Code form]
<$list filter="[all[tiddlers]!tag[EXTLINK]!tag[IMG]!tag[INDEX]!tag[MCR]!tag[META]!has[draft.of]!is[image]!is[tag]!is[system]has[tags]!prefix[undefined]sort[title]]">
<hr>
<h2><$link to=<<currentTiddler>> /></h2>
{{||$:/core/ui/ViewTemplate/tags}}
<$transclude mode="block"/>
</$list>
[TiddlyWiki Code form]
<ol>
<$list filter="[<currentTiddler>fields[]prefix[e]sort[]]" variable=lookup_name>
<$list filter="[<currentTiddler>get<lookup_name>]" variable=ref_card_pk>
<$list filter="[<ref_card_pk>get[img]else[]]" variable=ref_img_pk>
<li><$link to=<<ref_card_pk>> />@@float: right;overflow: auto;vertical-align: top;padding-left: 10px;<$image width=200px source=<<ref_img_pk>> />@@<div style="clear:both;"></div></li>
</$list>
</$list>
</$list>
</ol>
[TiddlyWiki Code form]
<<list-links filter:"[tag[DOC]field:level[1]sort[title]] [tag[DOC]field:level[]sort[title]]">>
[TiddlyWiki Code form]
<ol>
<$list filter="[<currentTiddler>addsuffix[\]]">
<$list filter="[all[tiddlers]prefix<currentTiddler>sort[]]">
<li><$link to=<<currentTiddler>> /></li>
</$list>
</$list>
</ol>
[JavaScript Code form]
- * Global function Object.getOwnPropertyNames() returns an object with "length" property and base-zero numbered properties up to "length" - 1
;(
function() {
navigator.clipboard.writeText(
Object.getOwnPropertyNames(document).join('\n')
);
alert(
Object.getOwnPropertyNames(document).length
);
}
)();
;(
function() {
let obaBODY = document;
let sdaPROP = Object.getOwnPropertyNames(obaBODY);
let strPROTO_NAME = Object.prototype.toString.call(obaBODY)
let objPROTO = Object.getPrototypeOf(obaBODY)
let strPROTO_PARENT_NAME = Object.prototype.toString.call(objPROTO)
let sdaINHERIT_PROP = Object.getOwnPropertyNames(objPROTO);
let strMESSAGE =
'Type of: '.concat(typeof(obaBODY)).concat('\n\n').concat(
'Prototype name: ').concat(strPROTO_NAME).concat('\n\n').concat(
'Prop count: ').concat(sdaPROP.length).concat('\n\n').concat(
'Prop: ').concat(
sdaPROP.join('\n'.concat(' Prop: '))).concat('\n\n').concat(
'Prototype ').concat(strPROTO_NAME).concat(' Prop count: ').concat(sdaINHERIT_PROP.length).concat('\n\n').concat(
'Prototype ').concat(strPROTO_NAME).concat(' Prop: ').concat(
sdaINHERIT_PROP.join('\n'.concat(strPROTO_NAME).concat(' Prop: '))).concat('\n\n').concat(
'Prototype ').concat(strPROTO_NAME).concat(' Parent name: ').concat(strPROTO_PARENT_NAME).concat(''
)
navigator.clipboard.writeText(strMESSAGE)
alert('Prop count: '.concat(sdaPROP.length));
}
)();
[JavaScript Code form]
- * Use \n
to append a new-line character
- Any string literal can use the concat
function to append characters
- A string array can use the join
function to return one concatenated string with the specified text inserted between each text entry
;(
function() {
let obaBODY = document;
let sdaPROP = Object.getOwnPropertyNames(obaBODY);
let strMESSAGE =
'Prop: '.concat(
sdaPROP.join('\n'.concat(' Prop: '))).concat('\n\n').concat(''
)
navigator.clipboard.writeText(strMESSAGE)
alert('Prop count: '.concat(sdaPROP.length));
}
)();
[TiddlyWiki Code form]
- [New card]
- * tag = $:/tags/Stylesheet
- * text = .cls_full_width { width:100%; }
- [New card]
- widget = <$edit-text
- tiddler = UrCardPK
- field = UrFieldName
- * class = cls_full_width
- tag = textarea
- autoHeight = no
[TiddlyWiki Code form]
\define page_next()
<$list variable="filter_prev_page" filter="[<page_pk>get[text]!match[0]!match[]]">
<$button style="margin-left:30px">
<$action-setfield $tiddler=<<page_pk>> text=""/>
First page
</$button>
<$button style="margin-left:30px">
<$list variable="next_page" filter="[<cur_page_skip>subtract[10]]"><$action-setfield $tiddler=<<page_pk>> text=<<next_page>>/></$list>
Previous page
</$button>
</$list><!--filter_prev_page-->
<$button style="margin-left:30px">
<$list variable="next_page" filter="[<cur_page_skip>add[10]]"><$action-setfield $tiddler=<<page_pk>> text=<<next_page>>/><$action-navigate $to=<<card_pk>> $scroll="yes"/></$list>
Next page
</$button><br>
<!--***page_next***-->
\end
<$list variable="card_pk" filter="[<currentTiddler>]">
<$list variable="popup_pk" filter="[<currentTiddler>removeprefix[Draft of ']removesuffix[']addprefix[$:/state/]] [<currentTiddler>!prefix[Draft of ']addprefix[$:/state/]]">
<$list variable="page_pk" filter="[<popup_pk>addsuffix[-cur_page]]">
<$list variable="cur_page_skip" filter="[<page_pk>get[text]!match[]else[0]]">
<$list variable="cur_page_num"filter="[<cur_page_skip>add[1]]">
<$list variable="cur_page_through" filter="[<cur_page_num>subtract[1]add[10]]">
<<page_next>>
<$list variable="subdir_count" filter="[{File List Data}splitregexp[\n]!suffix[.JPG]!suffix[.jpg]count[]]">
Subdirectories <<cur_page_num>> through <<cur_page_through>>
Number of subdirectories: <<subdir_count>><br>
<$list variable="cur_subdir_path" filter="[{File List Data}splitregexp[\n]!suffix[.JPG]!suffix[.jpg]butfirst<cur_page_num>first[10]]">
<$list variable="raw_image_count" filter="[{File List Data}splitregexp[\n]prefix<cur_subdir_path>uppercase[]suffix[.JPG]count[]addprefix[ (]addprefix<cur_subdir_name>addsuffix[ photo]]">
<<raw_image_count>>
</$list><!--raw_image_count-->
</$list><!--cur_subdir_path-->
</$list><!--subdir_count-->
<<page_next>>
</$list><!--cur_page_through-->
</$list><!--cur_page_num-->
</$list><!--page_pk-->
</$list><!--popup_pk-->
</$list><!--card_pk-->
[TiddlyWiki Code form]
<$vars new_code="Test1">
<$list variable=new_pk filter="[<new_code>addprefix[$:/state/popup/]]">
<$button>
<$action-sendmessage $message="tm-new-tiddler" title=<<new_pk>> tags="OneTag [[Another Tag]]" text=<<now "Today is DDth, MMM YYYY">>/>
Create Code ''<<new_code>>'' and Edit
</$button><br>
<$button>
<$action-setfield $tiddler=<<new_pk>> text="yes"/>
<$action-navigate $to=<<new_pk>>/>
Create Code ''<<new_code>>'' and Show
</$button><br>
<$link to=<<new_pk>> /><br>
<$button>
<$action-sendmessage $message="tm-close-tiddler" $param=<<new_pk>> />
Close Code: ''<<new_code>>''
</$button><br>
<$list filter="[<currentTiddler>!prefix[Draft of]]" variable=strCARD_PK>
<$button>
<$list filter="[list[$:/StoryList]] -[<strCARD_PK>]" variable=strCLOSE_PK>
<$action-sendmessage $message="tm-close-tiddler" $param=<<strCLOSE_PK>>/>
</$list>
Close all other open Codes
</$button>
</$list><br>
<$button>
<$action-sendmessage $message="tm-delete-tiddler" $param=<<new_pk>> />
Delete Card: ''<<new_card>>'' with confirmation
</$button><br>
<$button>
<$action-sendmessage $message="tm-close-tiddler" $param=<<new_pk>> />
<$action-deletetiddler $tiddler=<<new_pk>> />
Delete Card: ''<<new_card>>'' without confirmation
</$button>
</$list><!--new_pk-->
</$vars><!--new_card-->
[TiddlyWiki Code form]
\define link_title()
''[<$list filter="[<http_text>split[,]butlast[]last[]]" />]'' <$list filter="[<http_text>split[,]rest[]first[]]" />
<$list filter="[<http_text>split[,]last[]divide[60]divide[60]divide[24]divide[365]add[1970]floor[]]"><$vars tid_year=<<currentTiddler>> >
<$list filter="[<http_text>split[,]last[]divide[60]divide[60]divide[24]divide[365]add[1970]subtract<tid_year>multiply[12]floor[]]"><$vars tid_month=<<currentTiddler>> >
(<<tid_year>>-<<tid_month>>)
</$vars></$list>
</$vars></$list>
<ul>
<$list filter='[<http_text>split[,]butlast[]butlast[]butfirst[]butfirst[]join[,]split["]butfirst[]butlast[]join["]split[""]join["]split[...]]'>
<li><<currentTiddler>></li>
</$list>
</ul>
\end
<$list filter="[{WebNotes\Data}split[http]count[]]" ><$vars total_count=<<currentTiddler>> >Count of entries: <<total_count>><br><br>
<!--
<$button>
<$action-setfield $tiddler="$:/state/popup/audit_1k" text="0"/>
Reset
</$button><br>
<$button>
<$list filter="[{$:/state/popup/audit_1k}add[1000]]">
<$action-setfield $tiddler="$:/state/popup/audit_1k" text=<<currentTiddler>> />
Next 1k
</$list>
</$button><br>
{{$:/state/popup/audit_1k}}
<$list filter="[{WebNotes\Data}split[http]first{$:/state/popup/audit_1k}last[1000]]"><$vars http_text=<<currentTiddler>> >
-->
<$list filter="[{WebNotes\Data}split[{{]join[-opencurlybrace-]split[http]]"><$vars http_text=<<currentTiddler>> >
<$list filter="[<http_text>split[,]first[]!suffix[URL]addprefix[http]]"><$vars http_link=<<currentTiddler>> >
<$list filter="[all[tiddlers]field:twnote<currentTiddler>count[]match[0]]">
<<http_link>><br>
- <<link_title>> <br>
</$list>
</$vars></$list>
</$vars></$list>
</$vars></$list>
[VB.Net Code form]
start "" "%~dp0\MxClasses\VBNetScript.exe" /path=%0 & exit
MxClasses\MxBaseEc12.vb
RetVal = Mx.Want.TextFile_Split_errhnd
End Function
End Class
End Namespace
'Namespace Mx
' Module subs
' Sub Main()
' Dim RetVal = Mx.Want.TextFile_Split_errhnd
' If Mx.AreEqual(RetVal, "QUIT") = False Then MsgBox(RetVal)
' End Sub
' End Module 'subs
' Public Class Class1
' Public Shared SourceFolder As String = My.Application.Info.DirectoryPath.Replace("\bin\Debug", "")
' Public Shared SourcePath As String = "UrFolder\MyApp.exe"
' End Class
'End Namespace 'Mx
Namespace Mx
Public Class Want
Public Shared Sub TextFile_Split(ret_message As Strap)
Dim tabchr = CHR(9)
Dim flnDATA = FileNamed().d("C:\Users\Dad\Downloads\Takeout\Mail\All mail Including Spam and Trash.mbox")
Dim intLINE_COUNT = 0
Dim sdaPREFIX_SKIPPED = New Sdata
Using stmOUT_FILE = New System.IO.StreamWriter(flnDATA.gCopy.dAppendEXT("TXT"), False, gUTF8_FileEncoding)
Using stmDATA = New System.IO.StreamReader(flnDATA, gUTF8_FileEncoding)
Dim bolINCLUDE_INDENTED_LINES = False
Dim bolHTML_TEXT = False
Dim bolPLAIN_TEXT = False
Dim bolSKIP_TEXT = False
While stmDATA.EndOfStream = False
Dim strLINE = stmDATA.ReadLine()
If strLINE.Length = 0 Then
ElseIf Left(strLINE, 5) = "From " AndAlso
Len(strLINE) = 59 Then
bolINCLUDE_INDENTED_LINES = False
bolHTML_TEXT = False
bolPLAIN_TEXT = False
bolSKIP_TEXT = False
stmOUT_FILE.WriteLine()
stmOUT_FILE.WriteLine()
stmOUT_FILE.WriteLine()
stmOUT_FILE.WriteLine()
stmOUT_FILE.WriteLine()
stmOUT_FILE.WriteLine(strLINE)
intLINE_COUNT += 1
ElseIf bolSKIP_TEXT Then
ElseIf bolPLAIN_TEXT Then
If strLINE.Trim.Length > 0 Then
Dim bolCUR_HTML = False
Dim intFOUND_SPRTR = InStr(strLINE, "<")
Dim intFOUND_TAGCLOSE = InStr(strLINE, ">")
If intFOUND_SPRTR > 0 AndAlso
intFOUND_TAGCLOSE > intFOUND_SPRTR Then
bolHTML_TEXT = True
bolCUR_HTML = True
End If
If Left(strLINE, 16) = "X-Attachment-Id:" OrElse
Left(strLINE, 32) = "Content-Transfer-Encoding:base64" Then
bolSKIP_TEXT = True
End If 'strLINE
If bolHTML_TEXT = False Then
stmOUT_FILE.WriteLine(strLINE)
intLINE_COUNT += 1
ElseIf bolCUR_HTML Then
Dim strTEXT = strLINE
While intFOUND_SPRTR > 0
Dim strPREFIX = Mid(strTEXT, 1, intFOUND_SPRTR - 1)
Dim strTAG = Mid(strTEXT, intFOUND_SPRTR)
intFOUND_SPRTR = InStr(strTAG, ">")
If intFOUND_SPRTR = 0 Then
strTEXT = strPREFIX
Else
strTEXT = strPREFIX & Mid(strTAG, intFOUND_SPRTR + 1)
intFOUND_SPRTR = InStr(strTEXT, "<")
End If 'intFOUND_SPRTR
End While 'intFOUND_SPRTR
If strTEXT.Trim.Length > 0 Then
stmOUT_FILE.WriteLine(strTEXT)
intLINE_COUNT += 1
End If
End If 'intFOUND_SPRTR
End If 'strLINE
ElseIf (Left(strLINE, 1) = s OrElse Left(strLINE, 1) = tabchr) AndAlso
bolINCLUDE_INDENTED_LINES Then
'stmOUT_FILE.WriteLine(strLINE)
'intLINE_COUNT += 1
Else 'strLINE
bolINCLUDE_INDENTED_LINES = False
Dim strPREFIX = mt
Dim intFOUND_SPRTR = InStr(strLINE, ":")
If intFOUND_SPRTR > 0 Then
strPREFIX = Mid(strLINE, 1, intFOUND_SPRTR)
If InStr(strPREFIX, tabchr) > 0 OrElse
InStr(strPREFIX, s) > 0 Then
strPREFIX = mt
End If
End If
If strPREFIX = "Content-Type:" OrElse
strPREFIX = "Subject:" OrElse
strPREFIX = "To:" OrElse
strPREFIX = "Date:" OrElse
strPREFIX = "From:" Then
bolINCLUDE_INDENTED_LINES = True
stmOUT_FILE.WriteLine(strLINE)
intLINE_COUNT += 1
ElseIf Right(strPREFIX, 1) = ":" Then
bolINCLUDE_INDENTED_LINES = True
If sdaPREFIX_SKIPPED.Contains(strPREFIX) = False Then
sdaPREFIX_SKIPPED.d(strPREFIX)
End If
ElseIf strPREFIX = "" Then
bolPLAIN_TEXT = True
intFOUND_SPRTR = InStr(strLINE, "<")
Dim intFOUND_TAGCLOSE = InStr(strLINE, ">")
If intFOUND_SPRTR > 0 AndAlso
intFOUND_TAGCLOSE > intFOUND_SPRTR Then
bolHTML_TEXT = True
End If
End If 'strPREFIX
End If 'strLINE
If intLINE_COUNT >= 100000 Then
Exit While
End If
End While 'stmDATA
End Using 'stmDATA
End Using 'stmOUT_FILE
Using stmOUT_FILE = New System.IO.StreamWriter(flnDATA.gCopy.dAppendEXT("PREFIX_SKIPPED.TXT"), False, gUTF8_FileEncoding)
Call sdaPREFIX_SKIPPED.Sort()
For Each strENTRY In sdaPREFIX_SKIPPED
stmOUT_FILE.WriteLine(strENTRY)
Next strENTRY
End Using 'stmOUT_FILE
ret_message.Clear.d(intLINE_COUNT.ToString)
End Sub 'TextFile_Split
Public Shared Function TextFile_Split_errhnd() As Strap
Dim stpRET = Strapd()
TextFile_Split_errhnd = stpRET
stpRET.d("QUIT")
Dim objERR_LIST = New ErrListBase : Try
Call TextFile_Split(stpRET)
Catch ex As System.Exception
Call objERR_LIST.dError_Stack(ex)
End Try
If objERR_LIST.Found Then
stpRET.Clear().d(objERR_LIST.ToString)
End If
End Function 'TextFile_Split_errhnd
End Class 'Want
End Namespace 'Mx
[VB.Net Code form]
Make a small form with a timer that moves downloaded TiddlyWiki files back to their original folder
- I have not tried to play around with running TW5 on Node.js. I don't prefer having to use TiddlyDesktop as a separate web browser. Installing a plugin would only save my wiki changes under the downloads directory. I like using a portable web browser on my thumb drive, and I am able to run non-admin programs on my computer. So I made a small program with a timer to move each saved TW file from my Downloads directory back to its original loading location.
- I created a small program with a multi-line textbox, and a timer to poll the Downloads folder every five seconds. It moves all the TWMove files in alphabetical order, so the latest timestamped file will be processed last. It finds the destination path as part of the filename. (Moving assumes the original TW.html file is not locked by the browser. This happened to me once, but I just had to restart the browser to release the file lock.)
- I leave the program running all the time I am logged in. Alt-S saves the data in TiddlyWiki to the Downloads folder. After at most five seconds, the timer moves the file to overwrite the original location. The form flashes on the screen for one second and then hides itself until another move.
- The program's text box shows the folder I'm polling. When it picks up a file, the original path is pre-pended to the textbox's list of processed files and the form flashes in the foreground for a second. (I could have made a system tray pop-up notification instead.)
[TiddlyWiki Code step]
[Google Chrome Windows step]
[VB.Net Code step]
[TiddlyWiki Code form]
- I created an alt-S shortcut macro to save the current wiki with a specific filename prefix (TWMove_), the entire file path - with substitutions for path-specific characters (: and \), and a time stamp. (Using split/join is accurate enough for me.)
Example: TWMove_C-colon-slash-RootDirOne-slash-SubDirTwo-slash-UrWiki.html
\define ExportSaveAll(ur_filename ur_stamp)
<$action-setfield $tiddler="$:/state/popup/DivPopTitle" text=""/>
<$action-setfield $tiddler="$:/state/sidebar" text="no"/>
<$action-sendmessage $message="tm-save-wiki" filename="TWMove_$ur_filename$-stamp-$ur_stamp$.html"
/>
\end
<$list filter="[{$:/info/url/full}split[file:///]join[]split[:]join[-colon-]split[.html]join[]split[%20]join[ ]split[/]join[-fslash-]split[%]join[-percent-]]">
<$macrocall $name="ExportSaveAll" ur_filename=<<currentTiddler>> ur_stamp=<<now format:"YYYYm0MMd0DDam0hhm0mms0ss">> />
</$list>
[Google Chrome Windows step]
[VB.Net Code step]
[TiddlyWiki Code step]
[Google Chrome Windows form]
- I have my web browser save all downloaded files to a specific Downloads folder. (Specifically on Google Chrome, I did install a plugin to automatically hide the dowloaded files bar. It was getting annoying.)
[UPS.com Website form]
[https://locations.theupsstore.com/]
- Find specific store
- Click button Start Print Order -> Opens tab
[https://UrStoreNumber.upsstoreprintshop.com/DSF/SmartStore.aspx#!/Storefront]
- [top-right search buttons, menu Category]
- Click option Copies and Quick Prints -> Navigates page
- [In This Category section, Quick Copies and Prints - 8.5x11 box]
- Click button Get Started -> Opens form
[Quick Copies and Prints - 8.5x11 form]
- [Files section]
- Click button Add Files -> Opens dialog
- Dialog: Add Files
- Click button Upload Files -> Opens form
[Windows Open File form]
- Change directories to find file
- Select PDF or Image file
- Click button OK -> Closes form, refreshes dialog
[Quick Copies and Prints - 8.5x11 form]
- Dialog: Upload Files
- Click button Upload -> Refresh dialog
- Click button Done -> Closes dialog, refreshes form
- Job Name = UrJobName
- Note: Unit Price and Total Price are shown at the bottom
- Click button Add to Cart -> Opens dialog
- Dialog:
I have carefully reviewed and approve this job. By clicking the button, I agree that my layout, copy and spelling are as intended and accurate. I agree that my document will print exactly as it appears above and that I can no longer make changes once my order has been placed.
- Click button I Agree -> Closes form, updates page
- [top-right buttons]
- Click button Cart -> Navigates page
- [Cart page]
- Note: Total is shown at right
- Click button Proceed to Checkout -> Opens dialog
- Click tab Checkout as Guest -> Navigates tab
- E-Mail = UrEmailAddress
- Enter the code shown below = UrCaptchaCode
- Click button Continue -> Closes dialog, refreshes page
- Click button Proceed to Checkout -> Navigates page
- [Select a shipping address & shipping options page]
- Click button Proceed to Payment -> Navigates page
- [How would you like to pay? page]
- Payment Method = Credit Card
- Card Type = UrCardType
- Card Number = UrCardNumber
- CVV Number = UrCVVNumber
- First Name = UrFirstName
- Last Name = UrLastName
- Address Lines 1-3 = UrAddress
- City = UrCity
- State = UrState
- Zip/Postal Code = UrZipCode
- Country = UrCountry
- Phone Number 1 = UrPhoneNumber
- Click button Place My Order -> Navigates page
- [Order Confirmation page]
- Click button Print
[Pocket Git Android form]
- [Repositories List page, Top-right icons]
- Click button Preferences (looks like three lines) -Navigates page
- [Preferences page, Defaults section]
- Click link Default Directory -> Opens dialog
- [Select Folder dialog]
- Select the Downloads folder -> Closes dialog
- [Preferences page, Defaults section]
- Note: Default Directory = /storage/emulated/0/Download
- Click button Back (looks like a left arrow) -> Navigates page
- [Repositories List page, Bottom-right icons]
- Click button Create Project (looks like a red button with a Plus sign) -> Opens dialog
- [Create Project dialog]
- Project Name = UrProjectName
- Clone URL = UrRepositoryURL
- Note: Local Path automatically creates a sub-directory under the Downloads folder
- Click the Authentication drop-list, option Password
- Username = UrRepositoryUsername
- Password = UrRepositoryPassword or UrRepositoryPersonalAccessToken
- [Create Project dialog, Top-right icons]
- Click button Save (looks like a floppy disk) -> Closes dialog
- [Repositories List page]
- Click repository UrProjectName -> Navigates page
- [Repository page, Top-right icons]
- * Click the Remotes menu (looks like a cloud), click option Fetch -> Starts process
- Wait for popup message "Finished fetching"
- * Click the Remotes menu, click option Pull -> Starts process
- Wait for popup message "Finished pulling"
[File system]
- [Downloads folder]
- Note: All the files in the repository are available under the UrProjectName sub-folder in the Downloads folder
[TiddlyWiki Code form]
<link href='https://fonts.googleapis.com/css?family=Playfair Display' rel='stylesheet'>
<link href='https://fonts.googleapis.com/css?family=Sofia' rel='stylesheet'>
<link href='https://fonts.googleapis.com/css?family=Alex Brush' rel='stylesheet'>
<link href='https://fonts.googleapis.com/css?family=Akronim' rel='stylesheet'>
<link href='https://fonts.googleapis.com/css?family=Annie Use Your Telescope' rel='stylesheet'>
@@font-family: 'Playfair Display';
!'Playfair Display' 1234567890 ABC abc
@@
@@font-family: 'Sofia';
!'Sofia' 1234567890 ABC abc
@@
@@font-family: 'Alex Brush';
!'Alex Brush' 1234567890 ABC abc
@@
@@font-family: 'Akronim';
!'Akronim' 1234567890 ABC abc
@@
@@font-family: 'Annie Use Your Telescope';
!'Annie Use Your Telescope' 1234567890 ABC abc
@@
[Google Play Store Android form]
- [On both Android computers]
- * Install app AnyDesk by AnyDesk Software GmbH
- https://play.google.com/store/apps/details?id=com.anydesk.anydeskandroid&hl=en_US&gl=US
[AnyDesk Android step]
- * The other installed devices will show when connected to the same WiFi network
[Google Play Store Android step]
- * Install app AnyDesk by AnyDesk Software GmbH
[AnyDesk Android form]
- * The other installed devices will show when connected to the same WiFi network
- Automatically figures out how to use the controlling Android device's touch screen
[RealVNC.com Website form]
[https://www.realvnc.com/en/connect/download/viewer/windows/]
- * Download app VNC Connect for Windows
[VNC Connect for Windows step]
- * Connects to login
[Google Play Store Android step]
- * Install app VNC Viewer by RealVNC Limited
[VNC Viewer Android step]
- * Connects to login
[RealVNC.com Website step]
- * Download app VNC Connect for Windows
[VNC Connect for Windows form]
- * Connects to login
- Note: Allows connection by RealVNC's VNC Viewer app on Android O/S
[Google Play Store Android step]
- * Install app VNC Viewer by RealVNC Limited
[VNC Viewer Android step]
- * Connects to login
[RealVNC.com Website step]
- * Download app VNC Connect for Windows
[VNC Connect for Windows step]
- * Connects to login
[Google Play Store Android form]
- * Install app VNC Viewer by RealVNC Limited
[VNC Viewer Android step]
- * Connects to login
[RealVNC.com Website step]
- * Download app VNC Connect for Windows
[VNC Connect for Windows step]
- * Connects to login
[Google Play Store Android step]
- * Install app VNC Viewer by RealVNC Limited
[VNC Viewer Android form]
- * Connects to login
- [Alt tab]
- Use Ctrl-Esc to get to the Windows Start Menu and the Task Bar to change windows
[TiddlyWiki Code form]
- One list of titles can be removed from another list.
<$vars ur_list="a bc d" skip_list="bc f">
<$list variable=cur_card filter="[enlist<ur_list>remove<skip_list>]">
<<cur_card>>
</$list>
</$vars>
[TiddlyWiki Code form]
<$action-sendmessage $message="tm-rename-tiddler" from="Tiddler1" to="Tiddler2" renameInTags="no" renameInLists="no"/>
[TiddlyWiki Code form]
[New card]
- Title = UrStyleSheetTitle
- Tags = $:/tags/Stylesheet
- Text = div.tc-tiddler-body{ display:none; }
- Note: You can right-click on a Wiki card and use the Inspect feature of your web browser to see the CSS Classes on each card section
- Note: This will hide the body of every card in the Wiki
TiddlyWikiGroups Modifying ViewTemplate
<$list variable=cur_card filter="[is[current]!has[UrFieldName]!tag[$:/tags/ViewTemplate]]">
<$transclude tiddler=<<cur_card>> />
</$list>
- Note: This will add back in the standard Wiki card body to all cards that don't have UrFieldName and isn't tagged as ViewTemplate (to avoid recursion
- Note: Since you are adding back in the template body, multiple Wiki cards tagged as ViewTemplate will append one after the other
TiddlyWikiNarkive ViewTemplate Show Above
[TiddlyWiki Code form]
Title = mcr T1Reveal
\define t1cb(UrContent)
<$list filter="[[$UrContent$]!match[]]">
$UrContent$
<$button message="tm-copy-to-clipboard" param="$UrContent$">
Copy to clipboard
</$button>
</$list>
\end
\define t1reveal(UrPK UrSeq UrContent)
<$list filter="[[$UrContent$]!match[]]">
<br>
<$reveal type="nomatch" state="$:/state/popup/$UrPK$\$UrSeq$" text="show">
<$button set="$:/state/popup/$UrPK$\$UrSeq$" setTo="show">,,$UrSeq$,,</$button>
</$reveal>
<$reveal type="match" state="$:/state/popup/$UrPK$\$UrSeq$" text="show">
<$button set="$:/state/popup/$UrPK$\$UrSeq$" setTo="hide">^^$UrSeq$^^</$button><br>
"""
$UrContent$
"""
</$reveal>
<$list filter="[[$UrSeq$]match[Pwd]]">
<$button message="tm-copy-to-clipboard" param="$UrContent$">
Copy to clipboard
</$button>
</$list>
</$list>
\end
Card name = mcr glbl_section_disp
Tag = $:/tags/Macro
\define glbl_section_disp(ur_title, ur_section_num)
<$reveal type="nomatch" state="$:/state/popup/$(currentTiddler)$-popup$ur_section_num$" text="show">
<$button class="tc-btn-invisible" set="$:/state/popup/$(currentTiddler)$-popup$ur_section_num$" setTo="show">
!!$ur_title$ - Show
</$button></$reveal>
<$reveal type="match" state="$:/state/popup/$(currentTiddler)$-popup$ur_section_num$" text="show">
<$button class="tc-btn-invisible" set="$:/state/popup/$(currentTiddler)$-popup$ur_section_num$" setTo="hide">
!!$ur_title$
</$button><br>
<<section$ur_section_num$>>
<$button style="float:right" class="tc-btn-invisible" set="$:/state/popup/$(currentTiddler)$-popup$ur_section_num$" setTo="hide">
---
</$button><br>
</$reveal>
\end
<!--|v
-- Card content call
\define section1()
section content
!!!here
\end
<<glbl_section_disp "Section 1" 1>>
^|-->
[QLua Android form]
- Click button Editor -> Navigates page
- [QLua app, Editor page, Top-right side icon]
- Click button Open file (looks like a Tabbed folder) -> Opens dialog
- Select file -> Closes dialog
- [QLua app, Editor page, Main Body text]
- Note: You can change the source code and save again before each run
- [Bottom bar icons]
- * Click button Run (looks like a right-arrow play button) -> Navigates page
[QLua Console Android step]
- * Note: The the last line says "Press enter to exit"
[QLua Android step]
- * Click button Run (looks like a right-arrow play button) -> Navigates page
[QLua Console Android form]
- Note: The top line shows the current path and the Linux shell command used to show the editor
- Note: The output of your program is below the first line
- * Note: The the last line says "Press enter to exit"
[QLua Android form]
- * Click button Console -> Navigates page
[QLua Console Android step]
- * Note: Commands in Lua are case sensitive
[QLua Android step]
- * Click button Console -> Navigates page
[QLua Console Android form]
- [console window]
- Note: The right-arrow symbol (greater-than sign) is the Lua prompt
- Note: Comment line-endings in a Lua file are separated by two hyhpens
--Single-line comment
ur_object.ur_function() --Comment until end of line
- Note: Multi-line comments in a Lua file are separated by two hyphens and two open brackets, and closed by two hyphens and two close brackets
--[[
Block comment
multiple lines
--]]
- * Note: Commands in Lua are case sensitive
- - You can create functions named abc
, Abc
, abC
, and ABC
, and each one can store to a different value
- Note: Exiting the Lua interpreter returns to the Linux Shell command line interpreter that was created by QLua
- Run the os.exit()
command
os.exit()
[Linux Shell CLI]
- Note: The $ symbol (dollar sign) is the Linux Shell prompt
- Note: Commands in Linux Shell are case sensitive
- - You can create programs named abc
, Abc
, abC
, and ABC
, and each one can run different code
- - Most standard Linux Shell commands are named with all lowercase characters, so only abc
would be the standard way to name a program
- Note: Exiting the Linux Shell returns to the QLua app main page
- Run the exit
command
exit
[QLua Console Android form]
- Note: I had problems using the LoadString
function with the loadfile
command
- - In the Lua code, replace any references to the LoadString
function with the Load
function
- - The Load
command did not need extra escaping like\\r
for the parameter, so replace \\r
with \r
when using the Load
command
- Save the result of the loadfile command to create a new function from the file
urfile_fn=loadfile('/sdcard/qlua5/ur_file.lua')
- Note: This added a row to the _G table
- Note: Just typing a function name or a table name shows the type of data stored in the row
_G.urfile
- Output is function: 0x#####
- Note: any command except _G is an implied name lookup in the _G table
urfile
- Output is also the same function: 0x####
- Note: You can run a function by adding parentheses to the end of the function name
- Running a function can load additional functions into the _G table
urfile()
- Output is the Lua program output
- * Note: Any functions or tables added to the _G table are available
- Note: You can load a Lua function and run it on the same line instead of storing the program in a variable by adding an extra pair of parentheses
loadfile('/sdcard/qlua5/ur_file.lua')()
- Output is the Lua program output
[TiddlyWiki Code form]
\define ExportSaveAll(ur_filename ur_stamp)
<$action-setfield $tiddler="$:/state/sidebar" text="no"/>
<$action-setfield $tiddler="$:/state/popup/DivPopTitle" text=""/>
<$action-setfield $tiddler="$:/state/tab/sidebar--595412856" text="$:/core/ui/SideBar/More"/>
<$action-sendmessage $message="tm-save-wiki" filename="TWMove_$ur_filename$-stamp-$ur_stamp$.htm"
/>
<$action-sendmessage $message="tm-download-file"
$param="$:/core/templates/exporters/StaticRiver" filename="TWMove_$ur_filename$-stamp-$ur_stamp$.html"
exportFilter="""[all[tiddlers]tag[INDEX]sort[title]][all[tiddlers]!tag[EXTLINK]!tag[INDEX]!tag[META]!prefix[Draft of]!is[image]!is[tag]!is[system]sort[title]]"""/>
\end
<$list filter="[{$:/info/url/full}split[file:///]join[]split[:]join[-colon-]split[.htm]join[]split[%20]join[ ]split[/]join[-fslash-]split[%]join[-percent-]]">
<$macrocall $name="ExportSaveAll" ur_filename=<<currentTiddler>> ur_stamp=<<now format:"YYYYm0MMd0DDam0hhm0mms0ss">> />
</$list>
[TiddlyWiki Code form]
<$vars search_text_pk="$:/state/popup/SearchAllFields">
<$list variable=show_code_pk filter="[<search_text_pk>addsuffix[-checkShowCode]]">
<$list variable=skip_system_pk filter="[<search_text_pk>addsuffix[-checkSkipSystem]]">
<$edit-text tiddler=<<search_text_pk>> field=text default="" placeholder="[no text yet]" autoHeight=yes tag=input/>
<$checkbox default="no" unchecked="no" checked="yes" field="text" tiddler=<<show_code_pk>>> Show Code</$checkbox>
<$checkbox default="yes" unchecked="no" checked="yes" field="text" tiddler=<<skip_system_pk>>> Skip System </$checkbox><br>
<br>
<$list variable=cur_search_text filter="[<search_text_pk>get[text]addsuffix[(?i)]!match[]]">
<$list variable=cur_showcode_text filter="[<show_code_pk>get[text]else[no]]">
<$list variable=cur_skipsystem_text filter="[<skip_system_pk>get[text]else[yes]match[yes]count[]]">
<!--Card titles-->
<$list variable=cur_pk filter="[regexp<cur_search_text>sort[]]">
<$list variable=found_skipsystem filter="[<cur_skipsystem_text>] [<cur_pk>!is[system]count[]] +[sum[]match[1]]">
<$link to=<<cur_pk>> />: title
</$list><!--found_skipsystem-->
</$list><!--cur_pk-->
<!--Card fields-->
<$list variable=cur_pk filter="[!regexp<cur_search_text>sort[]]">
<$list variable=found_skipsystem filter="[<cur_pk>is[system]count[]multiply<cur_skipsystem_text>match[0]]">
<$list variable=cur_field filter="[<cur_pk>fields[]]">
<$list variable=found_field filter="[<cur_pk>get<cur_field>regexp<cur_search_text>]">
<$link to=<<cur_pk>> />: <<cur_field>>
<$list variable=disp_code filter="[<cur_showcode_text>match[yes]]">
<$codeblock code=<<found_field>> />
</$list><!--disp_code-->
</$list><!--found_field-->
</$list><!--cur_field-->
</$list><!--found_skipsystem-->
</$list><!--cur_pk-->
</$list><!--cur_skipsystem_text-->
</$list><!--cur_showcode_text-->
</$list><!--cur_search_text-->
</$list><!--skip_system_pk-->
</$list><!--show_code_pk-->
</$vars><!--search_text_pk-->
[SQLite 3 for Windows form]
[SQLite 3 command-line prompt]
- * .open UrDatabaseName.db
- SELECT name FROM sqlite_master;
- Note: The list of table names are shown in the command-line window
[Save output to a file]
- .headers off
- .mode tabs
- * .once UrOutputFile.txt
- SELECT name FROM sqlite_master ORDER BY name;
- Note: The .once
command changes the output to write one command to the text file, and further commands are shown in the command-line window
- Note: You can use .output
instead of .once
, but in locks the file from being deleted and appends a lot of � NULL values between each set of output results
[Get a record count of all tables]
DEL table_count.sql
DEL table_count.txt
DEL table_column.sql
DEL table_column.txt
sqlite3 UrDatabaseName.db ".headers off" ".mode tabs" ".once table_count.sql" "SELECT CASE WHEN ROW_NUMBER() OVER (ORDER BY name) = 1 THEN '' ELSE 'UNION ALL ' END || 'SELECT ' || '''' || name || '''' || ', COUNT(1) FROM ' || name FROM sqlite_master WHERE type = 'table' ORDER BY name;" ".exit"
sqlite3 UrDatabaseName.db ".headers off" ".mode tabs" ".once table_count.txt" ".read table_count.sql" ".exit"
sqlite3 UrDatabaseName.db ".headers off" ".mode tabs" ".once table_column.sql" "SELECT 'SELECT CHAR(10) || ' || '''' || name || '''' || '; pragma table_info(' || '''' || name || '''' || '); ' FROM sqlite_master WHERE type = 'table' ORDER BY name;" ".exit"
sqlite3 UrDatabaseName.db ".headers off" ".mode tabs" ".output table_column.txt" ".read table_column.sql" ".output stdout" ".exit"
[VB.Net Code form]
Send one alt-tab
System.Windows.Forms.SendKeys.Send("%{TAB}")
Hold down Alt, press alt-tab twice, and release Alt
System.Windows.Forms.SendKeys.Send("%({TAB}{TAB})")
The Windows key is not so easy to emulate. - Auto-It or Auto-Hotkey can do more complicated patterns - VB.Net can use PInvoke to have more capabilities
[TiddlyWiki Code form]
<$button>
<$action-setfield $tiddler="$:/state/UrCardPK" text="yes"/>
Set UrCardPK = yes
</$button>
<$button>
<$action-setfield $tiddler="$:/state/UrCardPK" text="no"/>
Set UrCardPK = no
</$button>
[TiddlyWiki Code form]
Tags = $:/tags/Macro
\define cboard_copy(ur_text)
<pre>$ur_text$</pre>
<span style="margin-left:30px">
<<copy-to-clipboard "$ur_text$">>
</span>
\end
\define cboard_pwd(ur_text ur_pk)
<$reveal type="nomatch" state="$:/state/popup/$ur_pk$" text="show">
<$button set="$:/state/popup/$ur_pk$" setTo="show">Show</$button>
</$reveal>
<$reveal type="match" state="$:/state/popup/$ur_pk$" text="show">
<$button set="$:/state/popup/$ur_pk$" setTo="hide">Hide</$button>
<pre>$ur_text$</pre>
</$reveal>
<span style="margin-left:30px">
<<copy-to-clipboard "$ur_text$">>
</span>
\end
[TiddlyWiki Code form]
ur_message_to_send
to replace in the below stepstm-home
is an example message that TiddlyWiki can dour_card_pk
to replace in the below steps[New Card]
[New Card]
alt-H
[New Card]
((ur_card_pk))
<$action-sendmessage $message="ur_message_to_send"/>
[Android file system form]
When you change users on an Android device, the file:///sdcard/ folder is aliased to a different location for each. There is a specific sub-folder that is aliased to the same location for all users.
[File Manager]
- * Navigate to /sdcard/Android/obb
- Create a folder and copy files into it
[Android Notices menu]
- Change the current user
[File Manager]
- Navigate to /sdcard/Android/obb
- You can see the same folder and files from the other login
[Google Play Store Android form]
- * Install app WebDAV Server - BestDAV
- - Free or Pro edition
[WebDav Server Android step]
[Google Play Store Android step]
- * Install app WebDAV Server - BestDAV
[WebDav Server Android form]
- [Main page, top bar]
- Note: Folders not listed under the "Folders" button automatically has read-only access via WebDav
- Click button Settings -> nav
- [Settings page]
- Website Home Directory = /storage
- [Main page, bottom bar]
- Click button Start Server
- Note: The server's network URL starts with "http://" and ends with ":8080"
- - Sample = http://192.168.0.15:8080
[Windows computer]
- [browser]
- Address = http://192.168.0.15:8080
- Click link Get the file list -> nav
- Note: The directory shows the "external" SD Card name (if any) and "enc_emulated"
- To see the "internal" /sdcard folder on the android device,
- - Click link "enc_emulated" -> /_dir.cgi?dir=%2Fenc_emulated
- - Edit the address to say /_dir.cgi?dir=%2Femulated/0
- [Windows Explorer]
- Address = \\192.168.0.15@8080\DavWWWRoot
- Note: The directory shows the "external" SD Card name (if any) and "emulated", "enc_emulated", and "self"
- To see the "internal" /sdcard folder on the android device,
- - Click link "emulated" -> http://192.168.0.15:8080/emulated
- - Edit the address to say http://192.168.0.15:8080/emulated/0
[2021m05]
- I was able to see the "/storage" and "/storage/enc_emulated" folders through the web browser, but no contents or sub-folders on a Galaxy Tab A7. I tried WebDav Server by The Olive Tree, and it let me access the local files through the web browser.
[Google Play Store Android form]
- * Install app WebDAV Server by The Olive Tree
- - Free or Pro edition
[WebDav Server Android step]
[Google Chrome Windows step]
[Windows CLI step]
[Google Play Store Android step]
- * Install app WebDAV Server by The Olive Tree
[WebDav Server Android form]
- [Main page, top bar, right-side]
- Click button Settings -> Navigates page
- [Settings page]
- Click button Home directory -> Opens dialog
- Dialog: Home directory
- Click option Root -> Closes dialog
- Click android button Back -> Navigates page
- [Main page]
- If server is started,
- - Click button Stop WebDAV server -> Stops server, refresh page
- Click button Start Server -> Starts server, refresh page
- Note: The WebDAV server available on address starts with "http:
- - Sample = http://10.0.0.34:8080
[Google Chrome Windows step]
[Windows CLI step]
[Google Play Store Android step]
- * Install app WebDAV Server by The Olive Tree
[WebDav Server Android step]
[Google Chrome Windows form]
- Address = http://10.0.0.34:8080/storage
- Click link Get the file list -> Navigates page
- Note: The directory shows the "external" SD Card name (if any) and "enc_emulated"
- Note: One one device I used Address = http://10.0.0.34:8080/storage/emulated/0
- Click on an html or video file, or navigate to a subdirectory
[Windows CLI step]
[Google Play Store Android step]
- * Install app WebDAV Server by The Olive Tree
[WebDav Server Android step]
[Google Chrome Windows step]
[Windows CLI form]
- dir \\10.0.0.34@8080\storage\emulated\0
-> lists files and folders
[Google Play Store Android form]
- [Top-left icon]
- Click the three-lines menu, option Family Library
-> Navigates page
- Note: There are two Sections
- - Added by [Other]
- - Added by you
If the purchased app you want to share is not shown under the Added by You
section, you can add it.
[Play Store]
- [Top-left icon]
- Click the three-lines menu, option My apps & games
-> Navigates page
- [Installed tab, or Library tab]
- Choose an app you purchased -> Navigates page
- [App page]
- Note: The checkbox Family Library is a toggle switch
- checkbox Family Library = set -> The app is available to all Family
logins
If the 'Family' logins does not contain the account you want to access your shared app, you can add it.
[Play Store]
- [Top-left icon]
- Click the three-lines menu, option Account
-> Navigates page
- [Family tab]
- Click button Manage family members -> Opens dialog
- [Family dialog]
- Click button Invite family members -> Opens dialog
- [Verify CVC dialog]
- Enter your credit card number's CVC number
- Click button Verify -> Closes dialog, Opens dialog
- [Send Invitations dialog]
- Select a contact
- Click button Send
[Added Account email]
- Click the invitation link -> Navigates page
- Note: The Added Account can now use the Play Store app to install the Family Library shared app
[TiddlyWiki Code form]
unique_groups()
- find list of titles with UrAttribute
- [has[UrAttribute]]
- split by the prefix before the first hyphen
- [<currentTiddler>split[-]nth[1]]
- return each title's prefix followed by a space
- ><<currentTiddler>> <
unique_counts()
- create a new variable ugrp with the list of title prefixes from unique_groups()
- <$wikify name=ugrp text=<<unique_groups>>
- split the new variable by spaces
- [<ugrp>split[ ]
- ignore white-space only entries, and sort the rest alphabetically
- !match[]sort[]
- use "each:value" to get the unique title prefixes in the list
- each:value[]]
- for each unique title prefix, get a count of titles with UrAttribute
- [has[UrAttribute]prefixcount[]]
count_size()
- create a new variable ugrp with the list of title prefixes from unique_groups()
- <$wikify name=ugrp text=<<unique_groups>>
- split the new variable by spaces, ignore white-space, sort, use "each:value", store as ur_entry
- [<ugrp>split[ ]!match[]sort[]each:value[]]
- ur_entry=<<currentTiddler>>
- for each unique title prefix, only continue where the count of titles with UrAttribute matches the parent unique count
- [has[UrAttribute]prefix<ur_entry>count[]match[$(currentTiddler)$]]
- find all the titles with the unique title prefix, and return a "1" for each entry
- [has[UrAttribute]prefix]">1 <
main()
- create a new variable ucnt with the list of title prefixes from unique_counts()
- <$wikify name=ucnt text=<<unique_counts>>
- split the new variable by spaces, ignore white-space, sort, use "each:value"
- [split[ ]trim[]!match[]sort[]each:value[]]
- For each unique count,
- list the entry
- sum the number of entries returned from count_size() divided by the unique count
\define unique_groups()
<$list filter="[has[eng-vocab]]"><$list filter="[<currentTiddler>split[-]nth[1]]"><<currentTiddler>> </$list></$list>
\end
\define unique_counts()
<$wikify name=ugrp text=<<unique_groups>> >
<$list filter="[<ugrp>split[ ]!match[]sort[]each:value[]]">
<$list filter="[has[eng-vocab]prefix<currentTiddler>count[]]"><<currentTiddler>> </$list>
</$list>
</$wikify>
\end
\define count_size()
<$wikify name=ugrp text=<<unique_groups>> >
<$list filter="[<ugrp>split[ ]!match[]sort[]each:value[]]"><$vars ur_entry=<<currentTiddler>> >
<$list filter="[has[eng-vocab]prefix<ur_entry>count[]match[$(currentTiddler)$]]">
<$list filter="[has[eng-vocab]prefix<ur_entry>]">1 </$list>
</$list>
</$vars></$list>
</$wikify>
\end
<$wikify name=ucnt text=<<unique_counts>> >
<$list filter="[<ucnt>split[ ]trim[]!match[]sort[]each:value[]]">
ASLSJ Prefix Groups with <<currentTiddler>> words -
<$wikify name=usize text=<<count_size>> >
<$list filter="[<usize>split[ ]trim[]!match[]sum[]divide<currentTiddler>]"><<currentTiddler>><br>
</$list>
</$wikify>
</$list>
</$wikify>
[TiddlyWiki Code form]
Link an image in a Tiddler with 500px width
- Have image tiddler
- Have text tiddler
- Apply image to text tiddler at 500px width
[New tiddler]
- title = mcr img_link
- tag = $:/tags/Macro
- text field code
\define img_link(ur_pk)
@@max-width:500px;
[img [$ur_pk$]]
@@
\end
[Text tiddler]
- $macrocall $name=img_link ur_pk= currentTiddler
[TiddlyWiki Code form]
<video width="320" height="180"
poster="video\Frozen Sleep - Cortana Tribute by Malukah.png"
controls preload="none">
<source src="video\Frozen Sleep - Cortana Tribute by Malukah.webm" type=
"video/webm">
<source src="video\Frozen Sleep - Cortana Tribute by Malukah.ogv" type=
"video/ogg">
<source src="video\Frozen Sleep - Cortana Tribute by Malukah.mp4" type=
"video/mp4">
Your browser does not support the HTML 5 video tag.
</video>
<audio controls preload="none">
<source src="audio\Frozen-Sleep-Malukah.ogg" type="audio/ogg">
<source src="audio\Frozen-Sleep-Malukah.mp3" type="audio/mp3">
<p>Your browser does not support the HTML 5 audio tag.</p>
</audio>
$:/tags/Macro
poster="placeholder.png"
to the Video tag if you have a specific image you want instead of the video's first frame\define glbl_ext_video(UrFolder,UrVideo,UrTime)
<video width="320" height="180"
controls preload="metadata">
<source src="$UrFolder$/$UrVideo$.mp4#t=$UrTime$" type=
"video/mp4">
Your browser does not support the HTML 5 video tag.
</video>
\end
\define glbl_ext_audio(UrFolder,UrAudio,UrTime)
<audio controls preload="none">
<source src="$UrFolder$/$UrAudio$.mp3#t=$UrTime$" type=
"audio/mp3">
Your browser does not support the HTML 5 audio tag.
</audio>
\end
<!--|v
* Hard-coded to only use MP4 files
<<glbl_ext_video "MyVideosSubFolder" "MyVideoFile" "00:01:00">>
<<glbl_ext_video "file:///C:/UrFolder/UrSubFolder" "UrFilenameNoExtension" "00:01:00">>
^|-->
<!--|v
<<glbl_ext_audio "MyAudioSubFolder" "MyAudioFile" "00:01:00">>
^|-->
[TiddlyWiki Code form]
Use an iFrame to run JavaScript in a TiddlyWiki
>iframe src="javascript:newWindow='';var ...
- just javascript:newWindow=var ...
did not compile. An empty string is a work-around.
Alternative output: use alert instead of document.write
alert(strTEXT);"/>
How to reference an external HTML file in a tiddler
>iframe src=... scrolling=yes style="border-style:none;height:100%;width:100%">
>/iframe>
- A self-closing tag does not allow remaining html code to be displayed - ALWAYS specify a closing >/iframe> tag
TW Macro to show iframe and link
>div style='float:right'>[ext[_ |$ur_pk$.txt.html]]
>/div>
>iframe src='$ur_pk$.txt.html'>
>/iframe>
- $macrocall $name=iframe_txt ur_pk= currentTiddler
<iframe src="javascript:newWindow='';var qs = '"';var qt = ''';
var objFRAME = document.createElement('iframe');
objFRAME.setAttribute('id', 'innerFrame');
objFRAME.setAttribute('src', 'http://www.google.com/');
document.body.appendChild(objFRAME);
var objTEST = objFRAME;
var strTEXT = '';
if (objTEST===undefined) {
strTEXT = 'undef obj';
} else if (objTEST===null) {
strTEXT = 'null obj';
} else {
var intSEQ = 0;
var strNAME;
for (strNAME in objTEST) {
intSEQ += 1;
strTEXT += ' ; ' + strNAME;
}
strTEXT = 'olen ' + intSEQ + strTEXT;
}
document.write(strTEXT);"></iframe>
alert(strTEXT);"/>
<iframe src='iframe.scrE2.txt' height=100% width=100% scrolling=yes frameborder=no></iframe>
\define iframe_txt(ur_pk)
<div style="float:right">[ext[_ |$ur_pk$.txt.html]]</div>
<iframe src='$ur_pk$.txt.html' scrolling=yes style="border-style:none;height:100%;width:100%"></iframe>
\end
[HTML5 Code form]
<iframe src="UrPath\UrFile.html" scrolling=yes style="border-style:none;height:75%;width:100%" ></iframe>
[TiddlyWiki Code form]
<$transclude mode="block" tiddler=<<currentTiddler>> />
<$transclude mode="inline" tiddler=<<currentTiddler>> field="ref_data" />
[HTML5 Meta Tag form]
content-type
provides an HTTP header specifying that the character encoding for the document is in the content attributeMissing: [W3Schools Meta HTTP-EQUIV]
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
[HTML5 Meta Tag form]
meta
name
attr = copyright
, ur_app_name-version
content
attr = Any text data
[HTML5 Meta Tag form]
META
name
attr = viewport'content
attr = comma-separated list of equates
- width = ( A positive integer number ) or ( the text
device-width
)- height = ( A positive integer) or ( the text
device-height
)- initial-scale = A positive number between 0.0 and 10.0
- maximum-scale = A positive number between 0.0 and 10.0
- minimum-scale = A positive number between 0.0 and 10.0
- user-scalable =
yes
,no
- viewport-fit =
auto', 'contain
,cover
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
[JavaScript Code form]
The labeled statement can be used with break or continue statements.
List:
while(counter < 50)
{
userInput += userInput;
counter++;
if(userInput > 10000)
{
break List;
}
}
var i = 100, j = 100;
outerloop:
while(i>0) {
while(j>0) {
j++
if(j>50) {
break outerloop;
}
}
i++
}
loop1:
for (let i = 0; i < 5; i++) {
if (i === 1) {
continue loop1;
}
str = str + i;
}
[JavaScript Code form]
Functions called via property references get "this" set for them: This is the part that really makes it seem like JavaScript has methods: The "this" reference gets set automagically to the object instance if you call a function via a property reference.
Within that call, use the object in question as "this". Getting the function reference from an object property doesn't link it in any way to the object the property came from. The JavaScript engine treats calls of functions just retrieved from object properties as special and sets up "this" accordingly. Essentially, "this" is just a function argument that's passed into the function as an implicit feature of calling a function via a property reference.
JavaScript gives us the call and apply methods on function instances, with which we can say explicitly what we want "this" to be. If you say myfunction.call(myobject), you're saying "call myfunction and use myobject as 'this'", which is what the property-retrieval stuff does implicitly for you.
UrObject.UrFunction();
- equates to -
UrObject.UrFunction.call(UrObject);
Everything can be seen as a function.
window['UrObject']['UrFunction'].call(window['UrObject']);
Getting the function reference from the property (UrObject.UrFunction) is distinct from the fact we're calling it (call) is distinct from what "this" should be ((UrObject)).
Missing: [JavaScript Closures]
The interpreter creates a call object for this particular execution of the function and sets some properties on that call object before passing it into the function's code.
window.UrFunction(UrObject1, UrObject2);
That creates a call object for this execution of updateDisplay that essentially looks like this:
call.arguments = [UrObject1, UrObject2]
call.arguments.callee = UrFunction
call.ur_input_parm1 = UrObject1
call.ur_input_parm2 = UrObject2
call.internal_var1 = undefined
The use of the call object is implicit, because once the call object is created, it's put at the top of the scope chain for the duration of the function call.
[JavaScript Code form]
It's not a multiline string, it's a one line string split over multiple lines of code that make up a single statement.
Old version uses backslash as a line continuation character:
eval(" \
alert('hi'); \
");
New version uses backtick character as multi-line string:
WARNING: Not supported by IE
eval(`
alert('hi');
`);
Use string concatenation instead:
eval(
"var v1 = 'hi';" +
"alert(v1);"
);
[HTML5 Meta Tag form]
META
application-name
content
attr = The application that is dynamically supplying content for the current web page<meta name="application-name" content="UrApplicationTitle" />
[JavaScript Code form]
Strict mode makes assignments which would otherwise silently fail to throw an exception. For example, NaN is a non-writable global variable. In normal code assigning to NaN does nothing; the developer receives no failure feedback. In strict mode assigning to NaN throws an exception.
"use strict";
mistypeVariable = 17;
Result in Developer Tools, Javascript Console:
Uncaught ReferenceError: mistypeVariable is not defined at UrFile.html:UrLineNumber
<script type="module">
mistypeVariable = 17;
</script>
Result:
Uncaught ReferenceError: mistypeVariable is not defined at UrFile.html:UrLine
'use strict';
// Assignment to a non-writable global
var undefined = 5; // throws a TypeError
var Infinity = 5; // throws a TypeError
// Assignment to a non-writable property
var obj1 = {};
Object.defineProperty(obj1, 'x', { value: 42, writable: false });
obj1.x = 9; // throws a TypeError
// Assignment to a getter-only property
var obj2 = { get x() { return 17; } };
obj2.x = 5; // throws a TypeError
// Assignment to a new property on a non-extensible object
var fixed = {};
Object.preventExtensions(fixed);
fixed.newProp = 'ohai'; // throws a TypeError
Strict mode in ECMAScript 2015 forbids setting properties on primitive values. Without strict mode, setting properties is simply ignored (no-op), with strict mode, however, a TypeError is thrown.
(function() {
'use strict';
false.true = ''; // TypeError
(14).sailing = 'home'; // TypeError
'with'.you = 'far away'; // TypeError
})();
[JavaScript Code form]
Here are all the string escape codes:
\0 The NUL character (\u0000)
\b Backspace (\u0008)
\t Horizontal tab (\u0009)
\n Newline (\u000A)
\v Vertical tab (\u000B)
\f Form feed (\u000C)
\r Carriage return (\u000D)
\" Double quote (\u0022)
\' Apostrophe or single quote (\u0027)
\\ Backslash (\u005C)
\x XX The Latin-1 character specified by the two hexadecimal digits XX
\u XXXX The Unicode character specified by the four hexadecimal digits XXXX
[HTML5 Code form]
This specification does not define a set of legal meta data properties. The meaning of a property and the set of legal values for that property should be defined in a reference lexicon called a profile.
- * The profile attribute of the HEAD specifies the location of a meta data profile.
- The value of the profile attribute is a URI.
User agents may use this URI in two ways:
User agents may be able to recognize the name (without actually retrieving the profile) and perform some activity based on known conventions for that profile. For instance, search engines could provide an interface for searching through catalogs of HTML documents, where these documents all use the same profile for representing catalog entries.
User agents may dereference the URI and perform some activity based on the actual definitions within the profile (e.g., authorize the usage of the profile within the current HTML document). This specification does not define formats for profiles.
[HTML5 Meta Tag form]
META
name
attr = generator
content
attr = The name of the program you used to create your website<meta name="generator" content="UrProgramTitle" />
[TiddlyWiki Code form]
Title = mcr glbl_code_split
Tags = $:/tags/Macro
\define glbl_code_block(ur_card_pk)
[[$ur_card_pk$]]
<$codeblock code={{$ur_card_pk$}} />
\end
\define glbl_code_linenum(ur_card_pk, ur_skip_count, ur_section_size, ur_disp_linenum)
<div style="clear:both">[[$ur_card_pk$]]</div>
<$list filter="[[$ur_skip_count$]!match[]else[0]]" variable=intSKIP_COUNT>
<$list filter="[[$ur_card_pk$]get[text]splitregexp[\n]butfirst<intSKIP_COUNT>count[]]" variable=intLINE_COUNT>
<$list filter="[[$ur_section_size$]!match[]!match[0]else<intLINE_COUNT>]" variable=intSECTION_SIZE>
<$list filter="[range<intSECTION_SIZE>]" variable=intCUR_LINE>
<$list filter="[<intCUR_LINE>subtract[1]]" variable=IntREMOVE_LINE>
<$list filter="[[$ur_card_pk$]get[text]splitregexp[\n]butfirst<intSKIP_COUNT>butfirst<IntREMOVE_LINE>first[]]" variable=strCUR_LINE>
<$list filter="[[$ur_disp_linenum$]!match[n]!match[0]]"><div style="float:left"><<intCUR_LINE>></div></$list>
<$codeblock code=<<strCUR_LINE>> />
</$list></$list></$list></$list></$list></$list>
\end
\define glbl_code_split_group(ur_card_pk, ur_skip_count)
<$list filter="[{$ur_card_pk$}splitregexp[\n]butfirst[$ur_skip_count$]first[100]]"><$list filter="[<currentTiddler>splitregexp[\u0026]join[&]splitregexp[\u0027]join[']splitregexp[\u002C]join[,]splitregexp[\u002D]join[-]splitregexp[\u002F]join[/]splitregexp[\u003A]join[:]splitregexp[\u003C]join[<]splitregexp[\u0040]join[@]splitregexp[\u005B]join[[]splitregexp[\u005C]join[\]splitregexp[\u005E]join[^]splitregexp[\u005F]join[_]splitregexp[\u0060]join[`]splitregexp[\u007B]join[{]splitregexp[\u007E]join[~]splitregexp[\u0009]join[__ __]splitregexp[\u0020]join[__ __]splitregexp[\u0022\u0022\u0022]join["""]]"><<currentTiddler>>
</$list></$list>
\end
\define glbl_code_split_count(ur_card_pk, ur_rem_counter, ur_last_counter, ur_first_line_skip)
<$list filter="[{$ur_last_counter$}subtract{$ur_rem_counter$}multiply[100]add[$ur_first_line_skip$]]"><$macrocall $name=glbl_code_split_group ur_card_pk="$ur_card_pk$" ur_skip_count=<<currentTiddler>> /></$list>
\end
\define glbl_code_split_data()
<$macrocall $name=glbl_code_split_count ur_card_pk=<<source_card_pk>> ur_rem_counter=<<temp_remcounter_pk>> ur_last_counter=<<temp_lastcounter_pk>> ur_first_line_skip=<<first_line_skip>> />
\end
\define glbl_code_split_next_group_disp(ur_rem_counter)
<$list filter="[{$ur_rem_counter$}subtract[1]]">
<$action-setfield $tiddler=<<temp_remcounter_pk>> text=<<currentTiddler>> />
</$list>
\end
\define glbl_code_split_disp(ur_source_card_pk, ur_temp_card_pk, ur_temp_remcounter_pk, ur_first_line_skip)
Line Count: <$list filter="[{$ur_source_card_pk$}splitregexp[\n]butfirst[$ur_first_line_skip$]count[]]"></$list><br>
Rem to find: <$list filter="[{$ur_temp_remcounter_pk$}]"></$list><br>
Source data: [[$ur_source_card_pk$]]<br>
\end
\define glbl_code_split_combine()
$(currentTiddler)$$(str_html_out)$
\end
\define glbl_code_split_init(ur_card_pk, ur_first_line_skip)
<$list filter="[[$ur_first_line_skip$]!match[]then[$ur_first_line_skip$]else[0]]">
<$vars source_card_pk="$ur_card_pk$" temp_card_pk="$:/state/popup/$ur_card_pk$/HtmlEscapedLinesOutput" temp_remcounter_pk="$:/state/popup/$ur_card_pk$/HtmlEscapedLinesRemCounter" temp_lastcounter_pk="$:/state/popup/$ur_card_pk$/HtmlEscapedLinesLastCounter" first_line_skip=<<currentTiddler>> >
<$list filter="[{$ur_card_pk$}splitregexp[\n]butfirst<first_line_skip>count[]divide[100]add[1]floor[]]">
<$button>
<$action-setfield $tiddler=<<temp_card_pk>> text="" />
<$action-setfield $tiddler=<<temp_remcounter_pk>> text=<<currentTiddler>> />
<$action-setfield $tiddler=<<temp_lastcounter_pk>> text=<<currentTiddler>> />
Reset destination edit field
</$button>
</$list><br>
<$edit-text tiddler=<<temp_remcounter_pk>> autoHeight=yes tag=input />
</$vars>
</$list>
\end
\define glbl_code_split(ur_card_pk, ur_first_line_skip)
<$macrocall $name=glbl_code_split_init ur_card_pk="$ur_card_pk$" ur_first_line_skip="$ur_first_line_skip$" /><br>
<$list filter="[[$ur_first_line_skip$]!match[]then[$ur_first_line_skip$]else[0]]">
<$vars source_card_pk="$ur_card_pk$" temp_card_pk="$:/state/popup/$ur_card_pk$/HtmlEscapedLinesOutput" temp_remcounter_pk="$:/state/popup/$ur_card_pk$/HtmlEscapedLinesRemCounter" temp_lastcounter_pk="$:/state/popup/$ur_card_pk$/HtmlEscapedLinesLastCounter" first_line_skip=<<currentTiddler>> >
<$macrocall $name=glbl_code_split_disp ur_source_card_pk=<<source_card_pk>> ur_temp_card_pk=<<temp_card_pk>> ur_temp_remcounter_pk=<<temp_remcounter_pk>> ur_temp_lastcounter_pk=<<temp_lastcounter_pk>> ur_first_line_skip=<<first_line_skip>> />
<$button>
<$wikify name=str_html_out text=<<glbl_code_split_data>> >
<$list filter="[<temp_card_pk>get[text]else[]]"><$vars combine_html_out=<<glbl_code_split_combine>> >
<$action-setfield $tiddler=<<temp_card_pk>> text=<<combine_html_out>> />
</$vars></$list>
<$macrocall $name=glbl_code_split_next_group_disp ur_rem_counter=<<temp_remcounter_pk>> />
</$wikify>
Find next 100 lines
</$button><br>
<$edit-text tiddler=<<temp_card_pk>> autoHeight=no />
</$vars>
</$list>
\end
\define glbl_code_disp_group(ur_card_pk, ur_skip_count)
<$list filter="[{$ur_card_pk$}splitregexp[\n]butfirst[$ur_skip_count$]first[100]]"><$list filter="[<currentTiddler>splitregexp[\u0026]join[&]splitregexp[\u00A0]join[ ]splitregexp[\u0009]join[ ]splitregexp[\u0020]join[ ]splitregexp[\u0027]join[']splitregexp[\u002C]join[,]splitregexp[\u002D]join[-]splitregexp[\u002F]join[/]splitregexp[\u003A]join[:]splitregexp[\u003C]join[<]splitregexp[\u0040]join[@]splitregexp[\u005B]join[[]splitregexp[\u005C]join[\]splitregexp[\u005E]join[^]splitregexp[\u005F]join[_]splitregexp[\u0060]join[`]splitregexp[\u007B]join[{]splitregexp[\u007E]join[~]]"><<currentTiddler>><br></$list></$list>
\end
\define glbl_code_disp_count(ur_card_pk, ur_rem_counter, ur_last_counter, ur_first_line_skip)
<$list filter="[{$ur_last_counter$}subtract{$ur_rem_counter$}multiply[100]add[$ur_first_line_skip$]]"><$macrocall $name=glbl_code_disp_group ur_card_pk="$ur_card_pk$" ur_skip_count=<<currentTiddler>> /></$list>
\end
\define glbl_code_disp_data()
<$macrocall $name=glbl_code_disp_count ur_card_pk=<<source_card_pk>> ur_rem_counter=<<temp_remcounter_pk>> ur_last_counter=<<temp_lastcounter_pk>> ur_first_line_skip=<<first_line_skip>> />
\end
\define glbl_code_disp_next_group_disp(ur_rem_counter, ur_oper)
<$list filter="[{$ur_rem_counter$}$ur_oper$[1]]">
<$action-setfield $tiddler=<<temp_remcounter_pk>> text=<<currentTiddler>> />
</$list>
\end
\define glbl_code_disp_disp(ur_source_card_pk, ur_temp_remcounter_pk, ur_first_line_skip)
Line Count: <$list filter="[{$ur_source_card_pk$}splitregexp[\n]butfirst[$ur_first_line_skip$]count[]]"></$list><br>
Rem to browse: <$list filter="[{$ur_temp_remcounter_pk$}]"></$list><br>
\end
\define glbl_code_disp_init(ur_card_pk, ur_first_line_skip)
<$list filter="[[$ur_first_line_skip$]!match[]then[$ur_first_line_skip$]else[0]]">
<$vars source_card_pk="$ur_card_pk$" temp_remcounter_pk="$:/state/popup/$ur_card_pk$/HtmlEscapedLinesRemCounter" temp_lastcounter_pk="$:/state/popup/$ur_card_pk$/HtmlEscapedLinesLastCounter" first_line_skip=<<currentTiddler>> >
<$list filter="[{$ur_card_pk$}splitregexp[\n]butfirst<first_line_skip>count[]divide[100]floor[]]">
<$button>
<$action-setfield $tiddler=<<temp_remcounter_pk>> text=<<currentTiddler>> />
<$action-setfield $tiddler=<<temp_lastcounter_pk>> text=<<currentTiddler>> />
Reset destination edit field
</$button>
</$list><br>
<$edit-text tiddler=<<temp_remcounter_pk>> autoHeight=yes tag=input />
</$vars>
</$list>
\end
\define glbl_code_disp(ur_card_pk, ur_first_line_skip)
<$macrocall $name=glbl_code_disp_init ur_card_pk="$ur_card_pk$" ur_first_line_skip="$ur_first_line_skip$" /><br>
[[$ur_card_pk$]]<br>
<$list filter="[[$ur_first_line_skip$]!match[]then[$ur_first_line_skip$]else[0]]">
<$vars source_card_pk="$ur_card_pk$" temp_remcounter_pk="$:/state/popup/$ur_card_pk$/HtmlEscapedLinesRemCounter" temp_lastcounter_pk="$:/state/popup/$ur_card_pk$/HtmlEscapedLinesLastCounter" first_line_skip=<<currentTiddler>> >
<$macrocall $name=glbl_code_disp_disp ur_source_card_pk=<<source_card_pk>> ur_temp_remcounter_pk=<<temp_remcounter_pk>> ur_temp_lastcounter_pk=<<temp_lastcounter_pk>> ur_first_line_skip=<<first_line_skip>> />
<$button>
<$macrocall $name=glbl_code_disp_next_group_disp ur_rem_counter=<<temp_remcounter_pk>> ur_oper="subtract" />
Browse next 100 lines
</$button><br>
<$button>
<$macrocall $name=glbl_code_disp_next_group_disp ur_rem_counter=<<temp_remcounter_pk>> ur_oper="add" />
Browse prev 100 lines
</$button><br>
<<glbl_code_disp_data>>
</$vars>
</$list>
\end
<!--<$macrocall $name=glbl_code_disp ur_card_pk="WebNotes\Data" ur_first_line_skip=1 />-->
<!--<<glbl_code_disp "WebNotes\Data 1 >>-->
<!--Does not pass through the \u0009 tab or \u00A0 non-breaking space characters. Chrome highlight and copy puts spaces on the clipboard.-->
<!--[[WebNotes\Data]]-->
<!--<$macrocall $name=glbl_code_split ur_card_pk="WebNotes\Data" ur_first_line_skip=1 />-->
<!--<<glbl_code_block "UrCardPK">>-->
<!--<<glbl_code_linenum "UrCardPK" 0 15 n>>-->
[TiddlyWiki Code form]
\define ui(ur_pk)
<$wikify name=lf_char text="
">
<$list
variable=ttbLINE filter="""[[$(currentTiddler)$]split[Draft of ]join[]split[']join[]addprefix[$:/state/popup/]addsuffix[-ttbLINE]]""">
<$list
variable=ttbPAGE filter="""[[$(currentTiddler)$]split[Draft of ]join[]split[']join[]addprefix[$:/state/popup/]addsuffix[-ttbPAGE]]""">
<$list
variable=dest_count filter="""[prefix<ttbLINE>fields:exclude[created title modified]count[]]""">
<$list
variable=rec_count filter="""[[$ur_pk$]get[text]splitregexp[\n]count[]]""">
<$list
variable=rem_count filter="""[<ttbPAGE>get[text]splitregexp[\n]count[]divide[100]trunc[]add[1]]""">
<$list
variable=cur_pagek filter="""[<ttbPAGE>get[pagek_seq]else[0]]""">
Rem page count: <<rem_count>> | Current page: <<cur_pagek>> | <$link to=<<ttbPAGE>> /><br>
<$list
variable="display_snapshot_button" filter="[<ttbPAGE>get[text]else[]!match[]]">
<$list
variable="display_split_button" filter="[<rem_count>!match[0]]">
<$button>
<$list
variable=new_line_pk filter="""[<ttbLINE>addsuffix[-]addsuffix<cur_pagek>]""">
<$list
variable=cur_seq filter="""[range[100]subtract[1]]""">
<$list
variable=new_row_seq filter="""[<cur_pagek>subtract[1]multiply[100]add<cur_seq>add[1]]""">
<$list
variable=rec_line filter="""[<ttbPAGE>get[text]splitregexp[\n]butfirst<cur_seq>first[]]""">
<$action-setfield $tiddler=<<new_line_pk>> $field=<<new_row_seq>> $value=<<rec_line>>/>
</$list><!--rec_line-->
</$list><!--new_row_seq-->
</$list><!--cur_seq-->
</$list><!--new_line_pk-->
<$list
variable=rec_line filter="""[<ttbPAGE>get[text]splitregexp[\n]butfirst[100]join<lf_char>]""">
<$action-setfield $tiddler=<<ttbPAGE>> $field="text" $value=<<rec_line>>/>
</$list><!--rec_line-->
<$list
variable="next_page" filter="[<ttbPAGE>get[pagek_seq]add[1]]"><$action-setfield $tiddler=<<ttbPAGE>> $field="pagek_seq" $value=<<next_page>>/></$list><!--next_page-->
Split Chars
</$button></$list><!--display_split_button--></$list><!--display_snapshot_button--><$button
style="margin-left:25px">
<$list
variable=del_line_pk filter="""[prefix<ttbLINE>]"""><$action-sendmessage $message=tm-delete-tiddler $param=<<del_line_pk>> />
</$list><!--del_line_pk-->
<$action-setfield $tiddler=<<ttbPAGE>> $field="pagek_seq" $value="1"/>
<$action-setfield $tiddler=<<ttbPAGE>> $field="text" $value={{$ur_pk$}}/>
Clear Chars
</$button>
<$list
variable=found_line_pk filter="""[prefix<ttbLINE>]""">
<$list
variable=disp_line_pk filter="""[<found_line_pk>removeprefix<ttbLINE>removeprefix[-]]""">
<$link to=<<found_line_pk>> ><<disp_line_pk>></$link>
</$list><!--disp_line_pk-->
</$list><!--found_line_pk-->
Source line count: <<rec_count>><br>
Dest field count: <<dest_count>>
</$list><!--cur_pagek-->
</$list><!--rem_count-->
</$list><!--rec_count-->
</$list><!--dest_count-->
</$list><!--ttbPAGE-->
</$list><!--ttbLINE-->
</$wikify><!--lf_char-->
\end
<<ui "UrPK">>
\define ui(ur_pk)
<$wikify name=lf_char text="
">
<$list
variable=ttbLINE filter="""[[$(currentTiddler)$]split[Draft of ]join[]split[']join[]addprefix[$:/state/popup/]addsuffix[-ttbLINE]]""">
<$list
variable=ttbPAGE filter="""[[$(currentTiddler)$]split[Draft of ]join[]split[']join[]addprefix[$:/state/popup/]addsuffix[-ttbPAGE]]""">
<$list
variable=dest_count filter="""[prefix<ttbLINE>indexes[]count[]]""">
<$list
variable=rec_count filter="""[[$ur_pk$]get[text]splitregexp[\n]count[]]""">
<$list
variable=rem_count filter="""[<ttbPAGE>get[text]splitregexp[\n]count[]divide[100]trunc[]add[1]]""">
<$list
variable=cur_pagek filter="""[<ttbPAGE>get[pagek_seq]else[0]]""">
Rem page count: <<rem_count>> | Current page: <<cur_pagek>> | <$link to=<<ttbPAGE>> /><br>
<$list
variable="display_snapshot_button" filter="[<ttbPAGE>get[text]else[]!match[]]">
<$list
variable="display_split_button" filter="[<rem_count>!match[0]]">
<$button>
<$list
variable=new_line_pk filter="""[<ttbLINE>addsuffix[-]addsuffix<cur_pagek>]""">
<$list
variable=cur_seq filter="""[range[100]subtract[1]]""">
<$list
variable=new_row_seq filter="""[<cur_pagek>subtract[1]multiply[100]add<cur_seq>add[1]]""">
<$list
variable=rec_line filter="""[<ttbPAGE>get[text]splitregexp[\n]butfirst<cur_seq>first[]]""">
<$action-setfield $tiddler=<<ttbLINE>> $index=<<new_row_seq>> $value=<<rec_line>>/>
</$list><!--rec_line-->
</$list><!--new_row_seq-->
</$list><!--cur_seq-->
</$list><!--new_line_pk-->
<$list
variable=rec_line filter="""[<ttbPAGE>get[text]splitregexp[\n]butfirst[100]join<lf_char>]""">
<$action-setfield $tiddler=<<ttbPAGE>> $field="text" $value=<<rec_line>>/>
</$list><!--rec_line-->
<$list
variable="next_page" filter="[<ttbPAGE>get[pagek_seq]add[1]]"><$action-setfield $tiddler=<<ttbPAGE>> $field="pagek_seq" $value=<<next_page>>/></$list><!--next_page-->
Split Chars
</$button></$list><!--display_split_button--></$list><!--display_snapshot_button--><$button
style="margin-left:200px">
<$list
variable=del_line_pk filter="""[prefix<ttbLINE>]"""><$action-sendmessage $message=tm-delete-tiddler $param=<<del_line_pk>> />
</$list><!--del_line_pk-->
<$action-setfield $tiddler=<<ttbPAGE>> $field="pagek_seq" $value="1"/>
<$action-setfield $tiddler=<<ttbPAGE>> $field="text" $value={{$ur_pk$}}/>
Clear Chars
</$button>
<$link to=<<ttbLINE>> />
<$list
variable=found_line_pk filter="""[prefix<ttbLINE>]""">
<$list
variable=disp_line_pk filter="""[<found_line_pk>removeprefix<ttbLINE>removeprefix[-]]""">
<$link to=<<found_line_pk>> ><<disp_line_pk>></$link>
</$list><!--disp_line_pk-->
</$list><!--found_line_pk-->
Source line count: <<rec_count>><br>
Dest field count: <<dest_count>>
</$list><!--cur_pagek-->
</$list><!--rem_count-->
</$list><!--rec_count-->
</$list><!--dest_count-->
</$list><!--ttbPAGE-->
</$list><!--ttbLINE-->
</$wikify><!--lf_char-->
\end
<<ui "UrPK">>
[VB.Net Code form]
Namespace Mx
Public Class rStatusForm
Inherits System.Windows.Forms.Form
Public txtLOG As System.Windows.Forms.TextBox
Private bgTHREAD As System.ComponentModel.BackgroundWorker
Private bg_fn As UserAction.enkBG.zcalc_status
Private bg_completed As System.ComponentModel.RunWorkerCompletedEventHandler
Private bg_progress As System.ComponentModel.ProgressChangedEventHandler
Private bg_work As System.ComponentModel.DoWorkEventHandler
Public Sub New()
Me.txtLOG = New System.Windows.Forms.TextBox()
Me.txtLOG.Name = "txtLOG"
Me.txtLOG.Multiline = True
Me.txtLOG.ScrollBars = System.Windows.Forms.ScrollBars.Vertical
Me.txtLOG.Dock = System.Windows.Forms.DockStyle.Fill
Me.bgTHREAD = New System.ComponentModel.BackgroundWorker()
Me.bgTHREAD.WorkerReportsProgress = True
Me.bgTHREAD.WorkerSupportsCancellation = True
AddHandler Me.txtLOG.KeyPress, AddressOf StopWork
Me.StartWork(Me.bg_fn)
End Sub 'New
Private Sub StopWork()
Call Me.bgTHREAD.CancelAsync()
End Sub
Private Sub StartWork(ur_fn As UserAction.enkBG.zcalc_status)
Me.bg_fn = ur_fn
If Me.bg_work IsNot Nothing Then
RemoveHandler Me.bgTHREAD.DoWork, Me.bg_work
End If
Me.bg_work = New System.ComponentModel.DoWorkEventHandler(AddressOf RunWorkerAsyncStartWork)
AddHandler Me.bgTHREAD.DoWork, Me.bg_work
If Me.bg_progress IsNot Nothing Then
RemoveHandler Me.bgTHREAD.ProgressChanged, Me.bg_progress
End If
Me.bg_progress = New System.ComponentModel.ProgressChangedEventHandler(AddressOf RunWorkerAsyncProgressChanged)
AddHandler Me.bgTHREAD.ProgressChanged, Me.bg_progress
If Me.bg_completed IsNot Nothing Then
RemoveHandler Me.bgTHREAD.RunWorkerCompleted, Me.bg_completed
End If
Me.bg_completed = New System.ComponentModel.RunWorkerCompletedEventHandler(AddressOf RunWorkerAsyncRunWorkerCompleted)
AddHandler Me.bgTHREAD.RunWorkerCompleted, Me.bg_completed
Me.bgTHREAD.RunWorkerAsync()
End Sub 'StartWork
Private Sub RunWorkerAsyncStartWork(worker As System.ComponentModel.BackgroundWorker, e As System.ComponentModel.DoWorkEventArgs)
Mx.Calculate_Status(worker)
End Sub
Private Sub RunWorkerAsyncProgressChanged(sender As Object, e As System.ComponentModel.ProgressChangedEventArgs)
If e.ProgressPercentage > 0 Then
Me.txtLOG.Text = "Working: " & e.ProgressPercentage.ToString
'Dim t1 As String = e.UserState
End If
End Sub 'RunWorkerAsyncProgressChanged
Private Sub RunWorkerAsyncRunWorkerCompleted(sender As Object, e As System.ComponentModel.RunWorkerCompletedEventArgs)
If e.Cancelled Then
MsgBox("Operation cancelled By User")
Else
MsgBox("Operation completed")
End If
End Sub 'RunWorkerAsyncRunWorkerCompleted
End Class 'rStatusForm
Public Shared Sub Calculate_Status(worker As System.ComponentModel.BackgroundWorker)
Dim message_written = worker.CancellationPending
If message_written = False Then
worker.ReportProgress(15, "No")
System.Threading.Thread.Sleep(2000)
If worker.CancellationPending Then
message_written = True
MsgBox("canceled")
End If
End If
If message_written = False Then
worker.ReportProgress(30)
System.Threading.Thread.Sleep(2000)
If worker.CancellationPending Then
message_written = True
MsgBox("canceled")
End If
End If
If message_written = False Then
worker.ReportProgress(100)
End If
End Sub 'Calculate_Status
End Namespace 'Mx
[TiddlyWiki Code form]
<$wikify name=str_text_out text="A">
A = <<str_text_out>>
</$wikify>
<$wikify name=str_text_out text="''bold font''" output=html>
B = <<str_text_out>>
</$wikify>
<$set name=card_data filter="[[UrCardName]get[text]]" >
C = <<card_data>
</$set>
\define hidden_data()
"""
your data
over here
\end
\define format_data()
<$wikify name=cur_data type="text/plain" text=<<hidden_data>> >
<$wikify name=chr_lf text=" " >
<$list variable=set_count filter="[<cur_data>split<chr_lf>count[]subtract[1]]">
<$list variable=setctr filter="[range<set_count>]">
<$list variable=cur_set filter="[<cur_data>split<chr_lf>butfirst<setctr>first[]]">
(Line <<setctr>>) <<cur_set>><br>
</$list><!--cur_set-->
</$list><!--setctr-->
</$list><!--set_count-->
</$wikify><!--chr_lf-->
</$wikify><!--cur_data-->
\end
D = <br>
<<format_data>>
[TiddlyWiki Code form]
The set or list widgets' filter parameter can evaluate the text stored in a macro.
\define currentCard()
[[$(currentTiddler)$]get[draft.of]else[$(currentTiddler)$]]
\end
<$set name=cur_title filter=<<currentCard>> >
<<cur_title>>
</$set><!--cur_title-->
<$list variable=cur_title filter=<<currentCard>> >
<$link to=<<cur_title>> />
</$list><!--cur_title-->
[TiddlyWiki Code form]
Type = application/x-tiddler-dictionary
3:a
2:b
3:c
See list of unique indexes:
<$list variable=cur_key filter="[[UrPK]indexes[]]"><<cur_key>>:
<$list variable=cur_val filter="[[UrPK]getindex<cur_key>]"><<cur_val>><br>
</$list><!--cur_val-->
</$list><!--cur_key-->
Use one value (last one if an index is duplicated):
-{{UrPK##3}}-
[TiddlyWiki Code form]
You can choose to edit a Card or a Card's field in a single-line or multi-line textbox.
default
parameter is automatically placed in the textbox when the Card does not existplaceholder
parameter is shown as greyed-out text when the Card does not exist and there is no default text, or the Card exists and the text field is emptyNote: Editing a Card PK that starts with $:/state/popup/
will not be saved and does not affect the Wiki's "dirty" flag
<$edit-text tiddler="$:/state/popup/TestText1" field=text default="" placeholder="[no text yet]" autoHeight=yes tag=input/>
<$edit-text tiddler="$:/state/popup/TestText2" field=text default="here" placeholder="[no text yet]" autoHeight=yes tag=textarea/>
[TiddlyWiki Code form]
- The set or list widgets' filter option lets you evaluate macro output as a filter command.
\define list_prefixed_tags(ur_prefix)
[tags[]prefix[$($ur_prefix$)$]each:value[]]
\end
<$vars positivesigner_prefix="$:/positivesigner/">
<$set name=cur_tag filter=<<list_prefixed_tags "positivesigner_prefix">> >
<$list variable=cur_entry filter="[enlist<cur_tag>]">
<<cur_entry>>
</$list><!--cur_entry-->
</$set><!--cur_tag-->
<$list variable=cur_tag filter=<<list_prefixed_tags "positivesigner_prefix">> >
<<cur_tag>>
</$list><!--cur_tag-->
</$vars><!--positivesigner_prefix-->
[CSS Code form]
Stylesheet classes:
.alternating-rows tr:nth-child(even) {background-color:white}
.alternating-rows tr:nth-child(odd) {background-color:lightgrey}
HTML using class
<table class="alternating-rows">
<tr><th>hi</th></tr>
<tr><td>hi</td></tr>
<tr><td>hi</td></tr>
<tr><td>hi</td></tr>
<tr><td>hi</td></tr>
<tr><td>hi</td></tr>
[Regular Expression Code form]
The code would get complexer [sic] too as "[[...]]" can't be put directly in the regex in TW. You'd have to do it through a variable. And since "[character class]" is reserved in regex you'd also have to escape square brackets "[\[\]]".
Regular Expression Quantifiers
Regular expressions take a string of text, and returns a YES or NO as to whether it matches a character pattern.
You can specify a literal character.
ABC
matches B
?
-,/ABC\,-
ABC
split out B
?
-,/A\,- -,/C\,-
\
. is a literal period, because without the \ escape it would have special meaningAA.AA
matches \.
?
-,/AA.AA\,-
AA.AA
split out \.
?
-,/AA\,- -,/AA\,-
You can use tokens to specify a kind of character to match.
\d
is a numeric digit 0 through 9A2C
matches \d
?
-,/A2C\,-
A2C
split out \d
?
-,/A\,- -,/C\,-
\D
is any non-numeric digit5A8
matches \D
?
-,/5A8\,-
5A8
split out \D
?
-,/5\,- -,/8\,-
\s
is a whitespace character; like space, tab, or line feedA C
matches \s
?
-,/A C\,-
A C
split out \s
?
-,/A\,- -,/C\,-
\S
is a non-whitespace characterA
matches \S
?
-,/A\,-
A
split out \S
?
-,/\,- -,/\,-
\W
is a whitespace or punctuation character (non-word character);
matches \W
?
-,/;\,-
;
split out \W
?
-,/\,- -,/\,-
\w
is a word character (non-whitespace and non-punctuation character)A
matches \w
?
-,/A\,-
A
split out \w
?
-,/\,- -,/\,-
.
period is any characterA
matches .
?
-,/A\,-
A
split out .
?
-,/\,- -,/\,-
You can get out of having to use the \ escape over a block of text if you prefer to type it out.
\QOne. Two. Three.\E
treats anything between the delimiters as a literal string, like "One. Two. Three."One\. Two\. Three\.
A regex quantifier such as +
tells the regex engine to match a certain quantity of the character, token or subexpression immediately to its left.
A+
the quantifier + applies to AAAABCCC
matches B+
?
-,/AAABCCC\,-
AAABCCC
split out B+
?
-,/AAA\,- -,/CCC\,-
AAABBBCCC
matches B+
?
-,/AAABBBCCC\,-
AAABBBCCC
split out B+
?
-,/AAA\,- -,/CCC\,-
A*
the quantifier * applies to AABBBC
matches B*
?
-,/ABBBC\,-
ABBBC
split out B*
?
-,/A\,- -,/C\,-
AC
matches B*
?
-,/AC\,-
AC
split out B*
?
-,/A\,- -,/C\,-
ABC?
the quantifier ?
applies to the C—not to ABCABCD
matches BC?
?
-,/ABCD\,-
ABCD
split out BC?
?
-,/A\,- -,/D\,-
ABD
matches BC?
?
-,/ABD\,-
ABD
split out BC?
?
-,/A\,- -,/D\,-
(?:A|B|C)+
the quantifier + applies to the subexpressionABCD
matches (?:B|C)+
?
-,/ABCD\,-
ABCD
split out (?:B|C)+
?
-,/A\,- -,/D\,-
ABD
matches (?:B|C)+
?
-,/ABD\,-
ABD
split out (?:B|C)+
?
-,/A\,- -,/D\,-
\QA.B.C\E+
is treated as a sequence of literals, so the quantifier only applies to the last characterA\.B\.C+
By default, a quantifier tells the engine to match as many instances of its quantified token or subpattern as possible. This behavior is called greedy.
A+
is greedy, and matches all the number characters in a row from the starting point where exists (a number)ABBBCD
matches B+
?
-,/ABBBCD\,-
ABBBCD
split out B+
?
-,/A\,- -,/CD\,-
A+B
is greedy, and matches all the number characters in a row where exists (a letter B after a letter A)ABBBCD
matches B+C
?
-,/ABBBCD\,-
ABBBCD
split out B+C
?
-,/A\,- -,/D\,-
ABBBCD
matches (B+)C
?
-,/ABBBCD\,-
ABBBCD
split out (B+)C
?
-,/A\,- -,/BBB\,- -,/D\,-
In contrast to the standard greedy quantifier, which eats up as many instances of the quantified token as possible, a lazy (sometimes called reluctant) quantifier tells the engine to match as few of the quantified tokens as needed.
\w*?B
is lazy, and matches as few word characters in a row as needed where exists (a letter B after a word character)+ABCCC+
matches \w*?C
?
-,/+ABCCC+\,-
+ABCCC+
split out \w*?C
?
-,/+\,- -,/\,- -,/\,- -,/+\,-
+ABCCC+
matches \w*C
?
-,/+ABCCC+\,-
+ABCCC+
split out \w*C
?
-,/+\,- -,/+\,-
In contrast to the standard docile quantifier, which gives up characters if needed in order to allow the rest of the pattern to match, a possessive quantifier tells the engine that even if what follows in the pattern fails to match, it will hang on to its characters.
You can specify a number range of characters to repeat.
+ABCCC+
matches C{1,2}
?
-,/+ABCCC+\,-
+ABCCC+
split out C{1,2}
?
-,/+AB\,- -,/\,- -,/+\,-
+ABCCC+
matches C{2,2}
?
-,/+ABCCC+\,-
+ABCCC+
split out C{2,2}
?
-,/+AB\,- -,/C+\,-
+ABCCC+
matches C{2,9}
?
-,/+ABCCC+\,-
+ABCCC+
split out C{2,9}
?
-,/+AB\,- -,/+\,-
+ABCCC+
matches C{2,}
?
-,/+ABCCC+\,-
+ABCCC+
split out C{2,}
?
-,/+AB\,- -,/+\,-
You can use negated character classs to match characters other up to the one you want.
^[^\.]*
skips up to first periodAB.C.D
matches ^[^\.]*
?
-,/AB.C.D\,-
AB.C.D
split out ^[^\.]*
?
-,/\,- -,/.C.D\,-
^.*\.
skips up to last periodAB.C.D
matches ^.*\.
?
-,/AB.C.D\,-
AB.C.D
split out ^.*\.
?
-,/\,- -,/D\,-
Tempered Greedy Token Solution
A(?:(?!B).)*B
stops at the first B instead of the last BAB.C.DCE
matches B(?:(?!C).)*C
?
-,/AB.C.DCE\,-
AB.C.DCE
split out B(?:(?!C).)*C
?
-,/A\,- -,/.DCE\,-
AB.C.DCE
matches B.*C
?
-,/AB.C.DCE\,-
AB.C.DCE
split out B.*C
?
-,/A\,- -,/E\,-
A(?:(?!C)(?!B).)*B
stops at the first B unless there is a C between the A and BAB.CA
matches B(?:(?!D)(?!C).)*C
?
-,/AB.CA\,-
AB.CA
split out B(?:(?!D)(?!C).)*C
?
-,/A\,- -,/A\,-
AB.CAB.FGHBC
matches B(?:(?!D)(?!C).)*C
?
-,/AB.CAB.FGHBC\,-
AB.CAB.FGHBC
split out B(?:(?!D)(?!C).)*C
?
-,/A\,- -,/A\,- -,/\,-
AB.CAB.DFGHBC
matches B(?:(?!D)(?!C).)*C
?
-,/AB.CAB.DFGHBC\,-
AB.CAB.DFGHBC
split out B(?:(?!D)(?!C).)*C
?
-,/A\,- -,/AB.DFGH\,- -,/\,-
[JavaScript Code form]
If a value can be converted to true, the value is so-called truthy. If a value can be converted to false, the value is so-called falsy.
Examples of expressions that can be converted to false are:
""
or ''
) or empty template literal ( `` )The logical OR expression is evaluated left to right, and first truthy returned expression stops evaluation of the remaining expressions
The && operator is executed before the || operator
Note: If you use this operator to provide a default value to some variable, be aware that any falsy value will not be used. If you only need to filter out null or undefined, consider using the nullish coalescing operator ( ??
)
[VB.Net Code form]
Option Strict On
Namespace My
Partial Friend Class MyApplication
Sub Main(sender As Object, e As Microsoft.VisualBasic.ApplicationServices.StartupEventArgs) Handles Me.Startup
Mx.Want.TestReferencedAssemblies_errhnd(e)
'Next goes to frmInput_1_Load, then Want.Compile_And_Run_Script
End Sub
End Class
End Namespace
Namespace Mx
Partial Public Class Want
Public Shared Sub TestReferencedAssemblies_errhnd(ur_startup_event_args As Microsoft.VisualBasic.ApplicationServices.StartupEventArgs)
Dim objERR_LIST = New ErrListBase : Try
Call Assistant.TestReferencedAssemblies()
Catch ex As System.Exception
Call objERR_LIST.dError_Stack(ex)
End Try
If objERR_LIST.Found Then
MsgBox(objERR_LIST.ToString, , My.Application.Info.Title)
ur_startup_event_args.Cancel = True
End If
End Sub 'TestReferencedAssemblies_errhnd
End Class 'Want
Partial Public Class Assistant
Public Shared Sub TestReferencedAssemblies()
'Will error if DLL does is not available
Dim objV1 = System.Data.SqlClient.SortOrder.Ascending
End Sub 'TestReferencedAssemblies
End Class 'Assistant
End Namespace 'Mx
[JavaScript Code form]
- * try {eval('var n = 023;'); alert("not strict")} catch (error) {alert("is strict")}
- Note: The string "use strict"; or 'use strict'; must be set before every executable statement in the script tag. The "use strict" string is honored if only preceeded by whitespace and comments. After the first executable statement, the state is in effect until the end of the script tag and any later "use strict" string is ignored.
- Note: Every new script tag must also restart the strict mode
- Note: Any function declared within strict code becomes a strict function itself. But not any function called from within strict code is necessarily strict. We can define function outside of strict code and then pass it into the function that's strict.
[TiddlyWiki Code form]
\define glbl_copyto_js_bookmarklet(ur_js_code)
<pre>$ur_js_code$</pre>
<$macrocall $name="copy-to-clipboard" src="""avascript:newWindow=window.open("about:blank","newWindow");if(window.focus){const el = newWindow.document.createElement('textarea');const ur_str='$ur_js_code$';try {el.value =eval(ur_str)}catch(err) {el.value = err.message;}; newWindow.document.body.appendChild(el); el.select();void(newWindow.focus());}""" />
\end
<!--|v
<<glbl_copyto_js_bookmarklet """parseInt("FF",16).toString(10);""">>
^|-->
[TiddlyWiki Code form]
<!--|v
Split at Regular Expression skips everything before the first period -> `.12`, `.1` and `.or.maybe.1`
^|-->
<$vars re="^[^\.]*">
<$list variable="found_section" filter="[[no.12]] [[no.100]] [[yes.or.maybe.100]] +[splitregexp<re>sortan[]]">
<<found_section>>
</$list><!--found_section-->
</$vars>
<!--|v
Split at Regular Expression skips everything before the last period -> `1`, `1` and `1`
Each:Value gets the unique list of entries -> `2` and `1`
Sort orders them numberically
^|-->
<$vars re="^.*\.">
<$list variable="found_section" filter="[[no.12]] [[no.100]] [[yes.or.maybe.100]] +[splitregexp<re>!match[]each:value[]sortan[]]">
<<found_section>>
</$list><!--found_section-->
</$vars>
<!--|v
Split
^|-->
<!--<$vars re="^[^\.]*"> skip up to first period excluded-->
<!--<$vars re="^.*\."> skip up to first period included-->
<$vars card_pk="File List Data" re="^.*\.">
<$list variable="cur_file_ext" filter="[<card_pk>get[text]splitregexp[\n]splitregexp[\n]regexp[\.gif(?i)]] [<card_pk>get[text]splitregexp[\n]splitregexp[\n]regexp[\.jpeg(?i)]] [<card_pk>get[text]splitregexp[\n]regexp[\.jpg$(?i)]] [<card_pk>get[text]splitregexp[\n]splitregexp[\n]regexp[\.png(?i)]] [<card_pk>get[text]splitregexp[\n]splitregexp[\n]regexp[\.tif(?i)]] +[splitregexp<re>!match[]each:value[]sort[]addprefix[.]]">
<$list variable="file_ext_count" filter="[<card_pk>get[text]splitregexp[\n]splitregexp[\n]suffix<cur_file_ext>count[]]">
<<cur_file_ext>>: <<file_ext_count>> files
</$list><!--file_ext_count-->
</$list><!--cur_file_ext-->
</$vars>
[DCoder Android form]
Note: I found that the DCoder app actually submitted the VB code to a web server. So there was no way for me to access the local file system.
'Visual Basic.Net Compiler version 0.0.0.5943 (Mono 4.0.1)
Imports System
Imports System.Collections.Generic
Imports System.Text.RegularExpressions
Namespace Dcoder
Public Module Program
Public Sub Main(args() As string)
Dim strRET = "Hi"
For Each strENTRY As String In SubDir_List("/")
For Each strE2 As String In SubDir_List("/" & strENTRY)
For Each strE3 As String In SubDir_List("/" & strENTRY)
strRET &= vbLf & strENTRY & "/" & strE2 & "/" & strE3
Next strE3
Next strE2
Next strENTRY
strRET &= vbLf & "Done"
Console.WriteLine(strRET)
End Sub 'Main
Public Function t1(ur_root_dir As String) As String
Return "no"
End Function
Public Function SubDir_List(ur_root_dir As String) As System.Collections.Generic.List(Of String)
Dim lstRET = New System.Collections.Generic.List(Of String)
SubDir_List = lstRET
Try
Dim proc = New System.Diagnostics.Process
Dim stg = new System.Diagnostics.ProcessStartInfo
proc.StartInfo = stg
stg.FileName = "ls"
stg.Arguments = ur_root_dir
'stg.FileName = "find"
'stg.Arguments = ". -name '*' -print"
stg.UseShellExecute = false
stg.RedirectStandardOutput= true
stg.RedirectStandardError = true
stg.CreateNoWindow = true
proc.Start()
Dim strCL_OUT = proc.StandardOutput.ReadToEnd()
'strRET = "[Output: " & vbLf & strCL_OUT & "]"
'strRET &= vbLf & "(err: " & vbLf & proc.StandardError.ReadToEnd() & ")"
For Each strENTRY As String In strCL_OUT.Split(CHR(10))
If strENTRY <> "" Then
lstRET.Add(strENTRY)
End If
Next strENTRY
Catch ex As System.Exception
End Try
End Function 'SubDir_List
End Module
End Namespace
[JavaScript Bookmarklet form]
avascript:document.documentElement.innerHTML='<html><body>'+document.body.innerHTML.replaceAll('<','<').replaceAll('>','>').replaceAll('&','&')+'<\/body><\/html>';
[TiddlyWiki Code form]
<$browse />
[DotNet Core Compiler form]
[Windows CLI]
- [Run the system information report]
- dotnet --info
.NET Core SDK (reflecting any global.json):
Version: 3.1.401
Commit: 5b6f5e5005
Runtime Environment:
OS Name: Windows
OS Version: 10.0.18363
OS Platform: Windows
RID: win10-x64
Base Path: C:\Program Files\dotnet\sdk\3.1.401\
Host (useful for support):
Version: 3.1.7
Commit: fcfdef8d6b
.NET Core SDKs installed:
3.1.301 [C:\Program Files\dotnet\sdk]
3.1.401 [C:\Program Files\dotnet\sdk]
.NET Core runtimes installed:
Microsoft.AspNetCore.All 2.1.21 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.App 2.1.21 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 3.1.5 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 3.1.7 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.NETCore.App 2.1.21 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 3.1.5 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 3.1.7 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.WindowsDesktop.App 3.1.5 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 3.1.7 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
To install additional .NET Core runtimes or SDKs:
https://aka.ms/dotnet-download
[TiddlyWiki Code form]
mcr glbl_core_mcr_def
$:/tags/Macro
\define glbl_core_mcr_def(ur_macro_name)
<$list variable=cur_pk filter="""[[$:/core]get[text]split[define $ur_macro_name$(]butfirst[]split[\n\\end]first[]addprefix[define $ur_macro_name$(]addsuffix[\n\\end]split[\\]join[\]split[\"]join["]split[\n]join[
]]""">
<$codeblock code=<<cur_pk>> />
</$list><!--cur_pk-->
\end
<$list variable=show_code_pk filter="[<currentTiddler>split[Draft of]join[]split[']join[]addprefix[$:/state/popup/]addsuffix[-checkShowCode]]">
<$checkbox default="no" unchecked="no" checked="yes" field="text" tiddler=<<show_code_pk>>> Show Code</$checkbox>
<$list variable=cur_def_text filter="[[$:/core]get[text]split[define ]!prefix[{]!prefix[the]sort[]]">
<$list variable=cur_macro_name filter="[<cur_def_text>split[(]first[]]">
<$list variable=cur_end_text filter="""[<cur_def_text>split[\n\\end]first[]addprefix[define ]addsuffix[\n\\end]split[\\]join[\]split[\"]join["]split[\n]join[
]]""">
!! <<cur_macro_name>>
<$list variable=cur_showcode_text filter="[<show_code_pk>get[text]match[yes]]"><$codeblock code=<<cur_end_text>> />
</$list><!--cur_showcode_text-->
</$list><!--cur_end_text-->
</$list><!--cur_macro_name-->
</$list><!--cur_def_text-->
</$list><!--show_code_pk-->
[VB.Net Code form]
This outputs a file that can be dragged into TiddlyWiki.
<$list variable=cur_char filter="[[UrPK]get[text]splitregexp[\n]join[]split[]each:value[]!match[ ]sort[]]">
<<cur_char>>:
<$list variable=disp_name filter="[[Unicode Char Names]getindex<cur_char>else[missing]]">
<<disp_name>>
</$list><!--disp_name-->
<br>
</$list><!--cur_char-->
[[Unicode Char Names]]
Dim strFILE_PATH = "UnicodeData.txt"
Dim strOUT_PATH = strFILE_PATH & ".json"
Using stmOUT_FILE = New System.IO.StreamWriter(strOUT_PATH)
Dim qs = """"
Dim strESC_DQT = "\" & qs
stmOUT_FILE.Write("[{""created"":" & qs & Now().ToString("yyyyMMddHHmmssfff") & qs & ",""modified"":" & qs & Now().ToString("yyyyMMddHHmmssfff") & qs & "," &
qs & "title" & qs & ":" & qs & "Unicode Char Names" & qs & ",""type"":""application/json"",""text"":""{")
Using stmDATA = New System.IO.StreamReader(strFILE_PATH)
Dim LINCTR = 0
While stmDATA.EndOfStream = False
Dim strLINE = stmDATA.ReadLine()
Dim intFOUND_SPRTR = InStr(strLINE, ";")
Dim strHEX = Mid(strLINE, 1, intFOUND_SPRTR - 1)
Dim intCHAR = Cint("&H" & strHEX)
Dim strCHAR = UCase(strHEX)
Dim strPREFIX = Left(strCHAR, 2)
If Len(strCHAR) <> 4 Then
strPREFIX = ""
End If
If intCHAR < 32 Then
strCHAR = ""
ElseIf intCHAR > 65534 OrElse
strPREFIX = "D8" OrElse
strPREFIX = "D9" OrElse
strPREFIX = "DA" OrElse
strPREFIX = "DB" OrElse
strPREFIX = "DC" OrElse
strPREFIX = "DD" OrElse
strPREFIX = "DE" OrElse
strPREFIX = "DF" Then
strCHAR = "\u" & strHEX
Else
strCHAR = CHRW(intCHAR)
If strCHAR = "\" Then
strCHAR = "\\\\"
ElseIf strCHAR = """" Then
strCHAR = "\\\" & """"
End If
End If
If strCHAR <> "" Then
LINCTR += 1
If LINCTR > 1 Then
stmOUT_FILE.Write(",")
End If
stmOUT_FILE.Write("\n " & strESC_DQT & strCHAR & strESC_DQT & ":" & " " & strESC_DQT & strLINE.Replace("\", "\\").Replace(Chr(10), "\n").Replace(qs, strESC_DQT).Replace("<", "<") & strESC_DQT)
End If
End While 'stmDATA
End Using 'stmDATA
stmOUT_FILE.Write("\n}" & qs & "}]")
End Using 'stmOUT_FILE
Android file system has a reserved folder for sharing data
How share data between User profiles using Android file system
AnyDesk Android application allows you to remote control an Android computer using another Android computer
CSS Code applies formatting to html structures
How comment out CSS styles in html file using CSS Code
How stripe background colors on table in html file using CSS Code
DB Browser Windows can browse the table data in a SQLite database archive
DCoder Android application can test VB.Net code
.Net Core can compile VB.Net code into an executable file
How compile exe program using DotNet Core Compiler
Excel for Windows application can run Excel macros to change the currently loaded worksheets' cells
Excel Formula code is used in an Excel worksheet's cell to show the user a calculation result
Excel VBA can change the currently loaded worksheet cells
How extract captions text from video file using FFMpeg Windows
How extract image snapshots from video file using FFMpeg Windows
GhostScript Installer enables reading PDF documents for utilities like IrfanView
Git for Windows can update the branch of a repository
GitHub for Windows calls the Git application commands
GitHub.com Website allows you to browse public source code repository files.
How convert PDF file using IrfanView Windows
How find sample code in TiddlyWiki repository using GitHub.com Website
The Google Chrome Android application can browse HTML documents and create Desktop icon shortcuts.
How browse local computer HTML files using Google Chrome Android
How create Desktop Shortcut to Website using Google Chrome Android
Google Chrome Windows can show local HTML files
- The command line options are usually two hyphens ( – ) followed by a keyword
How browse local computer HTML files using Google Chrome Windows
How change profile directory using Google Chrome Windows
How clear cookies on exit using Google Chrome Windows
How download YouTube video using VLC for Windows
How download YouTube video using VLC for Windows (2)
How export video metadata using FFProbe for Windows
How highlight misspelled words on Google Chrome Windows
How poll Downloads folder to move TiddlyWiki updated files using VB.Net Code
How share files across Network using WebDav Server OliveTree Android
Google Play Store Android allows you to install Android applications
Favorite clock app on Google Play Store Android
How create Screenshot using Screenshot Easy Android
How remote control Android computer using AnyDesk Android
How remote control Windows computer using VNC Viewer Android
How share files across Network using WebDav Server BestDav Android
How share files across Network using WebDav Server OliveTree Android
Google.com Contacts hold contact information synchronized between Google logins
Google.com Takeout can export your stored data in different file formats
HTML5 Code defines text structures for image layout
How add JavaScript code to html file using HTML5 Code
How comment out tags using HTML5 Code
How flag alternate structure for Javascript-disabled browser using HTML5 Code
How flag elements for CSS styles in html file using HTML5 Code
How flag structure in html file with Language/Accent using HTML5 Code
How format browser window icon in html file using HTML5 Code
How format browser window title using HTML5 Code
How hide structure in html file using HTML5 Code
How show sub-html file in html file using HTML5 Code
HTML5 Comment codes are used by browsers to flag specific features
How flag an HTML file for active content using HTML5 Comment
How flag document Content type in html file using HTML5 Comment
HTML5 Meta Tag codes are used by browsers to flag specific features
How flag html file Internet Explorer Compatibility using HTML5 Meta Tag
How flag html file run Full Screen on Android computer using HTML5 Meta Tag
How flag html file run Full Screen on Apple computer using HTML5 Meta Tag
How format html file Full Screen status bar on Apple computers using HTML5 Meta Tag
How format html file Telephone Numbers on Apple computers using HTML5 Meta Tag
How simulate HTTP Response header in html file using HTML5 Meta Tag
How specify developer information in html file using HTML5 Meta Tag
How specify initial viewport expected size in html file using HTML5 Meta Tag
How specify server application in html file using HTML5 Meta Tag
How specify website creation tool in html file using HTML5 Meta Tag
Instapaer.com Website stores article links and user comments
IrfanView Windows edits image files
How convert PDF file using IrfanView Windows
How create contact sheet from image files using IrfanView Windows
JavaScript Bookmarklet runs JavaScript Code in the URL field of a browser window
How clear all CSS formatting in html dom using JavaScript Bookmarklet
How clear all images in html dom using JavaScript Bookmarklet
How convert html dom to inline html css using JavaScript Bookmarklet
How create a Bibliographic citation for website page using JavaScript Bookmarklet
How export html dom as html code using JavaScript Bookmarklet
How export html dom as TW html snippet using JavaScript Bookmarklet
How extract html dom text using JavaScript Bookmarklet
How extract iframe reference URLs using JavaScript Bookmarklet
How extract image reference URLs using JavaScript Bookmarklet
How flag html dom text as editable using JavaScript Bookmarklet
How format html dom background using JavaScript Bookmarklet
How format html dom text into multiple columns using JavaScript Bookmarklet
How unescape html character literals using JavaScript Bookmarklet
JavaScript Code updates structures in the HTML DOM
How comment out code in html file using JavaScript Code
How detect Node.JS environment in JavaScript Code
How determine variable contents data type using JavaScript Code
How display string data using JavaScript Code
How execute nameless function in JavaScript Code
How list properties on an object using JavaScript Code
How list string array values using JavaScript Code
How specify jump point in JavaScript Code
How specify local variable scope using JavaScript Code
How specify multi-line string using JavaScript Code
How specify strict mode in html file using JavaScript Code
How specify structural characters in string literals using JavaScript Code
How test boolean automatic type conversion using JavaScript Code
Microsoft.com Website allows you to download the latest version of DotNet Core
How find internal Windows CLI command list using Microsoft.com Website
How find internal Windows Environment variables using Microsoft.com Website
How install DotNet Core compiler using Microsoft.com Website
Plus.codes website allows you to find an earth plus.code area
How find earth plus-code area using Plus.codes Website
How interpret earth plus-code digits from Plus.codes Website
Pocket Git Android application can pull changes from a remote repository
QLua Android has a command line interpreter
How create a Lua program using QLua Android
How deploy a Program Module using QLua Android
The QLua application interprets QLua function calls and outputs text to a QLua console
The QLua console interpreter runs on top of the Linux command line interpreter
How run a Lua Program using QLua Android
RealVNC.com registers Windows computers for remote control by other computers
How remote control Windows computer using VNC Viewer Android
Regular Expression Code matches text sections for validation or string splitting
How structure text string match using Regular Expression Code
The Screenshot Easy Android application shows a button that takes a screenshot
SQLite 3 for Windows is a command-line program that reads data from a SQLite database.
Download the Precompiled Binaries for Windows in a .ZIP file named like sqlite-tools-win32. This has the sqlite.exe program that can connect to a SQLite database.
How select data from SQLite database using SQLite 3 for Windows
SQLite Code pulls data from columns in tables
How format blob text as hexadecimal codes using SQLite Code
How format SQLite Schema table data using SQLite Code
TiddlyWiki Advanced Search is found on the Side Bar's Tools tab. Click the Advanced Search button.
TiddlyWiki Code calls javascript functions with structural scope
How add tag to cards using TiddlyWiki Code
How backlink to alternate file extension using TiddlyWiki Code
How compare text lines using TiddlyWiki Code
How create calendar grid using TiddlyWiki Code
How create JavaScript plug-in using TiddlyWiki Code
How declare checkbox input using TiddlyWiki Code
How delete card using TiddlyWiki Code
How display card over sidebar using TiddlyWiki Code
How export a group of cards as text using TiddlyWiki Code
How extract date-part from string using TiddlyWiki Code
How filter on unicode characters using TiddlyWiki Code
How filter title list using TiddlyWiki Code
How flag text block with CSS classes using TiddlyWiki Code
How form text as mono-spaced source code using TiddlyWiki Code
How form text section with CSS styles using TiddlyWiki Code
How format decimal number as hex code using TiddlyWiki Code
How format global card footer using TiddlyWiki Code
How format plain text to stay on same line using TiddlyWiki Code
How format plain text using TiddlyWiki Code
How format wikitext with hard line-breaks using TiddlyWiki Code
How hide content in exported html file using TiddlyWiki Code
How link to external files using TiddlyWiki Code
How list all unicode characters in a text string using TiddlyWiki Code
How list and view all cards using TiddlyWiki Code
How list links from numbered fields using TiddlyWiki Code
How list links in standard format using TiddlyWiki Code
How list links of prefixed cards using TiddlyWiki Code
How list recently changed cards using TiddlyWiki Code
How make full-width textarea using TiddlyWiki
How make pagination buttons using TiddlyWiki Code
How navigate to card using TiddlyWiki Code
How parse Instapaper Articles archive using TiddlyWiki Code
How poll Downloads folder to move TiddlyWiki updated files using VB.Net Code
How reference external font files using TiddlyWiki Code
How reference macros stored in another card using TiddlyWiki Code
How remove list entries using TiddlyWiki Code
How rename cards using TiddlyWiki Code
How replace tiddler body using TiddlyWiki Code
How reveal sections of a card using TiddlyWiki Code
How save Wiki and Export HTML using TiddlyWiki Code
How search all fields using TiddlyWiki Code
How set card field using TiddlyWiki Code
How set windows clipboard text using TiddlyWiki Code
How setup keyboard shortcut using TiddlyWiki Code
How show grouped count totals using TiddlyWiki Code
How show image using TiddlyWiki Code
How show local video or audio file using TiddlyWiki Code
How show sub-html file in card using TiddlyWiki Code
How show text differences using TiddlyWiki Code
How show wikitext from another card using TiddlyWiki Code
How split code lines using TiddlyWiki Code
How split text lines into separate fields using TiddlyWiki Code
How store card wikitext translated to html using TiddlyWiki Code
How store current card Title without Draft Of prefix using TiddlyWiki Code
How store data dictionary records using TiddlyWiki Code
How store data from an edit text box using TiddlyWiki Code
How store tag list from macro results using TiddlyWiki Code
How test JavaScript code using TiddlyWiki Code
How test regular expression code using TiddlyWiki Code
How upload file using TiddlyWiki Code
How view TiddlyWiki Core macro definitions using TiddlyWiki Code
TiddlyWiki Projects can have hidden system cards for added global functionality
TiddlyWiki.com Website has the latest TiddlyWiki Single Page Application.
How find latest version of TiddlyWiki project on TiddlyWiki.com Website
TotalCommander Android allows you to browse the folder structure of the storage
Unicode.org Website has data files defining the Unicode standard
How find the latest Unicode standard using Unicode.org Website
UPS.com Website allows you to order prints online for pickup at a UPS location
VB.Net Code can change the Windows File system
How calculate SHA-512 hash code using VB.Net Code
How compile .Net code using VB.Net Code
How convert Hexadecimal string to number using VB.Net Code
How convert HTML file to PDF using NReco.PdfGenerator and VB.Net Code
How copy file lines using VB.Net Code
How find .Net compiler version using VB.Net Code
How find file size using VB.Net Code
How find Unicode codepoint from char using VB.Net Code
How parse MBOX email archive using VB.Net Code
How poll Downloads folder to move TiddlyWiki updated files using VB.Net Code
How send keys to another window using VB.Net Code
How start background thread using VB.Net Code
How test DLL file is found before form loads using VB.Net Code
VLC for Windows allows you to watch videos on your computer or from YouTube.com
VNC Connect for Windows registers the Windows computer on RealVNC.com as being available for remote control by other computers
How remote control Windows computer using VNC Viewer Android
VNC Viewer Android app allows you to remote control a Windows computer registered at RealVNC.com
How remote control Windows computer using VNC Viewer Android
WebDav Server Android allows other computers on the network to access an Android File System folder
How share files across Network using WebDav Server BestDav Android
How share files across Network using WebDav Server OliveTree Android
Wikipedia.org Website has summary pages about Unicode organization
Windows CLI allows you to run batch scripts
Check display resolution using Windows CLI
How enter Unicode codepoints using Windows CLI
How export video metadata using FFProbe for Windows
How find current directory using Windows CLI
How hide errors from user output using Windows CLI
How share files across Network using WebDav Server OliveTree Android
Windows Settings changes features available to users or networks
YouTube.com Website allows you to host video files