• No results found

!""#$!%&'"( Practical books for the most technical people on the planet.

N/A
N/A
Protected

Academic year: 2022

Share "!""#$!%&'"( Practical books for the most technical people on the planet."

Copied!
129
0
0

Loading.... (view fulltext now)

Full text

(1)

WATCH:

ISSUE OVERVIEW

V

Since 1994: The Original Magazine of the Linux Community

SSH TUNNELS AND ENCRYPTED VIDEO STREAMING

APRIL 2016 | ISSUE 264 LinuxJournal.com

STUNNEL SECURITY

for Databases

Protect

Your Desktop Environment with Qubes

BE SMART ABOUT

CREATING A SMART HOME

Intro to +

Pandas

The Python Data Analysis Library

A Look at printf

A Super- Useful Scripting Command

What’s the

Kernel

Space of

Democracy?

(2)

!""#$!%&'"(

Practical books

for the most technical people on the planet.

Download books for free with a simple one-time registration.

http://geekguide.linuxjournal.com

Self-Audit: Checking Assumptions at the Door

Author: Greg Bledsoe Sponsor: HelpSystems

Agile Product Development

Author: Ted Schmidt Sponsor: IBM

Improve Business

Processes with an Enterprise Job Scheduler

Author: Mike Diehl Sponsor: Skybot

Finding Your Way: Mapping Your Network to Improve Manageability

Author: Bill Childers Sponsor: InterMapper

DIY

Commerce Site

Author:

Reuven M. Lerner Sponsor: GeoTrust

Combating Infrastructure Sprawl

Author: Bill Childers Sponsor: Puppet Labs

Get in the Fast Lane with NVMe

Author: Mike Diehl Sponsor:

Silicon Mechanics

& Intel

Take Control of Growing Redis NoSQL Server Clusters

Author:

Reuven M. Lerner Sponsor: IBM

NEW!

(3)

!""#$!%&'"(

Practical books

for the most technical people on the planet.

Download books for free with a simple one-time registration.

http://geekguide.linuxjournal.com

Self-Audit:

Checking Assumptions at the Door

Author:

Greg Bledsoe Sponsor:

HelpSystems

Agile Product Development

Author:

Ted Schmidt Sponsor: IBM

Improve Business

Processes with an Enterprise Job Scheduler

Author:

Mike Diehl Sponsor:

Skybot

Finding Your Way: Mapping Your Network to Improve Manageability

Author:

Bill Childers Sponsor:

InterMapper

DIY

Commerce Site

Author:

Reuven M. Lerner Sponsor: GeoTrust

Combating Infrastructure Sprawl

Author:

Bill Childers Sponsor:

Puppet Labs

Get in the Fast Lane with NVMe

Author:

Mike Diehl Sponsor:

Silicon Mechanics

& Intel

Take Control of Growing Redis NoSQL Server Clusters

Author:

Reuven M. Lerner Sponsor: IBM

NEW!

(4)

CONTENTS APRIL 2016 ISSUE 264

FEATURES

86 Rock-Solid Encrypted

Video Streaming Using SSH

Tunnels and the BeagleBone Black

Learn how SSH tunnels work by setting up a remote

viewable Webcam on your BeagleBone Black.

Ramon Crichlow

100 Stunnel Security for Oracle

Improve database security with Stunnel.

Charles Fisher

ON THE COVER

‹:[\UULS:LJ\YP[`MVY+H[HIHZLZW

‹)L:THY[HIV\[*YLH[PUNH:THY[/VTLW

‹::/;\UULSZHUK,UJY`W[LK=PKLV:[YLHTPUNW

‹7YV[LJ[@V\Y+LZR[VW,U]PYVUTLU[^P[O8\ILZW

‹0U[YV[V7HUKHZ[OL7`[OVU+H[H(UHS`ZPZ3PIYHY`W

‹(3VVRH[WYPU[M!H:\WLY<ZLM\S:JYPW[PUN*VTTHUKW

‹>OH[Z[OL2LYULS:WHJLVM+LTVJYHJ`&W

(5)

LINUX JOURNAL (ISSN 1075-3583) is published monthly by Belltown Media, Inc., PO Box 980985, Houston, TX 77098 USA.

Subscription rate is $29.50/year. Subscriptions start with the next issue.

CONTENTS

COLUMNS

34 Reuven M. Lerner’s At the Forge

Pandas

42 Dave Taylor’s Work the Shell

All about printf

50 Kyle Rankin’s Hack and /

Secure Desktops with Qubes: Introduction

60 Shawn Powers’

The Open-Source Classroom

Jarvis, Please Lock the Front Door

120 Doc Searls’ EOF

What’s the Kernel Space of Democracy?

IN EVERY ISSUE

8 Current_Issue.tar.gz 10 Letters

16 UPFRONT

32 Editors’ Choice 76 New Products 125 Advertisers Index

24

60

(6)

Executive Editor Senior Editor Associate Editor Art Director Products Editor Editor Emeritus Technical Editor Senior Columnist Security Editor Hack Editor Virtual Editor

Jill Franklin [email protected] Doc Searls

[email protected] Shawn Powers [email protected] Garrick Antikajian [email protected] James Gray

[email protected] Don Marti

[email protected] Michael Baxter [email protected] Reuven Lerner [email protected] Mick Bauer [email protected] Kyle Rankin [email protected] Bill Childers

[email protected]

President

Publisher

Associate Publisher

Director of Digital Experience

Accountant

Carlie Fairchild

[email protected] Mark Irgang

[email protected] John Grogan

[email protected] Katherine Druckman [email protected] Candy Beauchamp

[email protected] Contributing Editors

)BRAHIM (ADDAD s 2OBERT ,OVE s :ACK "ROWN s $AVE 0HILLIPS s -ARCO &IORETTI s ,UDOVIC -ARCOTTE 0AUL "ARRY s 0AUL -C+ENNEY s $AVE 4AYLOR s $IRK %LMENDORF s *USTIN 2YAN s !DAM -ONSEN

Linux Journal is published by, and is a registered trade name of, Belltown Media, Inc.

0/ "OX  (OUSTON 48  53!

Editorial Advisory Panel Nick Baronian Kalyana Krishna Chadalavada

"RIAN #ONNER s +EIR $AVIS -ICHAEL %AGER s 6ICTOR 'REGORIO

$AVID ! ,ANE s 3TEVE -ARQUEZ

$AVE -C!LLISTER s 4HOMAS 1UINLAN

#HRIS $ 3TARK s 0ATRICK 3WARTZ Advertising

% -!),: [email protected] 52,: www.linuxjournal.com/advertising

0(/.%     EXT  Subscriptions

% -!),: [email protected] 52,: www.linuxjournal.com/subscribe -!), 0/ "OX  (OUSTON 48  53!

LINUX IS A REGISTERED TRADEMARK OF ,INUS 4ORVALDS

(7)

With Drupal 8 newly released and thousands of community members in attendance, DrupalCon New Orleans promises to

be an event to remember.

See you in New Orleans this May.

Laissez les Bon Temps Rouler!

neworleans2016.drupal.org

!"#$%&'%#$%()*%+#,%-.'/0

(8)

Current_Issue.tar.gz

Linux

Does Stuff

W

ERE HUGE FANS OF OPEN SOURCE HERE AT Linux Journal, which I’m sure comes as no SURPRISE TO ANYONE 4HE BEST PART ABOUT ,INUX ITSELF HOWEVER IS THAT ITS THE CONCEPT OF OPEN SOURCE REALIZED )T HAS PERMEATED EVERY ASPECT OF )4 AND IT HAS PROVEN THAT BEING OPEN DOESNT EQUATE TO BEING INSECURE )N FACT ITS QUITE THE OPPOSITE 7HEN you have nothing to hide, there aren’t any dirty secrets WAITING TO BE LEAKED )N THE SPIRIT OF hDOING THINGSv THIS MONTH WEVE GOT A BUNCH OF REALLY COOL TOPICS that show open source in action.

7E START WITH 2EUVEN - ,ERNER ,AST MONTH HE talked about navigating data, and this month he talks ABOUT 0ANDAS 3PECIFICALLY 2EUVEN TALKS ABOUT PARSING AND ANALYZING #36 COMMA SEPARATED VALUES FILES WITH 0YTHON )F YOURE A DATA NERD AND WANT TO GET THE MOST FROM YOUR #36 DATA FILES YOU WONT WANT TO MISS 2EUVENS COLUMN THIS ISSUE $AVE 4AYLOR FOLLOWS WITH A LOOK AT SOME POWERFUL SCRIPTING COMMANDS BORROWED FROM THE # LIBRARY )F YOU WANT TO TIGHTEN YOUR CODE THE PRINTF COMMAND IS INCREDIBLY POWERFUL AND THANKFULLY AVAILABLE FOR SCRIPTING

+YLE 2ANKIN KEEPS HIS SECURITY HEAD FIRMLY IN PLACE AND STARTS A SERIES ON 1UBES THIS MONTH 1UBES IS A DISTRIBUTION FOCUSED ON SECURITY 7ITH ALL THE PUBLICITY encryption and privacy is getting thanks to the

Apple/FBI case, it’s important to understand how

V

VIDEO:

Shawn Powers runs through the latest issue.

SHAWN POWERS

Shawn Powers is the Associate Editor for Linux Journal. He’s also the Gadget Guy for LinuxJournal.com, and he has an

interesting collection of vintage Garfield coffee mugs. Don’t let his silly hairdo fool you, he’s a pretty ordinary guy and can be reached via e-mail at

[email protected].

Or, swing by the

#linuxjournal IRC channel on Freenode.net.

(9)

SECURITY ON YOUR DEVICES FUNCTIONS +YLE STARTS HIS SERIES BY DESCRIBING HOW 1UBES COMPARTMENTALIZES APPLICATIONS ISOLATING THEM FROM EACH OTHER AND THE /3 ITSELF 7HETHER OR NOT YOU WANT TO BEEF UP YOUR DESKTOP SECURITY HIS ARTICLE IS A FASCINATING LOOK AT AN AWESOME TECHNOLOGY

) GO IN A VERY DIFFERENT DIRECTION THIS MONTH AND RATHER THAN TALK ABOUT SECURITY ) FOCUS ON WHAT SOMETIMES CAN BE THE OPPOSITE OF security—convenience. I’ve always wanted a smart house, and thanks TO 3MART4HINGS AND THE !MAZON %CHO ) FINALLY HAVE ONEˆOR AT LEAST THE START OF ONE )F YOUVE EVER WANTED TO TALK TO YOUR HOUSE LIKE IT WAS THE computer on the Starship Enterprise, you’ll want to check out my column.

33( IS ARGUABLY MY FAVORITE COMMAND LINE TOOL IN ,INUX )TS SECURE and it’s so versatile. Ramon Crichlow explains how to stream video securely through an SSH tunnel this month. Not only will you learn how to accomplish a cool video streaming task, but along the way, you’ll learn a lot about how SSH works and what tunneling really means. You’ll also LEARN HOW TO TWEAK IT SO ITS NOT MORE FRUSTRATING THAN USEFUL

#HARLES &ISHER FOLLOWS 2AMON WITH A VERY IN DEPTH LOOK AT USING STUNNEL AS A TOOL FOR AUTHENTICATION ISOLATION AND PRIVACY OF DATA STORED IN AN /RACLE DATABASE )F YOUVE EVER MANAGED AN /RACLE DATABASE AND HAD CONCERNS ABOUT ITS SECURITY IMPLEMENTATIONS EVEN CONSIDERING RECENT IMPROVEMENTS USING THE OPEN SOURCE STUNNEL TOOL CAN ADD A SOLID LAYER OF SECURITY THAT IS REGULARLY UPDATED AND OFFERS THE PEACE OF MIND THAT COMES WITH &/33

7HETHER YOU WANT TO IMPROVE THE SECURITY OF YOUR DESKTOP ENVIRONMENT USE ,INUX AS A TOOL TO ACCOMPLISH A NECESSARY FUNCTION OR JUST TURN ON YOUR BEDROOM LIGHTS BY TALKING TO A 0RINGLES CAN SHAPED ROBOT THIS MONTH IS AN ISSUE WORTH READING !S ALWAYS ITS ALSO FULL OF PRODUCT ANNOUNCEMENTS TIME SAVING TIPS AND OTHER ,INUX RELATED GOODIES 7HETHER THIS IS YOUR FIRST ISSUE OF Linux Journal OR YOUVE BEEN ONE OF US FOR YEARS WE HOPE YOU enjoy this issue as much as we enjoyed putting it together.Q

Current_Issue.tar.gz

Send comments or feedback via http://www.linuxjournal.com/contact or to [email protected].

RETURN TO CONTENTS

(10)

Dave Taylor’s Article on getopt

2EGARDING $AVE 4AYLORS h7ORKING WITH #OMMAND !RGUMENTSv IN THE

&EBRUARY  ISSUE ITS A WORTHY ARTICLE BUT LETS EXPAND ON IT A BIT

Long arguments like !!"#$% certainly deserve a mention.

"UT MY MAIN GRIPE WITH USING GETOPT IN BASH IS THE LACK OF A WRAPPER FUNCTION 0YTHON # # 2UBY ETC ALL HAVE WRAPPERS THAT SIMPLIFY using getopt enormously.

) HELP MAINTAIN HUNDREDS OF SCRIPTS AT WORK AND HOME AND ) FIND THE BIGGEST SOURCE OF ERRORS ARE THOSE THAT CREEP IN DURING MAINTENANCE

