- Workshops:
- Conference:
GopherConAU believes Go is the way to go! We wish to showcase this modern language here in beautiful Australia both as a successful tool for commercial programming and a viable career path. Part of our vision is to attract a diverse crowd both to the audience and to the stage. We aim for GopherCon Australia to reflect how we developers want the future of the industry to look.
For the first year of GopherCon Australia, we will use sponsorships to attract and accommodate for international speakers and workshop hosts. By showing that GopherCon Australia is a welcoming conference, we wish to create a sense of community coming from different backgrounds, supporting traditionally underrepresented groups in the technology industry. We invited prominent contributors to the Go tech scene, who share and represent our vision of inclusion and who come from diverse gender and ethnicity groups.
Many well known Australian companies use Go, including Google, Atlassian, VMware, Seek, Siteminder, Freelancer.com, Campaign Monitor, Sajari, and many more.
GopherCon Australia is the latest in a series of conferences originating from the first GopherCon held in Denver, Colorado in 2014. The conference founders are Katie Fry and Xuanyi Chew, both organisers of the successful Sydney Go Users’ Group, and a committee of volunteers.
GopherCon Australia is happening in Sydney between 30th October and 1st November 2019. Yes, you read it right - conveniently before the weekend, so that you can extend your stay. We encourage you to take your partner, family, or friends with you, as we will provide you with recommendations on how to spend time in Sydney to enjoy the culture, art, and fun.
An introduction with lots of hands on practice
• Development Environment
• Programming Fundamentals
• An introduction to the basic syntax of the language
• Debugging
• Learning in a friendly environment
• The initial setup to get started with Go
Leah Garrett has over 20 years experience working in software development, and was recently lead educator at a coding bootcamp. Active in the developer community, Leah is co-organiser of the Melbourne Golang Meetup group and is part of the team that organises the DDD Melbourne conference.
This class has been designed over the past several years and goes beyond just being a Go service class. There will be very little time spent on specifc Go syntax. Our time will be spent learning how to re-engineer a web service and talk about application design, semantics and guidelines for building services in Go.
Building Production Web Services In Go
• Start/Stop
• Logging/Configuration
• Web Framework Design
• Database Support
• Testing
• Metrics/Tracing
• Modules/Docker/Compose
Everyone is going to be mentally exhausted by the end of the day. We will be challenging every student to think about what they are doing and why. In the 4 years we have taught this material, we never had someone not appreciate the class and feel like they are a better developer for it. If you want to be a better Go developer, code reviewer, designer and architect, this is the class you want to take.
William Kennedy is a managing partner at Ardan Labs in Miami, Florida, a group of passionate engineers, artists and business professionals focused on building and delivering reliable, secure and scalable solutions. He is also a co-author of the book Go in Action, the author of the blog GoingGo.Net, and a founding member of GoBridge which is working to increase Go adoption through diversity.
This workshop is for team leads, agile coaches and senior developers.
The main goal is to workshop approaches to the biggest issue in software engineering; too much unverifiable code and not nearly enough human scale formal specifications.
It covers topics from developer productivity to capturing system semantics. Using enterprise-ready features of Go 1.13 to advanced uses of protocol buffers.This is a hands on workshop, programming experience required, but experience with Go is not necessary.
We will be using a combination of pairs and mob programming (pairs of mobs) to refactor and add features to a synthetic code base.
Expect digressions into development process and economics of software engineering.
• Fast & painless reproducible builds
• Development & operations metrics collection
• Traceability of production issues
• Painless & productive approaches to APIs & contracts
• Contract based regression testing
• Speed of developers coming up to speed in development teams
Gary Miller is a creative technologist, across a broad spectrum of web, cloud and enterprise IT systems and technologies. He is a senior engineer at a local Sydney spin-off, GotoBlink. Previously he was Macquarie Group's (COG - Infra) Computer Scientist in Residence, where he applied a small amount of theory with large amounts of practical software engineering nous, to unblock some of their most intractable problems.
Continuous Delivery can drive the design of your code for Great Good. I'll share some of the tricks and strategies I've used to deploy Go services safely, smoothly, and without ceremony. I'll cover integration testing, db migrations, zero-downtime deploys, feature flags, and some useful go tooling.
I've been an avid Gopher since 2012 - roughly as long as I've been living in New Zealand. I discovered such an immediate productivity boost, that I haven't looked back from Go, or NZ, since. I helped start the Go Auckland meetup group in 2013, and I've hosted and spoken at many meetups since then.
About four years ago, a wise man persuaded me that "setting up a new stack is the right time to begin CD". I claimed I was too busy getting product and platform to market, but he won me over: "it's much harder to add CD later". I went with it, and I was so chuffed with the results that I've been championing CD-related approaches ever since.
This talk is about how to start using go's profiling tools, instrument your code so that you can profile your services running in production and have less mystery in your life.
Viewers will learn how to use trace and pprof tools, and guidance on doing it in production for their own services.
Alexander is an infrastructure software engineer, currently working at Atlassian on the Observability team. I like to build distributed systems. Sometimes things catch on fire and need putting out. When I'm not doing those things I enjoy working on electronics projects, making music and spending time with my family.
Many modern software product developers work close to the top of a powerful open source software stack and focus on their customer problems.
This talk is about how I worked further down the Go software stack to write a PDF Full Text Search library and solve customer problems in unexpected ways.
Peter Williams is the lead developer of enabling technologies at PaperCut. He develops libraries and features for PaperCut´s products.
Peter has been developing in Go for the last few years. Some of the features and components he has recently written in Go for PaperCut are
Building an API with the net/http library is incredibly easy…until it isn’t. Even in 2019 the advice you find online when doing routing is often to “use X framework” or “just use net/http” without a lot of context for how to use them well. In this talk I will cover request parsing, writing middleware, using context, and other useful skills to level up your standard library-only APIs.
Kaylyn Gibilterra is a tech lead for modernizing core banking systems in Go at Capital One. She has been programming Go since 2014 and has been introducing developers to the language through talks and trainings ever since. She is a Recurse Center alum and is currently working on her masters in Computer Systems from Georgia Tech
Have you ever wanted to dabble in Deep Learning? Here's your chance to get started doing it in Go. We'll take you through a quick example of a new model - and then how to continue your learning process through more commonly found Tensorflow projects lying around the Internet.
 I buy one vacuum cleaner and all of a sudden I'm a Hoover enthusiast. Enjoyed a nice video about politics? YouTube is unusable now.
This talk covers a new way to build these systems using Deep Reinforcement Learning to improve the quality & diversity of recommendations.
Many new Gophers come from dynamic languages and frameworks that have an emphasis on productivity vs engineering, but what happens when your application doesn’t fit the mold of a framework like Ruby on Rails?  What does it look like to build a full web stack from scratch for a production environment
Jeff Levin is the Founder of Legalverse and the Alaska Developers Alliance. He has been a web developer since Microsoft Frontpage and recently accepted the title of software engineer. When he’s not coding you’ll find him running and skiing in the mountains
Relying on binary floating point can kill; they are inherently imprecise and can lead to technical complications later down the road. A decimal system would solve many of these complications. Go has been lacking a fast and efficient decimal data type, until now...
 Outside of work, Josh likes to get lost by following the forgotten art of hitchhiking where he´s traveled to many places, and many are still to come.
