10:36, 8th May 2018
CSS Styling of Tables
CSS provides numerous properties to enhance the visual presentation of HTML tables, primarily through border control and spacing adjustments. The border property allows developers to define the width, style and colour of table borders for table, th and td elements, though this initially creates double borders because each element maintains separate borders. The border-collapse property resolves this issue by merging borders into a single line when set to collapse, whilst the separate value maintains distinct borders for each cell. Spacing can be controlled through the padding property, which manages the distance between cell borders and their content, and the border-spacing property, which adjusts the gap between adjacent cell borders when using separated borders. For tables requiring only an outer border without internal divisions, developers can apply the border property exclusively to the table element itself, leaving the th and td elements unstyled.
10:33, 27th March 2018
How do I unzip multiple / many files under Linux?
When attempting to extract multiple zip files on Linux using the command unzip *.zip, users often encounter an error stating "caution: filename not matched" because the shell expands the wildcard before passing it to the unzip command, causing the program to search for files within the first archive rather than processing each archive separately. To resolve this issue, the wildcard must be protected from shell expansion either by enclosing it in single quotes as unzip '*.zip' or by escaping it with a backslash as unzip \*.zip, both of which allow the unzip program itself to handle the pattern matching.
Alternatively, a bash for loop can be employed with the syntax for z in \*.zip; do unzip "$z"; done, which is particularly useful for handling filenames containing spaces or special characters when proper quoting is applied. More complex scenarios involving filenames with unusual characters can be addressed by combining the find command with a while loop and bash arrays to safely process each file, whilst password-protected archives can be handled by adding the -P option followed by the password, though this method is insecure as the password becomes visible to other system users. The key distinction between these methods lies in whether the shell or the unzip program performs the wildcard expansion, with the escaped or quoted approaches being more concise whilst the loop-based solutions offer greater flexibility for additional processing tasks.
11:11, 17th March 2018
RVM
Ruby Version Manager is a command-line tool designed to simplify the installation, management and use of multiple Ruby environments, enabling users to handle different versions of Ruby and associated gem dependencies efficiently. It supports creating isolated, self-contained environments for projects, reducing conflicts between dependencies and ensuring consistency across development, testing and production settings. By allowing the use of named gemsets, RVM facilitates the management of gems specific to individual projects or environments, minimising repository bloat and optimising workflow. The tool also aids in testing applications across various Ruby versions simultaneously, enhancing compatibility checks and development reliability. Maintained by a community of contributors, RVM provides extensive documentation and integration options, promoting secure, user-level Ruby usage that minimises system risks and streamlines deployment processes.
14:53, 8th February 2018
HSTR, also known as HiSToRy, is an open-source command line utility for bash and zsh that provides an improved terminal user interface for viewing, navigating, searching and managing shell command history, positioning itself as a more capable alternative to the built-in Ctrl-r shortcut. It supports features such as bookmarking favourite commands and removing sensitive or outdated entries from history, and is available across a wide range of Linux distributions as well as macOS.
The EXA Language Server is a separate, much smaller project that provides language server functionality for EXA, the programming language used in the Zachtronics game EXAPUNKS, with its implementation powered by Tree-sitter and licensed under the MIT Licence.
23:29, 22nd October 2017
Zend
Zend provides enterprise-grade PHP platform development and services designed to keep mission-critical PHP applications secure, performant and supported. The company offers ZendPHP runtimes with backported security patches and long-term support for end-of-life PHP versions including 7.2, 7.3, 7.4 and 8.0, alongside dedicated round-the-clock support and container-ready, cloud-ready images. ZendHQ delivers monitoring and management capabilities through real-time root cause analysis, custom alerts, job automation and improved background task performance. Professional services include migration and modernisation support, consultative guidance, flexible service hours and continuous performance monitoring. The Zend Enterprise Web Platform combines platform-as-a-service simplicity with custom configuration, real-time observability, autoscaling, declarative deployments and security-first architecture built on hardened images, allowing organisations to deploy anywhere whilst maintaining compliance without operational overhead.
20:01, 16th October 2017
Using the DATA step debugger in SAS Enterprise Guide
The introduction of a DATA step debugger in SAS Enterprise Guide 7.13 offers users a tool to trace program execution, monitor variable changes and set breakpoints within code, enhancing the debugging process for complex data transformations. While it supports interactive debugging with features such as watch windows and conditional breakpoints, it has limitations, including incompatibility with certain procedures like PROC SQL and input statements and the inability to detect compile-time errors. Users can activate the debugger through the program editor, though some have reported issues with breakpoint functionality in specific contexts. The tool leverages the /ldebug option, which is also accessible in SAS Studio through interactive mode, though its interface remains basic. Feedback from users highlights its utility for understanding data flow and identifying runtime issues, though suggestions for improvements such as in-editor code editing and more intuitive command shortcuts have been noted. The feature reflects ongoing efforts to modernise SAS tools, though its availability in other environments like University Edition remains limited.
19:59, 16th October 2017
SAS 9.4 System Options: Reference
This documentation hub provides comprehensive programming guidance for SAS 9.4 and SAS Viya 3.5, covering a broad range of topics essential for working with these statistical software platforms. The material encompasses data access methods, base procedures, DATA step programming, debugging techniques, global statements and system options that control how SAS operates. Additional coverage includes DS2 and FedSQL programming languages, macro language functionality, output and graphics generation, and various operating environment considerations. The documentation also addresses specialised areas such as in-database technologies, metadata management, security protocols, server administration and data quality processes. Supporting materials include programming tutorials for those learning SAS, alongside administrative guides for both SAS 9.4 and Viya platforms, with particular emphasis on system options that allow users to customise their SAS sessions through procedures like OPTIONS, OPTLOAD and OPTSAVE.
19:59, 16th October 2017
Moving and Accessing SAS 9.4 Files
The SAS 9.4 programming documentation details updates to procedures and tools for moving and transferring SAS files across different versions and environments. PROC CPORT and PROC CIMPORT now support extended attributes but no longer transfer data miner database catalogue entries from SAS 9.3 or earlier releases. Several autocall macros were introduced in version 9.4M2 to handle transport files in Version 5 and Version 8 formats, with subsequent maintenance releases bringing corrections to record layouts and improvements to macro functionality. From SAS 9.4 onwards, source and target sessions must use compatible encodings when using these procedures, though later versions added support for importing non-UTF-8 data sets into UTF-8 sessions. The documentation also provides guidance on migrating data to UTF-8 encoding to enable multilingual usage and compatibility with SAS Viya, covering topics such as determining current encoding, managing storage considerations and converting various data structures including indexes, integrity constraints and format catalogues.
19:55, 16th October 2017
The IFN and IFC functions in SAS both evaluate a logical expression and return one of up to four possible values depending on whether that expression is true, false or missing, with IFN returning a numeric value and IFC returning a character value. Similarly, the CHOOSEN and CHOOSEC functions select a value from a list of arguments based on an index expression, with negative index values counting backwards through the list, CHOOSEN returning a numeric result and CHOOSEC returning a character one. In a data step, where IFC or CHOOSEC returns a value to a variable that has not previously been assigned a length, that variable is given a length of 200 bytes. All four functions are particularly useful in data step expressions and WHERE clauses where an IF/THEN/ELSE construct would be inconvenient or impractical, though any of those approaches can produce equivalent results.
17:03, 24th April 2017
Performance optimizations you can apply today to load the Piwik JavaScript tracker faster
Improving the loading speed of the Matomo JavaScript tracker can enhance website performance and prevent potential revenue loss due to slow load times. Key strategies include configuring server settings to cache the tracker file, enabling GZIP compression to reduce file size, using DNS preloading to expedite domain lookups and preloading the resource to allow asynchronous loading. Additional advanced techniques involve leveraging a CDN, merging tracking scripts with other JavaScript files, or utilising service workers for offline tracking. These methods aim to optimise the delivery of analytics scripts without compromising user experience or data collection accuracy, ensuring efficient performance while maintaining compliance with evolving privacy standards.