4HE PROBLEM IS THAT THERE ARE MULTIPLE PLACES THAT NEED TO BE KEPT IN SYNCˆTHE CALL TO GETOPT ITSELF THE CASE STATEMENT WHERE THE OPTIONS are processed and the help output that documents it all.

3OˆTIME FOR SHAMELESS SELF PUBLICITYˆ) WROTE A WRAPPER FOR BASH THAT FIXES this shortcoming. It’s at http://bhepple.com/doku/doku.php?id=argp.sh.

4O USE IT YOU PUT ALL THE INFORMATION ABOUT THE VARIOUS OPTIONS IN A SIMPLE VARIABLE OR HERE DOCUMENT AND RUN A BIT OF MUMBO JUMBO to process the arguments. For that low, low price, you get the OPTIONS PARSED A CALL MADE TO GETOPT AND VARIABLES SET FOR YOU AS WELL AS A HELP SCREENˆALL AUTOMATICALLY FROM THE SINGLE SOURCE

Here’s an example:

[

LETTERS

]

LETTERS

NEXT UpFront VPREVIOUS

Current_Issue.tar.gz

V

(11)

&'()*+,

---, -./01.2)3,

-456#*7#859$:,;456#,5<=,,,,,,,:>%#,<54=#,,,7#;?<@%:@A4,

---, BC*DD,,,,,,,,,?,,,,,DD,,,,,,,,E,,,,DD,,,,,,8AAE5<,

)F.0*DD,,,,,,,;,,,,,D4D,,,,,,,;,,,,DD,,,,,,A%:@A4,:"5:,:5G#;,5,H5$9#, 0.IJ2*DD,,,,,,:,,,,,D496E#<D,,;,,,,DD,,,,,,A%:@A4,:"5:,:5G#;,5,H5$9#, F.2(*DD,,,,,,,DD,,,,D$A4=D,,,,;,,,,DD,,,,,,5,$A4=,A%:@A4,K@:"A9:,5,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;"A<:,A4#,

)1FJ20*DD,,,,,DD,,,,DD,,,,,,,,E,,,,DD,

---, +,

,,,,#L#?,MNOP,

,,,,#H5$,QR#?"A,+Q&'()+,S,5<=%T;",+QU+,VNOP,PNOM,SS,#?"A,#L@:,QW,X, ,,,,#L#?,MNO!

4HAT LAST BIT LOOKS SCARY BUT IT DOES THE JOBˆIF THE USER INVOKED THE SCRIPT with !;,Y, the bash variable )F.0 has that value, etc., etc.

(OPE IT HELPSˆIT CERTAINLY HAS MADE MY LIFE MUCH EASIER

—Bob Hepple

CSV Files and the Comma

4HIS IS WITH REFERENCE TO $AVE 4AYLORS ARTICLE IN THE $ECEMBER 

ISSUE ABOUT DEALING WITH #36 FILES 9ES FOR PEOPLE SKILLED WITH THE POWER OF THE SHELL DOING TAXES AND SUCH ACCOUNTING THINGS WITH SCRIPTING IS VERY EASY AND FULL OF ENJOYMENT ) DO NOT KNOW WHO

INVENTED THE COMMA AS A DELIMITER OR THE FORMAT CALLED hCSVv )NSTEAD THAT PERSON SHOULD HAVE USED TAB AS A DELIMITER AND THE FORMAT SHOULD HAVE BEEN CALLED hTSVv ) USE TAB AS A DELIMITER WHEN EXPORTING FROM SPREADSHEETS USING /PEN/FFICE AND FACE NO PROBLEMS WHATSOEVER

"ESIDES EASE OF PROCESSING THE FILE BECOMES SO MUCH MORE READABLE WITH THE SUITABLE TAB STOP SETTING

—Mayuresh

LETTERS

(12)

Dave Taylor replies: Mayuresh, I love your suggestion, and you’re right, the use of any punctuation symbol that can occur within the data fields themselves is really pretty stupid as a format. When I convert delimiters back and forth, I use sequences like ^^ that are incredibly unlikely to show up in any prose or data set.

More bizarre—CSV is a standards-body-approved format:

HTTPWWWDIGITALPRESERVATIONGOVFORMATSFDDFDDSHTML.

My only comment: tabs can make things more readable, but if you’ve wrestled with data where the fields vary from less than to greater than a tab’s width (typically eight characters), you know how annoying that can be to align perfectly.

Thanks for writing in!

Does Every Year Have a Friday the 13th?

4HE h#OMMAND ,INE 4UTORIALv IN THE &EBRUARY  ISSUE WAS A FUN ARTICLE BY 3OL ,EDERMAN )T GOT ME PLAYING AROUND WITH THE

commands, and I started manually checking with ?5$ and ?G;96 FOR UNIQUE LEAP YEARS 7HEN ) FOUND THE EIGHTH UNIQUE ONE ) STARTED TO WORRY IF THE WORLD WAS ENDING

!FTER DIGGING AROUND A BIT ) DISCOVERED THAT MY MIS MATCHED PAIR WAS

 AND  &OR SOME REASON IN $EBIAN *ESSIE  AND  ˆOKAY IN &EDORA ˆTHE YEAR  IS GENERATED IN A STRANGE FASHION

4HE NUMERICAL DATES ARE DISPLAYED WITH DIGITS SEPARATED BY ONE OR MORE SPACES X AS APPROPRIATE EXCEPT FOR THE PRIOR AND CURRENT DATE WHEN THE CAL IS GENERATED IN THIS CASE THE ND RD LAST NIGHT AND THE RD TH THIS MORNING

4HE DATE OF GENERATION AND PRIOR DAYS DATE ARE SEPARATED BY hSPACEv hUNDERBARv hBACKSPACEv X XF X SEQUENCES INSTEAD OF

JUST hSPACEv .OW THE ?G;96 and K?,!? just went out the window

LETTERS

(13)

AND DONT MATCH ANYTHING EVEN THOUGH THE APPEARANCE OF THE TWO CALENDARS IS IDENTICAL EXCEPT FOR THE YEAR