Sloc cloc and code. How a death march project lead to learning Go, the creation of a source lines of code counter which is faster and more accurate then the Rust/ATS/C equivalents, while learning about some really bizarre performance characteristics.
This is the story of how Atlassian moved from a multi-million dollar contract with one vendor to another for their monitoring system. To help them migrate the thousands of engineers and microservices onto the new platform in just a few months, they built a new data pipeline using Go.
Julia works as a developer in Atlassian´s Observability team. She loves learning about all things Go, especially the cute Gopher, and is passionate about teaching the younger generation how to code.
In this talk, I want to introduce the Fyne GUI toolkit ... A modern application framework and desktop environment focused on design, ease of development and distribution. Targeting cross platform desktop applications, as well as Mobile (Android / iOS) and more. TDD support is built in, and its written 100% in Go, so you know its good.
Fyne is a very well engineered, and exceptionally well managed project, driven by an experienced, diverse all-volunteer team distributed around the Globe.
This will be a fast paced, highly visual dive through the possibilities for application development, if you dare to throw out the rulebook and look at a fresh new approach that the Go tooling makes possible. Attendees will be challenged to let their imaginations loose, and get excited about writing "that app" that they have always wanted to finish off one day. Now is your time !
I am a systems programmer that has been working exclusively with Go since 2014. I wrote my first lines of code in the early 80s ... on a Z80, in machine code, and then quickly fell into full time work from there.
Its been non-stop ever since, and taken me many places in many interesting projects over the last 4 decades. I got to see the Unix wars first hand, and contribute to many opensource projects in their infancy (Gtk Toolkit).
I have been lucky to have worked on pretty much all the machines, from Mainframes with JCL, to SGI workstations on Submarines, to embedded systems, and now 'the cloud'. I still use my SGI Octane sometimes.
I still haven't finished my Pet Project after all these years. However, since I discovered Fyne in 2018, and joined as a contributor, that is about to change.
| Time | Slot | Description |
|---|---|---|
| 9:00 | Check-In | Doors open! Go! Go! Gophers! |
| 9:30 | Intro | Welcome & Acknowledgements. |
| 9:45 |
Carmen Andoh |
10 years of GoSimple. Reliable. Efficient. These words defined Go on Nov 10 2009. As we celebrate 10 yrs, we add one more: Sustainable. A reflection of Go: technological & industry advances during the last decade, while exploring what it means to be sustainable amidst constant change. |
| 10:25 | Break | Break for 10 minutes. |
| 10:35 |
Am Laher |
Designing Go services for Continuous DeploymentContinuous Delivery can drive the design of your code for Great Good. I'll share some of the tricks and strategies I've used to deploy Go services safely, smoothly, and without ceremony. I'll cover integration testing, db migrations, zero-downtime deploys, feature flags, and some useful go tooling. |
| 11:05 | Break | Gophers have 25 minutes to chill. |
| 11:30 |
Alexander Else |
Eliminate the guess work: Profiling a go service in productionThis talk is about how to start using go's profiling tools, instrument your code so that you can profile your services running in production and have less mystery in your life. Viewers will learn how to use trace and pprof tools, and guidance on doing it in production for their own services. |
| 12:00 |
Peter Williams |
PDF Full Text Search in Pure Go. Why and How I Wrote it.Many modern software product developers work close to the top of a powerful open source software stack and focus on their customer problems. This talk is about how I worked further down the Go software stack to write a PDF Full Text Search library and solve customer problems in unexpected ways. |
| 12:35 | Lunch | Lunch break for 85 minutes. |
| 14:00 |
Kaylyn Gibilterra |
Unlocking net/http APIsBuilding an API with the net/http library is incredibly easy…until it isn’t. Even in 2019 the advice you find online when doing routing is often to “use X framework” or “just use net/http” without a lot of context for how to use them well. In this talk I will cover request parsing, writing middleware, using context, and other useful skills to level up your standard library-only APIs. |
| 14:30 |
Darrell Chua |
Getting Started with Deep Learning in GoHave you ever wanted to dabble in Deep Learning? Here's your chance to get started doing it in Go. We'll take you through a quick example of a new model - and then how to continue your learning process through more commonly found Tensorflow projects lying around the Internet. |
| 15:00 | Break | Relax for 30 minutes. |
| 15:30 |
Gareth Seneque |
Game of Clicks: Reinforcement Learning for News Recommendation
Recommendation systems suck. I buy one vacuum cleaner and all of a sudden I'm a Hoover enthusiast. Enjoyed a nice video about politics? YouTube is unusable now. This talk covers a new way to build these systems using Deep Reinforcement Learning to improve the quality & diversity of recommendations. |
| 16:00 |
Jeff Levin |
Let’s build our own webstack in Go!Many new Gophers come from dynamic languages and frameworks that have an emphasis on productivity vs engineering, but what happens when your application doesn’t fit the mold of a framework like Ruby on Rails?  What does it look like to build a full web stack from scratch for a production environment |
| 16:30 | Outro | Goodbye for the Day! |
| Time | Slot | Description |
|---|---|---|
| 9:30 | Check-In | Doors open! Today a bit later. |
| 9:40 | Intro | Welcome & Acknowledgements. |
| 9:45 |
William Kennedy |
ModulesGo 1.13 made Modules a first class citizen. But what do they do exactly? In this talk, Bill will walk through what he has learned about modules and the developer experience. |
| 10:25 | Break | Break for 10 minutes. |
| 10:35 |
Joshua Carpeggiani |
Go for DecimalsRelying on binary floating point can kill; they are inherently imprecise and can lead to technical complications later down the road. A decimal system would solve many of these complications. Go has been lacking a fast and efficient decimal data type, until now... |
| 11:05 | Break | Gophers have 25 minutes to chill. |
| 11:30 |
Ben Boyter |
Sloc Cloc and Code - Can a crusty Go program outperform a well written Rust Project?Sloc cloc and code. How a death march project lead to learning Go, the creation of a source lines of code counter which is faster and more accurate then the Rust/ATS/C equivalents, while learning about some really bizarre performance characteristics. |
| 12:00 |
LIGHTNING TALKS |
Lightning Talks |
| 12:35 | Lunch | Lunch break for 85 minutes. |
| 14:00 |
Julia Wong |
Migrate to a New Platform by Creating a Pipeline in GoThis is the story of how Atlassian moved from a multi-million dollar contract with one vendor to another for their monitoring system. To help them migrate the thousands of engineers and microservices onto the new platform in just a few months, they built a new data pipeline using Go. |
| 14:30 |
Steve O'Connor |
The Fyne GUI Toolkit - Fun + No Constraints + High Performance = CreativityIn this talk, I want to introduce the Fyne GUI toolkit ... A modern application framework and desktop environment focused on design, ease of development and distribution. Targeting cross platform desktop applications, as well as Mobile (Android / iOS) and more. TDD support is built in, and its written 100% in Go, so you know its good. Fyne is a very well engineered, and exceptionally well managed project, driven by an experienced, diverse all-volunteer team distributed around the Globe. This will be a fast paced, highly visual dive through the possibilities for application development, if you dare to throw out the rulebook and look at a fresh new approach that the Go tooling makes possible. Attendees will be challenged to let their imaginations loose, and get excited about writing "that app" that they have always wanted to finish off one day. Now is your time ! |
| 15:00 | Break | The last, 45-minute long, break for this year's GopherConAU! |
| 15:45 |
Adel Smee |
Inclusiveness - It’s In Your HandsResilient, effective teams are diverse teams, teams that feel safe throwing around ideas, teams that look out for each other, teams where the needs of the individuals in the team are (mostly) met, teams that can learn and grow with your company. Nurturing environments in which such teams can form and flourish is an endlessly challenging and rewarding task that belongs to everyone in the company. And yet, a lot of the work to identify issues, champion change and improve a company’s culture and the diversity of its workforce is done by the same few people, or left entirely to HR. These folks could do with a hand. A hand from you! This talk will encourage you to get involved in diversity and inclusion work at your company in whatever way makes sense to you. It includes a few pointers to get you started and some stories to motivate you along the way. |
| 16:30 | Outro | Goodbye & Thanks! |
All attendees, speakers, sponsors and volunteers at our conference are required to agree with the following code of conduct. Organisers will enforce this code throughout the event. We expect cooperation from all participants to help ensure a safe environment for everybody.
Our conference is dedicated to providing a harassment-free conference experience for everyone, regardless of gender, gender identity and expression, age, sexual orientation, disability, physical appearance, body size, race, ethnicity, religion (or lack thereof), or technology choices. We do not tolerate harassment of conference participants in any form. Sexual language and imagery is not appropriate for any conference venue, including talks, workshops, parties, Twitter and other online media. Conference participants violating these rules may be sanctioned or expelled from the conference without a refund at the discretion of the conference organisers.
If someone makes you or anyone else feel unsafe or unwelcome, please report it as soon as possible by emailing<EMAIL_ADDRESS>or by speaking to a member of the conference staff. Conference staff will be wearing orange GopherConAU teeshirts.


-main-
{% for s in samples %}
{{s}}
{% endfor %}
-shared-
{% for s in cosamples %}
{{s}}
{% endfor %}
ADD NEW
D.O.B
Location
Shared with
Previously:
Description:
Entries (History of Measurements):
UPDATE
MEAL
Sample Registration:
Name
D.O.B
Location
Previously:
Description:
--describe your sample--


