Is your gmail account getting full? Easily search for large messages which are filling up your account.
To search for attachements greater than 25MB, in the Gmail search box enter: size:25000000
other examples:
A tap of flowing digital knowledge designed to provide the reader with a trickle of distilled information and links to free digital stuff that is of specific interest to researchers and academics.
Most posts resolve problems that I and/or fellow colleagues encountered and have proven to be continuously helpful.
If you have your own help request, or have solution that you will like to share, please click the "Submissions" button in the top menu bar.
-The Digital Spigot Team
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace AccessLockFileViewer
{
public partial class AccessLockFileViewer : Form
{
public AccessLockFileViewer(string[] files)
{
InitializeComponent();
if (files != null && files.Length > 0)
{
this.textBox1.Text = ParseFile(files[0]);
}
}
private void Form1_DragDrop(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
{
string[] files = (string[])(e.Data.GetData(DataFormats.FileDrop));
foreach (var file in files)
{
string text = ParseFile(file);
this.textBox1.Text += text;
}
}
}
string ParseFile(string file)
{
/*
* For each person who opens a shared database, the Jet database engine writes an
* entry in the .ldb file of the database. The size of each .ldb entry is 64 bytes.
* The first 32 bytes contain the computer name (such as JohnDoe). The second
* 32 bytes contain the security name (such as Admin). The maximum number of
* concurrent users that the Jet database engine supports is 255. Therefore, the
* .ldb file size is never larger than 16 kilobytes.
*/
using (var stream = new FileStream(file, FileMode.Open))
{
BinaryReader reader = new BinaryReader(stream);
string text = "";
for (int i = 0; i < reader.BaseStream.Length; i += 64)
{
byte[] bin = reader.ReadBytes(32);
StringBuilder sb = new StringBuilder();
for (int b = 0; b < 32; b++)
{
if (bin[b] == 0)
{
break;
}
sb.Append((char)bin[b]);
}
string user = sb.ToString();
bin = reader.ReadBytes(32);
sb = new StringBuilder();
for (int b = 0; b < 32; b++)
{
if (bin[b] == 0)
{
break;
}
sb.Append((char)bin[b]);
}
text += sb.ToString() + "@" + user + "\r\n";
}
stream.Close();
return text;
}
}
private void Form1_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
{
e.Effect = DragDropEffects.Copy;
}
else
{
e.Effect = DragDropEffects.None;
}
}
#region Windows Forms Code
///
/// Required designer variable.
///
private System.ComponentModel.IContainer components = null;
///
/// Clean up any resources being used.
///
/// true if managed resources should be disposed; otherwise, false.
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
///
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
///
private void InitializeComponent()
{
this.textBox1 = new System.Windows.Forms.TextBox();
this.SuspendLayout();
//
// textBox1
//
this.textBox1.Location = new System.Drawing.Point(13, 13);
this.textBox1.Multiline = true;
this.textBox1.Name = "textBox1";
this.textBox1.ReadOnly = true;
this.textBox1.Size = new System.Drawing.Size(290, 202);
this.textBox1.TabIndex = 0;
//
// AccessLockFileViewer
//
this.AllowDrop = true;
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(317, 230);
this.Controls.Add(this.textBox1);
this.Name = "AccessLockFileViewer";
this.Text = "LDB File Viewer";
this.DragDrop += new System.Windows.Forms.DragEventHandler(this.Form1_DragDrop);
this.DragEnter += new System.Windows.Forms.DragEventHandler(this.Form1_DragEnter);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.TextBox textBox1;
#endregion
}
static class Program
{
///
/// The main entry point for the application.
///
[STAThread]
static void Main(string[] args)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new AccessLockFileViewer(args));
}
}
}
\documentclass{minimal}
\begin{filecontents*}{scientists.csv}
name,surname,age
Albert,Einstein,133
Marie,Curie,145
Thomas,Edison,165
\end{filecontents*}
The star suppresses additional information on the file creation from being added.\documentclass{article}
\usepackage{csvsimple}
\begin{document}
\csvautotabular{scientists.csv}
\end{document}

csvreader provides a better control of the column style, titles and content, but makes things slightly more complicated. \documentclass{article}
\usepackage{csvsimple}
\begin{document}
\csvreader[tabular=|l|l|c|,
table head=\hline & Name & Age\\\hline,
late after line=\\\hline]%
{scientists.csv}{name=\name,surname=\surename,age=\age}%
{\thecsvrow & \firstname~\name & \age}%
\end{document}

tabular). The second sets the column titles and adds a horizontal line before and after them (table head). Finally, another horizontal line is added to the end of the table (late after line). Furthermore, “commands” are defined for every column using the column title from the CSV file (name, surname and age). These commands allow reordering and combining column content. The command thecsvrow is a row counter and therefore an easy way to enumerate the rows.\documentclass{article}
\usepackage{pgfplotstable}
\begin{document}
\pgfplotstabletypeset[
col sep=comma,
string type,
columns/name/.style={column name=Name, column type={|l}},
columns/surname/.style={column name=Surname, column type={|l}},
columns/age/.style={column name=Age, column type={|c|}},
every head row/.style={before row=\hline,after row=\hline},
every last row/.style={after row=\hline},
]{scientists.csv}
\end{document}

multicolumn.\documentclass{article}
\usepackage{pgfplotstable}
\begin{document}
\pgfplotstabletypeset[
col sep=comma,
string type,
every head row/.style={%
before row={\hline
\multicolumn{2}{c}{Full Name} & \\
},
after row=\hline
},
every last row/.style={after row=\hline},
columns/name/.style={column name=Name, column type=l},
columns/surname/.style={column name=Surname, column type=l},
columns/age/.style={column name=Age, column type=c},
]{scientists.csv}
\end{document}

pgfplotstable (see the package documentation for more details).convert -thumbnail x100 "File.pdf[0]" File.thumb.pngThis creates a thumbnail File.thumb.png from the first page of the file File.pdf. [0] instructs convert to use the first page. If you leave off the [0] part thumbnails will be created for every page in the PDF. The thumbnail height is 100 pixels, and the width is automatically determined.
foreach my $file (glob("$ARGV[0]/*.pdf"))
{
print "Converting $file\n";
print `convert -thumbnail 133x100 "${file}[0]" ${file}.png`;
}




pdfpages let’s you include a complete PDF or any combination of pages into a LaTeX document.\usepackage{pdfpages}
\includepdf{file}
\includepdf[pages=-]{file}
\includepdf[pages=2-8]{file}
\includepdf[pages=8-2]{file}
\includepdf[pages=last-1]{file}
last actually can be quite useful in case the number of pages in the document may change.\includepdf[pages={3, 6, 1}]{file}
\includepdf[pages={3, {}, 9}]{file}
\includepdf[pages={5, 5, 5}]{file}
\includepdf[pages={3-6, {}, 1, 7}]{file}
nup=axb to print several logical pages on a single physical page (the parameter a being the number of columns and b the number of rows). LaTeX scales the logical pages to fit within the margin of the physical page. In the example below the first 4 logical pages will be placed on the first physical page and the rest on the next.\includepdf[nup=2x2, pages=1-7]{file}

| Title | Last name | First name | How name should print (map to Middle Name) | Home street | home city | home state | home zip |