WWW.LINUXJOURNAL.COM  /  MARCH 2015  /  
11
WWW.LINUXJOURNAL.COM  /  MARCH 2015  /  
11
[
LETTERS 
]
not yet gotten around to coding any GUI 
STUFF AND)WANTEDSOMETHINGQUICKLY SO
)JUSTWROTEAFEW# PROGRAMSUSING
Geany to run on the terminal.
I really didn’t want to write hundreds 
of lines of code to parse the data and 
looked around for some XML parsers. 
None looked easy enough for me to 
use, but then I looked at the source 
page, which I downloaded, and tried 
grep
, which led me to develop the 
following few, or one, line(s) of code 
that I thought you might be interested 
as a source for some future articles:
wget -O /tmp/_option.html  
´http://finance.yahoo.com/q/op?s=SPY&date=1429228800 
grep 'option_entry\|:volume' /tmp/_option.html | sed -n 
´'s/\r//;s/[^>]*//;s/>//;s/<\/div>//;p' | sed 
´'s/<\/strong>//;s/[^>]*>//;s/<\/a>//;s/%//' > /tmp/_option.txt 
grep -A8 SPY141226P00230000 _option.txt
These three lines extracted the 
following information:
SPY141226P00230000 
24.27 
22.87 
24.09 
0.00 
0.00 
10 
21 
65.14
Of course, with a slight change to:
wget -q -O /tmp/_option.html 
´http://finance.yahoo.com/q/op?s=SPY&date=1429228800  
´&& sleep 1 && grep 
´'option_entry\|:volume' /tmp/_option.html | sed -n 
´'s/\r//;s/[^>]*//;s/>//;s/<\/div>//;p' | sed 
´'s/<\/strong>//;s/[^>]*>//;s/<\/a>//;s/%//'  
´| grep -A8 SPY141226P00230000
I could say that we can use “one line” 
of code to parse the Yahoo finance 
page for the option information!
4HISIS# INTHAT)USESYSTEMTO
execute. Maybe a popen function 
might be better as an alternative, but 
I didn’t think of it at the time.
In summary, I thought this was pretty 
cool, and you may have already done 
something similar, but as I said, I 
thought it might give you some ideas 
for future articles. I enjoy and find 
your articles educational, which are 
usually one of the first I read after the 
titles that catch my eye.
—Roger
Convert pdf to html open source - Convert PDF to html files in C#.net, ASP.NET MVC, WinForms, WPF application
How to Convert PDF to HTML Webpage with C# PDF Conversion SDK
convert pdf form to web form; convert pdf into html email
Convert pdf to html open source - VB.NET PDF Convert to HTML SDK: Convert PDF to html files in vb.net, ASP.NET MVC, WinForms, WPF application
PDF to HTML Webpage Converter SDK for VB.NET PDF to HTML Conversion
how to convert pdf into html code; convert pdf into web page
12
/  MARCH 2015  /  WWW.LINUXJOURNAL.COM
[
LETTERS 
]
Dave Taylor replies: Thanks for 
your note and code snippet, Roger. 
It is rather amazing what you can do 
with 
sed
, although when it gets that 
complex, you might consider having the 
script in a separate file and using the  
-f FILE
option to 
sed
to retain your 
sanity as you debug it. The problem 
with all of these crude HTML parsers, of 
course, is that if they make the slightest 
tweak on the page, your code’s broken. 
I know; it happens to me all the time.
Response to Letter in the January 
2015 Issue Regarding zbackup
Regarding Chris Wills’ letter in 
the January 2015 issue [this letter 
is from David Barton, author of 
the article “Ideal Backups with 
ZBACKUPv IN THE .OVEMBER R 
issue]: currently I use rsnapshot to 
back up the zbackup stores with 
hourly, daily, weekly rotations. 
Because the zbackup store changes 
very slightly each time, it is very 
space-effective. Due to the IO load 
caused by large numbers of files, 
very large numbers of servers may 
want to look at options that don’t 
REQUIRE LINKINGALL THE FILES  SUCH AS
rotating thin provisioned snapshots, 
"TRFS:&3SNAPSHOTS OR ROTATING ONTO
removable storage media like tape. 
I don’t think the snapshots need 
to be replicated, since it is a guard 
against malicious file corruption—
for example, an administrator 
inserting random bits into the files.
Also, for readers who are interested in 
using zbackup to back up very large 
directory structures, there is a pre-release 
of software on https://github.com/
davidbartonau/zbackup-tar that 
backs up directories about 10x faster 
on a non-SSD.
—David Barton
Kyle Rankin’s Dr Hjkl on the  
Command Line
Regarding Kyle Rankin’s article “Dr 
Hjkl on the Command Line” in the 
$ECEMBER 
ISSUEOFLJ: it seems 
that Mr Rankin wants to use vi 
keystrokes to manipulate the shell 
command line, so why is he explaining 
%MACSMODEKEYSTROKES)NTHESHELL  
all he needs to type is 
set -o vi
and use vi mode from then on. Hit  
%SCTOENTERCOMMANDMODE THEN 
hop to the previous word with b, next 
word with w, change the current word 
WITHCWANDSOON%VENhHJKLvARE
active, for moving the cursor to the  
previous/next letter/shell command.
The mechanism is called GNU 
READLINEITSUPPORTSBOTH%MACS
(default) and vi mode (put 
set 
editing-mode vi
in ~/.inputrc), 
C# PDF Text Extract Library: extract text content from PDF file in
it is feasible for users to extract text content from source PDF document file the following C# example code for text extraction from PDF page Open a document
convert fillable pdf to html form; convert pdf link to html
VB.NET PDF Annotate Library: Draw, edit PDF annotation, markups in
Decode source PDF document file into an in-memory object, namely 2.pdf" Dim outputFilePath As String = Program.RootPath + "\\" Annot_8.pdf" ' open a PDF file
convert fillable pdf to html; convert pdf to html link
[
LETTERS 
]
and most command-line tools like the 
SHELLORTHE-Y31, CLIENTORTHE '$"
debugger will behave accordingly 
because they’re using the library.
—Mike
Dr Hjkl on the Command Line, II
)NTHE$ECEMBER 
ISSUE SERIOUSLY
Kyle: 
set -o vi
.
—Xaveer
Dr Hjkl on the Command Line, III
)N+YLE2ANKINS$ECEMBER 
column, he describes being comfortable 
with the vi command set, as I am too. 
He then goes on to describe bash 
command-line editing capabilities, 
using lots of Ctrl and Alt keys. If you’ve 
ever been sucked into editor wars, I’m 
sure it occurred to you that those key 
SEQUENCESSEEMAWFULLY%MACS LIKE
And, in fact, that’s exactly what they are. 
Bash starts out with its command-line 
EDITINGIN%MACSMODE(OWEVER BASH
also has a perfectly functional vi mode 
that may seem more familiar to you. Just 
do 
set -o vi
to turn on vi mode.
C# PDF File Merge Library: Merge, append PDF files in C#.net, ASP.
Description: Combine the source PDF streams into one PDF file and save it to a new PDF file on the disk. Parameters: Name, Description, Valid Value.
converting pdf to html; convert url pdf to word
C# PDF Page Extract Library: copy, paste, cut PDF pages in C#.net
Online C# source code for extracting, copying and pasting PDF The portable document format, known as PDF document, is of file that allows users to open & read
convert pdf to html code for email; how to convert pdf file to html document
14
/  MARCH 2015  /  WWW.LINUXJOURNAL.COM
[
LETTERS 
]
Now, having said that, I have to 
admit that I leave my bash sessions  
IN%MACSMODEALMOSTEXCLUSIVELY
The vi mode, like the vi editor, is 
modal, and that modality is somewhat  
non-intuitive in command-line 
editing. However, for a vi fan, it’s 
certainly worth exploring.
—Tim Roberts
Kyle Rankin replies: I remember 
when I first got really interested  
in vi that I changed the command 
line to vi mode. I realized pretty 
quickly though that I didn’t like 
having modes on the command  
line and switched it back. 
In general, I try to keep my 
environments set to their defaults, 
so you won’t find me with custom 
bashrc files that set a lot of aliases 
or anything like that. It’s just too 
much of a pain to ship custom 
settings like that throughout all  
my home and work systems, so 
instead, I try to make the most  
with the defaults I get.
Digital Format
Happy New Year to you and your 
team. I had stop subscribing to this 
magazine some time ago and came 
back because of the digital format. 
Why? Because I am a seaman 
who is away for six months at a 
time. Without the digital format, 
it’s hard to keep reading such a 
fine magazine. Seriously, I do not 
understand 60% of what is written, 
but if one keeps reading, surely 
one’s knowledge will gradually 
improve. Keep up the good work.
—KokYY
Awesome! Yes, please keep reading. 
Then after a couple months go 
back and see if any of the older 
stuff makes sense. (Don’t worry if 
it doesn’t all make sense, however; 
sometimes the articles make my 
head spin too!)—Shawn Powers
They Said It
I just wanted to put in a good  
word for the They Said It column. 
4HE QUOTES ARE NOT ALWAYS
memorable (although they often 
are), but they always put me in a 
good frame of mind for enjoying 
the rest of the issue.
—Steven Janke
Thank you Steven. I enjoy looking 
for good quotes every month. The 
hardest part is making sure I don’t 
repeat any (unless they’re really 
good ones!)—Shawn Powers
Kyle Rankin’s EC2 Security Groups
In the “Secure Server Deployments 
C# Create PDF from OpenOffice to convert odt, odp files to PDF in
Convert OpenOffice Text Document to PDF with embedded fonts. to change ODT, ODS, ODP forms to fillable PDF formats in Visual Online source code for C#.NET class.
converting pdf into html; convert pdf to html with
VB.NET PDF Convert to Word SDK: Convert PDF to Word library in vb.
addition, texts, pictures and font formatting of source PDF file are accurately retained in converted Word document file. Why do we need to convert PDF to Word
convert pdf to web page; best website to convert pdf to word
WWW.LINUXJOURNAL.COM  /  MARCH 2015  /  
15
in Hostile Territory” article in the January  
2015 issue, Mr Rankin says: “... it’s important 
to know that Security Groups are assigned  
only when an instance is created—you can’t 
add or remove Security Groups from an 
instance after you create it.”
)N A 60# WHICH HAS BEEN %# # S S DEFAULT FOR A
good while now, this is not true. You easily 
can change the Security Group(s) associated 
with an instance.
—Gx
Kyle Rankin replies: Thanks for the e-mail.  
It could be that I’m just showing my age in 
how long I’ve been working with EC2, since 
none of my accounts default into VPCs, and 
I’m still in the wild west of “EC2 Classic”.  
That said, I do think having to think in terms 
of the limitations of the classic EC2 Security 
Group model helps build more robust security 
since you can take less for granted.
PHOTO OF THE MONTH
Remember, send your Linux-related photos to 
ljeditor@linuxjournal.com!
WRITE LJ A LETTER 
We love hearing from our readers. Please  
send us your comments and feedback via 
http://www.linuxjournal.com/contact.
At Your Service
SUBSCRIPTIONS: Linux Journal is available 
in a variety of digital formats, including PDF, 
.epub, .mobi and an on-line digital edition, 
as well as apps for iOS and Android devices. 
Renewing your subscription, changing your 
e-mail address for issue delivery, paying your 
invoice, viewing your account details or other 
subscription inquiries can be done instantly 
on-line: http://www.linuxjournal.com/subs. 
E-mail us at subs@linuxjournal.com or reach 
us via postal mail at Linux Journal, PO Box 
980985, Houston, TX 77098 USA. Please 
remember to include your complete name 
and address when contacting us.
ACCESSING THE DIGITAL ARCHIVE: 
Your monthly download notifications 
will have links to the various formats 
and to the digital archive. To access the 
digital archive at any time, log in at 
http://www.linuxjournal.com/digital.
LETTERS TO THE EDITOR: We welcome your 
letters and encourage you to submit them 
at http://www.linuxjournal.com/contact or 
mail them to Linux Journal, PO Box 980985, 
Houston, TX 77098 USA. Letters may be 
edited for space and clarity.
WRITING FOR US: We always are looking 
for contributed articles, tutorials and 
real-world stories for the magazine. 
An author’s guide, a list of topics and 
due dates can be found on-line:  
http://www.linuxjournal.com/author.
FREE e-NEWSLETTERS: Linux Journal 
editors publish newsletters on both  
a weekly and monthly basis. Receive  
late-breaking news, technical tips and 
tricks, an inside look at upcoming issues  
and links to in-depth stories featured on 
http://www.linuxjournal.com. Subscribe 
for free today: http://www.linuxjournal.com/
enewsletters.
ADVERTISING: Linux Journal is a great 
resource for readers and advertisers alike.  
Request a media kit, view our current  
editorial calendar and advertising due dates, 
or learn more about other advertising 
and marketing opportunities by visiting 
us on-line: http://ww.linuxjournal.com/
advertising. Contact us directly for further 
information: ads@linuxjournal.com or  
+1 713-344-1956 ext. 2.
C# Word - MailMerge Processing in C#.NET
da.Fill(data); //Open the document DOCXDocument document0 = DOCXDocument.Open( docFilePath ); int counter = 1; // Loop though all records in the data source.
convert pdf to html5 open source; export pdf to html
VB.NET PDF File Split Library: Split, seperate PDF into multiple
Separate source PDF document file by defined page range in VB.NET class application. Divide PDF file into multiple files by outputting PDF file size.
convert pdf to html code online; convert pdf to html format
UPFRONT 
NEWS + FUN
16
/  MARCH 2015  /  WWW.LINUXJOURNAL.COM
diff -u
WHAT’S NEW IN KERNEL DEVELOPMENT
Nicolas Dichtel and Thierry 
Herbelot pointed out that the 
directories in the /proc filesystem 
used a linked list to identify their 
files. But, this would be slow when 
/proc directories started having lots 
of files, which, for example, might 
happen when the system needed 
lots of network sockets.
Nicolas and Thierry posted 
a patch to change the /proc 
implementation to use multiple 
linked lists instead of just one. 
%ACH SUBDIRECTORY WOULD D HAVE ITS
own linked list, keyed to a hash of 
the directory’s name. According to 
their benchmarks, the patch shaved 
1/5 of the time needed to churn 
through all the entries of a given 
subdirectory.
Stephen Hemminger liked the 
speedup, but suggested that there 
already were implementations, 
like the hlist macro, that might 
simplify their hash table code.
Eric W. Biederman also liked 
the speedup and kicked himself 
for overlooking the /proc issue 
when doing other scalability work. 
But, he felt that the whole linked 
list concept was not the right 
APPROACH %SPECIALLY    HE FELT THAT  
/proc/net/dev/snmp6 was the real 
target of Nicolas and Thierry’s 
patch, and if no one actually 
needed the files in that directory 
EXCEPT PEOPLE REQUIRING EXTREME
backward compatibility), it would 
be even more efficient to do away 
with them completely.
This, however, already had come 
up in an earlier thread, when 
David S. Miller had said that 
“It potentially breaks tools, it’s a 
non-starter, sorry.” So, reworking 
the user interface would not be 
allowed, which left the linked list 
speedup that Nicolas and Thierry 
proposed. But, Nicolas said he’d 
look into an rbtree implementation 
instead of a plain linked list, 
because rbtrees would potentially 
scale better.
Minchan Kim noticed that 
putting memory pressure on  
qemu-kvm UNDER ,INUX X 
WOULD
cause a kernel stack overflow and 
crash the system. He dug into the 
code and tried to reduce his own 
stack usage, but he wasn’t able 
to cut back enough to prevent the 
crash. And in any case, he said, 
trying to reduce everyone’s stack 
usage was not very scalable. He 
proposed expanding the kernel 
stack from 8K to 16K, although he 
acknowledged that there possibly 
were good reasons not to do this 
that he wasn’t aware of.
Dave Chinner remarked that  
“8k stacks were never large enough 
to fit the Linux IO architecture 
ON X       BUT NOBODY OUTSIDE
filesystem and IO developers 
has been willing to accept that 
argument as valid, despite  
regular stack overruns and 
filesystems having to add 
workaround after workaround  
to prevent stack overruns.”
He added, “We’re basically at  
the point where we have to push 
EVERY 8&3 3 OPERATION THAT T REQUIRES
block allocation off to another 
thread to get enough stack space 
for normal operation”, and said 
[
UPFRONT 
]
L INUX JOURNAL
now available 
for the iPad and 
iPhone at the 
App Store.
linuxjournal.com/ios
For more information about advertising opportunities within Linux Journal iPhone, iPad and 
Android apps, contact John Grogan at +1-713-344-1956 x2 or ads@linuxjournal.com.
18
/  MARCH 2015  /  WWW.LINUXJOURNAL.COM
[
UPFRONT 
]
“XFS has always been the stack 
usage canary and this issue is 
BASICALLY A REPEAT OF THE E K K STACK
on i386 kernel debacle.”
Borislav Petkov pointed out  
that if they increased the kernel 
stack from 8K to 16K, there 
undoubtedly would come a time 
when 16K wouldn’t be enough 
either. He wondered if there ever 
would be a limit, or if the kernel 
stack ultimately would grow to  
one megabyte and beyond.
Steven Rostedt said, “If 
[Minchan’s patch] goes in, it  
should be a config option, 
or perhaps selected by those 
filesystems that need it. I hate 
to have 16K stacks on a box that 
doesn’t have that much memory, 
but also just uses ext2.”
Meanwhile, H. Peter Anvin said, 
“8K additional per thread is a huge 
hit. XFS has indeed always been a 
canary, or trouble spot, I suspect 
because it originally came from 
another kernel where this was not 
an optimization target.”
At around this point, Linus 
Torvalds remarked that something 
like Minchan’s fix probably would 
be necessary at some point, 
although the development cycle 
was already at -rc7, making it 
too late for that particular kernel 
version. Linus also pointed out that 
there was plenty of room to reduce 
stack usage in the stack trace 
Minchan had posted in his original 
e-mail. Linus remarked, “From a 
QUICK GLANCE E AT THE FRAME USAGE
some of it seems to be gcc being 
rather bad at stack allocation, 
but lots of it is just nasty spilling 
around the disgusting call-sites 
with tons or arguments. A lot 
of the stack slots are marked as 
’%sfp’ (which is gcc-ese for ’spill 
frame pointer’, afaik).”
There was a technical discussion 
about various ways to reduce stack 
usage in general (and some further 
consideration of ways in which 
GCC might be somewhat to blame), 
but with Linus willing to accept  
a patch to implement a larger 
stack, it seems like something 
along the lines of Minchan’s patch 
will soon be part of the kernel. 
At one point, Linus summed up 
his position on the issue, saying, 
“Minchan’s call trace and this 
thread has actually convinced me 
that yes, we really do need to make 
X  HAVE E A A K" " STACK ;=
The 8kB stack has been somewhat 
restrictive and painful for a while, 
and I’m ok with admitting that it is 
just getting too damn painful.”
—ZACK BROWN
March 16 19, 2015    |  Boston, MA
Save 20% 
on your ticket 
Use code LINUXJ
From strategies to essential 
technologies—build a solid 
foundation in software architecture
The O’Reilly Software Architecture Conference is a new event 
designed to provide the in-depth professional training that 
software architects and people working on software architecture 
need to support the success of their businesses.  
softwarearchitecturecon.com  
@oreillysacon 
 