-
WKRP "As God as my witness, I thought turkeys could fly" Thanksgiving
www.youtube.com
WKRP "As God as my witness, I thought turkeys could fly" Thanksgiving
-
SendHub. SMS for Organizations. Send Texts to Individuals and Groups for ...
www.sendhub.com
SendHub makes business communication fast and simple, on any device. Our all-in-one phone system provides SMS, voice, file and conference call ...
-
"Bales Of Cash On The Sidelines": The Average Billionaire Has A Record ...
www.zerohedge.com
While the saying
-
Islamic State Member Warns of NYC Attack In Exclusive Interview - The ...
news.vice.com
Islamic State member Abu Usamah Somali warns of NYC attack in exclusive interview with VICE founder Shane Smith.
-
Is The Weakness In Stocks The Start Of Something... | Ryan Detrick's Tumblr
ryandetrick.tumblr.com
Is The Weakness In Stocks The Start Of Something Bigger? I noted on See It Market a week ago that the next few weeks are by far the worst from a ...
-
howardlindzon shared a chart on StockTwits
stocktwits.com
Our technology heatmap today on stocktwits...sea of red ...the blood color $aapl $QQQ http://stks.co/s0oZq
-
Hootsuite Reaches $1 Billion Valuation in Latest Funding Round
recode.net
And more international expansion is on the horizon.
-
A Hedge Fund Manager, Nas, Snoop Dog And Jared Leto Are All Investors In ...
www.businessinsider.com
Howard Lindzon has made a lot of money trading...
-
The Challenge Facing Mobile-First SaaS Companies
tomtunguz.com
For consumer products, the power of mobile distribution is hard to overstate. Facebook serves more than 1B mobile users each month. Angry Birds ...
-
howardlindzon shared an idea on StockTwits
stocktwits.com
spot awful market days by checking stocktwits trending in mobile app - index etfs show up and never green $SPY http://stks.co/c1337
-
A Complex Spread That Gives You 10% Returns in Just One Month
investingwithoptions.com
If there’s any super obvious theme in the markets right now, it’s the rotation out of risk. This means small cap stocks have been underperforming the ...
-
Building our team: new funds and partners for growth
www.apptentive.com
It’s all about relationships At the core, our company is about building relationships. Establishing relationships with our customers. Forming ...
-
Demystifying Venture Capital Economics, Part 2 - Wealthfront ...
blog.wealthfront.com
Just because a company operates at a loss today doesn’t mean it can’t be profitable in the future. Those unfamiliar with venture capital economics ...
-
Don't Blame Uber - stratechery by Ben Thompson
stratechery.com
Uber is a popular target for the left in particular, but the venom is misplaced. We need a better safety net for everyone, not just Uber drivers.
-
Of Trends, Yields, and Metals
markdow.tumblr.com
Markets are hard. One of the main reasons they’re hard is because it’s in our nature to overthink. We’re tempted to think deep thought is our value ...
-
Goldman Sachs-Led Group Near Deal to Buy Messaging Startup Perzo
online.wsj.com
A group of financial firms led by Goldman Sachs may announce a deal to buy instant-messaging startup Perzo in a bid to take on Bloomberg's popular ...
-
Join | Social Leverage 50Social Leverage 50 | The best stocks with the ...
socialleverage50.com
The SL50 list will help you recognize and profit from the biggest stock market opportunities. Many of the largest stock market winners (the next ...
-
Fund Seeder
fundseeder.com
FundSeeder is a broker agnostic, financial technology company pioneering a trading revolution. We have created the world's first search engine for ...
-
116% Returns in Only 5 Hours? Peanuts! | Crowdability
www.crowdability.com
Have you ever doubled your money... In just a few hours? Last week, in one of this year’s most successful IPOs, a group of investors made 116% on ...
-
OphirGottlieb shared a chart on StockTwits
stocktwits.com
@howardlindzon @CapitalMarketLabs @StockTwits This is How Big $NKE Is vs. Apparel Peers. http://stks.co/c12bL
-
Pimco ETF Draws Probe by SEC
online.wsj.com
The SEC is investigating whether bond giant Pacific Investment Management Co. artificially boosted the returns of a popular fund aimed at small ...
-
Robinhood...The Future of Mobile Brokerage - Trends... Find them, ride ...
www.howardlindzon.com
Today Robinhood announced a $13 million round of capital. Here is some of the big coverage and details. Robinhood had their own blog post. CNN ...
-
Exclusive: Tiger Global raising another huge fund
fortune.com
Five months after raising $1.5 billion, Tiger Global is back for more.
-
Blog
blog.robinhood.com
As many of you know, we’ve embarked on a big mission: to create a better way for the next generation to invest. The idea for Robinhood stemmed from ...
-
With $13 Million, Robinhood Aims to Share the Stock-Trade Wealth
recode.net
Half a million people are waiting to use a financial app.
-
Robinhood Raises $13M To Democratize Stock Market With Zero-Commission ...
techcrunch.com
Half a million people have already signed up for Robinhood's unlaunched zero-fee stock trading service. Now the startup has raised $13 million to ...
-
Kinvey Secures $10.8M in Series B Financing to Drive Mobile-Cloud Platform ...
www.digitaljournal.com
>PRWEB.COM Newswire


Yale Marks Icons extracted from new roman Yale font, assigned to Private Use Area Unicodes; U+F2A1, U+F2A2, U+F2A3
With two separate links
Single wordmark, use for the footer logo
Full name, use at top-left of webpages, single link
Scalable to any size


--- layout: post title: "Optimizing QString usage" description: > Qt is a great framework- elegant, easy to use, cross platform etc. However just like any framework there are certain things you have to watch out for. What I have discovered is, if you are not careful, you can experience a considerable slowdown in time intensive operations if you are using a lot QStrings. In this article I will demonstrate the problems, and also the solutions! published: false category: technical tags: - c++ - qt ---
There are a lot of methods and functions in Qt that take QStrings as arguments, and I'm sure you have too. But some cases you need to pass a hardcoded string every time- a string literal- for example when comparing strings. In this short example we parse some xml, and compare the tag name to a string:
{% highlight cpp %} void parseNode(QXmlStreamReader& xml) { // assert we are parsing a node Q_ASSERT(xml.isStartElement() && xml.name() == "node"); while (xml.readNextStartElement()) { if (xml.name() == "subNode") { // yell when we see a subNode qDebug() << "found subNode!" } xml.skipCurrentElement(); } } {% endhighlight %}This looks like very innocent code, but if this is part of parsing code that will be called thousands of times when parsing large XML files, QString temporaries rear their head. Where do they come from, you ask? Let's look at that if statement:
{% highlight cpp %} if (xml.name() == "subNode") {% endhighlight %}To understand what's happening, let's break it down into the calls made.
xml.name()
actually returns QStringRef
QStringRef
has bool operator==
that compares
itself to QString
, so we need to make one to compare toQString
has an implicit constructor QString ( const char * str )
Putting all that together we actually get:
{% highlight cpp %} if (operator== ( QString("subNode"), xml.name() )) {% endhighlight %}
We are creating a temporary QString
at each one of those if
statements! Looking at the Qt documentation for the QString
constructor, it converts the const char*
to unicode.
This QString
is then immediately destroyed after the comparison.
What a waste of resources!
At this point you may think to abandon QStrings, and use something likeTinyXml, but how can we deal with our problem in Qt? After all, this isn't just an XML parsing problem, this relates to QString usage in general.
The solution to the problem (or hack if you will), is to define
QString
constants for keywords that are used frequently in string
comparisons. This means the QString
will be created once, and we won't be
dealing with temporary copies and destructions. Here's a simple example:
Of course this would be ridiculous if the constant is used once, but adds up very quickly if it used tens of thousands of times or more.


About MeStock
Summary
text goes here
Projects
text goes here
Experience
text goes here
Education
text goes here
Fun Facts: My Top 10 Favorite Hikes in Hawaii
Kilauea Iki
Volcanoes National Park, Big Island
Pali Puka
Honolulu, Oahu
Koko Head Crater
Honolulu, Oahu
Na Pali Coast
Na Pali, Kauai
Mauna Kea
Big Island
Kiholo Bay
Kona, Big Island
Kaumana Caves
Hilo, Big Island
Pill Box
Honolulu, Oahu
Makapu'u Lighthouse
Honolulu, Oahu
Tantalus
Honolulu, Oahu


2. How to use the Compiler Driver
2.1. Target, Range, and Structure of this Document
This document describes the design and the usage of the COINS
compiler driver for the COINS users.
The COINS is a framework of compiler mainly to support users who
are to construct their own compiler. Thus, its driver part consists
of Java API to create their own compiler driver and a compiler driver
with traditionally fashioned command line interface (CLI) using the
API.
Section two describes about the design and the structure of the
COINS compiler driver. Section three is a users manual of the CLI
driver. Section four describes about an outline of the driver API.
2.2. COINS Compiler Driver
2.2.1. The design
We expect that the COINS users can be categorized into following
two categories:
- Users to implement their own compilers
- Users to compile programs using a compiler implementation packed
in the COINS release, or built by users of another category
Users of the former category may intend to:
- build a new compiler of a newly designed programming language,
- build a new compiler for a newly developed processor,
- integrate a newly designed optimizer into a compiler, and/or
- implement a new compiler interface, and so on.
The "new compilers" may require "new compiler drivers". The COINS
compiler driver provides a driver programming API.
Hereafter, we call a user of the latter category "operator".
When we write "user" without explanation, it doesn't mean the
operators.
Operators (and we) must not be willing to follow some ritual
procedures to use a compiler. Some of them will try "make
CC=newcc", without reading documents. To meet the requirement, a
traditionally fashioned CLI driver is provided. This CLI driver has
many similarities with the gcc (GNU C compiler) in the command syntax
and the basic compile options.
2.2.2. Structure
Figure 2-1 illustrates the structure of the COINS compiler driver.
prepared +---------------------+ +---------------------+ +------------+
by users |driver implementation| |driver user interface| |suffix rules|
+---------------------+ +---------------------+ +------------+
+-----------------------------+ +----------------------------+
API | tracer API / warning API | | compile specification API |
+-----------------------------+ +----------------------------+
+------------------------------------------------------------+
| engine |
+------------------------------------------------------------+
Figure 1-1: The structure of the COINS compile driver
Users should prepare the following three parts if needed:
- Driver User Interface:
The driver user interface is to:
- create a ``compile specification object,'' and
- pass the ``compile specification object'' to the engine.
The compile specification object is a Java object to hold source
files names and the compile options specified by the operator
implicitly or explicitly by the way the driver user interface
provides. It may be by CLI, may be by GUI.
- Driver Implementation:
The driver implementation is to provide following services
called from the engine:
- preprocess
- compile
- assemble
- link
The driver implementation refers the compile specification
object passed from the engine.
- Suffix Rules:
Suffix rules describes which suffix a file should have when a
certain action is taken to a file with a certain suffix.
The COINS release package provides a default suffix rule set
describing C, Fortran and Java suffix rules. Users can provide
their own suffix rules for existing languages and their new
languages.
Each API and the engine have following functions:
- Engine:
Calls services provided by the driver implementation according
to the compile specification passed from the driver user
interface. The resulting files are named according to the
suffix rules.
- Compile Specification API:
Is to create and refer the compile specification object. Target
file names and compile options can be specified / unspecified /
referred.
A special option system named ``COINS options'' is provided to
allow users to implement their own compile options. The driver
user interface can freely define a new COINS option and set a
value to it. The driver implementation can refer it.
- Tracer API:
Interprets trace options specified in the compile specification
object and decides to, or not to write trace messages.
- Warning API:
Interprets warning options specified in the compile
specification object and decides to, or not to write warning
messages.
2.3. How to Use the CLI Driver
2.3.1 CLI Driver
The class coins.driver.Driver provided by the release package is a
CLI-based driver implemented by the COINS driver API, which is
designed to have many similarities with gcc.
The class coins.driver.Driver is the driver implementation and the
class coins.driver.CommandLine is the driver user interface.
2.3.2 Command Syntax
java [java-option ...] coins.driver.Driver [option | filename]...
The command name 'java' may be 'jre' or other command name
according to your Java runtime.
'java-option's are for Java runtime environment, e.g., a -cp option
to use COINS classes. If you deployed the COINS classes at
/usr/local/coins,
java -cp /usr/local/coins coins.driver.Driver [option | filename]
will be enough to load COINS classes to the Java runtime.
2.3.3. Options
Following compile options can be specified:
- -E
- only preprocessing. As for C program, foo.i is generated by
processing foo.c. The output file is produced at the
directory where the input file (foo.c, in the example) is
located. COMPATIBILITY NOTE: gcc produces the output to the
stdout.
- -S
- stops after compilation (in the strict meaning, i.e., the
assembler code generation). As for C program, foo.s is
generated by processing foo.c. The output file is produced
at the directory where the input file (foo.c, in the
example) is located. COMPATIBILITY NOTE: gcc produces the
output to the current working directory.
- -c
- don't link. As for C program, foo.o is generated by
processing foo.c. The output file is produced at the
directory where foo.c is located. COMPATIBILITY NOTE: gcc
produces the output to the current working directory.
- -help
- shows help messages.
- -o file
-
specifies a path name of the output file. The output file
means a preprocessed source file when the -E option is
specified, an assembly code file when the -S option is
specified, an object code file when the -c option is
specified, and the executable file when none of the above
is specified.
- -barch, or -b arch
-
specifies a target architecture, as well as specifying
-coins:target=arch (see -coins:target=arch).
- -pipe
- uses pipelines instead of temporary files to communicate
between passes.
- -Wcategory
-
shows warning messages whose warning category is `category.'
- -Wno-category
-
suppresses warning messages whose warning category is
`category.'
- -C
- preserve comments while preprocessing.
- -Dmacro[=definition]
-
defines a preprocessor macro. `definition' is set to the
macro value when specified.
- -Ipath
-
specifies an include path.
- -P
- inhibits #line directives.
- -Umacro
-
undefines a preprocessor macro.
- -O
-
same as -O1.
- -Olevel
-
specifies an optimization level. The `level' must be a
non-negative integer. Optimizations done at each level are
following:
- -O0
- same as -coins:hirOpt=noSimplify
that does nothing.
- -O1
- same as -coins:hirOpt=cf,ssa-opt=prun/cpyp/cstp/dce/ebe/srd3,loopinversion
- -O2
- same as -coins:hirOpt=cf,ssa-opt=
prun/divex/cse/cstp/hli/osr/hli/cstp/cpyp/preqp/cstp/rpe/dce/srd3,loopinversion
After coins-<IP_ADDRESS>, includes the following additional options:
-coins:regpromote,schedule-after
- -O3
- same as -coins:hirOpt=inline/cf/pre,ssa-opt=
prun/divex/cse/cstp/hli/osr/hli/cstp/cpyp/preqp/cstp/rpe/dce/srd3,loopinversion
After coins-<IP_ADDRESS>, includes the following additional options:
-coins:regpromote-ex,schedule,pipelining
- -O4
- same as -coins:hirOpt=inline/loopexp/cf/cpf/pre,ssa-opt=
prun/divex/cse/cstp/hli/osr/hli/cstp/cpyp/preqp/cstp/rpe/dce/srd3,loopinversion
After coins-<IP_ADDRESS>, includes the following additional options:
-coins:regpromote-ex,schedule,pipelining
- -g
- preserves symbols in an executable file.
- -v
- prints a command line when a sub-process is invoked.
- -Lpath
-
specifies an archive search path.
- -dynamic
-
uses dynamic linkage.
- -static
-
uses static linkage.
- -larchive
-
specifies an archive to link.
- -coins:option
-
See the following section.
2.3.4. -coins Options
-coins:option,option,...
option is a COINS option. Any string not including `,' can be
specified as option.
More than one COINS option can be specified by delimiting
them by `,'s, e.g.
-coins:debug,trace=HIR.1,suffix=/tmp/mysuffixes
is same as
-coins:debug -coins:trace=HIR.1 -coins:suffix=/tmp/mysuffixes
Standard COINS options (which means the options that affects
driver API behavior) are as follows:
- -coins:target=arch
-
- -coins:target=arch-convention
-
specifies a target architecture.
Equivalent to -b arch, or to -b arch-convention.
"-coins:target=arch" is equivalent to
-coins:target=arch-standard
and "-coins:target=arch-convention" is equivalent to
-coins:target-arch=arch,target-convention=convention
-coins:target-arch=arch
specifies a target architecture name. arch
must be one of:
- sparc ...... SPARC architecture (mult/div is a subroutine)
- sparc-v8 ... SUN SPARC (mult/div is a machine instruction)
- x86 ........ Intel i386 architecture
- x86-cygwin .. Intel i386 architecture, cygwin
- x86_64 ...... Intel 64 architecture (comform to AMD64 ABI Draft 0.98) (from coins-1.4.3)
- x86_64-mac .. Intel-Mac architecture (comform to AMD64 ABI Draft 0.98) (from coins-1.4.3)
- arm ........ ARM
- mips ....... MIPS
- sh4 ........ Hitachi SH-4
- ppc ........ IBM PowerPC
- alpha ... Alpha
- thumb ... Thumb (16 bit ARM architecture)
- mb ...... Xilinx MicroBlaze
When this option is specified, the COINS Compiler Driver
specifies -D__arch__ as a preprocessor option, and specifies
the arch to LIR module invocation as a target architecture
name, which will be 'sparc' when this option is not specified.
Note:
All of above target options have been tested by using test programs
under the directory test/c and succeeded to execute correctly
except for a few number of special cases. As for the sparc and x86,
the compiler passed the test by comprehensive test program set
composed of 8000 programs and successfully executed the SPEC
CPU 2000 benchmark programs. (When -O3 option is specified,
some programs in SPEC CPU 2000 fail yet.)
When target=arm is specified, a few programs in SPEC CPU 2000
can be executed successfully but others failed because of
restrictions from test environment and remaining defects
in code generation. As for other targets (mb, mips, ppc,
sh4, thumb, alpha, x86_64), test by SPEC CPU2000 is not yet tried.
The code generators for sparc and x86 support the "long long" type,
while the others do not support it.
-coins:target-convention=convention
specifies a target convention name.
convention can be:
- in case of arch=sparc:
- standard ... standard SPARC convention
- v8 ... mult/div is a machine instruction
- in case of arch=x86:
- standard ... Linux ELF
- cygwin ... cygwin
- in case of arch=x86_64:
- standard ... Linux ELF
- mac ... Intel-Mac (fprintf is not supported)
When this option is specified, the COINS Compiler Driver
specifies the convention to LIR module invocation as a target
architecture convention name, which will be 'standard' when
this option is not specified.
- -coins:preprocessor=prep
- -coins:assembler=asm
- -coins:linker=link
-
specify the preprocessor, assembler, and linker.
The default preprocessor is 'cpp', the default assembler is 'as', and the default
linker is 'gcc'. (The default assembler has been 'gas' until coins-<IP_ADDRESS>.)
If the specified architecture requires different names from these default names,
the required names must be specified as shown in the following examples:
- x8_64-mac
-coins:assembler="as -arch x86_64",linker="gcc -arch x86_64"
- Alpha (linux machine)
-coins:preprocessor=alpha-linux-cpp
- arm, thumb, mb
-coins:preprocessor=XXX-linux-cpp,assembler=XXX-linux-as
where XXX is 'arm', 'thumb', or 'mb'
- mips-linux
-coins:preprocessor=mips-linux-cpp,assembler="mips-linux-as -KPIC"
- MicroBlaze (with EDK8.1)
-coins:preprocessor=mb-cpp,assembler=mb-as
- specification of header files
-
The stdarg.h file for sparc, x86, x86_64, and arm, is in COINS-directory/lang/c/include/stdarg.h. The following command option
-coins:preprocessor="cpp -I../lang/c/include"
specifies to use this file.
For x86_64-mac, a program which contains
#include <stdio.h>
may cause a syntax error. In that case, the program can be compiled by using
simplified header files. Examples of simplified header files are in
COINS-directory/lang/c/include/samples/
Cygwin users may need to specify the following option:
-coins:preprocessor="cpp-3 -I/usr/include"
(-coins:preprocessor="cpp -I/usr/include"
-- in case of using java version older than java 1.6)
- -coins:hirOpt=hiroptspec
- -coins:hirOpt=hiroptspec/hiroptspec/...
-
Do optimizations on HIR.
hiroptspec must be one of following:
cf constant folding
cpf constant propagation and folding
cse common subexpression elimination
dce dead code elimination
fromc simple optimizations done by C parser
gt global variable temporalization within basic blocks
pre partial redundancy elimination
loopexp loop expansion
loopif loop invariant if-statement expansion
inline inline expansion
inlinedepth control recursive inline expansion
globalReform global pattern matching
complexityAllowance control optimization for large programs
See "5.1. How to Use HIR Basic Optimizer" in
5. Optimization for HIR for detail.
- -coins:ssa-opt=option/..
-
specifies SSA optimization options. The options are defined as follows:
- Translation to SSA form
(You MUST specify one of them at the beginning of this SSA option)
- mini : Translation to Minimal SSA form
- semi : Translation to Semi-Pruned SSA form
- prun : Translation to Pruned SSA form
- Back Translation from SSA form
(You MUST specify one of them at the end of this SSA option)
- brig : Back translation using Briggs's Method
- srd1 : Back translation using Sreedhar's Method I
- srd2 : Back translation using Sreedhar's Method II
- srd3 : Back translation using Sreedhar's Method III
- Optimization for SSA form
- cbb : Concatinate Basic Block
- cpyp : Copy Propagation
- cse : Common Subexpression Elimination
- cstp : Constant Folding and Propagation with Conditional Branches
- dce : Dead Code Elimination
- divex : Divide expression into three address code
- ebe : Empty Block Elimination
- esplt : Split Critical Edge
- gra : Global Reassociation
- hli : Hoisting Loop-invariant Code
- lir2c : Make C program from LIR
- osr : Operator Strength Reduction related to Induction Variables
and Linear Function Test Replacement
- preqp : Global Value Numbering and Partial Redundancy Elimination
with Efficient Question Propagation (under development)
- rpe : Redundant Phi-function Elimination
- ssag : Making SSA graph
- glia : Global Load Instruction Aggregation
After coins-<IP_ADDRESS>, the following optimizations for non-SSA forms can be specified:
- Optimization for non-SSA form
- pdeqp : Partial Dead Code Elimination based on Question Propagation
- divex2 : Divide expression into Three-Address Code (divex applied to normal form)
- esplt : Split Critical Edge
- expde : Exhaustive Partial Dead Code Elimination
- ddpde : Demand-Driven Partial Dead Code Elimination
See "8.2. SSA OPTIONS" in
8. SSA Optimization for LIR for detail.
- -coins:lir-opt=option/..
-
- -coins:lirOpt=option/..
-
These can be used after coins-<IP_ADDRESS>.
Options are the same as the options of ssa-opt.
- -coins:parallelDoAll=OpenMP
-
analyze for-loops and generate OpenMP program written in C
to be executed in parallel.
See "6.1. Loop Parallelizer" in
6. Parallelization for HIR for detail.
- -coins:parallelDoAll=n -S
-
where n is an integer number indicating maximum degree of
parallelization. This option specifies to
analyze for-loops and generate assembly language program
that can be executed in parallel by linking with
execution time routines prepared for parallelization.
See "6.1. Loop Parallelizer" in
6. Parallelization for HIR for detail.
- -coins:coarseGrainParallel
- -coins:cgParallel
-
specified to invoke the Coarse Grain Parallelizing
Module. See "6.2. Coarse Grain Parallelizing Module" in
6. Parallelization for HIR for detail.
- -coins:debug
-
Tells that the compiler is under debugging. Same as
-coins:preserveFiles,testHir,testSym.
- -coins:preserveFiles
-
Preserves temporary files.
- -coins:trace=tracespec
- -coins:trace=tracespec/tracespec/..
-
Tracer options.
There are two types of trace messages: categorized
trace messages and generic trace messages. A
categorized trace message have a message category,
and a generic trace message doesn't have message
category.
A trace message may have a message level which is a
non-negative integer value. Trace messages without a
message level are treated as level zero.
In the above form, each tracespec can be in form of
level
or
category.level
where a level is non-negative integer which
represents a trace level, and the category is a
sequence of letters and digits which represents a
message category. The former form specifies the trace
level of a generic trace message (hereafter, a generic
trace level). A generic trace message is printed only
if its message level is less than or equals to the
generic trace level. The latter form specifies the
trace level of categorized messages whose message
category is category. A trace message whose message
category is category is printed only if its message
level is less than or equals to the trace level. For
example,
-coins:trace=2
prints generic trace messages whose message level is
less than or equals to 2;
-coins:trace=HIR.2
prints trace messages of category `HIR' whose
message level is less than or equals to 2.
The available trace categories are:
Control -- What phases and (principal) modules are executed
HIR -- HIR (High level Intermediate Representation) information
Sym -- Sym and symbol table information
Flow -- Control flow and data flow information
Alias -- Alias analysis information
Parse -- C Parser information
ToHir -- C-AST (abstract syntax tree of C) to HIR transformation inf
HIR2C -- HIR-to-C transformation information
Opt1 -- HIR optimizer information
Para1 -- Loop parallelizer information
TMD -- Code Generation information
LIR -- LIR (Low level Intermediate Representation) information
When multiple categories are specified separating by / delimiter,
then trace information for each specified category is printed.
For example,
-coins:trace=Sym.1/HIR.1
prints the symbol table and HIR that are handed from the
front-end to the back-end. When optimization level and
Flow, Opt1 categories are specified in such a way as
-O3 -coins:trace=Sym.1/HIR.2/Flow.1/Opt1.4
then, information of the symbol table, HIR, control flow,
data flow, and optimization process will be printed.
Trace information is useful for understanding the process of
compilation as well as debugging the compiler itself.
When more than one generic trace levels are specified,
or more than one trace levels are specified for a same
category, the latter one overwrites the former one.
For example,
-coins:trace=4/8
prints generic trace messages whose message level is
less than or equals to 8, not 4;
-coins:trace=HIR.4/HIR.2
prints HIR trace messages whose message level is
less than or equals to 2, not 4.
A special category `default' is provided to specify a
trace level of all trace messages other than trace
messages whose trace levels are explicitly specified in
the other tracespecs. For example,
-coins:trace=default.2/HIR.4
prints HIR trace messages whose message level is
less than or equals to 4, and all non-HIR messages
(and generic trace messages) whose message level is
less than or equals to 2.
Note that a large trace level (e.g. 7, 8, 9, etc.) may
produce huge amount of traces.
- -coins:libdir=path
-
specifies a library directory path. See section 2.4.6
about the library directory.
When more than one -coins:libdir options are specified,
only the last one is valid.
- -coins:property=path
-
specifies property file path name. By default, a file
named `property' located at the library directory is
the property file.
See section 2.4.7 about the property file.
When more than one -coins:property options are
specified, only the last one is valid.
- -coins:suffix=path
-
specifies a path name of a suffix database file. By
default, a file name `suffixes' located at the library
directory is the suffix database file.
See section 2.4.8 about the suffix database file.
When more than one -coins:suffix options are
specified, only the last one is valid.
- -coins:suffixoption=option
-
specifies a suffix option.
See section 2.4.8 about the suffix option.
When more than one -coins:suffixoption options are
specified and are conflicting, the latter one overrides
the former one.
- -coins:hirAnal
-
Do HIR flow analysis.
- -coins:hir2c=t1
- -coins:hir2c=t1/t2/.../tn
-
translates HIR into a C program at specified timing.
t1, t2, ..., tn must be one of
new ... just after HIR creation,
flo ... just after data flow analysis on HIR has
been done, and
opt ... after all optimizations on HIR.
When more than one timing specifiers are specified,
HIR is translated at all specified timings.
Generated files are named as r-hir-t.c, where `r' is
the file name root of original source file, and `t' is
the timing specifier. For example,
java coins.driver.Driver -coins:hir2c=new foo.c
will produce foo-hir-new.c as the hir2c result.
Invalid timing specifiers are ignored and the
corresponding file is not generated.
- -coins:lir2c=t1
- -coins:lir2c=t1/t2/.../tn
-
translates LIR into a C program at specified timing.
t1, t2, ..., tn must be one of
new ... just after LIR creation,
opt ... after all optimizations.
When more than one timing specifiers are specified,
LIR is translated at all specified timings.
Generated files are named as r-lir-t.c, where `r' is
the file name root of original source file, and `t' is
the timing specifier. For example,
java coins.driver.Driver -coins:lir2c=new foo.c
will produce foo-lir-new.c as the lir2c result.
Invalid timing specifiers are ignored and the
corresponding file is not generated.
- -coins:stopafterhir2c
- -coins:stopafterlir2c
-
quits compilation of each compile unit just after
generating C source files at all specified timings by
the hir2c/lir2c option. When some invalid timing
specifiers are specified in hir2c/lir2c option,
however, the behavior of the compiler is undefined.
- -coins:testHir
-
Tests HIR integrity after HIR optimization and
parallelization and before converting HIR to LIR.
- -coins:testSym
-
Tests symbol table integrity after HIR optimization and
parallelization and before converting HIR to LIR.
- -coins:preprocessor=preprocessor-command
- -coins:assembler=assembler-command
- -coins:linker=linker-command
-
specifies alternative commands of preprocessor,
assembler, and linker.
In default, the COINS Compiler Driver uses cpp, gas,
and gcc as preprocessor, assembler, and linker. You
can override them by specifying these options.
Following example sets `as' as the assembler.
-coins:assembler=as
Blanks appeared in the command name works as a word
delimiter: e.g., following example sets the gcc as the
preprocessor and an option -E is given to it.
-coins:preprocessor=gcc -E
Do not forget to escape the blanks from your command
interpreter, if it treats blanks as a word delimiter,
too. For example, most of Unix shells can escape
blanks using quotations, e.g.,
-coins:preprocessor="gcc -E"
-coins:preprocessor='gcc -E'
'-coins:preprocessor=gcc -E'
Double quotations will work on Windows, too.
A quotation mark (' and ") and a next appearing same
quotation mark are removed from the string and
characters between them are interpreted as follows:
- a blank is not a word delimiter, and
- the other kind of quotation mark is treated as
itself, not a quotation mark.
This rule can be used to avoid the above rule which
interprets a blank as a word delimiter. For example,
in an environment where the file and directory names
can have blanks in its name, quotation marks can escape
the blank in the command name as follows:
-coins:preprocessor='my cc' -E
In this example, a program 'my cc' is invoked as a
preprocessor with an option '-E'. Do not forget to
escape quotation marks and blanks from your command
interpreter. For example, in Windows, double
quotations will be required as follows:
-coins:preprocessor="'my cc' -E"
Any character following a backslash (`\') is
interpreted as the character itself. A backslash can
be given by a backslash following a backslash. A
quotation mark can be interpreted as itself losing the
special effect described above by following a
backslash. This escape rule can be used to escape a
blank from being interpreted as a word delimiter. For
example, if your environment allows you to include
blanks in file/directory name, you can escape them by
backslashes: e.g.,
-coins:linker=c:\\Program\ Files\\bin_utils\\ld
will set `c:\Program Files\bin_utils\ld' as a linker.
Again, never forget to escape `\'s and blanks from your
command interpreter, if necessary; e.g., in Windows,
-coins:linker="c:\\Program\ Files\\bin_utils\\ld"
- -coins:max-recovered-errors=n
-
When the number of recovered compile errors exceeds n
while executing a compile step of a compile unit, a
compile error is issued. Or, if 0 is specified as n,
no compile error is issued only by increasing the
number of recovered compile errors. A compile step
here is one of preprocess, compile, assemble, and link.
- -coins:max-warnings=n
-
When the number of warnings exceeds n while executing a
compile step of a compile unit, a compile error is
issued. Or, if 0 is specified as n, no compile error
is issued only by increasing the number of warnings. A
compile step here is one of preprocess, compile,
assemble, and link.
- -coins:compile-parallel
-
Compilations of all compile units are executed
concurrently. Do not specify this option while using a
compiler driver which is not implemented in thread-safe
way.
- -coins:loopinversion
-
specifies to invert a loop end condition when the loop
ends with an unconditional jump.
- -coins:regpromote
-
can be used after coins-<IP_ADDRESS>. It
specifies register promotion (the attach option is not needed).
See "11.2.3. Example 3: Register Promotion" in
11. Structure and Extensions of the Backend Process for detail.
- -coins:regpromote-ex
-
can be used after coins-<IP_ADDRESS>. It
specifies extended register promotion (the attach option is not needed)
that promote more variables to registers based on pointer analysis.
- -coins:schedule
- -coins:schedule-after
-
can be used after coins-<IP_ADDRESS> (the attach option is not needed). schedule
specifies instruction scheduline before and after the register allocation.
schedule-after
specifies instruction scheduline after the register allocation.
See "11.2.1. Example 1: Instruction Scheduler" in
11. Structure and Extensions of the Backend Process for detail.
- -coins:pipelining
-
can be used after coins-<IP_ADDRESS> (the attach option is not needed). It
specifies software pipelining.
See "11.2.2. Example 2: Software Pipelining" in
11. Structure and Extensions of the Backend Process for detail.
- -coins:gprof
-
specifies to generate profiling information just like gcc.
This option should be accompanied with the option
-coins:linker="gcc -pg"
By executing the execution-file (a.out, a.exe, etc.),
gmon.out will be generated and user can get profiling
information by executing following command
gprof execution-file
just like gcc.
The test scripts test/c/testdriver_gprof, test/c/testdriverw_gprof.sh
are available to do automatic test and profiling for
a set of test programs.
The gprof option is effective only for sparc and x86 at present.
See
gprof manual
'gprof: A Call Graph Execution Profiler' by S. Graham, P. Kessler, M. McKusick
2.3.5. Input Files
Input files can be listed among options. The engine determines which
passes should be applied to an input file according to its suffix. As for
this suffix rule, see coins.driver.SuffixFactory.
Each output file is generated at the directory where its source file
exists, unless -o option is specified.
2.3.6. Exit Status
The CLI driver returns exit status as follows:
- 0 ... normal termination
- 1 ... abnormal termination
`Abnormal termination' includes I/O error, compile error, etc.
2.3.7 Some Simple Examples
In all examples below, it is assumed that the CLASSPATH environment
variable is set appropriately:
java coins.driver.Driver foo.c
will compile foo.c and generate a.out.
java coins.driver.Driver -o foo foo.c
will compile foo.c and generate foo as an executable binary.
java coins.driver.Driver -c foo.c
will compile foo.c and generate foo.o as an object file.
java coins.driver.Driver -E foo/bar.c baz/boo.c
will preprocess foo/bar.c and baz/boo.c and generate foo/bar.i and
baz/boo.i where `.i' is a suffix meaning `preprocessed C source' in
the default suffix rule.
java coins.driver.Driver -S foo.c bar.i
will compile foo.c and bar.i and generate foo.s and bar.s.
Generally speaking, aliasing `java coins.driver.Driver' as `cc', you
can use COINS C compiler like an ordinary C compiler except some
exceptions; e.g., cc -E will not work as cpp.
2.4. The Driver API
This document describes an abstract.
For a full description, see JavaDoc's of each API class.
2.4.1. Driver User Interface
The function of the driver user interface is as follows:
- Generates a compile specification object representing the
operator specification, and
- Invoke the engine passing the compile specification object and a
driver implementation.
The compile specification object must implements an interface
coins.driver.CompileSpecification.
In the CLI driver, the methods main() and go() of class
coins.driver.Driver correspond the driver user interface. They are
described as follows:
protected void go(String[] args) {
CompileSpecification spec = new CommandLine(args);
int status = new CompilerDriver(spec).go(this);
System.exit(status);
}
public static void main(String[] args) {
new Driver().go(args);
}
The class coins.driver.CommandLine is a compile specification class
for the CLI driver. The class coins.driver.CompilerDriver is the
engine. Since the class coins.driver.Driver is a driver
implementation class, it passes an instance of itself as a driver
implementation.
If you are to build a compiler driver which has a same user
interface as the CLI driver, the above code segment will be reused
without change.
2.4.2. Driver Implementation
The driver implementation provides following services called from
the engine:
- Preprocess
- Compile
- Assemble
- Link
An interface coins.driver.CompilerImplementation is defining the
interface to be implemented by the driver implementations.
In case of the CLI driver, the class coins.driver.Driver is the
driver implementation. The CLI driver is providing the above four
services. Three of the four, i.e., preprocess, assemble, and link are
just call an external program.
2.4.3. Compile Specification
The compile specification must implement an interface
coins.driver.CompileSpecification.
In case of the CLI driver, the class coins.driver.CommandLine is
the compile specification.
2.4.4. Tracer API
Tracer API interprets trace options specified by an operator,
determines whether a trace message should be printed or not, and
prints it if it should.
A driver implementation, and compiler modules called from it, can
use the trace API to put a trace message, specifying a message
category and a message level. A message category can be an arbitrary
string of letters and digits. A message level must be a non-negative
integer.
A trace option is a set of pairs of a trace category and a trace
level. The tracer API prints a trace message if its message level is
less than or equal to the trace level of the trace category which is a
same string with the message category.
To obtain an instance of a Tracer API, which knows trace options
specified by an operator, use a method
CompileSpecification#getTrace().
2.4.5. Warning API
Warning API interprets warning options specified by an operator,
determines whether a warning message should be printed or not, and
prints it if it should.
A driver implementation, and compile modules called from it, can
use the warning API to put a warning message, specifying a warning
category. A warning category can be an arbitrary string of letters
and digits.
A warning option is a set of warning categories which should be
printed and a set of warning categories which should not be printed.
The warning API prints warnings specified to be printed.
To obtain an instance of Warning API which knows warning options
specified by an operator, use a method
CompileSpecification#getWarning().
2.4.6. Library Directory
Compiler modules can be designed configurable and thus require
configuration files for them. For example, the driver API is designed
to allow operators preparing following configuration file:
- Property file (see section 2.4.7)
- Suffix database file (see section 2.4.8)
A library directory is a directory at where the configuration files
should be located.
A compiler module can ask the COINS driver API where the library
directory is, i.e., use a method CoinsOptions#getLibDir() to an
instance of class.driver.CoinsOptions, which can be obtained by a
method CompileSpecification#getCoinsOptions(). A COINS user can let
an operator to prepare a configuration file at his/her library
directory and let a compiler module to read the file using the API.
If a -coins:libdir=path option, which is one of the COINS options,
is specified, the driver API returns path as the library directory
path name. If not specified, the driver API searches a directory
named `coins' at the operators home directory (`user.home' property
value returned by the Java runtime) and returns its path name if it is
found. If not found, a relative path name which represents a current
working directory is returned as the library directory path name.
2.4.7. Property File
When applying COINS to develop a compiler, a relatively long COINS
options including tracer, warning, and user own options may be
required at each compilation. A `property file' functionality is to
improve such a situation by storing the options in a file and give the
file to the compiler.
By default, a file named `properties' in the library directory (see
section 2.4.6) is treated as a property file.
Since some operators may change the property file location, it is
changeable at creating compile specification. Interpretation of the
property file is done at that time by class coins.driver.CoinsOptions.
The property file may be written in arbitrary format which can be
read by a method java.utils.Properties#load(). An example follows:
debug:
trace: HIR.4
suffix: /tmp/mysuffixes
This example is exactly same as giving a following COINS option to the
CLI driver.
-coins:debug,trace=HIR.4,suffix=/tmp/mysuffixes
2.4.8. Suffix Rules
A suffix rule is a rule to determine which pass should be applied
to an input file and which suffix should be given to the output file.
The COINS release package has a default suffix database file which
contains suffix rules for C, Fortran, and Java.
By default, a file named `suffixes' under library directory (see
section 4.6) is treated as a suffix database file. If not found,
following default is used:
#SRD, 2, Suffix rule DB file, format version 2
c, C, C source, i,s,o
c(out-newlir), C, C source, i,lir,-
i, C, preprocessed C source, -,s,o
cc/cpp/cxx/C, C++, C++ source, ii,s,o
ii, C++, preprocessed C++ source, -,s,o
java, Java, Java source, -,class,-
java(native), Java, Java source (native compile), -,s,o
f, FORTRAN, FORTRAN source, -,s,o
f(out-newlir), FORTRAN, FORTRAN source, -,lir,o
lir, LIR, new LIR, -,s,o
S, Assembler, assembly source (need preprocess), s,-,o
s, Assembler, assembly source, -,-,o
Detail of this file format is described in a JavaDoc document of
class coins.driver.SuffixFactory.java. Roughly speaking, it is a
sequence of records each of which is in structure of:
suffix, language name, meaning, suffixes after preprocess, compile, and assemble.
Since some operators may change the suffix database file location,
it is changeable at creating compile specification. Interpretation of
the property file is done at that time by class
coins.driver.SuffixFactory.
2.4.9 .`settings' File
While compilation, various information is required because
compilation is an essentially complicated process. There can be some
information which differs site by site, e.g., a special library path,
an OS name, and so on. Thus, there needs a way to read site-local
settings. `Settings' file is designed to keep such site-local
settings
coins.driver.Driver reads settings file by a method
java.utils.Process#load() from a library directory if it exists, and
stores the contents to a member variable named `defaultSettings'.
For coins.driver.Driver, valid properties are:
- defaultLinkerOptions
Always specified linker Options. Can be used for the
situation such that some -L and -B options are always
required.
- systemIncludePath
Include path options (-Ipath) always specified. The COINS
stdarg.h can be used by this property.
The following is an example of the settings file
(as for libf2cLocation, see " 4.2.2 Fortran Driver Setup " of
How to use Fortran 77 Compiler).
(This example is applicable after coins-1.4.5.)
systemIncludePath ./lang/c/include ./lang/c/include/samples
defaultLinkerOptions /usr/lib
libf2cLocation ./lnag/fortran
Compiler modules of COINS and drivers other than
coins.driver.Driver can use this mechanism to read their site-local
settings.
2.5. Known Bugs and Restrictions
Known bugs and restrictions of release 1.0 is as follows.
2.5.1. Known bugs
- Compilation may not terminate:
A long period of continuous compilation may leave an assembler
process unterminated.
2.5.2. Restrictions
- An option -b arch is not given to a linker command.
Although a naming convention of target architecture of the COINS
compiler infrastructure differs from the one of the GNU CC, used
as a linker in the COINS compiler infrastructure, no conversion
method between them is implemented currently. Thus, specifying
target architectures differing from the default architecture of
the GNU CC cause linker errors. This problem can be avoided by
several ways; e.g., specifying -coins:linker=linker-command to
invoke the GNU CC with appropriate options.
- -coins:lir2c has following restrictions:
- function pointers
lir2c cannot convert function pointer declarations into
proper C codes.
- pointer variables
lir2c converts pointer variable declarations into int
variable declarations.
- signed and unsigned
lir2c converts unsigned variable declarations into signed
variable declarations.
- global variable initializations
lir2c removes definitions and initializations of variables
outside of functions.
- Phi functions
lir2c cannot convert Phi functions, created in SSA
optimizations invoked by -coins:ssa-opt options.


