Handling input languages like XML, YAML, or JSON is simple enough, just grab your favorite module and hammer it out. But what should one do when facing a more obscure markup language, configuration file or another artifact of a developer with acute NIH syndrome? In this talk we’ll (quickly) revisit formal languages basics and what can and cannot be parsed. We will then introduce parsimonious, a simple, fast, and economic Parsing Expression Grammar parser written by Eric Rose.
Visualizing ORACLE performance data with R @ #C16LVMaxym Kharchenko
A picture is worth a thousand words.
This is especially true during performance problems investigations where a well done graph of the issue can often cut resolution time from days to mere minutes.
ORACLE database provides a wealth of performance information, but unfortunately only a small part of it is currently visualized by standard tools, such as Enterprise Manager.
Enter R: a well known (and free) statistical analysis and graphing framework that can create relevant and interesting visualizations on pretty much any data.
Handling input languages like XML, YAML, or JSON is simple enough, just grab your favorite module and hammer it out. But what should one do when facing a more obscure markup language, configuration file or another artifact of a developer with acute NIH syndrome? In this talk we’ll (quickly) revisit formal languages basics and what can and cannot be parsed. We will then introduce parsimonious, a simple, fast, and economic Parsing Expression Grammar parser written by Eric Rose.
Visualizing ORACLE performance data with R @ #C16LVMaxym Kharchenko
A picture is worth a thousand words.
This is especially true during performance problems investigations where a well done graph of the issue can often cut resolution time from days to mere minutes.
ORACLE database provides a wealth of performance information, but unfortunately only a small part of it is currently visualized by standard tools, such as Enterprise Manager.
Enter R: a well known (and free) statistical analysis and graphing framework that can create relevant and interesting visualizations on pretty much any data.
Cluj Big Data Meetup - Big Data in PracticeSteffen Wenz
At the Cluj Big Data Meetup, we shared some insights into TrustYou's big data tech stack. Also we introduced two tools which we've found useful in our production jobs: Apache Pig and Luigi.
Also check out the code samples on GitHub: https://github.com/trustyou/meetups/tree/master/big-data
Using Mikko Koppanen's PHP ZMQ extension we will look at how you can easily distribute work to background processes, provide flexible service brokering for your next service oriented architecture, and manage caches efficiently and easily with just PHP and the ZeroMQ libraries. Whether the problem is asynchronous communication, message distribution, process management or just about anything, ZeroMQ can help you build an architecture that is more resilient, more scalable and more flexible, without introducing unnecessary overhead or requiring a heavyweight queue manager node.
Helping travelers make better hotel choices - 500 million times a month
TrustYou analyzes online hotel reviews to create a summary for every hotel in the world. What do travelers think of the service? Is this hotel suitable for business travelers? TrustYou data is integrated on countless websites (Trivago, Wego, Kayak), helping travelers make better choices. Try it out yourself on http://www.trust-score.com/
TrustYou runs almost exclusively on Python. Every week, we find 3 million new hotel reviews on the web, process them, analyze the text using Natural Language Processing, and update our database of 600,000 hotels. In this talk, Steffen will give insights into how Python is used at TrustYou to collect, analyze and visualize these large amounts of data.
Given at GopherFest 2015. This is an updated version of the talk I gave in NYC Nov 14 at GothamGo.
“We need to think about failure differently. Most people think mistakes are a necessary evil. Mistakes aren't a necessary evil, they aren't evil at all. They are an inevitable consequence of doing something new and as such should be seen as valuable. “ - Ed Catmull
As Go is a "new" programming language we are all experimenting and learning how to write better Go. While most presentations focus on the destination, this presentation focuses on the journey of learning Go and the mistakes I personally made while developing Hugo, Cobra, Viper, Afero & Docker.
BOSH deploys distributed systems, and Diego runs any containersBenjamin Gandon
Learn how BOSH deploys distributed systems. Plus, Discover Diego, the flexible container engine, inside Cloud Foundry… or as the standalone Lattice engine!
Workshop on command line tools - day 1Leandro Lima
Slides of the I Workshop on command-line tools with the collaboration of CAG (Center for Applied Genomics - Children's Hospital of Philadelphia) bioinformatics analysts.
1st day
Workshop on command line tools - day 2Leandro Lima
Slides of the I Workshop on command-line tools with the collaboration of CAG (Center for Applied Genomics - Children's Hospital of Philadelphia) bioinformatics analysts.
2nd day
Conférence données à l'Open World Forum, 05 octobre 2013.
Comment créer une base de données noSQL par paires clés-valeurs en moins d'une heure, en se basant sur le bibliothèques Nanomsg et LightningDB.
Cluj Big Data Meetup - Big Data in PracticeSteffen Wenz
At the Cluj Big Data Meetup, we shared some insights into TrustYou's big data tech stack. Also we introduced two tools which we've found useful in our production jobs: Apache Pig and Luigi.
Also check out the code samples on GitHub: https://github.com/trustyou/meetups/tree/master/big-data
Using Mikko Koppanen's PHP ZMQ extension we will look at how you can easily distribute work to background processes, provide flexible service brokering for your next service oriented architecture, and manage caches efficiently and easily with just PHP and the ZeroMQ libraries. Whether the problem is asynchronous communication, message distribution, process management or just about anything, ZeroMQ can help you build an architecture that is more resilient, more scalable and more flexible, without introducing unnecessary overhead or requiring a heavyweight queue manager node.
Helping travelers make better hotel choices - 500 million times a month
TrustYou analyzes online hotel reviews to create a summary for every hotel in the world. What do travelers think of the service? Is this hotel suitable for business travelers? TrustYou data is integrated on countless websites (Trivago, Wego, Kayak), helping travelers make better choices. Try it out yourself on http://www.trust-score.com/
TrustYou runs almost exclusively on Python. Every week, we find 3 million new hotel reviews on the web, process them, analyze the text using Natural Language Processing, and update our database of 600,000 hotels. In this talk, Steffen will give insights into how Python is used at TrustYou to collect, analyze and visualize these large amounts of data.
Given at GopherFest 2015. This is an updated version of the talk I gave in NYC Nov 14 at GothamGo.
“We need to think about failure differently. Most people think mistakes are a necessary evil. Mistakes aren't a necessary evil, they aren't evil at all. They are an inevitable consequence of doing something new and as such should be seen as valuable. “ - Ed Catmull
As Go is a "new" programming language we are all experimenting and learning how to write better Go. While most presentations focus on the destination, this presentation focuses on the journey of learning Go and the mistakes I personally made while developing Hugo, Cobra, Viper, Afero & Docker.
BOSH deploys distributed systems, and Diego runs any containersBenjamin Gandon
Learn how BOSH deploys distributed systems. Plus, Discover Diego, the flexible container engine, inside Cloud Foundry… or as the standalone Lattice engine!
Workshop on command line tools - day 1Leandro Lima
Slides of the I Workshop on command-line tools with the collaboration of CAG (Center for Applied Genomics - Children's Hospital of Philadelphia) bioinformatics analysts.
1st day
Workshop on command line tools - day 2Leandro Lima
Slides of the I Workshop on command-line tools with the collaboration of CAG (Center for Applied Genomics - Children's Hospital of Philadelphia) bioinformatics analysts.
2nd day
Conférence données à l'Open World Forum, 05 octobre 2013.
Comment créer une base de données noSQL par paires clés-valeurs en moins d'une heure, en se basant sur le bibliothèques Nanomsg et LightningDB.
This presentations gives high level overview of : networking, security, storage, end point devices (PC), Servers, Enterprise System Management and Development and SOA\integration domains. It includes staffing ratios, vendor and integrator positioning in Israel.
Ci sono prodotti ed attrezzature in commercio che ci aiutano a tenere lontane o combattere le zanzare.
Ma qualcosa possiamo fare
anche noi nel nostro piccolo
per ridurre i focolai di diffusione
e prevenire le fastidiose punture
nanopub-java: A Java Library for NanopublicationsTobias Kuhn
The concept of nanopublications was first proposed about six years ago, but it lacked openly available implementations. The library presented here is the first one that has become an official implementation of the nanopublication community. Its core features are stable, but it also contains unofficial and experimental extensions: for publishing to a decentralized server network, for defining sets of nanopublications with indexes, for informal assertions, and for digitally signing nanopublications. Most of the features of the library can also be accessed via an online validator interface.
This is a slightly updated draft of a talk I was planning on giving at Hadoop Summit in 2015. However the abstract was rejected. Rather than toss it, I'm going to share it with all of you on the (almost) 1 year anniversary of the first big commit of this feature!
Keep in mind that this is (currently) locked away in trunk. If you ever want to see this see the light of day, bug your vendors....
Slides from a talk at HPC Admintech 2019 about containers, a brief review on containers, how to create a container using common linux tools and how to integrate Docker with Slurm.
Présentation aux Geeks Anonymes Liège par Cyril Soldani, le 13 décembre 2017.
Page des Geeks Anonymes : https://www.recherche.uliege.be/cms/c_9463913/fr/geeks-anonymes
What we Learned Implementing Puppet at BackstopPuppet
"What We Learned Implementing Puppet at Backstop" by Bill Weiss at Puppet Camp Chicago 2013. Learn about upcoming Puppet Camps at http://puppetlabs.com/community/puppet-camp/
Do you sometimes feel like long Bash scripts look like a mix of dark magic and rocket science? Me too! But I’ve finally managed to understand a set of reasonable guidelines to make my interaction with Bash not only effective, but also enjoyable! Now you can learn the best 10 Bash scripting tips too.
Building a DSL with GraalVM (VoxxedDays Luxembourg)Maarten Mulders
GraalVM is a virtual machine that can run many languages on top of the Java Virtual Machine. It comes with support for JavaScript, Ruby, Python… But what if you're building a DSL, or your language is not listed? Fear not!
In this session we'll discover what it takes to run another language in GraalVM. Using GraalVM, we don't only get a fast runtime, but we'll also get great tool support. With Brainfuck as an example, we'll see how we can run guest languages inside Java applications. It might not bring us profit, but at least it will bring some fun.
Finding and fixing bugs is a major chunk of any developers time. This talk describes the basic rules for effective debugging in any language, but shows how the tools available in PHP can be used to find and fix even the most elusive error
Meet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdfFlorence Consulting
Quattordicesimo Meetup di Milano, tenutosi a Milano il 23 Maggio 2024 dalle ore 17:00 alle ore 18:30 in presenza e da remoto.
Abbiamo parlato di come Axpo Italia S.p.A. ha ridotto il technical debt migrando le proprie APIs da Mule 3.9 a Mule 4.4 passando anche da on-premises a CloudHub 1.0.
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptxBrad Spiegel Macon GA
Brad Spiegel Macon GA’s journey exemplifies the profound impact that one individual can have on their community. Through his unwavering dedication to digital inclusion, he’s not only bridging the gap in Macon but also setting an example for others to follow.
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024APNIC
Ellisha Heppner, Grant Management Lead, presented an update on APNIC Foundation to the PNG DNS Forum held from 6 to 10 May, 2024 in Port Moresby, Papua New Guinea.
1.Wireless Communication System_Wireless communication is a broad term that i...JeyaPerumal1
Wireless communication involves the transmission of information over a distance without the help of wires, cables or any other forms of electrical conductors.
Wireless communication is a broad term that incorporates all procedures and forms of connecting and communicating between two or more devices using a wireless signal through wireless communication technologies and devices.
Features of Wireless Communication
The evolution of wireless technology has brought many advancements with its effective features.
The transmitted distance can be anywhere between a few meters (for example, a television's remote control) and thousands of kilometers (for example, radio communication).
Wireless communication can be used for cellular telephony, wireless access to the internet, wireless home networking, and so on.
Italy Agriculture Equipment Market Outlook to 2027harveenkaur52
Agriculture and Animal Care
Ken Research has an expertise in Agriculture and Animal Care sector and offer vast collection of information related to all major aspects such as Agriculture equipment, Crop Protection, Seed, Agriculture Chemical, Fertilizers, Protected Cultivators, Palm Oil, Hybrid Seed, Animal Feed additives and many more.
Our continuous study and findings in agriculture sector provide better insights to companies dealing with related product and services, government and agriculture associations, researchers and students to well understand the present and expected scenario.
Our Animal care category provides solutions on Animal Healthcare and related products and services, including, animal feed additives, vaccination
9. Nice Functions
function it_crowd {
# Turn it off and on again
ssh $1 reboot
# Is it off yet?
while is_it_on $1; do :; done
# Is it on yet?
while ! is_it_on $1; do :; done
}
$ it_crowd mycomputer
: [arguments]
No effect; the command does
nothing beyond expanding
arguments and performing any
specified redirections.
A zero exit code is returned.
http://git.savannah.gnu.org/cgit/bash.git/tree/builtins/colon.def
15. Famous Naughty Functions
:(){ :|:&}
$ :
bash: fork: Cannot allocate memory
ENOMEM Cannot allocate
sufficient memory to allocate a
task structure for the child,
or to copy those parts of
the caller's context that need
to be copied.
CLONE(2)
Image taken from: http://askubuntu.com/a/159499
19. Nice Globbing (shopt -s extglob)
!(<PATTERN-LIST>) - anything except
$ rm -rf ~/Downloads/!(*.pdf|*.doc?|*.ods|*.xls?)
?(<PATTERN-LIST>) - zero or one
*(<PATTERN-LIST>) - zero or more
+(<PATTERN-LIST>) - one or more
@(<PATTERN-LIST>) - exactly one
20. Nice Globbing (shopt -s <superpower>)
dotglob
Bash will also expand ‘.’ as part of glob (inc: `.`
`..`)
globstar
‘**’ will match all files and zero or more directories
nocaseglob
case-insensitive globbing
nullglob / failglob
when globbing fails expand empty string / fail with
21. Naughty Globbing
# Print all files in depth 10:
$ echo /*/*/*/*/*/*/*/*/*/*
# hogs your CPU, performs IOs, consumes memory
Out of memory: Kill process 3769 (bash) score 792 or
sacrifice child
Killed process 3769 (bash) total-vm:23463052kB, anon-
rss:20065304kB, file-rss:0kB
BUT
Why???
o_O
22. Let’s build a Christmas tree
$ mkdir -p {a1,a2,a3}/{b1,b2,b3}/{c1,c2,c3}
.
a2 a3a1
b2 b3b1b2 b3b1 b2 b3b1
28. /proc/<PID>/root
“per-process root of the filesystem, set by the chroot(2)”
usually symlink to /
depth 1: 30
depth 2: 1418
depth 3: 21076
depth 4: 63150
depth 5: 199812
depth 6: 432928
depth 7: 568426
depth 8: 617698
depth 9: 511480
depth 10: 320827
Assuming root and 100 processes:
(100*432928 +
100*100*21076) * 64b
= 15.1gb
29. Naughty Globbing - Recap
$ echo /*/*/*/*/*/*/*/*/*/*
64b per file
Keeps previous level in memory (BFS)
Follows symlinks over and over
/proc/PID/root
/proc/PID/cwd
31. Command Substitution
# old-style
$ echo All you need is `basename $0`
All you need is bash
# new-style
$ echo $(basename $0) is all you need
bash is all you need
# new-style is cool
bobs_cred="$(echo bob:"$(shuf -n4 /usr/share/dict/words | tr
-d 'n')" | chpasswd -S -c SHA512)"
nested commands
nested double-quotes
32. Nice Command Process Substitution
# Compare filesystem features
$ diff <(dumpe2fs -h /dev/sdb1) <(dumpe2fs -h /dev/sdc1)
->
$ diff /dev/fd/63 /dev/fd/62
lr-x------ 1 nati nati ... /dev/fd/62 -> pipe:[142006]
lr-x------ 1 nati nati ... /dev/fd/63 -> pipe:[142004]
# Write bad blocks to a compressed log and rsyslogd
$ dumpe2fs -b /dev/sda1 | tee >(gzip >> bad_blocks.log.gz) |
logger -t bad_blocks --
36. ls | wc -l
The STDOUT of ls is connected to the STDIN of wc -l
Each command is executed as a separate process
# What if I also want STDERR?
$ ls 2>&1 | wc -l
$ ls |& wc -l
37. Nice Pipelines: exit code(s)
# The following pipeline is a huge success
$ backup.sh | aws s3 cp - s3://my-bkt/backup.gz | echo Yay
$ echo $? # Always 0
# Solution 1
$ set -o pipefail # pipes return rightmost non-zero
38. Nice Pipelines: exit code(s)
# Solution 2
$ ls | bogus_command | wc
bogus_command: command not found
0 0 0
$ echo ${PIPESTATUS[@]} # array of exit status values
0 127 0
http://tldp.org/LDP/abs/html/internalvariables.html#PIPESTATUSREF
39. Nice Pipelines (shopt - s lastpipe)
# The following only works when job control is off
# How many files in /tmp?
myvar=0
ls /tmp | wc -l | read myvar
echo $myvar files in /tmp # Always 0! why?
# How many files in /tmp?
shopt -s lastpipe
myvar=0
ls /tmp | wc -l | read myvar
echo $myvar files in /tmp
41. Naughty Pipelines
import random
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return random.choice([':(){ :;} :',
':(){ : $1$1;} : :',
':(){ :|:&} :',
'echo /*/*/*/*/*/*/*/*/*/*',
'echo `yes Let it snow`',
':(){ : <(:);} :' ])
if __name__ == "__main__":
app.run()
42. Naughty Pipelines
What about network failures?
Do you trust curl? is it a function/alias?
Do you trust myawesomefullstackapp.io?
curl http://install.myawesomefullstackapp.io | bash
Someone can take over install.myawesomefullstackapp.io
Today I’m going to talk about Bash
We all love bash, because it’s awesome and allows us to create these awesome one liners
We also hate bash, because of that time when everything crashed and we had to figure out what the previous sysadmin’s one-liner did
We do our best to avoid Bash using all sort of fancy configuration management,
Just to end up creating “bash resources” and generating bash scripts using ruby code...
So, today I’m going to talk about Bash
I’m going to go over some cool features that can make your life great
And then I’m going to show you how Bash crash miserably, possibly taking your entire system down with it
Use https://…
curl has a 4k output buffer (on Linux)
You can force input buffering in bash using {...}
Use command curl or \curl
Prefer a signed repository