3O ) WOULD SURMISE THIS APPLIES TO ANY $EBIAN DERIVATIVES AND ONLY FOR THE CURRENT YEAR AND POSSIBLY FOR ONLY SINGLE DIGIT DATES )LL HAVE TO WAIT TO SEE WHAT HAPPENS ON A TWO DIGIT DATE 0ERHAPS ITS A REMNANT OF SYNTAX TO HIGHLIGHT THE CURRENT DATE

—Wally Olson

Sol Lederman replies: I’m glad you had fun with the calendar

puzzle. Thanks for pointing out that different flavors of Linux render calendars differently. I ran into differences as well, and pointed it out in the article, hoping to give readers a heads up in case they got unexpected results. Perhaps other readers will find even more differences. And, maybe the lesson here is that a command as simple as ?5$ has different output on different systems. Hopefully, others who run into different flavors of ?5$ will be inspired to dig in and figure out what’s wrong as you did. Happy computing!

Google Blocks the Inclusion of APNG in Blink/Chromium

) BELIEVE ITS NEWSWORTHY THAT 'OOGLE IS EFFECTIVELY BLOCKING THE INCLUSION OF AN ALREADY READY PATCH TO INCLUDE !0.' SUPPORT IN #HROMIUM"LINK

4HIS REACTION IS SO BLATANTLY AGAINST THE COMMUNITY AND SO CLEARLY IN PROTECTION OF 'OOGLES OWN 7EB0 THAT NOBODY USES THAT ) CANT HELP BUT CLENCH MY FISTS

) WOULD VERY MUCH APPRECIATE IF YOU COULD SPREAD THE NEWS TO YOUR READERS AND COLLEAGUES SO THAT THE )NTERNET MAY FINALLY BE FREE OF THE LEGACY OF ')&

Here’s the thread: https://groups.google.com/a/chromium.org/

FORUMTOPICBLINK DEV+C-JM&/G'W.

—OlegM

LETTERS

(14)

The Powers That Be

2EGARDING 3HAWN 0OWERS h4HE 0OWERS 4HAT "Ev IN THE &EBRUARY

 ISSUE ) REALLY LIKED THE ARTICLE IT REMINDED ME OF A SIMILAR PROBLEM WE HAD A FEW YEARS AGO !LL OF A SUDDEN EVERY EVENING AT PM OUR POWER WOULD DROP FOR A MOMENT AND EVERY COMPUTER IN THE HOUSE WOULD DROPˆNO EXPLANATION 7E GOT THE POWER

COMPANY OUT AND THEY FOUND NOTHING WRONG WITH THE LINE BUT THEY WERE TESTING ONLY DURING THE DAY  !NYHOW THREE VISITS LATER I mentioned the major hospital three blocks away, and I noticed THAT THERE WAS POWER LINE WORK HAPPENING ON THE MAIN ROAD

7E LIVED ON A BACK STREET THREE STREETS FROM THE MAIN ROAD )T turns out that while the power company had been doing power WORK ON THE MAIN LINE THEY SWITCHED THE POWER FOR THE HOSPITALS INCINERATORS TO THE SUB LINES ON THE BACK STREETS AND HAD FORGOTTEN TO SWITCH THEM BACK 4HE PROBLEM WAS THAT THE HOSPITAL INCINERATORS WERE AUTO SET TO START EVERY NIGHT AT  AND THIS WAS PUTTING TOO MUCH DRAIN ON THE LINE AND CAUSING MINOR DROP OUTS 4HE MORAL

it pays to look around.

—Trevor Furnell

Shawn Powers replies: I can only imagine your irritation!

Great job figuring out what was causing the problem. Finding a resolution like that is almost worth the frustration it caused in the first place. Almost.

The Powers That Be, II

) HAD POWER PROBLEMS LIKE 3HAWNS IN MY HOUSE FOR SOME TIME

!LTHOUGH THE HOUSE WAS NEW IN  THE POWER DROP FROM THE utility pole into my electric meter was very old, as the previous house was demolished to build a new one. I plugged an analog AC VOLTMETER IN TO AN OUTLET AND WATCHED THE VOLTAGE FLUCTUATE FROM

 VOLTS TO  VOLTS -Y LIGHTS WOULD FLICKER ALSO !FTER MANY MONTHS OF THIS ) CALLED THE ELECTRIC COMPANY 4HEY CHECKED THE CONNECTION AT THE UTILITY POLE END OF MY DROP AND FOUND A BADLY CORRODED SPLICE

4HE LINEMAN CUT OFF THE CORRODED ENDS AND MADE A NEW CONNECTION

LETTERS

(15)

LETTERS

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 [email protected] 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: [email protected] or +1 713-344-1956 ext. 2.

at the pole, and my problems disappeared.

4HIS MIGHT BE THE CAUSE OF YOUR PROBLEM 4HE FLUCTUATIONS WERE WORSE ON WINDY DAYS SINCE the drop wires were swaying in the wind MAKING THE FLUCTUATIONS EVEN MORE APPARENT

I hope this helps.

—Eric

Shawn Powers replies: Thanks for the suggestion! During the next year, our city is moving overhead lines to under ground.

Hopefully during that process, the new lines will make for more stable electricity. Of

course, now it’s a moot point for me, but still, stability is nice!

WRITE LJ A LETTER

We love hearing from our readers. Please send us your comments and feedback via http://www.linuxjournal.com/contact.

PHOTO OF THE MONTH

Remember, send your Linux-related photos to [email protected]!

RETURN TO CONTENTS

(16)

UPFRONT

diff -u

What’s New in

Kernel Development

3OMETIMES IF YOU WANT TO STOP MAINTAINING A PIECE OF SOFTWARE BUT NO one will take it over, all you have to do is simply announce that you’re STEPPING DOWN AND EVERYONE WILL JUMP FOR IT

4HAT WAS Neil Brown’s experience with software RAID !FTER 

years as maintainer, he wanted out, but he couldn’t get anyone to COMMIT TO TAKE IT OVER 3O HE ANNOUNCED HIS DEPARTURE AND OFFERED UP A DESCRIPTION OF WHAT HE SAW FOR SOFTWARE 2!)$ GOING FORWARD A SMALL TEAM OF MAINTAINERS WHO WOULD GATHER AND REVIEW PATCHES RESOLVE BUGS AND FEED PATCHES UPSTREAM

,O AND BEHOLD LOTS OF PEOPLE EXPRESSED INTEREST IN TAKING OVER MAINTAINERSHIP OR AT LEAST IN PARTICIPATING IN A TEAM !FTER SIFTING through many volunteers, he settled on Jes Sorensen FOR mdadm and Shaohua Li FOR THE kernel/md SIDE OF THINGS .EIL DOCUMENTED SOME OF THE BASICS FOR *ES AND 3HAOHUA TO CONSIDER SAYING

4HE FIRST QUESTION IS WHERE DO YOU SEND YOUR PATCHES TO GET THE APPROPRIATE REVIEW AND UPSTREAM ACCEPTANCE !LASDAIR OR -IKE $- *ENS "LOCK

!NDREW -ORTON ANYTHING AND ,INUS EVERYTHING ARE ALL DEFENSIBLE CHOICES FOR UPSTREAMING )VE SUBMITTED THROUGH !NDREW IN THE PAST BUT THROUGH ,INUS EXCLUSIVELY ONCE ) FIGURED OUT GIT  4HAT IS REALLY SOMETHING YOU AND

UPFRONT

NEWS + FUN

NEXT

Editors’ Choice VPREVIOUS

Letters

V

(17)

UPFRONT

they would need to negotiate though. [...] I plan TO SUBMIT A PULL REQUEST TO ,INUS FOR THE 

MERGE WINDOW AND THEN STOP QUEUING PATCHES

!ND *ES ALSO ANNOUNCED A NEW GIT TREE FOR mdadm, at http://git.kernel.org/pub/scm/utils/

mdadm/mdadm.git.

Kernel documentation has traditionally been written in DocBook AN 8-, BASED SYSTEM THATS BEEN FALLING BEHIND THE INCREASINGLY POPULAR FORMS OF READABLE MARKUP LIKE Markdown, AsciiDoc and others. Recently, Jonathan Corbet and Jani Nikula did some overlapping work to convert the KERNEL TO USE !SCII$OC FOR ALL DOCUMENTATION

4HE GOAL WAS NOT JUST TO ADOPT THE NEW HOTNESS BUT ALSO TO REDUCE SOME OF THE MANY TOOL DEPENDENCIES THAT WERE NEEDED FOR $OC"OOK processing and speed up overall doc production.

Along the way, however, any new system would have to be at least as good as DocBook and SUPPORT LARGE FILES CROSS REFERENCES A BIG PILE OF OUTPUT FORMATS AND SO ON

4HERE TURNED OUT TO BE SIGNIFICANT PROBLEMS DOING THE WHOLE MIGRATION /NE OF THE MOST VIABLE options, at least temporarily, turned out to be MIGRATING THE SOURCE FILES TO !SCII$OC BUT HAVING THE MAKEFILES PROCESS THAT INTO $OC"OOK AND FROM THERE INTO WHATEVER OUTPUT WAS NEEDED 4HIS WOULD NOT REDUCE THE NUMBER OF TOOL DEPENDENCIES BUT it would at least produce reliable output, while ACCEPTING THE NEW MORE PREFERABLE INPUT

5LTIMATELY $OC"OOK WOULD BE ELIMINATED BUT FOR now it seems there will be this intermediate step.

It’s also possible that AsciiDoc would need to be MODIFIED UPSTREAM BEFORE IT WOULD BE ABLE TO HANDLE THE KERNEL DOCS WITHOUT $OC"OOK FULLYZack Brown

THEY SAID IT

Giving is a necessity sometimes...

more urgent, indeed, than having.

—Margaret Lee Runbeck