After watching Simon Sinek’s TED talk ”How Great Leaders Inspire Action” I thought how the golden circle could be applied to startups. The central question in the golden circle is “why”. Why are you doing what you are doing?
In this post I’m not going to explain what is the golden circle and why it is so important. If you have not watched the talk, stop now reading and go to watch.
“People don’t buy what you do; they buy why you do it.”
This is the main message of the talk. So what could startups do to show off their “why”?
The “why” can be anything between your values and beliefs to desire of changing the world and making it better place to live. Showing the “why” practically can be as simple as coming up with a good and catchy slogan and as complex as defining company’s strategy.
But to make it clear I came up with five practical things that you can do to show the “why” of your startup.
Express your passion of the subject
Constantly research the subject area. Blog about your findings. Share related news. Discuss allied topics on forums. Show that you are really interested in the subject and not hesitating to spend your valuable time on it. People who have the same passion will follow you.
Write down your values
Have a section where you tell about your values and beliefs. And that should not be something hidden deep under About / Corporate / Management / Values menu. Put it right on the first page, so anyone visiting your site could see it. People who share the same values will follow you.
Show the destination
Present the future as you envision. Tell how do you see the world with your ideas implemented. What they can expect? If they take the journey with you, where they will end up? People who want to get there will follow you.
Tell the story
Behind every initiation there is a story. Why did you decide to do what you do? How it happened that you came up with the idea? Find your story and tell. People who find your story familiar will follow you.
Introduce your team
People behind the scene are the most important part of your startup. Your team mates probably have the same values and beliefs. Show your team. And put it on the first page. People who want to be part of that team will follow you. Some of them even may want to work with you.
These ideas represent my imagination on what could I do to answer the question “why”. It does not pretend to completeness or even correctness.
So what are some of your methods of showing the “why” of your startup?


