--- layout: data_model title: PEOptionalHeaderType this_version: 1.1 ---
The PEOptionalHeaderType type describes the PE Optional Header structure. Additional computed metadata, e.g., hashes of the header, are also included.
| Field Name | Type | Description |
|---|---|---|
| Magic0..1 | HexBinaryObjectPropertyType |
Specifies the unsigned integer that indicates the type of executable file. |
| Major_Linker_Version0..1 | HexBinaryObjectPropertyType |
Specifies the linker major version number. |
| Minor_Linker_Version0..1 | HexBinaryObjectPropertyType |
Specifies the linker minor version number. |
| Size_Of_Code0..1 | HexBinaryObjectPropertyType |
Specifies the size of the code (text) section. If there are multiple sections, size is the sum of the sizes if each. |
| Size_Of_Initialized_Data0..1 | HexBinaryObjectPropertyType |
Specifies the size of the initialized data section. If there are multiple sections, size is the sum of the sizes if each. |
| Size_Of_Uninitialized_Data0..1 | HexBinaryObjectPropertyType |
Specifies the size of the uninitialized (bss) data section. If there are multiple sections, size is the sum of the sizes if each. |
| Address_Of_Entry_Point0..1 | HexBinaryObjectPropertyType |
Specifies the address of the entry point relative to the image base when the executable is loaded into memory. When there is no entry point (e.g., optional for DLLs), the value should be 0. |
| Base_Of_Code0..1 | HexBinaryObjectPropertyType |
Specifies the address that is relative to the image base of the beginning-of-code section when it is loaded into memory. |
| Base_Of_Data0..1 | HexBinaryObjectPropertyType |
Specifies the address that is relative to the image base of the beginning-of-data section when it is loaded into memory. |
| Image_Base0..1 | HexBinaryObjectPropertyType |
Specifies the preferred address of the first byte of image when loaded into memory; must be a multiple of 64 K. |
| Section_Alignment0..1 | HexBinaryObjectPropertyType |
Specifies the alignment (in bytes) of sections when they are loaded into memory. |
| File_Alignment0..1 | HexBinaryObjectPropertyType |
Specifies the factor (in bytes) that is used to align the raw data of sections in the image file. |
| Major_OS_Version0..1 | HexBinaryObjectPropertyType |
Specifies the major version number of the required operating system. |
| Minor_OS_Version0..1 | HexBinaryObjectPropertyType |
Specifies the minor version number of the required operating system. |
| Major_Image_Version0..1 | HexBinaryObjectPropertyType |
Specifies the major version number of the image. |
| Minor_Image_Version0..1 | HexBinaryObjectPropertyType |
Specifies the minor version number of the image. |
| Major_Subsystem_Version0..1 | HexBinaryObjectPropertyType |
Specifies the major version number of the subsystem. |
| Minor_Subsystem_Version0..1 | HexBinaryObjectPropertyType |
Specifies the minor version number of the subsystem. |
| Win32_Version_Value0..1 | HexBinaryObjectPropertyType |
Reserved; must be 0. |
| Size_Of_Image0..1 | HexBinaryObjectPropertyType |
Specifies the size (in bytes) of the image, including all headers, as the image is loaded in memory. |
| Size_Of_Headers0..1 | HexBinaryObjectPropertyType |
Specifies the combined size of the MS DOS header, PE header, and section headers rounded up to a multiple of FileAlignment. |
| Checksum0..1 | HexBinaryObjectPropertyType |
Specifies the checksum of the PE file. |
| Subsystem0..1 | HexBinaryObjectPropertyType |
Specifies the subsystem (e.g., GUI, device driver) that is required to run this image. |
| DLL_Characteristics0..1 | HexBinaryObjectPropertyType |
Specifies flags that characterize the PE file. |
| Size_Of_Stack_Reserve0..1 | HexBinaryObjectPropertyType |
Specifies the size of the stack to reserve. |
| Size_Of_Stack_Commit0..1 | HexBinaryObjectPropertyType |
Specifies the size of the stack to commit. |
| Size_Of_Heap_Reserve0..1 | HexBinaryObjectPropertyType |
Specifies the size of the local heap space to reserve. |
| Size_Of_Heap_Commit0..1 | HexBinaryObjectPropertyType |
Specifies the size of the local heap space to commit. |
| Loader_Flags0..1 | HexBinaryObjectPropertyType |
Reserved; must be 0. |
| Number_Of_Rva_And_Sizes0..1 | HexBinaryObjectPropertyType |
Specifies the number of data-directory entries in the remainder of the optional header. |
| Data_Directory0..1 | DataDirectoryType |
Specifies the data directories in the remainder in the optional header. This field will be repeated for each data directory. |
| Hashes0..1 | HashListType |
The Hashes field is used to include any hash values computed using the specified PE binary optional header as input. |


新しいメールアドレス：<EMAIL_ADDRESS>Good Afternoon,
I am Mr. Joseph Hoponu, a business magnate. I have some amount in excess of $4.3m for investment purposes. I am seeking a foreign partner to partner me in a business relationship. Please get back to me for further details if you are interested.
Best Regards,
Joseph Hoponu
- JOSEPH hOPONU


SweetFreeStuff.com
///////////////////////////////////////////
Free Simple Cleansing Facial Wipes Sample
Posted: 27 Apr 2015 10:56 AM PDT
http://feedproxy.google.com/&edburner&utm_medium=email
Free Simple Cleansing Facial Wipes Sample
The post Free Simple Cleansing Facial Wipes Sample appeared first on
SweetFreeStuff.com.
///////////////////////////////////////////
Free Subscription to Tennis Magazine
Posted: 27 Apr 2015 07:00 AM PDT
http://feedproxy.google.com/&edburner&utm_medium=email
Free Subscription to Tennis Magazine
The post Free Subscription to Tennis Magazine appeared first on
SweetFreeStuff.com.
///////////////////////////////////////////
Free Zest Product at 3pm ET
Posted: 27 Apr 2015 06:57 AM PDT
http://feedproxy.google.com/&edburner&utm_medium=email
First people to sign up at 3pm ET will receive a FREE Zest product
The post Free Zest Product at 3pm ET appeared first on SweetFreeStuff.com.
///////////////////////////////////////////
FREE Sample of Allegra Allergy
Posted: 27 Apr 2015 05:00 AM PDT
http://feedproxy.google.com/&edburner&utm_medium=email
FREE Sample of Allerga Allergy
The post FREE Sample of Allegra Allergy appeared first on
SweetFreeStuff.com.
///////////////////////////////////////////
Free Subscription to Diabetic Living
Posted: 27 Apr 2015 04:16 AM PDT
http://feedproxy.google.com/&edburner&utm_medium=email
Free Subscription to Diabetic Living
The post Free Subscription to Diabetic Living appeared first on
SweetFreeStuff.com.
///////////////////////////////////////////
Free 32oz Fountain Drink at Stripes Stores
Posted: 27 Apr 2015 02:45 AM PDT
http://feedproxy.google.com/&edburner&utm_medium=email
Coupon good for a free 32oz fountain drink at Stripes Stores. Good through
4/28. Check locations.
The post Free 32oz Fountain Drink at Stripes Stores appeared first on
SweetFreeStuff.com.
///////////////////////////////////////////
Free VinylGuard Golf Equipment Protection Sample
Posted: 27 Apr 2015 01:11 AM PDT
http://feedproxy.google.com/&edburner&utm_medium=email
Free VinylGuard Golf Equipment Protection Sample
The post Free VinylGuard Golf Equipment Protection Sample appeared first on
SweetFreeStuff.com.
///////////////////////////////////////////
Free LEGO Koala Mini Build at Lego Stores (5/5)
Posted: 27 Apr 2015 01:07 AM PDT
http://feedproxy.google.com/&edburner&utm_medium=email
Tuesday, May 5th beginning at 5:00 pm until supplies last. Check with your
local store to confirm details. For children ages 6-14. Free LEGO Koala
Mini Build at Lego Stores (5/5)
The post Free LEGO Koala Mini Build at Lego Stores (5/5) appeared first on
SweetFreeStuff.com.
///////////////////////////////////////////
Free Flitz Polish-Paste Sample
Posted: 27 Apr 2015 12:03 AM PDT
http://feedproxy.google.com/&edburner&utm_medium=email
Free Flitz Polish-Paste Sample
The post Free Flitz Polish-Paste Sample appeared first on
SweetFreeStuff.com.
///////////////////////////////////////////
Free Playtex Sport Pads, Liners and Combo Packs
Posted: 27 Apr 2015 12:00 AM PDT
http://feedproxy.google.com/&edburner&utm_medium=email
Free Playtex Sport Pads, Liners and Combo Packs
The post Free Playtex Sport Pads, Liners and Combo Packs appeared first on
SweetFreeStuff.com.
///////////////////////////////////////////
Earn Cash and Prizes for Scanning your Purchases - NCP
Posted: 26 Apr 2015 11:00 PM PDT
http://feedproxy.google.com/&edburner&utm_medium=email
Earn Free Cash and Prizes from Nielsen Home Scan Consumer Panel Click Here
to Sign up! As a panel member, they will provide you with a hand-held
scanner. Every time you or members of your household shop, youll use the
scanner to scan the barcodes on all of your purchases. Then, once a week,
youll Continue reading Earn Cash and Prizes for Scanning your Purchases –
NCP
The post Earn Cash and Prizes for Scanning your Purchases – NCP appeared
first on SweetFreeStuff.com.
///////////////////////////////////////////
Allure Free Stuff in May
Posted: 26 Apr 2015 10:05 PM PDT
http://feedproxy.google.com/&edburner&utm_medium=email
The first 500 Allure readers to sign up at noon EST each day from May
4-7 will receive a free beauty product! Allure Free Stuff in March
The post Allure Free Stuff in May appeared first on SweetFreeStuff.com.
///////////////////////////////////////////
Free Arthritis Guide
Posted: 26 Apr 2015 10:00 PM PDT
http://feedproxy.google.com/&edburner&utm_medium=email
Learn to live better by taking control of your arthritis. Free Arthritis
Guide
The post Free Arthritis Guide appeared first on SweetFreeStuff.com.
///////////////////////////////////////////
Free U by Kotex Samples
Posted: 26 Apr 2015 10:00 PM PDT
http://feedproxy.google.com/&edburner&utm_medium=email
Choose from several different sample packs to try. Free U by Kotex Samples
The post Free U by Kotex Samples appeared first on SweetFreeStuff.com.
///////////////////////////////////////////
Free Traditional Medicinals Wellness Tea Sample
Posted: 26 Apr 2015 02:54 PM PDT
http://feedproxy.google.com/&edburner&utm_medium=email
Choose the samples request option from the drop down box and request a
sample in the comment box. Free Traditional Medicinals Wellness Tea Sample
The post Free Traditional Medicinals Wellness Tea Sample appeared first on
SweetFreeStuff.com.