Life is full of obstacle illusions.

—Grant Frazier

The future, according to some scientists, will be exactly like the past, only far more expensive.

—John Sladek

I think the world is run by

“C” students.

—Al McGuire

Real freedom lies in wildness, not in

civilization.

—Charles Lindbergh

(18)

UPFRONT

Back to Backups

)N MY /PEN 3OURCE #LASSROOM COLUMN LAST MONTH ;h"ACK )T 5P

"USTERv -ARCH = ) TALKED ABOUT BACKUPS AND GOT SOME REALLY FASCINATING FEEDBACK )N FACT AT THE TIME OF THIS WRITING ITS STILL pretty early in the month, so I expect to get even more ideas and SUGGESTIONS FOR BACKUP OPTIONS (ERES A FEW OF THE IDEAS WORTH checking into:

Q Carlos Baptista wrote in as someone who also has struggled with lost data. His current solution is to use rsnapshot

http://rsnapshot.org ON A PAIR OF 4" DRIVES %VERY WEEK HE SWAPS THE DRIVES TAKING ONE TO HIS PARENTS HOUSE 4HIS SOLUTION GIVES HIM LOW TECH OFF SITE STORAGE A MAXIMUM OF ONE WEEK OF LOST DATA IN THE EVENT OF A TOTAL FAILURE PLUS AN EXCUSE TO VISIT HIS PARENTS ON A REGULAR BASIS !WESOME JOB

Q Harald Nipen TAKES THE INTERESTING STEP OF MAKING SURE THE DUPLICATION PROCESS FOR HIS BACKUPS IS not AUTOMATED 4HAT MAY seem like a silly thing to do, but as someone who accidentally reversed the source and destination on his rsync backup script BEFORE ) CAN ASSURE YOU THERE IS SOME PEACE OF MIND THAT COMES FROM MANUALLY SEEING YOUR BACKUP TAKE PLACE (ARALD DOES OF course, automate his regular backups, but the duplication process FOR OFF SITE STORAGE IS A MANUAL PROCESS USING THE UNISON PROGRAM

Q Nicola Larosa pointed me to an interesting project that uses hCONTENT DEFINED CHUNKINGv TO BACK UP DATA EFFICIENTLY )TS THE FASTEST BACKUP SYSTEM HES EVER USED AND WORTH CHECKING OUT IF YOU HAVE LARGE AMOUNTS OF DATA TO SECURE http://restic.github.io/

BLOG  RESTIC FOUNDATION CDC.

Q &INALLY FOR NOW Johann Schoonees WROTE IN ABOUT RDIFF BACKUP

)TS A PROGRAM )D HEARD OF BUT NEVER REALLY LOOKED INTO USING 4HATS UNFORTUNATE THOUGH BECAUSE IT REALLY IS A NEAT CONCEPT )F YOUVE

(19)

UPFRONT

EVER USED "ACKUP0# TO KEEP RSYNC SNAPSHOTS HARD LINKED TO SAVE SPACE ITS A LITTLE LIKE THAT 4HE PROGRAM IS AN ALL IN ONE SOLUTION HOWEVER THAT KEEPS A CURRENT SNAPSHOT OF A FILESYSTEM WHILE ALSO KEEPING DIFF FILES OF PREVIOUS CHANGES 4HAT ALLOWS OLDER VERSIONS OF FILES TO BE RECOVERED WITHOUT THE COMPLEXITY OF SETTING UP THE entire BackupPC system.

4HE MOST ENCOURAGING PART ABOUT GETTING FOLLOWUP E MAIL MESSAGES FROM READERS ABOUT THEIR BACKUP SOLUTIONS IS TO HEAR THAT LOTS OF FOLKS ACTUALLY HAVE BACKUP SOLUTIONS 2EGARDLESS OF THE COMPLEXITY OF YOUR BACKUP PROCESS OR THE LEVEL OF AUTOMATION YOU DEEM APPROPRIATE FOR YOUR DATA APART FROM CREATING THE MEMORIES IN THE FIRST PLACE FEW THINGS ARE AS IMPORTANT AS BACKING THEM UPShawn Powers

LINUX JOURNAL

on your Android device

www.linuxjournal.com/android

For more information about advertising opportunities within Linux Journal iPhone, iPad and Android apps, contact John Grogan at +1-713-344-1956 x2 or [email protected].

Download the app

now from the

Google Play Store.

(20)

UPFRONT

Non-Linux FOSS:

Caffeine!

/KAY THIS PROGRAM IS FREE BEER BUT NOT &REE SPEECH  ) WOULDNT NORMALLY INCLUDE A FREEWARE APPLICATION IN THE

h.ON ,INUX &/33v SECTION BECAUSE QUITE FRANKLY IT ISNT &/33

But, I decided to break the rules a bit here because I realized HOW OFTEN ) USE A FREEWARE PROGRAM WHEN )M ON /3 8 THAT ) couldn’t imagine doing without.

)F YOU USE /3 8 FOR PRESENTATIONS OR DEMONSTRATIONS YOUVE PROBABLY HAD YOUR SCREEN SHUT OFF WHILE YOU EXPLAINED A SLIDE OR DIALOG BOX 4HEN THE SCREEN PROBABLY LOCKED AND YOU HAD TO hurry over to the keyboard so you could unlock, and so on and SO ON #AFFEINE IS A SIMPLE APP THAT DOES NOTHING MORE THAN KEEP YOUR -ACINTOSH OR (ACKINTOSH COMPUTER AWAKE )T RUNS

(21)

UPFRONT

as a cute little icon in your menu bar, and it disables screen SAVERS AND SLEEP MODE EVEN IF YOU HAVE AGGRESSIVE POWER SAVING settings enabled.

4HE DANGER IS THAT YOU COULD LEAVE #AFFEINE RUNNING

accidentally and completely drain your battery. I’ve had that HAPPEN ONLY ONE TIME HOWEVER AND ) LEARNED QUICKLY TO TAKE MY COMPUTER OFF #AFFEINE WHEN ) WAS DONE PRESENTING %VEN WITH THAT RISK ) FIND ITS WORTH IT TO NO LONGER NEED TO WIGGLE the mouse pointer every minute to make sure my laptop doesn’t FALL ASLEEP

#AFFEINE IS AVAILABLE FOR FREE IN THE !PP 3TORE OR YOU CAN GET IT FROM ITS 7EB SITE HTTPLIGHTHEADSWCOMCAFFEINE.—Shawn Powers

2015 Linux Journal Archive NOW AVAILABLE

as a DVD or Digital Download

www.linuxjournal.com/archive

(22)

UPFRONT

Android Candy: Seeing Red and Getting Sleep

)M ALWAYS LEERY WHEN ) HEAR h2ECENT STUDIES SHOWv "UT THE IDEA THAT LOOKING AT ELECTRONIC DEVICE SCREENS BEFORE BED CAN CAUSE SLEEP ISSUES SEEMS TO BE FAIRLY

ACCEPTED 4HE FASCINATING PART FOR me is that it isn’t really the screen ITSELF BUT THE BLUE PART OF THE COLOR spectrum that contributes to the sleeplessness. In a purely anecdotal EXPERIMENT ) FIND that it’s much more DIFFICULT FOR ME TO FALL ASLEEP IN THE KITCHEN COOL colored lighting, closer to blue in the SPECTRUM THAN IT IS TO FALL ASLEEP ON THE LIVING ROOM COUCH

WARMER LESS BLUE LIGHTS  'RANTED PART OF THAT MIGHT BE GENERAL COMFORT on the couch and more sharp objects in the kitchen, but in

(23)

UPFRONT

general, warmer lighting tends to be more relaxing.

"ASED ON THE IDEA THAT LESS BLUE AND MORE RED WILL MAKE FOR BETTER SLEEPING THE h4WILIGHTv APP FOR !NDROID SHIFTS THE COLOR OF YOUR SCREEN AS BEDTIME APPROACHES )TS FREE FOR BASIC FUNCTIONALITY BUT FOR A SMALL PRICE you can get a timed, gradual transition on your Android devices.

) HAVE NO IDEA WHETHER IT HELPS ME SLEEP BETTER BUT IF NOTHING ELSE IT reminds me that it’s getting late as my ebook becomes redder and redder AS ) READ )F YOU STRUGGLE WITH SLEEPLESSNESS ESPECIALLY WHEN YOU FIRST GO TO BED GIVE 4WILIGHT

A TRY )TS FREE IN THE Google Play Store, AND IF IT WORKS THE GRADUAL SHIFT OPTION with the paid version is well worth the cost. And as a bonus, the red screen won’t hinder your night vision during those LATE EVENINGS OF SUMMER STARGAZING

—Shawn Powers

(24)

UPFRONT

Night Sky Tools on Android

)N PREVIOUS ARTICLES )VE LOOKED AT SEVERAL DIFFERENT ASTRONOMY

PROGRAMS THAT YOU CAN RUN ON YOUR ,INUX MACHINES 4HOSE ARE GREAT when you are doing work indoors, but most laptops and Netbooks are STILL A BIT OF A PAIN TO CARRY AROUND WITH YOU IF YOU ARE GOING OUT INTO THE FIELD )N THOSE CASES HAVING SOMETHING MORE PORTABLE IS DEFINITELY nice. And, since I’m beginning

to look at Android apps in THIS COLUMN THIS IS A PERFECT OPPORTUNITY ,OADS OF ASTRONOMY applications are available within the Android environment that are well worth a look. In this article in particular, I’m exploring .IGHT 3KY 4OOLS 4HE APPLICATION is available in the Google Play store, and it should run on most VERSIONS OF !NDROID

Once you have it installed, open it to see a very complete MENU OF ALL OF THE FUNCTIONALITY available within Night Sky 4OOLS -ANY OF THE FUNCTIONS are updated over the Internet automatically, so you are sure to HAVE THE LATEST INFORMATION FOR whatever objects you are trying to observe in the night sky.