4 homeless men dead, 4 sick in suspected poisoning in Brazil
by The Associated PressSAO PAULO — Four homeless men are dead and four other people are hospitalized in critical condition after drinking from a bottle containing a “suspicious liquid” given to them by unidentified people, Sao Paulo police report.
Police are investigating the case as a possible mass poisoning in the neighbourhood known as “Cracolandia,” or “Crackland,” which is infamous for open drug use.
A police statement said a survivor told authorities that the seven men and one woman were offered a bottle they believed contained alcohol Saturday. After drinking it they became sick and four of the men later died in the hospital. The four survivors are in serious condition.
Police are testing the contents of the bottle, which they described as a “suspicious liquid,” and are searching for the people who provided the bottle.
The Associated Press


Details
Sub Tasks 0">({{dtTask.length}})
Comments 0">({{dtComment.length}})
Assign to
{{user.U_NAME}}
Due dateDue timeStart dateStart timeProject
(No Project)
{{project.Code}} - {{project.Name}}
Project WBS
(No WBS)
{{wbs.TaskCode}} - {{wbs.TaskName}}
Business Partner
(No BP)
{{bp.CardName}}
Created {{common.formatCreateDate(task.CntctDate, 'on ')}} , by {{getUserName(task.AssignedBy)}}


Waveguide
Waveguide builds and/or runs a Nix expression on a freshly provisioned machine.
Waveguide performs the following six steps:
doctl compute droplet create
nix-x.x-install.sh
git clone
nix-build
ornix run
s3cmd sync
doctl compute droplet delete
Credentials
The steps 1, 2, and 3 require credentials:
- Creating a new Dropet on DigitalOcean requires an API key.
- Cloning a Git repository through the Git protocol requires a private SSH deploy key.
- Uploading the build logs, and optionaly the Nix results, requires a secret S3 access key.
Input
Beside the credentials described above, Waveguide is parametrized with:
- The Nix install script version.
- The Git repository URL and revision.
- Optionaly the name Nix expression attribute names to build.
- Optionaly the command to run with Nix.
- The S3 path to upload the logs.
- Optionaly the S3 path to cache the Nix results.
If neither a list of attribute names or a command are given, Waveguide instrospects the Nix expression and builds all the found attributes.
Output
Waveguide produces logs and optionaly populate a Nix cache on S3.