## Electron Hacking for Beginners
#### A gentle introduction to becoming productive in a very large codebase
XXX
Hi, I'm Charles Kerr. I haven't presented before, so a few sentences about me: I've worked for about a year on Electron for GitHub.
Before that I worked for about five years on Ubuntu Linux,
and before that I wrote most of the BitTorrent app named Transmission.
So I've done open source for awhile now.
And I came to Electron because I wanted to keep doing it,
and because Electron is a Good Thing for getting more desktop apps on Mac and Linux,
and because the calendar said 2017 and it was way past time for me to learn web tech.
Electron's developer community is high-quality, but small
This walkthrough shows how get started on Electron and why it's not as scary as you think.
1. The Tools (getting the code)
2. The Code (building & understanding the code)
3. Putting it into Practice (fixing the code)
#### Part 1 of 3
## The Tools
XXX
And all this should run about 20-25 minutes.
Okay so let's start with the tools.
### OS-specific prerequisites
Instructions at [electronjs.org/docs/](https://electronjs.org/docs/development/build-instructions-gn)
Chances are you've heard of or used these tools.
* Ex: installing Python 2.7 on macOS with `brew`
* Ex: installing [Node.js](https://nodejs.org/)
XXX
There are platform-specific tools you need to install first.
These are documented at electronjs.org/docs and I'm going to skip past them because most developers have already used or heard of these and so ... they're not scary.
For example if you're attending an Electron meetup, you've probably installed Node
And if you're attending an Electron meetup and have a Mac, and you've probably installed something using homebrew.
So moving right along...
#### What code is in Electron?
Electron is Chromium + Node.js + native OS bits.
#### Where does it go?
It's all statically linked.
##### We build the whole world?
Mosly, yes.
XXX
When we're building Electron, what do we build?
So, everything Chromium needs, everything Node needs.
If you run `ldd electron` on Linux to see what shared libraries, what DLLs, it's using, there's not a lot: you get libffmpeg, GTK+ (the GUI library Chromium uses on Linux) and its dependencies. And that's about it. Like Chromium, for the most part if we need it, we compile it in.
* For example Skia, the 2D graphics library used for rendering, is statically linked in.
* Media libraries, like libwebm.
* Node, libuv, v8...
It's all compiled together.
And there's upside to that,
such as making sure Chromium and Node are built with compatible build flags
### So that's a lot of code?
```sh
~/electron/electron-gn/src$ sloccount *
cpp: 20,007,861 (56.57%)
ansic: 5,624,929 (15.90%)
javascript: 4,638,763 (13.11%)
python: 1,720,845 (4.87%)
Total Physical Source Lines of Code (SLOC) = 35,370,460
```
**Yes.**
XXX
So... yeah. That doesn't come for free.
By the way, that counting tool removes duplicate files from the count.
So tools, config, and boilerplate got copied into multiple repos, none of those is part of that number.
Imagine how many repos you have to clone for that.
Imagine even tracking the dependencies to know what repos you'd need.
Chromium's Code Management Tools
1. [Depot Tools](https://commondatastorage.googleapis.com/chrome-infra-docs/flat/depot_tools/docs/html/depot_tools.html): scripts that manage interaction with the Chromium source code repository.
1. GClient _(part of depot tools)_: A meta-checkout tool. Works on Linux, OS X, and Windows.
1. [GN](//gn.googlesource.com/gn/+/master/docs/): A meta-build system that generates build files for [Ninja](https://ninja-build.org/).
XXX
Fortunately a lot of people work on Chromium, and a lot of them are smart.
They've already wrestled with this. They wrote their
own meta-build system called GYP, "generate your projects".
Then they decided they could do better and wrote a second meta-build
system to replace it: GN, "generate ninja".
(Ninja is a build system kinda like `make` but faster.)
So... we use the same tools: depot-tools (especially gclient) and GN.
Jeremy Althorp at Slack and John Kleinschmidt at GitHub did some
heroic work earlier this year migrating us from GYP to GN.
XXX
And a good time was had by all.
but we survived,
And yes, GN is better.
Okay, so you install depot-tools.
This is is easy on macOS and Linux: clone it and add it to your PATH...
Part 2 of 3
The Code
Enable caching:
```sh
$ export GIT_CACHE_PATH="${HOME}/.git_cache"
$ mkdir -p "${GIT_CACHE_PATH}"
```
Get the code:
```sh
$ mkdir electron-gn && cd electron-gn
$ gclient config \
--name "src/electron" \
--unmanaged \
https://github.com/electron/electron
$ gclient sync --with_branch_heads --with_tags
# This will take a while, go get a coffee.
```
XXX
The important thing here is you want to make sure you have a cache enabled.
The next slides will show you why, and the way you enable it is easy: you create a cache directory and you set the environment variable `GIT_CACHE_PATH` to it.
Once you have that, you run `gclient config` for first-time setup
and `gclient sync` any time after that when you want to refresh your files, it's like a meta `git pull` with bells and whistles
**GClient Cost (Time)**
First-time run (no cache):
```sh
$ TIME="%e seconds" /usr/bin/time gclient sync \
--with_branch_heads --with_tags --delete_unversioned_trees
...
1218.00 seconds # 20 minutes, 18 seconds
```
With a populated cache:
```sh
$ TIME="%e seconds" /usr/bin/time gclient sync \
--with_branch_heads --with_tags --delete_unversioned_trees
...
250.00 seconds # 4 minutes, 10 seconds
```
XXX
This slide isn't a huge surprise,
As you'd expect for 35 million lines, the first run is quite expensive. That 20 min was with a good internet connection.
but once you have the cache, resyncing is pretty cheap.
Most of that four minutes is spent in hooks, for example re-applying Electron's Chromium patches.
And how big is that cache?
**GClient Cost (Space)**
```sh
$ du -sh ~/.electron-cache/git-cache
16G
```
XXX
So when I said "imagine how many repos you have to clone" earlier..
There's your answer:
16 GB worth.
 This slide is kind of how I felt when I ran `npm install` for the first time...
Like this npm package here:
XXX
one thousand dependencies.
And that's just too round a number to be right. Maybe there are more but the people writing the website never thought it would hit four digits and it just tops out.
(beat)
What I love about this repo is six people downloaded it this week.
WHO ARE THESE SIX PEOPLE??
Whoever you are...
XXX
maybe you're the kind of person who would have a fun Monday morning getting paid to bootstrap Electron!
I hoped that would get a laugh. I put this in because we've got four stats-heavy slides coming up and I wanted to keep it light.
That 35 million LOC number is not light. That's a scary number.
But that counts Chromium's tests, its dependencies' tests, and a lot of pieces like `chromecast/` and `chrome_os/` that I hope we don't use
So here's here's a more realistic, though arbitrary, count of the Chromium modules that Electron touches directly.
Chromium code more relevant to Electron
```sh
$ rg --no-filename "^#include \"" | grep -v -e atom -e electron \
| perl -pe "s/\"(\w*?)\/(?:.*)\"/\$1/" \
| grep -v -e "\.h\"" | sort | uniq -c | sort -nr | head -n8
878 #include base
430 #include content
340 #include ui
202 #include native_mate
184 #include net
113 #include third_party
80 #include chrome
75 #include components
$ sloccount base content ui electron/native_mate \
net third_party/skia third_party/blink chrome/browser/ui \
components/prefs services v8 | grep "Total Physical"
Total Physical Source Lines of Code (SLOC) = 6,619,444
```
XXX
So now we're down to only 6 million lines of code.
Not so scary now, right?
That's a cognitive bias technique called anchoring. 6 million lines of code is supposed to seem less scary now because at least it's not at 35 million.
Well, a little less, anyway.
And, because some of you are wondering:
**Electron codebase**
```sh
~/electron/electron-gn/src/electron$ sloccount \
atom lib spec script patches
Total Physical Source Lines of Code (SLOC) = 84,072
Totals grouped by language (dominant language first):
cpp: 52,033 (61.89%)
javascript: 28,875 (34.35%)
python: 3,059 (3.64%)
Total Physical Source Lines of Code (SLOC) = 84,072
SLOC Directory SLOC-by-Language (Sorted)
52033 atom cpp=52033
19204 spec javascript=19099,sh=105
7590 lib javascript=7590
```
XXX
Electron itself: about 85 thousand lines.
Some of you with sharp eyes are looking at the bottom of that and noticing that about 20% of Electron's code is tests.
The number of open issues in our bug tracker might indicate otherwise, but each PR you submit generates a _lot_ of good CI testing.
Okay so now you've got the code. What do you do with code?
Building Electron
```sh
$ export SCCACHE_BUCKET="electronjs-sccache"
$ export SCCACHE_TWO_TIER=true
$ export GN_EXTRA_ARGS="${GN_EXTRA_ARGS} \
cc_wrapper=\"/path/to/electron/external_binaries/sccache\""
$ gn gen out/Debug --args \
"import(\"//electron/build/args/debug.gn\") $GN_EXTRA_ARGS"
```
XXX
One beautiful thing about building Electron is team
member Sam atterd at Atlassian submitted a patch to
sccache that adds two-tier caching --
If you use that you never have a completely cold cache,
because even the on your first run, it will help you by pulling from Electron's CI builds' cache.
This is what Electron builds look like:
```sh
$ TIME="%e seconds" /usr/bin/time \
ninja -C $EL_GN_PATH/src/out/debug \
electron:electron_app
[18098/18098] LINK ./electron
398.03 seconds
$ du -sh ~/.electron-cache/sccache
1.6G /home/charles/.electron-cache/sccache
```
```sh
$ $EL_GN_PATH/src/electron/external_bins/sccache --stats
11164 Compile requests
11146 Compile requests executed
11142 Cache hits
3 Cache misses
18 Non-cacheable calls
0.005 s Average cache write
21.994 s Average cache read miss
0.021 s Average cache read hit
Cache location
Local: Local disk: "/home/charles/.electron-cache/sccache"
Remote: S3, bucket: Bucket(name=electronjs-sccache,
base_url=http://electronjs-sccache.s3.amazonaws.com/)
Cache size 2 GiB
Max cache size 10 GiB
```
XXX
This page has a lot going on.
1. Yes, that's eighteen thousand and 98 build steps.
2. compile took 398 seconds -- under 7 minutes. **YES** that was with a
hot cache and **YES** it's going to take longer with a Walmart Windows tablet...
but without caching on this same machine it would take many hours.
Hard to overstate how big a win this is.
3. the cache has grown again, another couple GB to sccache this time.
4. you can see at the bottom there, the s3 CI cache is working
So the scary numbers and stats end on a happy note here.
Let's take a really quick look at the source.
### Electron's source code
1. `spec/` is the tests
1. `script/` is where all the extra tools go, e.g. release notes generator
1. `lib/` the public-facing Javascript
1. `atom/` is the C++ -- e.g. the Chromium subclasses, delegates and observers.
XXX
In a lot of ways Electron is just another Node app.  If we can implement a feature in JS, it goes here.
Much of this is the minimum it takes to expose our C++ backend as a public JS API.
Atom is the next layer, the C++ code between lib and Chromium.
And it, in turn, is whatever it takes to expose Chromium to something that can be consumed by the our javascript API.
For example the largest c++ class in Electron is atom_api_web_contents.
Let's take at its header file to see what it's about:
** Excerpt from the biggest, scariest class in Electron (atom::api::WebContents)**
```cpp
void LoadURL(const GURL& url, const mate::Dictionary& opts);
base::string16 GetTitle() const;
bool IsLoading() const;
void Stop();
void ReloadIgnoringCache();
void GoBack();
void GoForward();
bool IsCrashed() const;
void SetUserAgent(const std::string& user_agent);
std::string GetUserAgent();
void InsertCSS(const std::string& css);
void OpenDevTools(mate::Arguments* args);
```
XXX
Not completely unexpected, right?
This is the largest class we've got.
And you understand a lot of the ideas here already.
To be clear: no, I'm not saying Electron is easy.
Some of it is, but a lot of it isn't.
You're probably not going to be refactoring NativeWindow
or fixing Sandboxing on Linux on your first day.
That comes at around the 8 month mark.
But if you've written Electron apps,
if you've used `win.loadURL()` or `win.getTitle()`,
you already see the big picture, and that can be your guide
when you're reading and learning the littler pictures.
The implementation may be unfamiliar, but `OpenDevTools()` isn't alien. Right?
Final thoughts on the codebase
You understand more than you think.
There's even more that you don't understand, but that's OK.
If you want to step up your C++ game, you could do a lot worse than learning Chromium and Electron.
#### Part 3 of 3
## In Practice
XXX
To review: So far we've checked out 16 GB of source code
and we've run 18 thousand and 98 build steps
and we know what `win.openDevTools()` does
So we're invincible, right?
Let's get our hands dirty.
As promised, here's a real bug that was reported about a month ago:
XXX
The screenshot here says it all: on Linux, the `alert()` dialog is showing a No Symbol icon.
This should be easy to test.
XXX
make sure we have a fresh build
let's run electron-quick-start
open devtools
and pull up an alert dialog.
sure enough.
Now, I'm pretending for this example I don't know whether Electron is using a GtkMessageDialog, a GtkDialog, or not using those at all but instead creating a custom GtkWindow.
But I do know whatever it's using, that icon is getting shown by a call to gtk_widget_show(), because that's what every GTK+ widget uses, no matter what type of class is aggregating it.
So I'll run the same test again inside a debugger and set gtk_widget_show() as a breakpoint.
open devtools again...
set the breakpoint... gdb is kind of slow.
the alert again...
cool. let's see where it's coming from.
ok this noise here is C++'s version of the green terminal windows in the matrix. You get used to it.
first thing I see here is it's in atom/browser/ui/message_box_gtk, which means it's likely our bug.
I see an argument named 'icon' of type imageskia, so maybe someone is passing in a broken icon.
let's open up atom/browser/ui/message_box_gtk line 49 and take a look.
here's where the dialog is created, and sometimes these use a default icon depending on the dialog type.
let's go back to the debugger and see what type was passed in.
looks like that type is atom::MESSAGE_BOX_TYPE_NONE, so that's not the problem.
Next I see us setting the dialog's image property if that imageskia isn't null.
let's go back to the debugger and check.
walk up the callstack
and icon.isNull() is _true_, so this block of code is never reached, so this isn't the problem either.
what else calls gtk_widget_show().
here's a call that only happens when we have a checkbox label... that's not going to be it, but just for fun let's ask the debugger what checkbox_label is --
yep, checkbox_label is an empty string.
so let's keep looking for gtk_widget_show() calls.
AH now this is promising.
gtk_widget_show_all() tries to show its whole subtree of widgets, of UI components.
So maybe what's happening is GtkMessageDialog _always_ has an icon widget, but it's just not shown when the icon property's not set.
If so, this call here would show that unset icon.
That would be consistent with the no-icon symbol.
Let's see what happens if we remove the `_all()` from this.
rebuild
restart the process
pop up devools
show an alert
there we go!
We got it.
And although I knew some GTK+ to solve this bug, this one didn't really take any Electron.
(fast transition to)
What Have We Learned?
Whether you know Electron, GTK+, Chromium, Node.js, Windows, JS, C++, Obj-C, Carbon, Linux, or Docker... those are all skills that you can use on Electron.
Bootstrapping Electron is expensive, but updates are cheap.
Electron is big, but may feel familiar if you've written Electron apps.
It's OK to be a little lost.
There exists a sindresorhus repo with 1000 dependencies
### Thanks for listening!
#### Further reading
* https://electronjs.org/docs/development
* https://cs.chromium.org/
* https://www.chromium.org/developers/how-tos/getting-around-the-chrome-source-code
* https://www.patreon.com/sindresorhus


This is not the Lucky Block mod made by PlayerInDistress instead this is a mod that I made using the idea of the lucky block mod. It adds in other things onther than just a Lucky Block. It adds in things such as armor and tools, and in the future there will be ores and mobs and much more in the mod. If you don't like the functions of my Lucky Block you can just install the original mod along with this mod and it will use the original block for everything instead of my blocks.
| MC Version | Mod Version |
|---|---|
| 1.7.10 | <IP_ADDRESS> |
The Original Pig! This mod adds in the original pig. Back when Notch was adding the pig to Minecraft he accidentally gave it the creeper model and that is all this mod is. It adds pigs with the creeper model.
The OGPig functions just like a normal pig, you can breed it, you *cough* might be able to ride it.
The only thing this mod adds is the OGPig (See image).
| MC Version | Mod Version |
|---|---|
| 1.7.10 | <IP_ADDRESS> |
My footer information


{{ (revenue - (bills|sum))|currency:'BRL' }}
Recebimentos visibility visibility_off
{{ revenue$|async|currency:'BRL' }}
Gastos visibility visibility_off
{{ bills|sum|currency:'BRL' }}


Simulation of q-voter model¶
-
src.real_q_voter.simulation.
ba_graph_with_random_opinion
(n, m=8) → networkx.classes.graph.Graph¶ Construct BA network with randomly generated opinions
- Parameters
n – Number of nodes
m – Number of edges to attach from a new node to existing nodes
- Returns
nx.Graph with opinion attribute
-
src.real_q_voter.simulation.
run
(g: networkx.classes.graph.Graph, q: int, p: float, eta=0.2, n_iteration=1000, preference_sampling=False, majority_conform=False, save_plot_graphs=False)¶ Perform simulation of q-voter model on g graph
- Parameters
g – nx.Graph (directed or undirected)
q – Number of agents in q-voter model
p – Independence factor
eta – Probability of conformity flip
n_iteration – Number of simulation steps
preference_sampling – Take into account degree of neighbours nodes while sampling for q nodes
majority_conform – True: In conformity state use majority votes of neighbors. False: All agents should have the same opinions.
save_plot_graphs – Save plot of network (10 snapshots)?
- Returns
(mean_opinions: list, weighted_mean_opinions: list)
-
src.real_q_voter.simulation.
run_simulation
(g: networkx.classes.graph.Graph, q: int, p_range: list, n_iteration: int, save_plot_graphs=False)¶ Run multiple q-voter simulation for given p_range values
- Parameters
g – nx.Graph
q – Number of agent in q-voter model
p_range – Range of p (independence factor)
n_iteration – Number of iterations of the single run (per one p value)
save_plot_graphs – Save images of network?
- Returns
Tuple of mean opinions, each list has list per p value, e.g., mean_opinion = [[values_for_p=0.1], [values_for_p=0.2], …, ]


How to setup KDE-plasma as a tiling window manager
On this episode I show you how I configure my kde plasma to behave like a tiling window manager.
This can be done with just one kwin script and all the rest are normal KDE-Plasma settings.
Hope you enjoy my workflow.
kde
plasma
desktop-environment
window-manage


Package slogo.compiler
Class Parser
java.lang.Object
slogo.compiler.Parser
public class Parser
extends java.lang.Object
The
Parser
class takes user inputs and converts them into SLogoToken
objects
of the correct type. This class simply splits String
inputs by blank spaces and
performs no syntax related error checking.
While parsing, if the beginning of a SLogoList
is encountered, the corresponding
token will be created and all tokens until the list closing token is found.
While parsing, any String
matching [a-zA-Z_]+(\?)?
will be used to search
for a valid SLogoCommand
. If no runnable object with that name is found, a generic
SLogoToken
will be created and the compiler will be responsible for checking whether
a SLogoRunnable
with the same name exists in the Workspace
.
The parser is initialized with the language it has to interpret in. This language is read from a
.properties
file in the src.resources.languages
folder.-
Field Summary
Fields Modifier and Type Field Description private java.util.Map<java.util.regex.Pattern,java.lang.String>
builtinCommands
private java.lang.String
COMMAND_TOKENTYPE
private java.lang.String
DEFAULT_RESOURCE_FOLDER
private java.lang.String
DEFAULT_RESOURCE_PACKAGE
private java.util.ResourceBundle
languageBundle
private java.lang.String
SYNTAX_BUNDLE
private java.util.ResourceBundle
syntaxBundle
private java.util.Map<java.util.regex.Pattern,java.lang.String>
tokenTypes
private Workspace
workspace
-
Constructor Summary
-
Method Summary
Modifier and Type Method Description private java.util.Map<java.util.regex.Pattern,java.lang.String>
createRegexMap(java.util.ResourceBundle bundle)
Creates aHashMap
ofPattern
andString
pairs so that the a user input string can be searched against the list of patterns.private SLogoToken
createTokenFromString(java.lang.String userInput)
CreatesSLogoToken
of the correct types from givenString
.private java.lang.String
determineCommandType(java.lang.String userInput)
Attempts to find theString
command name matching the user input.private java.lang.String
determineTokenType(java.lang.String userInput)
Determines the proper name describing theSLogoToken
from a user input string.private java.lang.String
getStringFromRegex(java.util.Map<java.util.regex.Pattern,java.lang.String> regexMap, java.lang.String userInput)
Searches the givenMap
for any valuePattern
s that has a regex match withuserInput
string.java.util.Queue<SLogoToken>
parseInput(java.lang.String inputString)
Parses all user input and creates the correspondingSLogoToken
s, placing them in aQueue
.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Field Details
-
languageBundle
private final java.util.ResourceBundle languageBundle -
syntaxBundle
private final java.util.ResourceBundle syntaxBundle -
DEFAULT_RESOURCE_PACKAGE
private final java.lang.String DEFAULT_RESOURCE_PACKAGE- See Also:
- Constant Field Values
-
SYNTAX_BUNDLE
private final java.lang.String SYNTAX_BUNDLE- See Also:
- Constant Field Values
-
COMMAND_TOKENTYPE
private final java.lang.String COMMAND_TOKENTYPE- See Also:
- Constant Field Values
-
DEFAULT_RESOURCE_FOLDER
private final java.lang.String DEFAULT_RESOURCE_FOLDER -
builtinCommands
private final java.util.Map<java.util.regex.Pattern,java.lang.String> builtinCommands -
tokenTypes
private final java.util.Map<java.util.regex.Pattern,java.lang.String> tokenTypes -
workspace
-
-
Constructor Details
-
Parser
Constructs a parser with the specified language. This determines whichResourceBundle
is loaded and which language the user can code in. This constructor also buildsMap
s ofString
andPattern
s that connect user input values to string descriptions of classes to generate.- Parameters:
language
- the desired language of the compiler.
-
-
Method Details
-
parseInput
Parses all user input and creates the correspondingSLogoToken
s, placing them in aQueue
. The input can contain whitespace and newline characters. The method first breaks the strings into lines, then into individual space delimited strings. If a "#" character is encountered at the beginning of a line, the entire line is ignored.- Parameters:
inputString
- a user input SLogo code- Returns:
- a
Queue
ofSLogoToken
objects.
-
createTokenFromString
CreatesSLogoToken
of the correct types from givenString
. If the token type is ofSLogoCommand
, then the correct subclass ofCommand
will be created. If no correspondingSLogoToken
orSLogoCommand
is found, this method will attempt to find aWorkspaceEntry
in theWorkspace
that has a name matching the user input. If none is found in the workspace, an exception will be thrown.- Parameters:
userInput
-- Returns:
- the
SLogoToken
of the correct type. - Throws:
SLogoException
-
determineTokenType
Determines the proper name describing theSLogoToken
from a user input string. Returnsnull
if the user input doesn't match any existing pattern.- Parameters:
userInput
- a string that does not contain any blank space.- Returns:
- a
String
of the proper name of aSLogoToken
or null - Throws:
SLogoException
-
determineCommandType
private java.lang.String determineCommandType(java.lang.String userInput)Attempts to find theString
command name matching the user input. If not found, the input might be a user defined function, therefore return the user input as is.- Parameters:
userInput
-String
user typed text- Returns:
- either the proper
SLogoCommand
name or the user input as is.
-
getStringFromRegex
private java.lang.String getStringFromRegex(java.util.Map<java.util.regex.Pattern,java.lang.String> regexMap, java.lang.String userInput)Searches the givenMap
for any valuePattern
s that has a regex match withuserInput
string. If there is a match, returns theString
key of the corresponding pattern. If not, returns null.- Parameters:
regexMap
- a map containingPattern
andString
pairsuserInput
- theString
to search for in the map- Returns:
- returns
String
match from the map, or null if none is found.
-
createRegexMap
private java.util.Map<java.util.regex.Pattern,java.lang.String> createRegexMap(java.util.ResourceBundle bundle)Creates aHashMap
ofPattern
andString
pairs so that the a user input string can be searched against the list of patterns.- Parameters:
bundle
-ResourceBundle
object to use to create the map- Returns:
- A
HashMap
containingPattern
andString
pairs.
-


Create box plots in Scalable Vector Graphic (SVG) format.
Provides svg_boxplot
data and functions to create plots, and
svg_boxplot_series to allow data values to be added to the boxplot.
Very many functions allow fine control of the appearance and layout of plots and data markers. (Items common to 1D, 2D and boxplot use axis_plot_frame
).
A convenient way of graphically depicting groups of numerical data through their five-number summaries.
Show 1st quartile, median and 3rd quartile as a box. http://en.wikipedia.org/wiki/Boxplot
See Also:
Some Implementations of the Boxplot: Michael Frigge, David C. Hoaglin and Boris Iglewicz The American Statistician, Vol. 43, No. 1 (Feb., 1989), pp. 50-54
See Also:
The Bagplot: A Bivariate Boxplot Peter J. Rousseeuw, Ida Ruts and John W. Tukey The American Statistician, Vol. 53, No. 4 (Nov., 1999), pp. 382-387
namespace boost { namespace svg { class svg_boxplot; class svg_boxplot_series; } }


Astra Solaris is a set of software projects dedicated to astronomy and astronautics. All Astra Solaris projects are open source under MIT licence. The Institute of Astronomy and Meteorology of the University of Guadalajara is official partner and main scientific collaborator. You can contact us for participating in the development. Collaboration is NOT restricted to scientists and programmers.
More projects and more functions are added frecuently to the astra solaris repository. Visit Astra Solaris in github Some projects have their own repos, read the project sheet for more information.
Astra Solaris is a project powered by a very small team, but an ever growing community, and depends on people volunteering time, code, money, and energy to keep it going. Any contribution is meaningful.


Author:Jie Liu
General Guide
- To run the simulation, click on the tycho code below. The GUI will be loaded.
- Click on
run
in the devel
menu.
- Wait for a few second to allow creating the socket connection.
- If there's a message like:
Socket Error
, which means
the socket has already been allocated for other resources, then
please close the run window and try again.
- Adjust
start time
, stop time
, and step size
.
- Click
start
to start the simulation
- During the simulaiton, the slider, if there is any in the run window, can
be used to adjust the parameters on the fly.
-
Pause
, Resume
, and Stop
are used for execution control.
Demos
1. MEMS: A sonator with a comb finger sensor. (Coyote Systems)
::tycho::openContext $TYCHO/edit/cts/demoCoyote2.cts
- After bring up the run window, enter 15
in the
stop time
box.
- Click
Start
.
2. Lorenz System:A simple system with chaotic behavior
::tycho::openContext $TYCHO/edit/cts/Lorenz.cts
- After bring up the run window, enter 50
in the
stop time
box.
- Click
Start
.
Copyright © 1998, The Regents of the University of California.
All rights reserved.
Last updated: $Date$,
comments to: tycho@eecs.berkeley.edu


{% extends "account/base.html" %} {% load i18n static %} {% block sign_recommandation %}{% endblock sign_recommandation %} {% block sign_form %}{% endblock sign_form %}


Summary
ThemeKit is a lightweight theming library completely written in Swift that provides theming capabilities to both Swift and Objective-C macOS applications.
ThemeKit is brought to you with ❤ by Nuno Grilo and the Paw team.
QuickStart
- Download the ThemeKit Demo binary and give it a try!
- Read the Make your macOS app themable article (simple tutorial).
- Check the ThemeKit Docs.
Table of Contents
Features
- Written in Swift 4.2
- Optional configuration, none required
- Neglected performance impact
- Automatically theme windows (configurable)
- Themes:
LightTheme
(default macOS appearance)DarkTheme
SystemTheme
(default theme). Dynamically resolves toThemeManager.lightTheme
orThemeManager.darkTheme
, depending on the “System Preferences > General > Appearance”.- Support for custom themes (
Theme
) - Support for user-defined themes (
UserTheme
)
- Theme-aware assets:
ThemeColor
: colors that dynamically change with the themeThemeGradient
: gradients that dynamically change with the themeThemeImage
: images that dynamically change with the theme- Optional override of
NSColor
named colors (e.g.,labelColor
) to dynamically change with the theme
Installation
| ThemeKit Version | Swift Version |
|---|---|
| 1.0.0 | 3.0 |
| 1.1.0 | 4.0 |
| 1.2.0 | 4.1 |
| 1.2.3 | 4.2 |
There are multiple options to include ThemeKit on your project:
Add to your Podfile
:
use_frameworks!
target '[YOUR APP TARGET]' do
pod 'macOSThemeKit', '~> 1.2.0'
end
When using CocoaPods, the ThemeKit module is named macOSThemeKit
:
import macOSThemeKit
github "luckymarmot/ThemeKit"
Then import ThemeKit module with:
import ThemeKit
- Manually
- Either add
ThemeKit.framework
on your project, or, manually add source files from theThemeKit\
folder to your project - If importing into a Objective-C project, you will need to include all the Swift related frameworks as well (as reported here)
- Either add
Then import ThemeKit module with:
import ThemeKit
Usage
Simple Usage
At its simpler usage, applications can be themed with a single line command:
In Swift:
func applicationWillFinishLaunching(_ notification: Notification) {
/// Apply the dark theme
ThemeManager.darkTheme.apply()
/// or, the light theme
//ThemeManager.lightTheme.apply()
/// or, the 'system' theme, which dynamically changes to light or dark,
/// respecting *System Preferences > General > Appearance* setting.
//ThemeManager.systemTheme.apply()
}
In Objective-C:
- (void)applicationWillFinishLaunching:(NSNotification *)aNotification {
// Apply the dark theme
TKDarkTheme *darkTheme = TKThemeManager.darkTheme;
[[TKThemeManager sharedManager] setTheme:darkTheme];
}
Advanced Usage
The following code will define which windows should be automatically themed (WindowThemePolicy
) and add support for user themes (UserTheme
):
In Swift:
func applicationWillFinishLaunching(_ notification: Notification) {
/// Define default theme.
/// Used on first run. Default: `SystemTheme`.
/// Note: `SystemTheme` is a special theme that resolves to `ThemeManager.lightTheme` or `ThemeManager.darkTheme`,
/// depending on the macOS preference at 'System Preferences > General > Appearance'.
ThemeManager.defaultTheme = ThemeManager.lightTheme
/// Define window theme policy.
ThemeManager.shared.windowThemePolicy = .themeAllWindows
//ThemeManager.shared.windowThemePolicy = .themeSomeWindows(windowClasses: [MyWindow.self])
//ThemeManager.shared.windowThemePolicy = .doNotThemeSomeWindows(windowClasses: [NSPanel.self])
//ThemeManager.shared.windowThemePolicy = .doNotThemeWindows
/// Enable & configure user themes.
/// Will use folder `(...)/Application Support/{your_app_bundle_id}/Themes`.
let applicationSupportURLs = NSSearchPathForDirectoriesInDomains(.applicationSupportDirectory, .userDomainMask, true)
let thisAppSupportURL = URL.init(fileURLWithPath: applicationSupportURLs.first!).appendingPathComponent(Bundle.main.bundleIdentifier!)
let userThemesFolderURL = thisAppSupportURL.appendingPathComponent("Themes")
ThemeManager.shared.userThemesFolderURL = userThemesFolderURL
/// Change the default light and dark theme, used when `SystemTheme` is selected.
//ThemeManager.lightTheme = ThemeManager.shared.theme(withIdentifier: PaperTheme.identifier)!
//ThemeManager.darkTheme = ThemeManager.shared.theme(withIdentifier: "com.luckymarmot.ThemeKit.PurpleGreen")!
/// Apply last applied theme (or the default theme, if no previous one)
ThemeManager.shared.applyLastOrDefaultTheme()
}
In Objective-C:
- (void)applicationWillFinishLaunching:(NSNotification *)aNotification {
/// Define default theme.
/// Used on first run. Default: `SystemTheme`.
/// Note: `SystemTheme` is a special theme that resolves to `ThemeManager.lightTheme` or `ThemeManager.darkTheme`,
/// depending on the macOS preference at 'System Preferences > General > Appearance'.
[TKThemeManager setDefaultTheme:TKThemeManager.lightTheme];
/// Define window theme policy.
[TKThemeManager sharedManager].windowThemePolicy = TKThemeManagerWindowThemePolicyThemeAllWindows;
//[TKThemeManager sharedManager].windowThemePolicy = TKThemeManagerWindowThemePolicyThemeSomeWindows;
//[TKThemeManager sharedManager].themableWindowClasses = @[[MyWindow class]];
//[TKThemeManager sharedManager].windowThemePolicy = TKThemeManagerWindowThemePolicyDoNotThemeSomeWindows;
//[TKThemeManager sharedManager].notThemableWindowClasses = @[[NSPanel class]];
//[TKThemeManager sharedManager].windowThemePolicy = TKThemeManagerWindowThemePolicyDoNotThemeWindows;
/// Enable & configure user themes.
/// Will use folder `(...)/Application Support/{your_app_bundle_id}/Themes`.
NSArray<NSString*>* applicationSupportURLs = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES);
NSURL* thisAppSupportURL = [[NSURL fileURLWithPath:applicationSupportURLs.firstObject] URLByAppendingPathComponent:[NSBundle mainBundle].bundleIdentifier];
NSURL* userThemesFolderURL = [thisAppSupportURL URLByAppendingPathComponent:@"Themes"];
[TKThemeManager sharedManager].userThemesFolderURL = userThemesFolderURL;
/// Change the default light and dark theme, used when `SystemTheme` is selected.
//TKThemeManager.lightTheme = [[TKThemeManager sharedManager] themeWithIdentifier:PaperTheme.identifier];
//TKThemeManager.darkTheme = [[TKThemeManager sharedManager]<EMAIL_ADDRESS>/// Apply last applied theme (or the default theme, if no previous one)
[[TKThemeManager sharedManager] applyLastOrDefaultTheme];
}
Please check the Demo application source code for a more complete usage example of ThemeKit.
Observing theme changes
ThemeKit provides the following notifications:
Notification.Name.willChangeTheme
is sent when current theme is about to changeNotification.Name.didChangeTheme
is sent when current theme did changeNotification.Name.didChangeSystemTheme
is sent when system theme did change (System Preference > General)
Example:
// Register to be notified of theme changes
NotificationCenter.default.addObserver(self, selector: #selector(changedTheme(_:)), name: .didChangeTheme, object: nil)
@objc private func changedTheme(_ notification: Notification) {
// ...
}
Additionally, the following properties are KVO compliant:
ThemeManager.shared.theme
ThemeManager.shared.effectiveTheme
ThemeManager.shared.themes
ThemeManager.shared.userThemes
Example:
// Register for KVO changes on ThemeManager.shared.effectiveTheme
ThemeManager.shared.addObserver(self, forKeyPath: "effectiveTheme", options: NSKeyValueObservingOptions.init(rawValue: 0), context: nil)
public override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
if keyPath == "effectiveTheme" {
// ...
}
}
Manually theming windows
In case (WindowThemePolicy
) was NOT set to .themeAllWindows
, you may need to manually theme a window. You can use our NSWindow
extension for that:
NSWindow Extension
-
Theme window if appearance needs update. Doesn’t check for policy compliance.
NSWindow.themeIfCompliantWithWindowThemePolicy()
Theme window if compliant to
ThemeManager.shared.windowThemePolicy
(and if appearance needs update).-
Theme all windows compliant to
ThemeManager.shared.windowThemePolicy
(and if appearance needs update). -
Any window specific theme. This is, usually,
nil
, which means the current global theme will be used. Please note that when using window specific themes, only the associatedNSAppearance
will be automatically set. All theme aware assets (ThemeColor
,ThemeGradient
andThemeImage
) should call methods that returns a resolved color instead (which means they don’t change with the theme change, you need to observe theme changes manually, and set colors afterwards):ThemeColor.color(for view:, selector:)
ThemeGradient.gradient(for view:, selector:)
ThemeImage.image(for view:, selector:)
Additionally, please note that system overridden colors (
NSColor.*
) will always use the global theme. -
Returns the current effective theme (read-only).
NSWindow.windowEffectiveThemeAppearance
Returns the current effective appearance (read-only).
Theme-aware Assets
ThemeColor
, ThemeGradient
and ThemeImage
provides colors, gradients and images, respectively, that dynamically change with the current theme.
Additionally, named colors from the NSColor
class defined on the ThemeColor
subclass extension will override the system ones, providing theme-aware colors.
For example, a project defines a ThemeColor.brandColor
color. This will resolve to different colors at runtime, depending on the selected theme:
ThemeColor.brandColor
will resolve toNSColor.blue
if the light theme is selectedThemeColor.brandColor
will resolve toNSColor.white
if the dark theme is selectedThemeColor.brandColor
will resolve torgba(100, 50, 0, 0.5)
for some user-defined theme (UserTheme
)
Similarly, defining a ThemeColor.labelColor
will override NSColor.labelColor
(ThemeColor
is a subclass of NSColor
), and ThemeKit will allow labelColor
to be customized on a per-theme basis as well.
The NSColor Extension may be useful when overriding colors in ThemeColor extensions.
Fallback Assets
ThemeKit provides a simple fallback mechanism when looking up assets in the current theme. It will search for assets, in order:
- the asset name, defined in theme (e.g.,
myBackgroundColor
) fallbackForegroundColor
,fallbackBackgroundColor
,fallbackGradient
orfallbackImage
defined in theme, depending if asset is a foreground/background color, gradient or image, respectivelydefaultFallbackForegroundColor
,defaultFallbackBackgroundColor
,fallbackGradient
ordefaultFallbackImage
defined internally, depending if asset is a foreground/background color, gradient or image, respectively
However, for overridden system named colors, the fallback mechanism is different and simpler:
- the asset name, defined in theme (e.g.,
labelColor
) - original asset defined in the system (e.g.,
NSColor.labelColor
)
Please refer to ThemeColor
, ThemeGradient
and ThemeImage
for more information.
Creating Themes
Native Themes
For creating additional themes, you only need to create a class that conforms to the Theme
protocol and extends NSObject
.
Sample theme:
import Cocoa
import ThemeKit
class MyOwnTheme: NSObject, Theme {
/// Light theme identifier (static).
public static var identifier: String = "com.luckymarmot.ThemeKit.MyOwnTheme"
/// Unique theme identifier.
public var identifier: String = MyOwnTheme.identifier
/// Theme display name.
public var displayName: String = "My Own Theme"
/// Theme short display name.
public var shortDisplayName: String = "My Own"
/// Is this a dark theme?
public var isDarkTheme: Bool = false
/// Description (optional).
public override var description : String {
return "<\(MyOwnTheme.self): \(themeDescription(self))>"
}
// MARK: -
// MARK: Theme Assets
// Here you can define the instance methods for the class methods defined
// on `ThemeColor`, `ThemeGradient` and `ThemeImage`, if any. Check
// documentation of these classes for more details.
}
User Themes
ThemeKit also supports definition of additional themes with simple text files (.theme
files). Example of a very basic .theme
file:
// ************************* Theme Info ************************* //
displayName = My Theme 1
identifier = com.luckymarmot.ThemeKit.MyTheme1
darkTheme = true
// ********************* Colors & Gradients ********************* //
# define color for `ThemeColor.brandColor`
brandColor = $blue
# define a new color for `NSColor.labelColor` (overriding)
labelColor = rgb(11, 220, 111)
# define gradient for `ThemeGradient.brandGradient`
brandGradient = linear-gradient($orange.sky, rgba(200, 140, 60, 1.0))
// ********************* Images & Patterns ********************** //
# define pattern image from named image "paper" for color `ThemeColor.contentBackgroundColor`
contentBackgroundColor = pattern(named:paper)
# define pattern image from filesystem (relative to user themes folder) for color `ThemeColor.bottomBackgroundColor`
bottomBackgroundColor = pattern(file:../some/path/some-file.png)
# define image using named image "apple"
namedImage = image(named:apple)
# define image using from filesystem (relative to user themes folder)
fileImage = image(file:../some/path/some-file.jpg)
// *********************** Common Colors ************************ //
blue = rgb(0, 170, 255)
orange.sky = rgb(160, 90, 45, .5)
// ********************** Fallback Assets *********************** //
fallbackForegroundColor = rgb(255, 10, 90, 1.0)
fallbackBackgroundColor = rgb(255, 200, 190)
fallbackGradient = linear-gradient($blue, rgba(200, 140, 60, 1.0))
To enable support for user themes, just need to set the location for them:
// Setup ThemeKit user themes folder
ThemeManager.shared.userThemesFolderURL = //...
Please refer to UserTheme
for more information.
FAQ
Where can I find the API documentation?
Documentation can be found here. You can also install it on Dash.
Can the window titlebar/toolbar/tabbar be themed?
Yes - please check one way to do it on the Demo project. Basically, a TitleBarOverlayView view is added below the window title bar, as shown on the WindowController controller.
Can controls be tinted with different colors?
Other than the colors set by the inherited appearance - light (dark text on light background) or dark (light text on dark background) - natively, it is not possible to specify different colors for the text and/or background fills of controls (buttons, popups, etc).
For simple cases, overriding NSColor
can be sufficient: for example, NSColor.labelColor
is a named color used for text labels; overriding it will allow to have all labels themed accordingly. You can get a list of all overridable named colors (class method names) with NSColor.colorMethodNames()
.
For more complex cases, like views/controls with custom drawing, please refer to next question.
Can I make custom drawing views/controls theme-aware?
Yes, you can! Implement your own custom controls drawing using Theme-aware Assets (ThemeColor
and ThemeGradient
) so that your controls drawing will always adapt to your current theme… automatically!
In case needed (for example, if drawing is being cached), you can observe when theme changes to refresh the UI or to perform any theme related operation. Check “Observing theme changes” on Usage section above.
NSTableView cells are getting a background color after being themed!
Please check this issue. This theming issue only affects view-based NSTableView
s, when placed on sheets, on macOS < 10.14. Please check this comment for a brief explanation on how to fix it, and a small project demonstrating the issue and the fix.
Scrollbars appear all white on dark themes!
If the user opts for always showing the scrollbars on System Preferences, scrollbars may render all white on dark themes. To bypass this, we need to observe for theme changes and change its background color directly. E.g.,
scrollView?.backgroundColor = ThemeColor.myBackgroundColor
scrollView?.wantsLayer = true
NotificationCenter.default.addObserver(forName: .didChangeTheme, object: nil, queue: nil) { (note) in
scrollView?.verticalScroller?.layer?.backgroundColor = ThemeColor.myBackgroundColor.cgColor
}
I’m having font smoothing issues!
You may run into font smoothing issues when you use text without a background color set. Bottom line is, always specify/draw a background when using/drawing text.
For controls like
NSTextField
,NSTextView
, etc:Specify a background color on the control. E.g., ```swift control.backgroundColor = NSColor.black ```
For custom text rendering:
First draw a background fill, then enable font smoothing and render your text. E.g.,
let context = NSGraphicsContext.current()?.cgContext NSColor.black.set() context?.fill(frame) context?.saveGState() context?.setShouldSmoothFonts(true) // draw text... context?.restoreGState()
As a last solution - if you really can’t draw a background color - you can disable font smoothing which can slightly improve text rendering:
let context = NSGraphicsContext.current()?.cgContext context?.saveGState() context?.setShouldSmoothFonts(false) // draw text... context?.restoreGState()
For custom
NSButton
‘s:This is more tricky, as you will need to override private methods. If you are distributing your app on the Mac App Store, you must first check if this is allowed.
a) override the private method
_backgroundColorForFontSmoothing
to return your button background color.b) if (a) isn’t sufficient, you will also need to override
_textAttributes
and change the dictionary returned from thesuper
call to provide your background color for the keyNSBackgroundColorAttributeName
.
License
ThemeKit is available under the MIT license. See the LICENSE file for more info.


Unfortunately our developers have been very busy and have not had time to finish this portion of the site. Please log out to return to the main page.


# (c) 2012-2014, Michael DeHaan<EMAIL_ADDRESS>#
# This file is part of Ansible
#
# Ansible is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Ansible is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
# Make coding more python3-ish
from __future__ import (absolute_import, division, print_function)
__metaclass__ = type
import os
from ansible.compat.six import iteritems
from ansible.errors import AnsibleParserError, AnsibleError
from ansible.parsing.splitter import split_args, parse_kv
from ansible.parsing.yaml.objects import AnsibleBaseYAMLObject, AnsibleMapping
from ansible.playbook.attribute import FieldAttribute
from ansible.playbook.base import Base
from ansible.playbook.conditional import Conditional
from ansible.playbook.taggable import Taggable
from ansible.template import Templar
[docs]class PlaybookInclude(Base, Conditional, Taggable):
_name = FieldAttribute(isa='string')
_include = FieldAttribute(isa='string')
_vars = FieldAttribute(isa='dict', default=dict())
@staticmethod
[docs] def load(data, basedir, variable_manager=None, loader=None):
return PlaybookInclude().load_data(ds=data, basedir=basedir, variable_manager=variable_manager, loader=loader)
[docs] def load_data(self, ds, basedir, variable_manager=None, loader=None):
'''
Overrides the base load_data(), as we're actually going to return a new
Playbook() object rather than a PlaybookInclude object
'''
# import here to avoid a dependency loop
from ansible.playbook import Playbook
# first, we use the original parent method to correctly load the object
# via the load_data/preprocess_data system we normally use for other
# playbook objects
new_obj = super(PlaybookInclude, self).load_data(ds, variable_manager, loader)
all_vars = self.vars.copy()
if variable_manager:
all_vars.update(variable_manager.get_vars(loader=loader))
templar = Templar(loader=loader, variables=all_vars)
try:
forward_conditional = False
if not new_obj.evaluate_conditional(templar=templar, all_vars=all_vars):
return None
except AnsibleError:
# conditional evaluation raised an error, so we set a flag to indicate
# we need to forward the conditionals on to the included play(s)
forward_conditional = True
# then we use the object to load a Playbook
pb = Playbook(loader=loader)
file_name = templar.template(new_obj.include)
if not os.path.isabs(file_name):
file_name = os.path.join(basedir, file_name)
pb._load_playbook_data(file_name=file_name, variable_manager=variable_manager)
# finally, update each loaded playbook entry with any variables specified
# on the included playbook and/or any tags which may have been set
for entry in pb._entries:
temp_vars = entry.vars.copy()
temp_vars.update(new_obj.vars)
param_tags = temp_vars.pop('tags', None)
if param_tags is not None:
entry.tags.extend(param_tags.split(','))
entry.vars = temp_vars
entry.tags = list(set(entry.tags).union(new_obj.tags))
if entry._included_path is None:
entry._included_path = os.path.dirname(file_name)
# Check to see if we need to forward the conditionals on to the included
# plays. If so, we can take a shortcut here and simply prepend them to
# those attached to each block (if any)
if forward_conditional:
for task_block in entry.pre_tasks + entry.roles + entry.tasks + entry.post_tasks:
task_block.when = self.when[:] + task_block.when
return pb
[docs] def preprocess_data(self, ds):
'''
Regorganizes the data for a PlaybookInclude datastructure to line
up with what we expect the proper attributes to be
'''
assert isinstance(ds, dict)
# the new, cleaned datastructure, which will have legacy
# items reduced to a standard structure
new_ds = AnsibleMapping()
if isinstance(ds, AnsibleBaseYAMLObject):
new_ds.ansible_pos = ds.ansible_pos
for (k,v) in iteritems(ds):
if k == 'include':
self._preprocess_include(ds, new_ds, k, v)
else:
# some basic error checking, to make sure vars are properly
# formatted and do not conflict with k=v parameters
if k == 'vars':
if 'vars' in new_ds:
raise AnsibleParserError("include parameters cannot be mixed with 'vars' entries for include statements", obj=ds)
elif not isinstance(v, dict):
raise AnsibleParserError("vars for include statements must be specified as a dictionary", obj=ds)
new_ds[k] = v
return super(PlaybookInclude, self).preprocess_data(new_ds)
def _preprocess_include(self, ds, new_ds, k, v):
'''
Splits the include line up into filename and parameters
'''
if v is None:
raise AnsibleParserError("include parameter is missing", obj=ds)
# The include line must include at least one item, which is the filename
# to include. Anything after that should be regarded as a parameter to the include
items = split_args(v)
if len(items) == 0:
raise AnsibleParserError("include statements must specify the file name to include", obj=ds)
else:
new_ds['include'] = items[0]
if len(items) > 1:
# rejoin the parameter portion of the arguments and
# then use parse_kv() to get a dict of params back
params = parse_kv(" ".join(items[1:]))
if 'tags' in params:
new_ds['tags'] = params.pop('tags')
if 'vars' in new_ds:
raise AnsibleParserError("include parameters cannot be mixed with 'vars' entries for include statements", obj=ds)
new_ds['vars'] = params


--- layout: post status: publish published: true title: Cubs offense snaps out of its "Petit" Mal author: display_name: Corey Fineran login: Corey email<EMAIL_ADDRESS>url: '' author_login: Corey author_email<EMAIL_ADDRESS>wordpress_id: 724 wordpress_url: http://ivyenvy.com/?p=724 date: '2009-04-29 12:32:55 +0000' date_gmt: '2009-04-29 18:32:55 +0000' categories: - Offense - Starting Pitching tags: - Carlos Zambrano - Derek Lee - Jacque Jones - Spring Training - Milton Bradley - Yusmeiro Petit comments: [] ---
I couldn't wait until the Cubs faced Yusmeiro Petit to attempt some creative headline like that. Now I'd like to see the Cubs face him again since he gave up 7 earned runs in 3 2/3 innings.
Of course, the big news of the 11-3 victory was Carlos Zambrano. On the mound, Zambrano went 7 innings and gave up 3 runs with 3 strikeouts. He had a more memorable performance at the plate. Zambrano was a triple away from hitting for the cycle. He went 3-4 with a double, homerun and 2 RBI's and he was about 2 feet short of having 2 HR's on the night. By the night's end, Zambrano's batting average went from .000 to .231.
I'm glad to see Milton Bradley come back to the team while they are on the road. Right now, I don't trust Cubs fans to be level-headed enough to realize that booing and heckling Bradley does not help him, or more importantly, this team in any way. As long as he wears a blue hat with a red "C" on it, I want him to turn things around. If he needs a standing ovation every time he comes to the plate to get some confidence back, I'll support it. He will hit. The guy hit .321 last season and played well in Spring Training. His bat will warm up. I just hope that he hasn't been written off by everyone at that point like Jacque Jones was in 2007. This is a small slice of a lively conversation we had in Episode #6 of the podcast.
Derek Lee comes back today and hopefully this team is on it's way to putting back the broken pieces.


Armed robbers kill Trotro driver
A 36-year-old driver was shot and killed after four suspected armed robbers attacked his commercial vehicle at Ekumfi-Ekrowful on the Ajumako-Accra road in the Central Region.
The belongings of passengers were also stolen by the robbers.
The incident happened last Friday dawn around 3:00am.
The body of the deceased has since been deposited at the Saltpond Government Hospital while the traumatized passengers who escaped unhurt have been dispatched to their various destinations.
A local journalist, Astymin, who broke the news to Onua FM explained that the driver, Kwabena Ahinful, with a Hyundai vehicle registration number GT 5863-19 loaded the 14 passengers from Ajumako to Accra on Friday dawn. He said on reaching Ekumfi Ekrowful, the driver spotted a road block and suspected the blockade to be suspected armed robbers who were robbing innocent passengers.
The journalist narrates that the driver decided to make a U-turn to Ajumako but the suspected armed robber starting firing gunshots through the vehicle and eventually hit him on the head.
He said an immigration officer, who was also on-board, drove the car into a bush to save the remaining passengers. He explained that the police and the youth in the area have teamed up to apprehend the suspects.
The deceased left behind a wife and four children.


{% extends 'base.html' %} {% load staticfiles %} {% block base_content %}
I'll bet you $5 that this webapp is going to be super sweet. Go ahead, try it.
Sign Up »


 With that line coming from a fundamentalist Christian minister, Hollywood has taught us how we should fill in the rest of the story. He will be turn out to be a scoundrel who has less actual belief in God than the average American, and all of his preaching will turn out to be a cynical ruse to extort money from his naive congregation. From ELMER GANTRY on, we have learned what to expect when the movies go to church.
Well, think again, for THE APOSTLE, which Robert Duvall has wanted to make for over a decade, does not take the usual tack of smearing the minister, and by implication all, the rest of organized religion. Instead it gives us a highly devout man, who certainly has his foibles, but with an absolute dedication to his ministry and his God.
And arguably just as surprising, the good-spirited film is no comedy, even if it does have humorous moments. Instead of levity the picture takes a touchingly serious approach as it introduces us to a world not normally seen in motion pictures. When in the privacy of his attic, Robert Duvall, as Texas preacher Euliss "Sonny" Dewey, argues sternly with his Lord, the scene shares a kinship with Emily Watson's character crying out for her God in BREAKING THE WAVES's most powerful scene.
The body of the story starts with Sonny's coming upon an horrific auto accident, which is another part of life generally ignored by modern screenwriters. With his well worn Bible in hand, Sonny leaps from his car so that he can go pray over and with the accident's dying victims. The scowling police officer orders him to go away, and, after he has tried to work his miracles, Sonny leaves with a smile in the confidence that he has done the Lord's work.
Robert Duvall not only gives a moving and realistic performance surely destined to receive an Academy Award nomination but is also the film's director, writer, executive producer, and chief financier. Rarely has a movie been such a labor of love.
With a white suit, peach-colored shirt and tie, and dark sunglasses, Sonny looks as much like a rock star as a preacher. Duvall has every movement down pat. Even when he is walking down the street, the ever strutting Sonny cannot contain his energy. He dances and claps all the way.
 "I may be on the devil's hit-list, but I'm on God's mailing list," he shouts to the congregation in a revival tent. And they lap it up. People jump up, scream, "Praise the Lord!" and mean it. The intensity of their shared religious experience is palpable.
But Sonny is no saint. It turns out that he has a wandering eye, which angers his wife Jessie, played in a remarkably controlled performance by Farrah Fawcett. Jessie gets her revenge by taking up with the church's youth minister and conniving to gain control over Sonny's church, leaving him unemployed. Sonny, letting his temper get the best of him, does something foolish, which causes him to have to leave town and two beloved kids forever.
The bulk of the film occurs in a small, predominately black church in Louisiana, which he builds up from a derelict building with no congregation into a remodeled church ("One Way Road to Heaven: Holiness Temple") with an enthusiastic flock. In this part he rebaptizes himself as The Apostle E.F. The Apostle is a hard worker willing to take on any odd job necessary to obtain the funds for his church. He asks his members to tithe, but he gives all of his money. And his good deeds extend to secret donations of food for the local poor folks.
In his new town he meets Toosie (Miranda Richardson), who, like him, has a family that she hasn't seen in a while. His romance with the separated woman, like the rest of the film, doesn't follow the standard patterns we have grown to expect from our movies.
Billy Bob Thornton shows up one day playing a local racist and general troublemaker. His confrontation with The Apostle is yet another of show's many surprising scenes, again breaking many rules and conceptions about what approach deeply religious people might take.
Although it probably couldn't have ended any other way, the movie does wrap things up nicely. And don't miss the sweet epilogue during the film's closing credits. A tour de force acting performance by Duvall and a surprising and unrelentingly dedicated script makes for an outstanding and moving film.
THE APOSTLE runs a little too long at 2:12. It is rated PG-13 for mild profanity and brief violence and would be fine for kids eleven and up.
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Preparation time
less than 30 mins
Cooking time
less than 10 mins
Serves
Serves 4
Leftover roast duck can be used for these rich sweet noodles, but if you really want authenticity - source one from a Chinese restaurant.
Remove the flesh from the duck and finely slice it, discarding the bones.
Heat a wok (or frying pan), add the oil and heat.
Add the ginger and garlic and cook until golden to flavour the oil, then remove and discard. Add the celery, chilli and half the spring onions and stir-fry for 2 minutes. Add the duck and stir-fry for 1 more minute.
Put the noodles in a heatproof bowl, cover with boiling water, then drain immediately. Add to the wok and toss well over a high heat.
Add the bean sprouts, toss, then add the rice wine. Add the hoisin, oyster and soy sauces and toss well. Scatter with the remaining spring onions and serve.


To handle interactions with the map iframe we are using postRobot library
This functions are triggering the postRobot.send() method.
Check the code of public/post-robot-example.html to see some examples of the implementation of postRobot functionality
Check available layers slugs in this file
Layer slug:


A recent trend in introductory programming education in high schools is programming without coding such as block programming. However, practical programming requires coding skills. We consider that live programming can be the key technique to learn to the fun of coding for novice students.
Based on this idea, we have been developing a code-intensive programming environment, called Puppy. Puppy is a Kid's version of Python that runs on an integrated environment of program execution on a physics engine. Even a small amount of coding can express a rich program. In addition, the programming environment helps to understand coding and programming execution using live programming technique. This essay reports the initial development status of Puppy with several demonstrations.
A recent trend in introductory programming education in high schools is programming without coding. As seen in Scratch[1, 2], students can build programs using GUI-based block components and learn a concept of programming without annoying syntax errors.
But, how do they learn the fun of coding?
We consider that coding is an essence of programming. Live programming can be a key technique to learn a fun of coding for novice students. Based on this idea, we have been developing a code-intensive programming environment, called Puppy.
Puppy is a Kid’s version of Python, which is designed to restrict Python’s syntax and complex functions in order to obtain richer programming experience in a short amount of time. Besides, Puppy has an integrated environment of program execution on a physics engine, where a rich motion of objects is simulated with a small amount of coding.
The idea behind live programming in Puppy is straightforward. If a program execution reflects an intermediate result of coding, coding experience will be greatly improved for students. Puppy introduces Live Focus, which highlights some changed program states resulting from code change. Due to Live Focus, the students can learn an intuitive understanding of coding and program executions.
This essay reports the initial development status of Puppy with several demonstrations. The essay proceeds as follows. We introduce Puppy with demonstrations that Puppy runs on a live programming environment. We then describe the implementation of the live programming environment. Finally, we discuss several challenges and conclusion of this essay.
What is Puppy Like? Let us start with a simple example of Puppy programs.
The Rectangle and Circle are basic classes that describe a shape of objects on Puppy. Here, two objects are created with some physical properties.
Rectangle(500, 950, width=1000, height=100, isStatic=True) Circle(500, 100, width=150, restitution=1.0)
The first two arguments represent an initial position of the object. The width and height represent the size of the object. The Puppy playground provides an editor on the right hand of the screen. The left hand of the Puppy playground is a canvas, where the execution result of Puppy is shown. Once, you type in the above code, puppy runs the code at the same time.
In the above demonstration, the rectangle object does not move, whereas the circle object is bounding due to a physics engine integrated with the Puppy playground. As shown above, the circle follows the law of classical dynamics such as gravity and restitution. Why the Puppy playground include the physics engine? Toy robot programming (such as in LEGO Mindstorms) is a favorite theme since students are likely to understand the state change of programs through the movement of a robot in the real world. Likewise, the Puppy Playground simulates the real world with a mapping of program behaviors.
Let’s go back to live programming in Puppy. Puppy has a nice print function. You may add a statement print(‘Hello World’) into the last line.
Rectangle(500, 950, width=1000, height=100, isStatic=True) Circle(500, 100, width=150, restitution=1.0) print('Hello World')
The Puppy playground displays “Hello World” as shown in the following video.
The string of “Hello World” moves from the right to the left on the canvas. Even just printing a string makes a fun experience in Puppy. In the above case, the program execution proceeds without stopping. Similarly, if you rewrite code slightly, the state of program is updated on live. The following demonstration changes the restitution property in the editor.
As you can see, the state of the program execution is updated in part by resulting from modified code. We aim to remove redundant time waiting for confirm the modification results. This will help students in understanding the relationship between code and the execution results.
Here is the last code in the above demonstration.
Rectangle(500, 950, width=1000, height=100, isStatic=True, fillStyle='green') Circle(500, 100, width=150, restitution=1.5, image='bird.png')
In this code, two new properties fillStyle and image appear. The Live Focus makes possible to try and check the properties easily.
The collisionEnd property is a hook point for event handling. A function registered in this property is invoked by the event of the end time of object collision in the physics engine. The following code is counting a number of collisions between a circle and another object.
Rectangle(500, 950, width=1000, height=100, isStatic=True, fillStyle='green') C = Circle(500, 100, width=150, restitution=1.5, image='bird.png') L = Label(100, 100, value=0) def hit(obj1, obj2): L.value = L.value + 1 print(L.value) C.collisionEnd = hit
The Label is another basic class for displaying a value in the specified location on the screen. Here is a live version of counting a number of object collisions.
In this section, we illustrate the implementation of the Puppy playground. The Puppy playground is implemented as a web application, thereby it makes possible to start writing a Puppy code easily without environment construction.
The Puppy playground has a source code editor. A Puppy code written on the editor is sent to a transcompile server, and so the server responds with the javascript code translated from Puppy. The javascript code consists of operations for Puppy Virtual Machine (Puppy VM). Puppy VM executes the operations and then visualizes its result by the 2D physics engine javascript library called matter.js. Puppy VM provides API to connect matter.js, thus it acts as a matter.js wrapper. The following figure schematically represents Puppy VM.
Matter.js draws 2D rigid bodies in a canvas HTML element. To draw the body, a javascript object requires to be registered to matter.js. Then, matter.js repeatedly draws and calculates the registered object. Puppy VM provides the API of objects registration and changing parameters which registered objects have. These operating objects API are called by the javascript code translated from Puppy. A new instance of Puppy basic class is registered in matter.js through the newObject API. When a user changes the parameter of the instance, the parameter of the javascript object registered in matter.js is also changed. On the other hand, Puppy VM also provides the API to call from a user interface in the Puppy playground. The start and pause API operate physics calculate. For example, the Puppy playground has the button using the start API to run the physics engine.
Puppy VM has a feature to support live programming. The yield feature realizes gradual execution. A yield keyword is inserted in the javascript code translated from Puppy. Puppy VM wait a few seconds after each the yield keyword. Hence, the Puppy playground can visualize gradually changing of the program execution.
The Puppy playground introduces Live Focus, which supports coding to improve coding experience. We will describe how to realize Live Focus. An editor on the playground keep in to be observed, moreover, code deferences are calculated. The code deferences are classified into the following three patterns.
Appending at the tail of a code.
Changing at the midway of a code.
Otherwise.
In the case of pattern 1, the appended code is continuously executed without stopping the program execution. In the case of pattern 2, if the changed part is a parameter, the parameter is updated without stopping the program execution. In the case of pattern 3, the program execution starts from the beginning.
Consequently, Live Focus highlights some changed program states resulting from code change.
The challenge in live programming is the refinement of Live Focus. For fluid coding, the restart of a program should be removed as many as possible. We plan to support more code changes not required stopping the program execution.
Another challenge is the enhancement of coding supports. In particular, the supports linked with the visualized execution result is desirable such as idea of Learnable Programming. For instance, if a user mouse over the parameter of a rigid body, the playground explain by visual in the rigid body.
In this essay, we introduced Puppy with several demonstrations on a prototype implementation. Puppy is simple, whereas it is expressive enough to learn programming. In addition, the Puppy playground assists coding using live programming technique. Finally, we described the implementation of Puppy Playground and how to realize live programming. If you want more detail, please access to the Puppy repository on Github.


{% extends 'base.html' %} {% block content %}
Do you really want to delete the ticket {{ ticket.title }}?


{% extends "base.html" %} {% block title%} Joshua Hansen {% endblock %} {% block content %}
I am a senior year computer science student at SFSU, with expected graduation of Spring 2021. I have most experience in Java, C++, C, and Python. I am a guitarist, pianist, and music producer in my extra time aside from programming.


PHP is a general use programming language that has been an integral part of web development since around the time of its creation in 1994.
The Standard PHP Library (SPL) is a collection of interfaces and classes that are meant to solve common problems. Here are some of the ways it can be useful:Performing various operations on strings such as finding the length, substituting, and searching for substringsWorking with Date and Time objects and formatting them
Let's get a basic feel for PHP's syntax and standard library with some code:
function say_hello( $name, $date ) {
echo "Hello, " . $name . "\n";
echo "Today is " . $date;
}
$date = date("D M d, Y G:i");
say_hello( 'World', $date );
Result:
Hello, World
Today is Fri May 27, 2020 4:00
PHP's syntax draws heavily from the C programming language and as such bears a strong resemblance to the syntax of other modern programming languages.
Declaring a variable for example follows a familiar pattern if you have some experience with other languages:
$foo = 2;
$bar = 2;
$baz = $foo + $bar;
echo "The variable \$baz = " . $baz;
Result:
The variable $baz = 4
Okay, you might be confused by these echo statements from the last two examples so here's a quick explanation: The echo is actually what is known as a language construct and we can pass arguments (i.e. $bar) to it and it will output them for us. The reason for the period ('.') between the two arguments is that we are concatenating, or combining, them into one argument which is passed to echo. We also use the backslash ('\') on $bar in the first part of our string to tell php we want to output a literal ('$') symbol rather than retrieve the actual value of $bar inside our string. In the second part of the string, we output $bar's actual value which is known as string interpolation.
These concepts may be confusing at first and can take a long time to get familiar with, but using echo will be an essential tool for quickly debugging php programs by verifying the values we have stored.


{% extends "base.html" %} {% load staticfiles %} {% block title%}Index{%endblock%} {% block id %}index{% endblock%} {% block content%}
Keep track of your own Trainees. Set up their workouts and see their progress online.
Find new potential trainees around your area.
Keep track of all your personal and trainee workout schedules.


Hey! It's me again. Now two examples where given, try comparing the two and notice the difference. Remember ordered lists use numbers while unordered lists use bullets. CODE ON!


We exchange interfaces!
- architect customized networks
- engage visionary eyeballs
- morph efficient platforms
- expedite one-to-one methodologies
- embrace 24/7 metrics
- unleash leading-edge e-services
- seize revolutionary partnerships
- seize holistic eyeballs
- revolutionize ubiquitous schemas
- envisioneer open-source partnerships
- grow global synergies
- reintermediate holistic convergence


WITNESS LIST Economic Development Committee (Subcommittee on Charge #3 - Career & Technology) July 6, 2000-9:00A Charge #3 For: Albert, Steve (Self) Beloat, Judy (Self) Brown, Dr. Carrie H. (Self) Cain, Dr. Ed (Texas Engineering Extension Service) Conner, Kelly (Self) Davis, Jennifer (Self and Supercuts / Central Texas) Dochen, Sandy (Self and American Electronics Association) Ellis, Cissy (Career Colleges & Schools of Texas) Holcombe, Linda (Self) Howden, Robert (National Federation of Independent Business / Texas) Johnson, Ronald (Self) Quintin, Jim (Automotive Wholesalers of Texas) Rodgers, Minnie (Self) Warner, Freddy (Self and Texas Motor Transportation Association) On: Hamilton, Billy (Texas Comptroller of Public Accounts) Lehman, Ron (Self) Leidig, Julie (Texas Higher Education Coordinating Board) Lindsey, Paul (Texas Education Agency) McCain, Ward (Texas Education Agency) Rector, Lee (Texas Skill Standards Board) Segura, Bill (Texas State Technical College System)


{% extends "layout.html" %} {% block page_title %} Apprenticeships {% endblock %} {% block content %} {% include "includes/phase_banner_alpha.html" %} Access my funds Contracts {% include "includes/account-name-number.html" %}Review contracts with providers Search Contract status Providers Standards Reference:  {% endblock %}


Andrés Méndez
Objective
Software developer with a strong passion for game development, data-oriented design, and performance-oriented software architecture.
Experience
Microsoft
Software Engineer
Sep 2021 - May 2023
Develop and maintain the Find Meeting Time feature on the Outlook Calendar team. Ensure seamless integration with other systems.
Unity
Support Engineer
Nov 2018 - Sep 2021
Provided technical support to customers using Unity's deployment platforms and applications. Supported multiple render pipelines, including URP, HDRP, and the legacy render pipeline. Troubleshot issues across different platforms using rendering APIs such as DirectX, Metal, Vulkan, and OpenGL.
Globant
C++ Developer
May 2017 - Oct 2018
Contributed to the development of FormIt, a 3D CAD software, and YOU-i Labs, a C++ engine application used for multi-platform VOD and streaming.
ParqueSoft
Lead Developer
Feb 2016 - May 2017
Developed a desktop application, Fibonacci, to automate form work modulation based on CAD drawings and visualize the placement in 3D. Utilized expertise in C# and the Unity Engine to develop an AI using behavior trees and procedural mesh generation for various different panels, allowing for future size customization. The application was implemented for both OSX and Windows platforms.
AppsLife
Full Stack Developer
Dec 2014 - Dec 2015
Played a key role in the development of the Applicados project - a mobile and web application for schools and parents. Utilized expertise in JavaScript and the Meteor platform, implemented a multi-tenant architecture for the application that was available on iOS, Android, and web.
Digital Virgo
Game Developer
Aug 2014 - Nov 2014
Developed several mobile casual games for Android and iOS. Delivered engaging gaming experiences, including the single-player games Waves of Madness and Math Tapper for Android, and Electro Pong - a single-player and split-screen versus game for iOS iPad.
TNT3 Studio
Game Developer
Jan 2014 - Jul 2014
Developed mobile and web games. Developed KICK IT: Road to Brazil, a single-player mobile casual game for Android and iOS using Unity, and Copigame, a single-player web-based training game to train drugstore clerks using Flash.
EXISTA YA
Front end Developer
Apr 2013 - Dec 2013
Implemented designs into code and ensured that websites were optimized for various devices and platforms. Used HTML5, CSS3, JavaScript, WordPress, and Responsive Design to create dynamic and visually appealing websites.
Education
Universidad Autonoma de Occidente
Informatics Engineering, 2022 - present
Comfandi el Prado
Electronic Technician, Jul. 2003 - Jul 2009


Grazi inspection provides an extended spell and grammar checking. You can change inspection settings in
File | Preferences | Tools | Grazi
.