4HE FIRST CATEGORY IS GENERAL ASTRONOMICAL INFORMATION

9OU CAN SEE LISTS OF UPCOMING astronomical events, as well as

Figure 1. The opening screen displays a menu of the various categories of functions available.

(25)

UPFRONT

what is up right now and what WILL BE COMING UP TONIGHT 4HERE ALSO ARE ENTRIES FOR A COMPASS AND A PAGE OF THE VARIOUS

astronomical times that you may NEED 4HE ASTRONOMICAL TIME

page gives the moonrise/moonset AND SUNRISESUNSET TIMES 4HERE even is a page that lets you calculate the visual limiting magnitude based on the actual environmental conditions like TEMPERATURE AND HUMIDITY 4HE last page in this section is the sky MAP 4HE INFORMATION PROVIDED IN the sky map is rather complete.

You can see the stars and constellations, along with the FORMAL CONSTELLATION BOUNDARIES

)T EVEN DISPLAYS ARTWORK FOR EACH OF THE CONSTELLATIONS SHOWING you what they are supposed to look like.

4HE NEXT SECTION HAS

INFORMATION ON THE %ARTH AND -OON .OTE WHEN MOVING

between sections, be aware that

THE OTHER SECTIONS DO NOT AUTOMATICALLY CLOSE 9OU ALSO CAN PULL UP A DAYLIGHT MAP SHOWING WHAT PARTS OF THE %ARTH ARE IN DAYLIGHT AND which are in night.

4HERE ARE PAGES THAT SHOW WHEN THE SOLAR AND LUNAR ECLIPSE HAPPEN ALONG WITH DATES FOR THE EQUINOXES AND SOLSTICES 4HE METEOR PAGE GIVES A LISTING OF ALL OF THE KNOWN METEOR SHOWERS WITH THE START PEAK AND END DATES )T ALSO HELPFULLY GIVES THE PERCENTAGE OF THE moon phase so that you can tell right away whether the night will BE DARK ENOUGH TO HAVE A GOOD OBSERVING PERIOD 4HE MOON MAP BY

Figure 2. The sky map provides a display of what the sky looks like at the current time.

(26)

UPFRONT

Figure 3. The daylight map shows you where on Earth it is day and night.

Figure 4. The moon map shows points of interest with pins on the map.

(27)

UPFRONT

DEFAULT SHOWS A FULL LISTING OF SITES OF INTEREST 4APPING ON ONE OF THESE POINTS BRINGS UP A TEXT LABEL WITH THE NAME OF THE SITE

4HE SOLAR SYSTEM CATEGORY EXTENDS AVAILABLE INFORMATION FARTHER OUT INTO SPACE 4HE #ONJUNCTION/PPOSITION PAGE PROVIDES A LIST OF ALL TIMES THIS YEAR WHEN PLANETS EITHER FORM A CONJUNCTION OR AN OPPOSITION 4HERE ARE TWO PAGES ONE FOR COMETS AND ONE FOR NEAR

%ARTH ASTEROIDS WHERE YOU CAN SEARCH FOR DETAILED INFORMATION ON SPECIFIC COMETS OR ASTEROIDS 9OU ALSO CAN CLICK THE UPDATE BUTTON TO PULL A FRESH LISTING FROM THE )NTERNET OF WHAT OBJECTS ARE KNOWN

4HERE ARE FOUR LARGE MOONS ORBITING *UPITER THAT ARE VISIBLE IN A LARGE

Figure 5. You can get a map of the

locations of the four main Jovian moons. Figure 6. You can get a map of the largest of Saturn’s moons as well.

(28)

UPFRONT

PAIR OF BINOCULARS #LICKING on the Jupiter’s Moons page BRINGS UP A MAP OF THEIR RELATIVE locations around Jupiter. A

related page gives you the POSITIONS OF THE LARGEST OF 3ATURNS MOONS TOO 6IEWING THEM WILL REQUIRE AT LEAST A SMALL telescope though.

4HE 0LANETARY /RBITS PAGE TAKES THINGS EVEN FARTHER OUT TO SEE THE RELATIVE POSITIONS OF ALL OF THE planets within the solar system.

As with the Moon map described previously, this section includes a Mars map, also with pins at LOCATIONS OF INTEREST

4HE STARS CATEGORY TAKES YOU EVEN FARTHER OUT INTO SPACE

4HE FIRST SELECTION PROVIDES A LIST OF THE  BRIGHTEST STARS IN THE SKY 4HE LIST INCLUDES THE name, magnitude and location FOR EACH OF THESE STARS 4HE entire sky is divided up into

Figure 7. The relative locations of all of the planets are available on the Planetary Orbits page.

Figure 8. There is a Mars map with locations of interest.

(29)

UPFRONT

CONSTELLATIONS 4HE CONSTELLATIONS PAGE PULLS UP DETAILED INFORMATION FOR THE SELECTED CONSTELLATION

4HERE ALSO ARE PAGES WITH THEORETICAL INFORMATION ABOUT ASTRONOMY

&OR EXAMPLE YOU CAN PULL UP A (ERTZSPRUNG 2USSELL $IAGRAM SHOWING HOW STARS ARE CATEGORIZED 4HE STELLAR CLASSIFICATION PAGE DESCRIBES THE TEN CLASSES OF STARS WITH THEIR TEMPERATURE MASS RADIUS AND LUMINOSITY CHARACTERISTICS 4HE LAST TWO PAGES IN THIS SECTION LET YOU SEARCH FOR INFORMATION ON VARIABLE STARS AND VISUAL BINARY STARS

4HE DEEP SKY SECTION CONTAINS PAGES FOR SEVERAL OF THE DEEP SKY CATALOGS 4HE #ALDWELL AND -ESSIER CATALOGS ARE DISPLAYED AS A LIST OF ALL OF THE OBJECTS WITHIN THE CATALOG 9OU CAN CLICK ON AN OBJECT OF

Figure 9. You can get detailed information

on constellations, including a map. Figure 10. The Hertzsprung-Russell

diagram shows how stars are categorized.

(30)

UPFRONT

interest and pull up detailed INFORMATION FOR IT

4HERE ALSO ARE SECTIONS

WHERE YOU CAN DO SEARCHES FOR exoplanets and NGC/IC catalog OBJECTS 4HE REMAINDER OF THE SECTIONS PROVIDE FUNCTIONS TO DO common astronomy calculations.

You can handle coordinate calculations, astrophotography and telescope calculations.

4HE OBSERVATION LOG HELPS YOU TRACK YOUR OWN INFORMATION

4HERE IS A PAGE TO MANAGE ALL OF YOUR ASTRONOMICAL EQUIPMENT LIKE TELESCOPES EYEPIECES FILTERS and cameras. You also can log all OF YOUR OBSERVATIONS RECORDING ALL OF THE DETAILS OF INTEREST

You can export your log, including whatever sections you need, so that you can incorporate it into some other DATABASE OF YOUR RESEARCH

.OW YOU HAVE NO EXCUSE FOR not going out and exploring the

SKIES ABOVE YOU )N MY NEXT FEW ARTICLES ) PLAN TO LOOK AT SEVERAL

OTHER SCIENTIFIC APPLICATIONS THAT YOU CAN USE ON YOUR !NDROID DEVICES FOR DOING PORTABLE SCIENCEJoey Bernard

Figure 11. You can get detailed

information on Messier catalog objects.

RETURN TO CONTENTS

(31)
(32)

My +1 Sword of Productivity

)F )M BEING COMPLETELY HONEST ) THINK THE GAME IFICATION OF A DAILY TASK LIST IS A DUMB

idea. I also love it, and can’t stress enough how

well it works. Habitica might just be the way I get things done FROM NOW ON

)M A PERFECTIONIST )F YOUVE EVER SEEN PHOTOS OF MY OFFICE OR HAIRDO YOU MIGHT NOT THINK THATS THE CASE BUT ) ASSURE YOU ITS TRUE 5NFORTUNATELY ONE OF THE BIG SIDE EFFECTS OF BEING A

PERFECTIONIST IS PROCRASTINATION .OT LAZINESS BUT DELAYING OR REDOING TASKS UNTIL YOU CAN GET THEM JUST RIGHT )T CAN BE CRIPPLING FOR

PRODUCTIVITY AND IRONICALLY THE RUSHED PRODUCT THAT RESULTS OFTEN IS SUB PAR TO WHAT WOULD HAVE BEEN CREATED IN THE FIRST PLACE

(ABITICA TURNS THE STRUGGLES WITH PERFECTIONISM BACK ON THE PERFECTIONIST !LTHOUGH ) HONESTLY DONT CARE VERY MUCH ABOUT THE SWORDS AND SHIELDS ) EARN BY COMPLETING TASKS FOR SOME REASON THE IDEA OF LOSING (0 FOR SKIPPING A TASK IS DIFFICULT FOR ME TO

ACCEPT ) FIND MYSELF DOING EXTRA hGOOD HABITSv THROUGHOUT THE DAY just so my character is as good as he can be. Honestly, I’m surprised (ABITICA WORKS FOR ME ) STILL THINK ITS DUMB ) ALSO CANT STOP STRIVING FOR NEW EXPERIENCE LEVELS AND EARLY TASK COMPLETIONS

4HERES A GREAT 7EB VERSION OF THE FREE PROGRAM AT http://habitica.com, PLUS YOU CAN GET MOBILE VERSIONS FOR I/3 OR !NDROID VIA THEIR

EDITORS’

CHOICE

EDITORS’ CHOICE

NEXT

Reuven M. Lerner’s At the Forge

VPREVIOUS UpFront

V

(33)