Our website templates are created with inspiration, checked for quality and originality and meticulously sliced and coded. What’s more, they’re absolutely free! You can do a lot with them. You can modify them. You can use them to design websites for clients, so long as you agree with the Terms of Use. You can even remove all our links if you want to.
Looking for more templates? Just browse through all our Free Website Templates and find what you’re looking for. But if you don’t find any website template you can use, you can try our Free Web Design service and tell us all about it. Maybe you’re looking for something different, something special. And we love the challenge of doing something different and something special.
If you’re experiencing issues and concerns about this website template, join the discussion on our forum and meet other people in the community who share the same interests with you.
Template details
Version 3
Website Template details, discussion and updates for this Business Solutions template. Website Template design by Free Website Templates.
Please feel free to remove some or all the text and links of this page and replace it with your own About content.


Al-Jubeir calls for ‘deterrence not appeasement’ to halt Iranian aggression towards Saudi Arabia
RIYADH: The futuristic electric car known as Car 2030 was auctioned at the Riyadh Motor Show for SR3,204,500 ($854,489) on Saturday.
The car was unveiled by Turki Al-Asheikh, chairman of the General Entertainment Authority and president of Riyadh Season.
The black and green electric supercar is suitable for all roads, unlike other sports cars. Its roof and body are made of a mixture of aluminum, fiber and carbon.
Al-Asheikh said there will only be one Car 2030 in the world, and it was manufactured specifically for the Riyadh Motor Show, which will last until Thursday.