Reactive and its variants
 
Microservices
 
Continuous Delivery
 
Integration Architecture
 
Devops
 
Scaling
 
Big Data
 
Continuous Deployment
 
Architecture Fundamentals
 
Business Skills
20
/  MARCH 2015  /  WWW.LINUXJOURNAL.COM
Do something every 
day that you don’t 
want to do; this is 
the golden rule for 
acquiring the habit 
of doing your duty 
without pain.
—Mark Twain
It’s okay if you mess 
up. You should give 
yourself a break.
—Billy Joel
Let me tell you the 
secret that has led 
me to my goal. My 
strength lies solely 
in my tenacity.
—Louis Pasteur
If you limit your 
choices only to what 
seems possible or 
reasonable, you 
disconnect yourself 
from what you truly 
want, and all that is 
left is a compromise.
—Robert Fritz
The highest result 
of education is 
tolerance.
—Helen Keller
They Said It
Android Candy: 
Bluetooth Auto 
Connect
I love my latest Android device (see this issue’s 
Open-Source Classroom column for details), but  
for some reason, it won’t automatically connect  
to my Bluetooth headset. When I turn on my 
headset, I want it to connect to my Android  
device so I can start using it right away. In order 
to make it connect, I have to go into the settings 
app, then Bluetooth, and then tap the device to 
connect. Thankfully, there’s an application that 
makes life a lot easier.
Bluetooth Auto Connect is a program that runs in 
the background. It doesn’t constantly poll for newly 
turned on Bluetooth devices, because that would 
waste battery power. It has several other ways to 
initiate the connection though. My favorite is the 
“connect when powered on” option. Because I 
always have to turn the phone on in order to start 
my audiobook (or music), it’s not an inconvenience 
to turn the screen on in order to connect Bluetooth. 
As soon as the power button is pressed, it connects 
to my headset, and by the time I open the media 
player application, it’s ready to rock!
Sometimes it’s the simplest applications that are 
the most useful. Bluetooth Auto Connect is one 
of those. Check it out in the Google Play Store 
today: https://play.google.com/store/apps/
details?id=org.myklos.btautoconnect.
—SHAWN POWERS
[
UPFRONT 
]
Documents you may be interested
Documents you may be interested