RESPECTIVE APP STORES )N FACT (ABITICA IS SO UNIQUE AND SURPRISINGLY EFFECTIVE ITS EASILY MY PICK FOR %DITORS #HOICE THIS MONTH )F YOU think it sounds like a dumb idea, I completely agree. I also urge you TO TRY IT BECAUSE ) FIND IT INCREDIBLY AWESOMEShawn Powers

EDITORS' CHOICE

RETURN TO CONTENTS

(34)

AT THE FORGE

REUVEN M.

LERNER

Reuven M. Lerner offers training in Python, Git and PostgreSQL to companies around the world. He blogs at http://blog.lerner.co.il, tweets at @reuvenmlerner and curates

http://DailyTechVideo.com.

Reuven lives in Modi’in, Israel, with his wife and three children.

Pandas

Reading data from CSV files, and then analyzing the data, is easy with Pandas.

IN MY LAST ARTICLE, I started discussing the

AMAZING WORLD OF DATA SCIENCEˆIN WHICH YOU EXPLORE AND NAVIGATE THROUGH DATA TRYING TO FIND CORRELATIONS THAT MIGHT BE OF INTEREST TO YOUR BUSINESS ANDOR POINT to trends you should consider.

3ERIOUS PRACTITIONERS OF DATA SCIENCE USE THE FULL SCIENTIFIC METHOD STARTING WITH A QUESTION AND A HYPOTHESIS FOLLOWED BY AN EXPLORATION OF THE DATA to determine whether the hypothesis holds up. But IN MANY CASES SUCH AS WHEN YOU ARENT QUITE SURE WHAT YOUR DATA CONTAINS IT HELPS TO PERFORM SOME exploratory data analysis—just looking around, trying TO SEE IF YOU CAN FIND SOMETHING

And, that’s what I’m going to cover this month, using tools provided by the amazing Python ecosystem FOR DATA SCIENCE SOMETIMES KNOWN AS THE 3CI0Y STACK

)TS HARD TO OVERSTATE THE NUMBER OF PEOPLE )VE MET in the past year or two who are learning Python SPECIFICALLY FOR DATA SCIENCE NEEDS "ACK WHEN ) WAS ANALYZING DATA FOR MY 0H$ DISSERTATION JUST TWO YEARS

NEXT

Dave Taylor’s Work the Shell VPREVIOUS

Editors’ Choice

V

(35)

AT THE FORGE

ago, I was told that Python wasn’t yet mature enough to do the sorts OF THINGS ) NEEDED AND THAT ) SHOULD USE THE 2 LANGUAGE INSTEAD ) DO HAVE TO WONDER WHETHER THE TABLES HAVE TURNED BY NOW THE NUMBER OF contributors and contributions to the SciPy stack is phenomenal, making IT A MORE COMPELLING PLATFORM FOR DATA ANALYSIS

)N MY LAST ARTICLE ) DESCRIBED HOW TO FILTER THROUGH LOGFILES TURNING THEM INTO #36 FILES CONTAINING THE INFORMATION THAT WAS OF INTEREST (ERE )

explain how to import that data into Pandas, which provides an additional LAYER OF FLEXIBILITY AND WILL LET YOU EXPLORE THE DATA IN ALL SORTS OF WAYSˆ

including graphically. Although I won’t necessarily reach any amazing conclusions, you’ll at least see how you can import data into Pandas, slice and dice it in various ways, and then produce some basic plots.

Pandas

.UM0Y IS A 0YTHON PACKAGE DOWNLOADABLE FROM THE 0YTHON 0ACKAGE )NDEX

0Y0) http://PyPI.python.org WHICH PROVIDES A DATA STRUCTURE KNOWN AN A .UM0Y ARRAY 4HESE ARRAYS ALTHOUGH ACCESSIBLE FROM 0YTHON ARE MAINLY IMPLEMENTED IN # FOR MAXIMUM SPEED AND EFFICIENCY 4HEY ALSO OPERATE ON A VECTOR BASIS SO IF YOU ADD  TO A .UM0Y ARRAY YOURE ADDING  TO EVERY SINGLE ELEMENT IN THAT ARRAY )T TAKES A WHILE TO GET USED TO THIS WAY OF THINKING AND TO THE FACT THAT THE ARRAY SHOULD HAVE A UNIFORM DATA TYPE

Now, what can you do with your NumPy array? You could apply any NUMBER OF FUNCTIONS TO IT &ORTUNATELY 3CI0Y HAS AN ENORMOUS NUMBER OF FUNCTIONS DEFINED AND AVAILABLE SUITABLE FOR NEARLY EVERY KIND OF SCIENTIFIC AND MATHEMATICAL INVESTIGATION YOU MIGHT WANT TO PERFORM

But in this case, and in many cases in the data science world, what ) REALLY WANT TO DO IS READ DATA FROM A VARIETY OF FORMATS AND THEN

EXPLORE THAT DATA 4HE PERFECT TOOL FOR THAT IS 0ANDAS AN EXTENSIVE LIBRARY DESIGNED FOR DATA ANALYSIS WITHIN 0YTHON

4HE MOST BASIC DATA STRUCTURE IN 0ANDAS IS A hSERIESv WHICH IS BASICALLY A WRAPPER AROUND A .UM0Y ARRAY ! SERIES CAN CONTAIN ANY NUMBER OF ELEMENTS ALL OF WHICH SHOULD BE OF THE SAME TYPE FOR MAXIMUM EFFICIENCY

AND REASONABLENESS  4HE BIG DEAL WITH A SERIES IS THAT YOU CAN SET whatever indexes you want, giving you more expressive power than

would be possible in a NumPy array. Pandas also provides some additional FUNCTIONALITY FOR SERIES OBJECTS IN THE FORM OF A LARGE NUMBER OF METHODS

(36)

AT THE FORGE

"UT THE REAL POWERHOUSE OF 0ANDAS IS THE hDATA FRAMEv WHICH IS SOMETHING LIKE AN %XCEL SPREADSHEET IMPLEMENTED INSIDE OF 0YTHON /NCE YOU GET A TABLE OF INFORMATION INSIDE A DATA FRAME YOU CAN PERFORM A WIDE VARIETY OF MANIPULATIONS AND CALCULATIONS OFTEN WORKING IN SIMILAR WAYS TO A RELATIONAL DATABASE )NDEED MANY OF THE METHODS YOU CAN INVOKE ON A DATA FRAME ARE SIMILAR OR IDENTICAL IN NAME TO THE OPERATIONS YOU CAN INVOKE IN 31,

)NSTALLING 0ANDAS ISNT VERY DIFFICULT IF YOU HAVE A WORKING 0YTHON

installation already. It’s easiest to use %@%, the standard Python installation program, to do so:

;97A,%@%,@4;:5$$,!Z,496%>,65:%$A:$@E,%5475;

4HE ABOVE WILL INSTALL A NUMBER OF DIFFERENT PACKAGES OVERWRITING THE EXISTING INSTALLATION IF AN OLDER VERSION OF A PACKAGE IS INSTALLED

As good as Pandas is, it’s even better when it is integrated with the rest OF THE 3CI0Y STACK AND INSIDE OF THE *UPYTER THAT IS )0YTHON NOTEBOOK

You can install this as well:

;97A,%@%,@4;:5$$,!Z,D[9%>:#<\4A:#EAAG]D

$ONT FORGET THE QUOTES WHICH ENSURE THAT THE SHELL DOESNT TRY TO INTERPRET THE SQUARE BRACKETS AS A FORM OF SHELL GLOBBING .OW ONCE YOU have installed this, run the Jupyter notebook:

[9%>:#<,4A:#EAAG

)F ALL GOES WELL THE SHELL WINDOW SHOULD FILL WITH SOME LOGFILE OUTPUT

"UT SOON AFTER THAT YOUR 7EB BROWSER WILL OPEN GIVING YOU A CHANCE

USING THE MENU ON THE RIGHT SIDE OF THE PAGE TO OPEN A NEW 0YTHON PAGE 4HE IDEA IS THAT YOULL THEN INTERACT WITH THIS DOCUMENT ENTERING Python code inside the individual cells, rather than putting them in a FILE 4O EXECUTE THE CODE INSIDE A CELL JUST PRESS 3HIFT %NTER THE CELL WILL EXECUTE AND THE RESULT OF EVALUATING THE FINAL LINE WILL BE DISPLAYED

%VEN IF ) WASNT WORKING IN THE AREA OF DATA SCIENCE ) WOULD FIND THE

*UPYTER .OTEBOOK TO BE AN EXTREMELY CLEAN EASY TO USE AND CONVENIENT WAY TO WORK WITH MY 0YTHON CODE )T HAS REPLACED MY USE OF THE

(37)

AT THE FORGE

TEXT BASED 0YTHON INTERACTIVE SHELL )F NOTHING ELSE THE FACT THAT ) CAN SAVE AND RETURN TO CELLS ACROSS SESSIONS MEANS THAT ) SPEND LESS TIME RE CREATING where I was the previous time I worked on a project.

Inside Jupyter Notebook, you’ll want to load NumPy, Pandas and A VARIETY OF RELATED FUNCTIONALITY 4HE EASIEST WAY TO DO SO IS TO USE A COMBINATION OF 0YTHON @6%A<: statements and the ^%>$5E magic FUNCTION WITHIN THE NOTEBOOK

^%>$5E,@4$@4#,

@6%A<:,%5475;,5;,%7,

8<A6,%5475;,@6%A<:,)#<@#;_,C5:5`<56#

4HE ABOVE ENSURES THAT EVERYTHING YOULL NEED IS DEFINED )N THEORY YOU don’t need to alias Pandas to %7, but everyone else in the Pandas world DOES SO ) MUST ADMIT THAT ) AVOIDED THIS ALIAS FOR SOME TIME BUT FINALLY DECIDED THAT IF ) WANT MY CODE TO INTEGRATE NICELY WITH OTHER PEOPLES PROJECTS ) REALLY SHOULD FOLLOW THEIR CONVENTIONS