Bootstrap Template analysis and Graphics
Bootstrap Template Analysis
This is my final selection of my template: https://startbootstrap.com/template-overviews/heroic-features/
Looking at the HTML: Taking what I learned from bootstrap I can see a lot of lists, divs, and the use of Jumbotron
Looking at the CSS: most of the class that represents the div defines the margin, the font size and the text decoration.
3. I know I am going to have to make 4 additional pages that will hold all of my content while also changing the a href
to the file name that will redirect it to the content.
I also know that I have to add an image that represents the card. I know I have to make the content more personalized by
using css to change colors, margins, borders.
I will also have to personalize the navbar with my content by also linking the files in place of the # in the a href tags
Graphic Editing
I will be using pixlr.com to crop, resize, and export
To Crop: The function is under the image tab
To Resize: Under the image tab click image or canvas size and resize based on your site length
To Export: Save format that gives me options of .jpeg and .png
Exporting Design Assets
.svg- scalable vector graphics
Icons, logos, ideal way to put up graphics
svgomg can compress the file to get a smaller file
.png and .jpeg
Exporting with the right size
Tinypng.com


--- layout: post title: Cubeacon Developer Documentation cover: cover.jpg date: 2014-07-17 18:00:00 categories: posts ---
Welcome to the Cubeacon Developer docs! This site documents from top-to-bottom, covering guides for Cubeacon Cloud Services, iOS and Android Software Development Kit.
|
|


${ticbpc} for ${filename}
scans: ${scans}, survey scans: ${survey_scans}, length: ${acq_length} minutes
left-drag to zoom, left-click to open individual scans


Managed Clients
Machine Type
OS X Version
Last Check In
Compliance Report
Machines Out Of Compliance
Applications Out Of Date
OS X Updates
160/690
Adobe Flash
310/690
Microsoft Office
480/690
Symantec Endpoint Protection
250/690
Changes In Progress
| Change # | Description | Status |
|---|---|---|
| 000000OR9842 | Enable Flash Update | In Process |
| 000000OR1848 | Enable Microsoft Office 2016 in Self Service | In Process |
| 000000OR7429 | OS X Security Updates | In Process |
| 000000OR7429 | Update JSS from 9.73 to 9.81 | In Process |


| Package | Description |
|---|---|
| com.hcl.domino | |
| com.hcl.domino.admin.replication |
| Class and Description |
|---|
| Replication |
| Class and Description |
|---|
| GetDocumentsMode
Control flags for NSFDbGetNotes.
|
| ReplicaInfo |
| ReplicaInfo.Priority |
| Replication.Action |
| Replication.IDocumentOpenCallback
This function is called for each document retrieved.
|
Replication.IFolderAddCallback
GetDocumentsMode.GET_FOLDER_ADDS is specified but GetDocumentsMode.APPLY_FOLDER_ADDS is not,
this function is called for each document after the Replication.IDocumentOpenCallback function is called |
| Replication.IGetDocumentsCallback
Called once before any others but only if going to a server that is R6 or greater.
|
| Replication.IObjectAllocCallback
If
GetDocumentsMode.SEND_OBJECTS is specified and objectDb is not NULL,
this function is called exactly once for each object to provide the caller with information
about the object's size and ObjectID. |
| Replication.IObjectWriteCallback
This function is called for each "chunk" of each object if
GetDocumentsMode.SEND_OBJECTS
is specified and objectDb is not NULL. |
| Replication.ReplicationHistoryFlags
Optional flags that can be used with
Replication.getReplicationHistory(Database, Set) . |
| ReplicationFlags
Replication flags
NOTE: Please note the distinction between ReplicationFlags.DISABLE and
ReplicationFlags.NEVER_REPLICATE . |
| ReplicationHistorySummary
One entry of the database replication history
|
| ReplicationHistorySummary.ReplicationDirection
These values describe the direction member of the
ReplicationHistorySummary
entry (the direction of the replication in the replication history). |
Copyright © 2019–2021 HCL. All rights reserved.


DOJ to Block Trump Administration's Plan to Restart Federal Executions
by VladTVAccording to Attorney General William Barr, the Trump administration’s decision to restart federal executions was blocked by a district court judge for a temporary amount of time.
Barr issued a statement saying, “There are people who would say these kinds of delays are not fair to the victims, so we can move forward with our first group." There are currently five people on death row, and if the government wins their appeal, those execution process could begin as soon as December 9. Stay tuned for more updates.
source: Newsweek


{% extends "layout.html" %} {% block page_title %} GOV.UK prototype kit {% endblock %} {% block content %} {% include "includes/phase_banner_alpha.html" %} {% include "includes/breadcrumbs/register-back.html" %} Review your PAYE schemes Please review the PAYE schemes you have added to your apprenticeship account PAYE scheme reference number PAYE scheme 846/A246 Remove 846/A249 Remove 846/A250 Remove 846/A260 Remove Save and add another set of PAYE schemes {% endblock %}
Please review the PAYE schemes you have added to your apprenticeship account
Save and add another set of PAYE schemes


I'm a Celebrity: Caitlyn Jenner risks punishment by sneaking food to Ian Wright
I’m a Celebrity’s Caitlyn Jenner could find herself in serious trouble after bringing back food from the luxury roast dinner back into camp.
The 70-year-old reality star was seen dining with nine of the 12 campers, with Ian Wright, Cliff Parisi and Andy Whyment missing out on the banquet after Roman Kemp and James Haskell failed to get the stars during an ‘impossible’ live Bushtucker Trial.
Arriving back in camp after the dinner, Caitlyn went over to Ian, who was moping in his hammock.
She then pulled a corn on the cob and some chicken from her pocket, sliding them to Ian who, after becoming known for being ‘hangry’ throughout camp, wolfed it down.
‘I don’t think you’ve got any I defy you lot to find any!.’
But while it was certainly a good deed from Caitlyn, it may well be a case of no good deed goes unpunished, as part of the task terms were only those whose stars were won could eat the luxury food.
Advertisement Advertisement
Metro.co.uk has contacted ITV for comment about their potential punishment.
Roman Kemp was also seen struggling without the other three members of the camp at the banquet, which was stacked with roast chicken, Yorkshire puddings, vegetables and gravy.
‘I thought it was a mirage. I can’t help but think about Ian, Cliff and Andy, but I also can’t help but think about cauliflower cheese.,’ he joked to the Bush Telegraph.
‘The whole thing feels tainted,’ he later added. ‘I feel just awful. But I also can’t stop eating.’
Tonight’s episode was an emotional one with all 12 campers getting care packages from home – including treats and notes from their loved ones.
I’m A Celebrity…Get Me Out Of Here continues nightly at 9pm on ITV.
Got a showbiz story? If you've got a celebrity story, video or pictures get in touch with the Metro.co.uk entertainment team by emailing us<EMAIL_ADDRESS>calling 020 3615 2145 or by visiting our Submit Stuff page - we'd love to hear from you.


We need this information so that you can post articles. Rest assured your information will not be sold, traded, or given to anyone.


Hi, FIRSTNAME
It's good to hear from you! I'm glad you liked my train. Trains make for great metaphors because they always keep going, no matter what happens.
If you can emulate the tenacity of the train, you will have a great career ahead of you :).
Sandra Silvern
Managing Consultant / Haka Manager


Lithuania is the largest and most populous of the three Baltic Republics, lying on the Baltic Sea south of Latvia.
Lithuania became a member of the European Union on 1 May 2004.
Its coast is only some 60 miles long, half of which is on the Courland Spit (Neringa in Lithuanian, Kurshskaya kosa in Russian), a long, narrow sandbar, sheltering the Courland lagoons which can be reached from Klaipeda.
Shallow drafted boats can use the inland waterway that links Klaipeda with Kaliningrad, in the Russian enclave between Poland and Lithuania. Cruising opportunities are few, although shallow drafted boats may explore the northern part of Kurskiy Zaliv, the large inland body of water fronting the Russian enclave of Kaliningrad.
Weather
Summers are generally cool and winters mild.
For links to free global weather information, forecast services and extreme weather information see the Noonsite Weather Page


--- layout: post title: Diaspora Bug Mash Mondays date: 2012-01-31 15:03:43.000000000 -08:00 type: post published: true status: publish categories: tags: [] meta: _edit_last: '1' _wp_old_slug: '189' author: login: admin email<EMAIL_ADDRESS>display_name: admin first_name: Carina C. last_name: Zon ---
Diaspora*; is a Ruby on Rails-based distributed social networking open source project. New to open source coding? Welcome to Diaspora* Bug Mash Mondays:
"We've sorted through our GitHub issues to find bugs that can be readily fixed and committed by beginners…
Every Monday, 5 bugs with descriptions and links will be posted on the devblog, inviting anyone out in the community to jump in and do their part. At the end of each week, we'll publicly recognize those community members that jumped in on the blog itself, and if your fixes pass testing, we'll accept it into our mainline branch.
Bug Mashing is a great way to welcome in new blood to the community."
Sean Tilley, Diaspora* Core Team


Average value of sales in the past month in: United states
All sales: 162,862
All sales: 162,862
$ 50,992
Half-year revenue margin
Sales marketing.
Update on 16.07.2015
Analysis of sales: The value has been changed over time, and last month reached a level over $50,000.
Today
Vistits
22 285,400
20%
New orders
Monthly
Orders
60 420,600
40%
New orders
Annual
Income
$ 120 430,800
16%
New orders


I love Homebrew, but sometimes it really gets me down, you know? Especially when I have to deal with launchctl.
+
launchctl loads and unloads services that start at login. In OS X, these services are represented by files ending with .plist (which stands for “property list”). These plists are usually stored in either ~/Library/LaunchAgents or /Library/LaunchAgents. You load them (i.e. tell them to start at login) with launchctl load $PATH_TO_LIST and unload them with launchctl unload $PATH_TO_LIST. Loading a plist tells the program it represents (e.g. redis) to start at login, while unloading it tells the program not to start at login.
+
This post-install message from Homebrew may look familiar:
+
To have launchd start mysql at login:
ln -sfv /usr/local/opt/mysql/*.plist ~/Library/LaunchAgents
Then to load mysql now:
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
Or, if you don’t want/need launchctl, you can just run:
mysql.server start
+
Doing all that takes too long, and I can never remember where Homebrew plists are. Fortunately, Homebrew includes a lovely interface for managing this without using ln, launchctl or knowing where plists are.
brew services
+
First, install brew services by tapping gapple/services (one time):
+
brew tap gapple/services
+
Here’s an example usage:
3
$ brew services start mysql
==> Successfully started mysql
(label: homebrew.mxcl.mysql)
+
Behind the scenes, brew services start is doing everything in the post-install message above. First it runs ln -sfv … for you. Then it runs launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist. It Just Works.
+
Let’s say MySQL’s acting funky. We can easily restart it:
+
brew services restart mysql
Stopping mysql
… (might take a while)
==> Successfully stopped mysql
(label: homebrew.mxcl.mysql)
==> Successfully started mysql
(label: homebrew.mxcl.mysql)
+
Now let’s see everything we’ve loaded:
+
$ brew services list
redis started 442 /Users/gabe/Library/LaunchAgents/homebrew.mxcl.redis.plist
postgresql started 443 /Users/gabe/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
mongodb started 444 /Users/gabe/Library/LaunchAgents/homebrew.mxcl.mongodb.plist
memcached started 445 /Users/gabe/Library/LaunchAgents/homebrew.mxcl.memcached.plist
mysql started 87538 /Users/gabe/Library/LaunchAgents/homebrew.mxcl.mysql.plist
+
Note that the list of services includes services you started with launchctl load, not just services you loaded with brew services.
+
Let’s say we uninstalled MySQL and Homebrew didn’t remove the plist for some reason (it usually removes it for you). There’s a command for you:
+
$ brew services cleanup
Removing unused plist /Users/gabe/Library/LaunchAgents/homebrew.mxcl.mysql.plist
+
Kachow.
Hidden Homebrew commands
1
Homebrew ships with a whole bunch of commands that don’t show up in brew –help. You can see a list of them in the Homebrew git repo. Each file is named like brew-COMMAND, and you run them with brew command. I recommend brew beer.
What’s next
+
If you liked this, I recommend reading through Homebrew’s Tips and Tricks. You can also try out another Homebrew extension for installing Mac apps: homebrew-cask.


How good are you (and other humans) at knowing when text has been written by a computer?
How many sentences can a computer write before it no longer has you fooled?
Is the computer better at generating convincing text if the topic is news, or short stories, or maybe presidential speeches?
And lastly, when you notice text has a mistake in it that gives it away as computer-generated, how easy is it to fix that mistake?
In this research project, we're asking for YOUR help to answer these questions.
If you're familiar with the Turing Test, you'll be participating in a similar experiment!
Ever see Blade Runner?
In a world where artificial intelligence powers more and more of our interactions, it's good
practice to stay vigilant online.
RoFT lets you evaluate just how good you are at noticing whether text has been generated by a machine.
Try your skills at different domains, and hone your detection skills!
You can even earn yourself bragging points by vying for a spot on the leaderboard.
Plus, do all this while aiding in academic research! We especially interested in which domains are harder/easier for humans
to notice generated text in, and how the amount of randomness in the generated text impacts how easy the game is.
Your contributions will be used to answer these research questions.
It's free to participate!
Welcome back!
Made by researchers at the University of Pennsylvania. Art credit to Trung Le.


RayTracer
symcpp
ComplexToken
Public Types
|
Public Member Functions
|
Public Attributes
|
List of all members
symcpp::ComplexToken Struct Reference
Collaboration diagram for symcpp::ComplexToken:
[
legend
]
Public Types
enum
Type
{
VAR
,
SIN
,
COS
,
EXP
,
LOG
}
Public Member Functions
ComplexToken
()
Type
get_type
()
Public Attributes
std::string
name
Member Enumeration Documentation
◆
Type
enum
symcpp::ComplexToken::Type
Enumerator
VAR
SIN
COS
EXP
LOG
Constructor & Destructor Documentation
◆
ComplexToken()
symcpp::ComplexToken::ComplexToken
(
)
inline
Member Function Documentation
◆
get_type()
Type
symcpp::ComplexToken::get_type
(
)
inline
Member Data Documentation
◆
name
std::string symcpp::ComplexToken::name
The documentation for this struct was generated from the following file:
src/symcpp/
SymbolicGraph.cpp
Generated by
1.8.15


--- layout: post status: publish published: true title: VMworld 2009 - Keynote P4 author: display_name: iguy login: iguy email<EMAIL_ADDRESS>url: '' author_login: iguy author_email<EMAIL_ADDRESS>wordpress_id: 248 wordpress_url: http://itsjustanotherlayer.com/?p=248 date: !binary |- MjAwOS0wOS0wMiAxNTo0MTozMSAtMDUwMA== date_gmt: !binary |- MjAwOS0wOS0wMiAxNTo0MTozMSAtMDUwMA== categories: - VMware tags: - keynote - VMware - vmworld - vSphere comments: - id: 65 author: VMworld 2009 (San Francisco) – Linkage » Yellow Bricks author_email: '' author_url: http://www.yellow-bricks.com/2009/09/07/vmworld-2009-san-francisco-linkage/ date: !binary |- MjAwOS0wOS0wOCAwNjo0NTo0NSAtMDUwMA== date_gmt: !binary |- MjAwOS0wOS0wOCAwNjo0NTo0NSAtMDUwMA== content: ! '[...] – VMworld 2009 Day 2 keynote – P1 – P2 – P3 – P4 – [...]' - id: 9947 author: vBrainstorm.com – VMworld 2009 San Francisco, Day 3, Early PM Edition. author_email: '' author_url: http://vbrainstorm.com/vmworld-2009-san-francisco-day-3-early-pm-edition/ date: !binary |- MjAxNS0wMi0wNiAxOToyMDowNyAtMDYwMA== date_gmt: !binary |- MjAxNS0wMi0wNyAwMToyMDowNyAtMDYwMA== content: ! '[…] 2009 – Keynote P5 VMworld 2009 – Keynote P4 VMworld 2009 – Keynote P3 VMworld 2009 – Keynote P2 VMworld 2009 – Day 2 Keynote – […]' ---
vSphere is the basis of all the improvements and technology over the years. Based on Software Mainframe (for those of you over 40), the Cloud (for the under 40 crowd) and decides the best idea is to call it The Giant Computer. The reason this all works is because of VMotion. It is the basis of all that has happened.
The reason for the success of VMotion is Maturity, Breadth, Automated Use.
Maturity of VMotion - Estimates (fun or not) put around 360 million VMotions around the world since VMotion started. About 2 VMotions a second around the world. VMotion is 6 years old. (Wow I feel old)
Breadth of VMotion - Storage & Network VMotioning. Across protocols and soon across Datacenters. High performance computing systems are starting to look at using VMware.
Automation of VMotion - DRS is the initial version that made this work. DRS has been shown to average 96% of a perfect performance environment compared to a manually setup cluster in a perfect world. Future will include IO DRS shares and configuration based on IOPS. DPM allows for power optimization across the datacenter. Or as has been said a Server Defrag capability.
vSphere is still driving ahead.. more next post.


SaaS vendor security.
Rational Security: On-Demand SaaS Vendors Able to Secure Assets Better than Customers?
An interesting post from Hoff on whether having data with SaaS vendors may leave you more or less secure overall.
I've had a couple of experiences of this over the years and I'll say that generally where I'm seeing data hosted out of the company using SaaS I tend to get less of a feeling of security rather than more.
A couple of reasons for this. Using SaaS adds complexity to areas like leavers/movers/starters procedures as there's another notification point for these, and as we know most companies aren't perfect at leavers policies, so you can introduce risks that people who have left can still get access to company data.
Also there's no really good way to easily assure the 3rd parties security. As Hoff alludes to, a lot of companies think SAS70 == Security, which just ain't the case (although it can be useful for getting assurance over the performance of some security related procedures). So you're left with either engaging in a lengthy assurance process which probably isn't practical if you have a lot of SaaS vendors, or relying on a combination of Pen Test/SAS 70/contract.
Of course, this is complicated even more where the SaaS vendor outsources some of their functions like site hosting, as then you have hierarchies of trust with each agent having similar difficulties in trying to assure the security of the companies they rely on.


// Interfaces and modules for UIA Events
// Contains family-specific modules for UIA
// Contains Timestamp providers for C64P devices
// Contains Timestamp providers for C66 devices
// Contains Timestamp provider for DM816X device
// Global timestamp support for DM Timers on DRA7xx device
// Contains general purpose UIA loggers
// Contains core UIA modules
// Contains scripts for collecting and processing UIA data from a target
// Contains tool for reading and decoding UIA data over Ethernet
// Contains UIA Real Time Analysis modules
// Contains specialized UIA loggers and transports
// Basic runtime support for RTSC programs
generated on Wed, 28 Aug 2019 19:03:51 GMT


Across: 1.  (7) 5. Cooked teas in bar (7) 9. He moves first - he runs about! (7) 10. Pat goes around with secret police (7) 11. Freedom comes after quiet remark (9) 12. Mahler leaves hot kingdom (5) 13. Fear of adder? (5) 15. Cold sailor leads protest about the French carriage (9) 17. Pirate gets drink out of copper-backed tin (9) 19. Clark’s end of the house? (5) 22. Brother Short goes round old city with donkey (5) 23. Pragmatic about a chip found under table (9) 25. Is 19 this man? (7) 26. Spikes little devil’s drinks (7) 27,20dn. Toy balloons nut burst in Pete’n’Dud’s show (3 4 3 4) 28. Backing one hundred and ten Poles to get ideas (7) Down: 1. Fashionable drink princess knocked back was rather weak (7) 2. One gallery holds half of Miro copy (7) 3. In France you and I take in race together (5) 4. Boil beetle with second aunt’s husband (9) 5. Cheat and regret letting in own goal (5) 6. Stating that 22 may be in pain, we are told (9) 7. Follow Virginia in to work (7) 8. Dido or Matthew took in wimp (7) 14. Harsh doctor, a 16, grabs one! (9) 16. Bans Scotsman - possibly a vandal! (9) 17. Young master Chaney in old garden city (7) 18. Fruit of the moment, we hear (7) 20. see 27 across 21. Reasons why divorcee sticks around Bob (7) 23. Girl goes round grand old school (5) 24. Redhead leaves turnip as contribution (5)