Reading the CSV

.OW LETS READ THE #36 FILE THAT ) CREATED FOR LAST MONTHS ARTICLE !S YOU MIGHT REMEMBER THE FILE CONTAINS A NUMBER OF COLUMNS SEPARATED BY TABS WHICH WERE CREATED FROM AN !PACHE LOGFILE )T TURNS OUT THAT #36 ALTHOUGH A SEEMINGLY PRIMITIVE FORMAT FOR EXCHANGING INFORMATION IS ONE OF THE MOST POPULAR METHODS FOR DOING SO IN THE DATA SCIENCE WORLD !S A RESULT 0ANDAS PROVIDES A VARIETY OF FUNCTIONS THAT LET YOU TURN A #36 FILE INTO A DATA FRAME

4HE EASIEST AND MOST COMMON SUCH FUNCTION IS <#57a?;H. As you might expect, <#57a?;H CAN BE HANDED A FILENAME AS A PARAMETER WHICH ITLL READ AND TURN INTO A DATA FRAME "UT <#57a?;H LIKE MANY OTHER OF THE

<#57ab FUNCTIONS IN 0ANDAS ALSO CAN TAKE A FILE OBJECT OR EVEN A 52,

) STARTED BY TRYING TO READ ACCESSCSV THE #36 FILE FROM LAST MONTHS article, with the <#57a?;H method:

78,*,%7T<#57a?;HRD5??#;;T?;HDX

5NFORTUNATELY THIS FAILED WITH A VERY STRANGE ERROR MESSAGE INDICATING THAT DIFFERENT LINES OF THE FILE CONTAINED DIFFERENT NUMBERS OF FIELDS !FTER A BIT OF

(38)

AT THE FORGE

THOUGHT AND DEBUGGING IT TURNS OUT THAT THIS ERROR IS BECAUSE THE FILE CONTAINS TAB SEPARATED VALUES AND THAT THE DEFAULT SETTING OF PDREAD?CSV IS TO ASSUME comma separators. So, you can retry your load, passing the ;#% parameter:

78,*,%7T<#57a?;HRD5??#;;T?;HD_,;#%*Dc:DX

!ND SURE ENOUGH THAT WORKED -OREOVER IF YOU ASK FOR THE KEYS OF THE 0ANDAS DATA FRAME YOU HAVE JUST CREATED YOU GET THE HEADERS AS THEY WERE DEFINED AT THE TOP OF THE FILE 9OU CAN SEE THOSE BY ASKING THE DATA FRAME TO SHOW YOU ITS KEYS

78TG#>;RX

.OW YOU CAN THINK OF A DATA FRAME AS A 0YTHON VERSION OF AN %XCEL SPREADSHEET OR OF A TABLE IN A TWO DIMENSIONAL RELATIONAL DATABASE BUT YOU ALSO CAN THINK OF IT AS A SET OF 0ANDAS SERIES OBJECTS WITH EACH SERIES providing a particular column.

I should note that <#57a?;H AND THE OTHER <#57ab FUNCTIONS IN 0ANDAS ARE TRULY AMAZING PIECES OF SOFTWARE )F YOURE TRYING TO READ FROM A #36 FILE AND 0ANDAS ISNT HANDLING IT CORRECTLY YOU EITHER HAVE AN EXTREMELY STRANGE FILE FORMAT OR YOU HAVENT FOUND THE RIGHT OPTION YET

Navigating through the Data Frame

.OW THAT YOUVE LOADED THE #36 FILE INTO A DATA FRAME WHAT CAN YOU DO WITH IT &IRST YOU CAN ASK TO SEE THE ENTIRE THING BUT IN THE CASE OF THIS EXAMPLE #36 FILE THERE ARE MORE THAN   ROWS WHICH MEANS THAT PRINTING IT OUT AND LOOKING THROUGH IT IS PROBABLY A BAD IDEA 4HAT SAID WHEN YOU LOOK AT A DATA FRAME INSIDE *UPYTER YOU WILL SEE ONLY THE FIRST FEW ROWS AND LAST FEW ROWS MAKING IT EASIER TO DEAL WITH

)F YOU THINK OF YOUR DATA FRAME AS A SPREADSHEET YOU CAN LOOK AT INDIVIDUAL ROWS COLUMNS AND COMBINATIONS OF THOSE

9OU CAN ASK FOR AN ENTIRE COLUMN BY USING THE COLUMN KEY NAME IN SQUARE BRACKETS OR EVEN AS AN ATTRIBUTE 4HUS YOU CAN GET ALL OF THE REQUESTED 52,S BY ASKING FOR THE hRv COLUMN AS FOLLOWS

78\D<D]

(39)

AT THE FORGE

Or like this:

78T<

/F COURSE THIS STILL WILL RESULT IN THE PRINTING OF A VERY LARGE NUMBER OF ROWS

9OU CAN ASK FOR ONLY THE FIRST FIVE ROWS BY USING 0YTHON SLICE SYNTAXˆSOMETHING THATS OFTEN QUITE CONFUSING FOR PEOPLE WHEN THEY START WITH 0ANDAS BUT

WHICH BECOMES NATURAL AFTER A SHORT WHILE 2EMEMBER THAT USING AN INDIVIDUAL COLUMN NAME INSIDE SQUARE BRACKETS PRODUCES ONE COLUMN WHEREAS USING A SLICE INSIDE SQUARE BRACKETS PRODUCES ONE OR MORE ROWS

3O TO SEE THE FIRST TEN ROWS YOU CAN SAY

78\3Pd]

!ND OF COURSE IF YOURE INTERESTED ONLY IN SEEING THE FIRST TEN (440 REQUESTS THAT CAME INTO THE SERVER THEN YOU CAN SAY

78T<\3Pd]

7HEN YOU ASK FOR A SINGLE COLUMN FROM A DATA FRAME YOURE REALLY GETTING A 0ANDAS SERIES WITH ALL OF ITS ABILITIES

/NE OF THE THINGS YOU OFTEN WILL WANT TO DO WITH A DATA FRAME IS FIGURE OUT THE MOST POPULAR DATA 4HIS IS ESPECIALLY TRUE WHEN WORKING WITH LOGFILES WHICH ARE SUPPOSED TO GIVE YOU SOME INSIGHTS INTO YOUR WORK

&OR EXAMPLE PERHAPS YOU WANT TO FIND OUT WHICH 52,S WERE MOST POPULAR

9OU CAN ASK TO COUNT ALL OF THE ROWS IN 78: 78T?A94:RX

4HIS WILL GIVE YOU A TOTAL OF ALL ROWS "UT YOU ALSO CAN RETRIEVE A SINGLE COLUMN WHICH IS A 0ANDAS SERIES AND ASK IT TO COUNT THE NUMBER OF TIMES each value appears:

78\D<D]TH5$9#a?A94:;RX

4HE RESULTING SERIES HAS INDEXES THAT ARE THE VALUES THAT IS 52,S

(40)

AT THE FORGE

THEMSELVES AND ALSO A COUNT IN DESCENDING ORDER OF THE NUMBER OF TIMES each one appeared.

Plotting

4HIS IS ALREADY GREAT BUT YOU CAN DO EVEN BETTER AND PLOT THE RESULTS &OR example, you might want to have a bar graph indicating how many times EACH OF THE TOP TEN 52,S WAS INVOKED 9OU CAN SAY

78\D<D]TH5$9#a?A94:;RX\3Pd]T%$A:TE5<RX

.OTICE HOW YOU TAKE THE ORIGINAL DATA FRAME COUNT THE NUMBER OF TIMES EACH VALUE APPEARS TAKE THE TOP TEN OF THOSE AND THEN INVOKE METHODS FOR PLOTTING VIA -ATPLOTLIB PRODUCING A SIMPLE BUT EFFECTIVE BAR CHART

)F YOURE USING *UPYTER AND INVOKED ^%>$5E,@4$@4#, this actually will appear in your browser window, rather than an external program.

You similarly can make a pie chart:

78\D<D]TH5$9#a?A94:;RX\3Pd]T%$A:T%@#RX

"UT WAIT A SECOND 4HIS CHART INDICATES THAT THE MOST POPULAR 52, BY A LONG SHOT WAS FEED A 52, USED BY 233 READERS TO ACCESS MY BLOG !LTHOUGH THATS FLATTERING IT MASKS THE OTHER DATA )M INTERESTED IN 9OU THUS CAN USE hBOOLEAN INDEXINGv TO RETRIEVE A SUBSET OF ROWS FROM 78 and then plot only those rows:

78\e78T<T;:<T?A4:5@4;RDf8##7fDX]\D<D]TH5$9#a?A94:;RX\3Pd]T%$A:T%@#RX

7HOATHAT LOOKS HUGE AND COMPLICATED ,ETS BREAK IT APART TO understand what’s going on:

Q 4HIS USED BOOLEAN INDEXING TO RETRIEVE SOME ROWS AND GET RID OF OTHERS

4HE CONDITIONS ARE EXPRESSED USING A COMBINATION OF GENERIC 0YTHON AND .UM0Y0ANDAS SPECIFIC SYNTAX AND CODE

Q 4HIS EXAMPLE USED THE ;:<T?A4:5@4; method provided by Pandas, which ENABLES YOU TO FIND ALL OF THE ROWS WHERE THE 52, CONTAINED hFEEDv

(41)

AT THE FORGE

Q 4HEN THE EXAMPLE USED THE NORMALLY BITWISE OPERATOR ^ TO INVERT THE LOGIC OF WHAT YOURE TRYING TO FIND

Q &INALLY THE RESULT IS PLOTTED PROVIDING A PICTURE OF WHICH 52,S WERE and were not popular.

2EADING THE DATA FROM #36 AND INTO A DATA FRAME GIVES GREAT FLEXIBILITY in manipulating the data and, eventually, in plotting it.

Conclusion

)N THIS ARTICLE ) DESCRIBED HOW TO READ LOGFILE DATA INTO 0ANDAS AND EVEN EXECUTED A FEW SMALL PLOTS WITH IT .EXT MONTH ) EXPLAIN HOW YOU CAN TRANSFORM DATA EVEN MORE TO PROVIDE INSIGHTS FOR EVERYONE INTERESTED IN THE LOGFILEQ

Send comments or feedback via http://www.linuxjournal.com/contact or to [email protected].

RESOURCES

Data science is a hot topic, and many people have been writing good books on the subject. I’ve most recently been reading and enjoying an early release of the Python Data Science Handbook by Jake VanderPlas, which contains great information on data science as well as its use from within Python. Cathy O’Neil and Rachel Schutt’s slightly older book, Doing Data Science, also is excellent, approaching problems from a different angle. Both are published by O’Reilly, and both are worth reading if you’re interested in data science.

To learn more about the Python tools used in data science, check out the sites for NumPy (http://numpy.org), SciPy (http://SciPy.org), Pandas (http://pandas.pydata.org) and IPython (http://IPython.org). There is a lot to learn, so be prepared for a deep dive and lots of reading.

Pandas is available from, and documented at, http://pandas.pydata.org.

Python itself is available from http://python.org, and the PyPI package index, from which you can download all of the packages mentioned here, is at http://PyPI.python.org.

RETURN TO CONTENTS

(42)

DAVE TAYLOR

Dave Taylor has been hacking shell scripts since the dawn of the computer era. Well, not really, but still, 30 years is a long time!

He’s the author of the popular Wicked Cool Shell Scripts and Teach Yourself Unix in 24 Hours (new edition just released!). He can be found on Twitter as @DaveTaylor and at his tech site:

www.AskDaveTaylor.com.

WORK THE SHELL

All about printf

Dave describes a super-useful scripting

command stolen from the C standard I/O library.

IN MY LAST ARTICLE, I explored the surprising ABILITY OF THE ,INUX SHELL TO CONVERT NUMERIC BASES ON THE FLY INCLUDING THIS SWEET LITTLE SNIPPET THAT CONVERTS FF hexadecimal into decimal notation:

Q,#?"A,QRR,dL``,XX, gYY

And, I discussed how you even could use the handy %<@4:8 command within scripts too, such as this command to display decimal numbers in octal and hexadecimal:

Q,%<@4:8,+A?:5$3,^Ac4"#L3,^Lc4+,Mg,Mg, A?:5$3,Yg,

"#L3,g5

NEXT

Kyle Rankin’s Hack and / VPREVIOUS

Reuven M. Lerner’s At the Forge

V

(43)

WORK THE SHELL

)TS PRETTY NEAT STUFF BUT TO BE HONEST ) RARELY FIND MYSELF NEEDING TO CONVERT NUMERIC BASES NOWADAYS SO ITS REALLY SOMETHING ) FILE UNDER hFUNKY SHELL TRICKSv 9OUR EXPERIENCE MAY BE DIFFERENT SO ITS STILL WELL worth learning anyway.

In this article, I thought it would be interesting to take a closer look at the %<@4:8 COMMAND BECAUSE IT IS SO DARN POWERFUL BUT BEFORE GOING THERE HERES A QUICKIE SOME NEAT WAYS YOU CAN MAKE YOUR IF THEN STATEMENTS BE MORE SUCCINCT

If/Then Statements

)F YOURE LIKE ME THEN YOU FIND YOURSELF FREQUENTLY WRITING CONDITIONAL STATEMENT BLOCKS IN YOUR SHELL SCRIPTS 5M ) MEAN

@8,\,>A9D<#,$@G#,6#,],h,:"#4, ,,,>A9,8@47,>A9<;#$8TTT

7ELL YOU GET THE IDEA )N FACT CONDITIONAL EXPRESSIONS ARE WHERE SEQUENCES OF CODE TURN INTO MORE SOPHISTICATED PROGRAMS WHETHER THEYRE A HALF DOZEN LINES LONG OR HUNDREDS OF LINES

A typical conditional expression actually might look like this:

@8,\,QR75:#,i^KX,!#j,d,]h,:"#4, ,,,#?"A,+1:D;,)9475>+,

#$;#,

,,,#?"A,+1:D;,4A:,)9475>+, 8@

4HIS IS CLEAR AND READABLE BUT IT SURE TAKES UP A LOT OF VERTICAL SPACE in a shell script.

Fortunately, there are some ways you can tighten up things by using the && and || notations in your shell scripts.

4HE  NOTATION MEANS IF WHATS INVOKED PRIOR TO THE  ENDS WITH A SUCCESS RETURN CODE DO WHATS SUBSEQUENTˆFOR EXAMPLE

:#;:,QR75:#,i^KX,!#j,d,OO,#?"A,+)9475>+

(44)

WORK THE SHELL

)F ITS -ONDAY AFTERNOON WHEN ) RUN THIS CODE )LL GET NO OUTPUT AND THE ECHO STATEMENT ISNT EVEN EVALUATED "UT IF ITS 3UNDAY THE ABOVE command will output appropriately.

4HE \\ NOTATION OFFERS THE SAME BASIC FUNCTIONALITY BUT WITH THE OPPOSITE LOGIC IF THE RETURN CODE OF THE COMMAND PRIOR TO THE \\

RETURNS A FAIL NON ZERO RETURN CODE THEN THE SUBSEQUENT COMMAND will be invoked:

:#;:,QR75:#,i^KX,!#j,d,SS,#?"A,+1:D;,4A:,)9475>,>#:+

You also can make this even more succinct by using the [] notational SHORTCUT FOR A TESTˆJUST REMEMBER TO INCLUDE THE CLOSING = TO ENSURE ITS ALL WELL FORMED

\,QR75:#,i^K,!#j,d,],SS,#?"A,+@:D;,4A:,)9475>,>#:+

4HE BIGGEST LIMITATION WITH THIS NOTATION IS THAT THERES REALLY NO RELIABLE and properly interpreted way to add an else clause.

You can try something like this:

?67P,OO,?67g,SS,?67V

"UT BECAUSE OF PRECEDENCE INTERPRETATION ITS LIKELY TO HAVE CMD

INVOKED IF EITHER CMD OR CMD HAVE A NON ZERO RETURN CODE WHICH MAKES IT FUNCTIONALITY DIFFERENT FROM THIS

@8,?67P,h,:"#4, ,,?67g,

#$;#, ,,?67V, 8@

!LL IS NOT LOST HOWEVER BECAUSE YOU ALWAYS CAN USE A LOT OF SEMICOLONS to move that onto a single line:

@8,?67P,h,:"#4,?67g,h,#$;#,?67V,h,8@

(45)

WORK THE SHELL

But, is it more readable? Is it really how you want to write your COMMANDS -AYBE !T LEAST NOW YOU KNOW

The Ever-Helpful printf Command

.OW LETS LOOK AT A COMPLETELY DIFFERENT TYPE OF COMMAND A

COMMAND THAT IS A BUILT IN # PROGRAMMING LANGUAGE FUNCTION THATS SO DARN USEFUL ITS NOW INCLUDED IN ,INUX AS A STANDALONE COMMAND

In C and its brethren, the command shows up like this:

%<@4:8R8A<65:;:<@4=_,5<=_,5<=Xh

4HIS ACTUALLY IS A SHORTCUT FOR THE MORE GENERAL 8%<@4:8RX

COMMAND WHICH PREPENDS THE FILE HANDLE AND WOULD LOOK MORE LIKE THE FOLLOWING

8%<@4:8R;:7@A_,8A<65:;:<@4=_,5<=_,5<=Xh

It’s not really relevant to this discussion, but hey, you should know this C programming nuance just so you know what’s going on, right?

Okay, okay, back to the shell.

4HE %<@4:8 command is basically the same, just without the parentheses and commas:

%<@4:8,8A<65:;:<@4=,5<=,5<=

5NLIKE THE #?"A command, %<@4:8 doesn’t automatically append a CARRIAGE RETURN LINE FEED SEQUENCE SO YOU CAN END UP WITH ODD RESULTS like this:

Q,%<@4:8,+"#$$A+,

"#$$AQ

4HE FORMAT STRING ALLOWS A NUMBER OF BACKSLASH ESCAPED SEQUENCES to alleviate this problem, notably c4 TO PRODUCE THE END OF LINE

carriage return.

)NDEED GO BACK TO THE FIRST FEW PARAGRAPHS OF THIS COLUMN AND YOULL

References

Related documents

Direct and Manage Project Execution Develop Project Management Plan Monitor and Control Project Work Create Deliverables... MOHAMED NAZARUDDIN MOHAMED

Online quiz on NAAC 2020 01 GSSS Institute of Engineering &amp; Technology for Women, Mysuru World Intellectual Property Day.

Brad Logsdon, and Promotions Chair, PDG Paulette Gasperson constitute a Committee to investigate a new parade uniform and report back to the Promotions Committee at a later

Figure 1 Countries collecting multiple types of data at the Census by data type Figure 2 Countries collecting transition data at the Census by transition interval Figure 3

The empirical results displayed in the Table 5 display that there is a presence of statistically significant cumulative abnormal returns in the DRUG (column [1]), HEALTHCARE [2],

The purpose of this research study is to examine South Carolina public high school leaders’ experiences in using their bullying and cyberbullying policies to handle

 Holden talks for almost all of page 18 about reading and his favorite authors. What kind of books does he like? Why do you think he likes these books? Use the unfamiliar terms

Three streams of literature informed this research including generational differences in learning preferences, existing and emerging technologies and learning activities in