Type Function Library gameNetwork.* Return value none Revision Current Public Release (2013.2076) Keywords gameNetwork, request, gamecenter Sample code /CoronaSDK/SampleCode/GameNetwork/GameCenter See also gameNetwork.init()
gameNetwork.show()
Send or request information to/from the game network provider.
gameNetwork.request( command [, params ...] )
String. The following commands are supported for the corresponding game networks:
Game Center:
The following parameters are supported for the corresponding game networks:
setHighScore: Sets a high score for the currently logged in user for the specified leaderboard (category). If the high score is not higher than the one currently on the server, the server will keep the highest value.
This function corresponds to Apple's reportScoreWithCompletionHandler. The nomenclature deviates in this case to provide consistency with our existing gameNetwork APIs.
Example "setHighScore" request:
gameNetwork.request( "setHighScore",
{
localPlayerScore = { category="com.appledts.EasyTapList", value=25 },
listener=requestCallback
})
'localPlayerScore' is a required table that corresponds to Apple's GKScore class.
In the localPlayerScore table:
'category' must be a string that matches the ID of the leaderboard you want to register the score with as entered on iTunes Connect. (The ID you pick need not follow the fully qualified reverse domain style shown here.) '
'value' must be a number representing your score. Note that Apple allows for 64-bit integers, but all numbers in Lua are of type double. This means your max and min values are restricted to the range of double which is about 2^51 instead of 2^64.
loadScores: event.data in callback listener is an array of items (tables) that have the following properties:
example: event.data[5].formattedValue -- #event.data == 2nd value specified in range table
event.localPlayerScore also has all of the above properties (not in an array). This table also corresponds to Apple's GKScore class.
example: event.localPlayerScore.rank
Warning: iOS 4 has a bug where event.localPlayerScore.category returns nil. This is fixed in iOS 5.
Example "loadScores" request:
gameNetwork.request( "loadScores",
{
leaderboard =
{
category="com.appledts.EasyTapList",
playerScope="Global", -- Global, FriendsOnly
timeScope="AllTime", -- AllTime, Week, Today
range={1,5}
},
listener=requestCallback
})
'leaderboard' is a required table that corresponds to Apple's GKLeaderboard class.
In the leaderboard table:
'category' (required) must be a string that matches the name of the board you want to fetch the scores with as entered on iTunes Connect. (The name you pick need not follow the fully qualified reverse domain style shown here.) '
'playerScope' (optional) is a string of either "Global" or "FriendsOnly". The latter setting will restrict the fetched scores to only friends.
'timeScope' (optional) is a string of either "AllTime", "Week", "Today" which limits the fetched scores to the specified time range.
'range' (optional) is an array of two values. The first value is that start index. The second value is the number of players to retrieve. Apple says this number must be less than 100. Apple's default range is {1,25}.
loadLocalPlayer: Requests the GKPlayer object for the currently logged-in user.
event.data in callback listener includes the following properties:
This table corresponds to Apple's GKLocalPlayer class. Each element in the friends array is a string representing a playerID.
example: event.data.playerID
Example "loadLocalPlayer" request:
gameNetwork.request( "loadLocalPlayer", { listener=requestCallback } )
To guarantee the friends array is populated, Apple says you must call loadFriends before this. We have found that this necessary on iOS 4, but on iOS 5, we get the friends array regardless.
loadPlayers: Requests a list of players with the specified player IDs, and returns an array of items (tables) for each requested player in the callback listener.
event.data in callback listener is an array of items that have the following properties:
Each item (table) in the array corresponds to Apple's GKPlayer class
example: event.data[3].isFriend
Example "loadPlayers" request:
gameNetwork.request( "loadPlayers",
{
playerIDs =
{
"G:123456789",
"G:1234567890",
"G:0123456789"
},
listener=requestCallback
})
loadFriends: Requests the friends of the currently logged in user, and returns and array of tables for all friends in the callback listener.
event.data in callback listener is an array of strings representing playerIDs.
example: event.data[2].playerID
Example "loadFriends" request:
gameNetwork.request( "loadFriends", { listener=requestCallback } )
loadAchievements: Loads a list of the user's completed achievements for the app and returns an array of items (tables) representing each achievement in the callback listener.
event.data in callback listener is an array of items that have the following properties (each representing an achievement):
Each item (table) in the array corresponds to Apple's GKAchievement class.
example: event.data[4].identifier
Example "loadAchievements" request:
gameNetwork.request( "loadAchievements", { listener=requestCallback } )
unlockAchievement: Unlocks the specified achievement (identifier) at the specified percentage. The showsCompletionBanner only takes affect if the achievement is 100% complete, and if the device is running iOS5 or higher.
This function corresponds to Apple's reportAchievementWithCompletionHandler. The nomenclature deviates in this case to provide consistency with our existing gameNetwork APIs.
Example "unlockAchievement" request.
gameNetwork.request( "unlockAchievement",
{
achievement =
{
identifier="com.appletest.one_tap",
percentComplete=100,
showsCompletionBanner=true,
},
listener=requestCallback
})
'achievement' is a required table that corresponds to Apple's GKAchievement class.
In the "achievement" table:
'identifier' (required) must be a string that matches the name of the achievement you want to unlock/report as entered on iTunes Connect. (The name you pick need not follow the fully qualified reverse domain style shown here.) '
'percentComplete' (optional) must be a number representing the completion percentage of the achievement. 100 will fully unlock the achievement. If this field is omitted, it is assumed this value is 100.
'showsCompletionBanner' (optional, iOS 5+ only) is a boolean which if set to true, will cause Apple to automatically show a completion banner for you in your app when the percentComplete reaches 100. This field is ignored on pre-iOS 5 OS's.
The listener callback will fill event.data with a table that corresponds to the Apple GKAchievement class that you just unlocked. You may use this information to help identify which/any achievements that were successfully reported to the Game Center servers and which ones might have failed due to network timeouts.
resetAchievements: Resets all achievements for the currently logged-in user. Be careful, as there is no undoing this request. Once called, the user will have all achievements for this app reset to 0%.
Example "resetAchievements" request:
gameNetwork.request( "resetAchievements", { listener=requestCallback } )
loadAchievementDescriptions: Requests a list of all descriptions associated with the achievements for the app and returns an array of items (tables) representing each achievement description object in the callback listener.
Each item (table) in the array corresponds to Apple's GKAchievementDescription class.
event.data in callback listener is an array of items which are the descriptions of your achievements.
Example "loadAchievementDescriptions" request:
gameNetwork.request( "loadAchievementDescriptions", { listener=requestCallback } )
loadFriendRequestMaxNumberOfRecipients: Apple imposes a maximum number of people you may invite in a single friendRequest. This function will allow you to retrieve that number so you may dynamically adapt your code to accommodate this value if it changes. As of this writing, this number is 3. The value will be returned through the callback listener (via event.data).
Example "loadFriendRequestMaxNumberOfRecipients" request:
gameNetwork.request( "loadFriendRequestMaxNumberOfRecipients", { listener=requestCallback } )
loadLeaderboardCategories: Requests a list of leaderboard categories for the app and returns an array of tables with each table containing description information of a leaderboard in the callback listener.
event.data in callback listener is an array of items (tables) where each table contains the keys 'category' and 'title', both of which are strings.
Example "loadLeaderboardCategories" request:
gameNetwork.request( "loadLeaderboardCategories", { listener=requestCallback } )
-- example of what an event.data table returned via callback listener looks like
event.data =
{
[1] = {
category = "com.appledts.EasyTapList",
title = "Easy"
},
[2] = {
category = "com.appledts.HardTapList",
title = "Hard"
},
[3] = {
category = "com.appledts.AwesomeTapList",
title = "Awesome"
},
}
loadPlayerPhoto: Retrieves the image of the requested player and creates a display object for it.
Example "loadPlayerPhoto" request.
gameNetwork.request( "loadPlayerPhoto",
{
playerID = "G:0123456789",
size="Small", -- "Small" or "Normal"
listener=requestCallback
})
'playerID' (required) is the Game Center player ID (string) of the player you want to fetch the image for.
'size' (optional) represents the size of the image you want to get back. Supported values are "Small" and "Normal". "Small" is the default.
The listener callback will fill event.data with a table that corresponds to the Apple GKPlayer class as you've seen with other APIs documented above. But unlike the other APIs one additional property is added, 'photo', which is the display object of the retrieved image.
event.data in callback listener includes the following properties:
If called on pre-iOS5, the callback will be invoked and return errorCode=1 and errorMessage="This API is not available on this version of iOS."
loadAchievementImage: Retrieves the image of the requested achievement and creates a display object for it.
Example "loadAchievementImage" request:
gameNetwork.request( "loadAchievementImage",
{
achievementDescription=
{
identifier="com.appledts.twenty_taps"
},
listener=requestCallback
})
'achievementDescription' is a required table that corresponds to Apple's GKAchievementDescription class.
In the "achievementDescription" table:
'identifier' (required) must be a string that matches the name of the achievement you want to retrieve the image for. (The name you pick need not follow the fully qualified reverse domain style shown here.) '
The listener callback will fill event.data with a table that corresponds to the Apple GKAchievementDescription class as you've seen with other APIs documented above. But unlike the other APIs one additional property is added, 'image', which is the display object of the retrieved image.
event.data in callback listener includes the following properties:
Remember to upload images to iTunes Connect that are compatible with Corona (e.g. don't used indexed color pngs, etc.)
loadPlaceholderCompletedAchievementImage: Retrieves the Apple placeholder image of a completed achievement and creates a display object for it.
Example "loadPlaceholderCompletedAchievementImage" request:
gameNetwork.request( "loadPlaceholderCompletedAchievementImage",
{
listener=requestCallback
})
The listener callback will fill event.data with the display object of the image.
loadIncompleteAchievementImage: Retrieves the Apple placeholder image of an incomplete achievement and creates a display object for it.
Example "loadIncompleteAchievementImage" request:
gameNetwork.request( "loadIncompleteAchievementImage",
{
listener=requestCallback
})
The listener callback will fill event.data with the display object of the image.
For further property reference for the different objects (GKLeaderboard, GKAchievement, GKAchievementDescription, GKScore, GKPlayer, and GKLocalPlayer), please see the Official Game Kit Framework Reference.
loadCurrentPlayer: Retrieves the current whos turn it is in a match.
Example "loadCurrentPlayer" request:
gameNetwork.request( "loadCurrentPlayer",
{
matchID = "w4o98y3498hg349h",
listener=requestCallback
})
'matchID' (required) is the Game Center match ID (string) of the match you want to fetch the current participant for.
event.data in callback listener includes the following object: participant
createMatch: Creates a turnbased match with the specified players. On iOS 5.x the playerIDs field is ignored so you can not invite players like this. It will result in a game with only automatch players.
Example "createMatch" request:
gameNetwork.request( "createMatch",
{
playerIDs = {"w4o98y3498hg349h", "wrighfq547hg543"},
minPlayers = 2,
maxPlayers = 3,
playerGroup = 1, -- The game type will be created, for example it can be quick game or long game. Only players whose requests share the same playerGroup value are automatched by Game Center.
playerAttributes = {1,4,6}, -- The bits to set for the player
inviteMessage = "Hi join me",
listener=requestCallback
})
'playerIDs' (required) is an array of strings with the ids of the people you want to invite to a match
'minPlayers' (optional) is the minimum number of players that can be in a match
'maxPlayers' (optional) is the maximum number of players that can be in a match
'playerGroup' (optional)(number) is the type of game that the player will join for an automatch game
'playerAttributes' (optional)(table) is a table with the bits(1-32) for which to set for the player. Automatching with player attributes matches new players into the game so that the bitwise OR of the masks of all the players in the resulting match equals 0xFFFFFFFF.
event.data in callback listener includes is the following object:
quitMatch: The player leaves the specified match. The outcome of the player leaving the match is set.
Example "quitMatch" request:
gameNetwork.request( "createMatch",
{
matchID = "adsfawerg4",
outcome = "lost",
data = "dsfa4wt4t",
nextParticipant = {"34tgergae5rtg5"},
listener=requestCallback
})
'matchID' (required) is a string identifying the match the player will quit.
'outcome' (required) is the result of the match for the player that quit.
'data' (required) is the data of the match for the next player. This is only necessary if its the local player's turn.
'nextParticipant' (required) is the next player thats supposed to take a turn if it is the logged in player's turn wrapped in an array. It can be the playerID if it exists or it can be the index value of the participant. This is only necessary if its the local player's turn.
event.data in callback listener includes is the following object:
match endMatch: The match is ended for all players. The outcome of the match is set for all the players.
Example "endMatch" request:
gameNetwork.request( "endMatch",
{
matchID = "adsfawerg4",
outcome = {
[participant1ID] = "first",
[participant2ID] = "second",
[participant3ID] = "third",
},
data = "dsfa4wt4t",
listener=requestCallback
})
'matchID' (required) is a string identifying the match the player will end
'outcome' (required) is an array containing the player ids and the outcome for the player
'data' (required) is the final data of the match
removeMatch: Removes the match of the list of matches in Game Center. This should only be called after endMatch has been called
Example "removeMatch" request:
gameNetwork.request( "removeMatch",
{
matchID = "adsfawerg4",
listener=requestCallback
})
'matchID' (required) is a string identifying the match the player will end
setEventListener: Sets the event listener for all matches.
Example "setEventListener" request:
gameNetwork.request( "setEventListener",
{
listener=requestCallback
})
event.type can be of the following:
invitationReceived - This is the event when the player has received an invitation to join a match
matchEnded - This is the event when another player has called gameNetwork.request("endMatch"), subsequently ending the match for all the players.
playerTurn - This is the event when it is the current players turn in a match.
event.data in callback listener includes the following properties when event.type is invitationReceived:
event.data in callback listener includes the following properties when event.type is matchEnded: match
event.data in callback listener includes the following properties when event.type is playerTurn: match
loadMatchData: Retrieves the data of a match.
Example "loadMatchData" request:
gameNetwork.request( "loadMatchData",
{
matchID = "adsfawerg4",
listener=requestCallback
})
'matchID' (required) is a string identifying the match for which the match data will be retrieved.
event.data in callback listener includes is the following object:
endTurn: Ends the current player's turn and lets the next player start their turn.
Example "endTurn" request:
gameNetwork.request( "endTurn",
{
matchID = "adsfawerg4",
data = "dsfa4wt4t",
nextParticipant = {"34tgergae5rtg5"},
listener=requestCallback
})
'matchID' (required) is a string identifying the match the player will end their turn for.
'data' (required) is the data of the match for the next player.
'nextParticipant' (required) is the next player thats supposed to take a turn thats wrapped in an array. It can be the playerID if it exists or it can be the index value of the participant.
event.data in callback listener includes is the following object:
loadMatches: Loads the turn-based matches involving the local player and creates a match object for each match.
Example "loadMatches" request:
gameNetwork.request( "loadMatches",
{
listener=requestCallback
})
event.data in callback listener includes the following:
loadTurnBasedMatchMaxNumberOfParticipants: Apple imposes a maximum number of people you may invite to a turn based match. This function will allow you to retrieve that number so you may dynamically adapt your code to accommodate this value if it changes. The value will be returned through the callback listener (via event.data). This request is only valid for iOS6+. It will not call the callback for iOS5
Example "loadMatches" request:
gameNetwork.request( "loadMatches",
{
listener=requestCallback
})
Game Center:
-- Called after a request has been sent.
local function onGameNetworkRequestResult( event )
if event.type == "setHighScore" then
-- High score has been set.
else if event.type == "resetAchievements" then
-- Achievements have been reset.
end
end
-- Update the player's high score.
gameNetwork.request( "setHighScore",
{
localPlayerScore = { category = "com.appledts.EasyTapList", value = 25 },
listener = onGameNetworkRequestResult,
})
-- Reset the player's achievement list.
gameNetwork.request( "resetAchievements", { listener = onGameNetworkRequestResult } )


Meta3
Home
(current)
API Documentation
Meta3 : Small example of use.
1. Import a file
Select a file from your computer to import.
Upload
3. Import from a url
Enter a link to a file to download.
Upload
2. Edit data
Enter the file informations and save them to your file.
Title
Artist
Album
Album artist
Track number
Disc number
Year
Genre
Cover
Save
3. Download your file
Download your modified file.
Download


| | |
- create_buttons()
- Creates the buttons for the global and regional commands.
Global commands are filetype dependent
- get_filetype()
- Gets the filetype and sets in the backend any changes relating to this
- globalcommand(path)
- Deals with button presses relating to global commands
Args:
path -- path to the command to run
Returns:
Output of the command
- make_global_command(path)
- Makes a global command to be run
Args:
path -- what to run
Returns:
a function to be called
- make_regional_command(path)
- Makes a regional command to be run
Args:
path -- what to run
Returns:
a function to be called
- regional(path)
- Deals with button presses relating to regional commands
Args:
path -- path to the command to run
Returns:
Output of the command
- run_command(path, start_sel, end_sel)
- Runs a command on a region of the EDITOR
Args:
path -- what to run
start -- where to start
end -- where to end
|


Milan and Napoli still searching for winning formula after stalemate
ROME: Struggling AC Milan and Napoli ground out a 1-1 Serie A draw at San Siro on Saturday that did little to help either side’s plight.
Hirving Lozano headed Napoli in front midway through the first half before Giacomo Bonaventura levelled with a powerful strike five minutes later.
Napoli have now failed to win any of their last six games in all competitions, their worst run since March 2013, while Milan coach Stefano Pioli has recorded one victory in six games since taking over from the sacked Marco Giampaolo in October.
“I was sure we’d put in the right performance," Pioli told Sky Italia. "We fought against a very strong team, even when missing some important players, but those who stepped in did very well.
“I wish we’d have scored another goal, because we had the chances and were just centimetres away from getting the victory."
Napoli remain seventh on 20 points. Milan are up to provisional 13th spot although their tally of 14 points after 13 games is the club's joint-worst in the three points for a win era, along with the 2013/14 season.
Carlo Ancelotti’s Napoli side travelled to Milan in crisis, with Italian media saying club president Aurelio De Laurentiis was threatening to freeze the players' wages after they refused to attend a training retreat at the start of the month.
However, the visitors opened the scoring with their first chance when Lorenzo Insigne’s curling effort cannoned off the bar into the path of Lozano who headed home after 24 minutes.
Milan needed just five minutes to respond, though, as Bonaventura drilled the ball into the net from the edge of the box for his first Serie A goal since October 2018.
Napoli defender Elseid Hysaj’s botched clearance came within inches of creeping into his own net before Milan's Gianluigi Donnarumma saved an Insigne effort just before the break.
There were few chances in a nervy second half, with Napoli defender Kalidou Koulibaly doing well to block Krzysztof Piatek's goal-bound attempt and Donnarumma beating away Allan's dipping volley.
(Reporting by Alasdair Mackenzie; editing by Tony Lawrence and Ken Ferris)


Lets run some long running task and watch what it does to the UI
Renderer process
Background process
Waiting...


Fetch Tutorial
How to save time in Sublime Text using the Fetch Tutorial
March 18, 2015
Quick video tutorial on how to save and retrieve snippets of code using the NetTuts+ Fetch package in Sublime Text 2.
Enjoy
Quick video tutorial on how to save and retrieve snippets of code using the NetTuts+ Fetch package in Sublime Text 2.
Enjoy


This may be valid OGNL expression, however it is considered complex by Concordion and will not be evaluated at runtime.
Simplify it or use @FullOGNL annotation over test fixture


First, we need to boot into the proper disk image. In most cases, you want to select the below boot image at start. This selects the 32 bit and 64 bit ISO files for installation.
Boot Arch Linux (x86_64)The default keyboard layout is US. If you want to use a different layout run this where layout can be fr, uk, dvorak, be-latin1, etc.
loadkeys layout
These next commands will create your file system. To start, we create our partitions.
cfdiskCFdisk enables us to write partitions. Select Write and create the following partitions. In this example I'll be using a 60 Gb SSD.
All of these are Primary, and start at the Beginning of space. Next, make sure that sda1 has the Boot flag. Second, go to sda2 and select Type to find the correct FS Type called Linux swap / Solaris and it's key is 82.
Your finished partition table should look like in this picture. Now Write the partitions and quit CFdisk.With our partitions finished, we must Mount & Format. Just follow the lines below, they are case-sensitive.
mkfs.ext4 -E discard /dev/sda1
mkswap /dev/sda2
swapon /dev/sda2
mkfs.ext4 -E discard /dev/sda3
mkfs.ext4 -E discard /dev/sda4
mount /dev/sda3 /mnt
mkdir -p /mnt/boot
mount /dev/sda1 /mnt/boot
mkdir -p /mnt/home
mount /dev/sda4 /mnt/homeWith that, our partitions are finished. We can start installing the system.
From this point forward, you require an internet connection.
ping -c 3 www.google.comIf you fail to recieve any packets back, then solve it here.
These next commands install the base system of Arch Linux. You'll be prompted to confirm downloads, just hit enter. Also these commands will take time to download.
pacstrap -i /mnt base base-devel
pacstrap -i /mnt grub-bios
pacstrap -i /mnt gnomeSeriously, grab a snack.
Now we have to generate a GenFStab file. It stores information about your partitions.
genfstab -U -p /mnt >> /mnt/etc/fstab
nano /mnt/etc/fstabCheck the fstab file to see if your partitions are correct. If you get an error, then edit the fstab file. These next commands have to edit our mounted files. So, we have to access our chroot.
arch-chroot /mnt
First we will create your comupter's name, or Hostname. Other computers will see yours as this name over networks. "Archie", is a common hostname.
echo hostname > /etc/hostname
Next, we set up our timezone.
ln -s /usr/share/zoneinfo/America/Chicago /etc/localtime
nano /etc/locale.genYou now uncomment two lines in locole.gen. These correspond to your timezone. In this tutorial's case we edit:
en_US.UTF-8 UTF-8
en_US ISO-8859-1Then exit and save changes.
locale-gen
echo LANG=en_US.UTF-8 > /etc/locale.conf
export LANG=en_US.UTF-8Now your timezone and hostname are set up.
These lines will install our Boot Loader. This will enable us to boot into our system. Note: We are installing the GRUB boot loader.
pacman -Syy
pacman -S grub grub-biosLets also get os-prober, it's a utility to detect other OSes on your drives.
pacman -S os-prober
grub-install --target=i386-pc --recheck --debug /dev/sda
grub-mkconfig -o /boot/grub/grub.cfg
pacman -Syu
pacman -Syy
This command will enable our system's internet connection.
systemctl enable dhcpcd.service
If you want (or need) a 64x version of Arch, we neeed to edit the pacman.conf file.
nano /etc/pacman.confIn this file, we want to uncomment these two lines:
[multilib]
Include = /etc/pacman.d/mirrorlist
Note: There is a fitting option, adding an ILoveCandy
line to the Misc options
section. Making boring hash-symbols look like pacman eating dots! BTW, it's case-sensitive too.
mkinitcpio -p linux
Below, we'll setup your Root Password. You will be using this password whenever you want to install a program or do something as root. Make sure this password is strong. Phrases are long and easy to remember; they also take the life of the universe to brute-force!
passwd
Once you're done, sync and exit the file system with:
pacman -Syy
exitNow to unmount, update, sync, and reboot the system. Note: This command reads as Umount, not UNmount.
umount /mnt/boot
umount /mnt/home
umount /mnt
pacman -Syu
pacman -Syy
reboot
After you restart and boot, select Boot existing OS at the boot menu then login as as root with your root password. Login as:
rootand enter your password:
password
Time to update Arch and install sudo. Sudo is our administrative tool.
pacman -S sudo
pacman -Syu
pacman -Syy
We can create our User now that we have sudo. Enter your choice of name in username. It can only have lower-case letters.
useradd -m -g users -G wheel -s /bin/bash username
Now, create the password for your User.
You use this password to download packages with sudo.
Using root as your main user would break a lot of things.
Make it different form your root password too.
passwdThis command will show you the sudoers file.
nano /etc/sudoersUncomment this in the file.
%wheel ALL=(ALL) ALLDelete the hashtag. Save changes.
pacman -Syy
Finally, to install the desktop environment.
pacman -S gnome xorgAccept all download prompts. Get more snacks.
pacman -Syu
pacman -SyyEnable Gnome and restart.
systemctl enable gdm.service
reboot
Login with your user on startup and that is it!
You have installed Arch Linux!
If you can't login with your user, login as root and find the Terminal.
Then, type this in.
passwd username
First, understand what you use PacMan for.
Pacman stands for Package Manager.
It's purpose is to organize all of Arch's packages simplisticlly.
To install an app, you first open Terminal and type sudo
.
We cannot install apps without permission from root. That is why we need sudo and a decent password.  What if you look for an app, but don't know the app's name? That's when you search the Arch Repository and AUR.
 Most repositories have standards such as free software only. The Arch repo contains free and nonfree software: Nonfree as in Skype and Steam.
Out of good character, here is a list of apps for you.
These are just from the offical Arch repo. More programs that are useful can be found on the AUR: The Arch User Repository I'll leave you with that.
END_


Hello and welcome to my about page! My name is Stone Hobbs and I am a nerd extraordinaire. I enjoy every nerdy activity you can think of: programming, math, video games, chess, rubik's cubes, and more. Beside those, I also enjoy various sports, mainly bowling. On this about page, you'll find information on my experiences and accomplishments. For more in depth information about my projects, browse my projects page.
August 2015 - May 2019
GPA: 3.7
August 2019 - May 2020
GPA: 3.7
January 2019
Issued by Wichita State University for having a GPA of 3.5+
May 2018
Issued by Shanwee Mission North High School for having a GPA of 3.0+
January 2018
Issued by Shanwee Mission North High School for having a GPA of 4.0+
March 2019
Issued by Kansas Scholastic Chess Association for placing 9th in the K-12 section


Laying awake at night, you bolt up from an unsettling dream, as if there is something wrong in the universe and your subconscious has realized it. Perhaps the masters of time are out of balance, or the dictators of our automated universe are making their needs known. "Oh no," you wonder. "Could it be... cron?"
Whether it's the start of a nightmare or the beginning of a day in reality, automating our workflows is something that we as developers do every day. Like brushing teeth, we probably copy paste from an instruction manual or previous script, and get on with our day. But what if our behavior has led to an imbalance? Or in other words (what I woke up this morning pondering) is what kind of collective decisions are we making with respect to cron?
For those that aren't familiar, GitHub workflows has an ability to schedule a workflow, meaning we can use cron to say "Run this once a week, on Sunday, at 2:00am" and pretty much any interval that you'd like.
The problem arises because (I suspect) people are uncreative with their choices of time. Even worse, they probably just copy paste from the GitHub (or other) instructions. To test my feeling of dread that we are making sloppy decisions about our cron, I did a small analysis. I created a simple project to query for a sample of 1000 GitHub workflow files that use cron, and then take a look at some details. This post that lives alongside the repository is what I found.
For approximately 1000 GitHub workflow files with scheduled events, I looked at the frequency of the schedule. By far, the most common frequencies are once a week, and once a day (regardless of time).
The "4 weeks 3 days" is what we would call a month, and "52 weeks 1 day" is obviously a year. I figured out these frequencies by first generating two timestamps for a cron entry, calculating the difference between the two in seconds, and then converting the seconds into weeks, days, hours, and minutes. I'm really interested to know what jobs are being run every minute, or even 15 or 30 minutes.
Surely once a day or week isn't bad as long as we space the running times out into equal buckets, right? Unfortunately if we look at the timestamps, we see that most people are using the easiest example to look up - 00:00 (they might assume midnight), and then another peak at 7:00 UTC and a second at 12:00 UTC. Did I mention these times are in UTC? I wonder how many people look that up? Surely I just assume that I'm the center of the universe and GitHub can magically derive my timezone from my commits and... yeah, probably not. :)
If I had to guess, I'd say the first group copy pasted an example from crontab.guru without considering the times are in UTC (00:00 UTC is 5:00pm in San Francisco, which I mention since a lot of tech is there), the second group might have actually considered UTC, and chose the correct midnight (7:00 UTC is 9:00am in Germany, midnight in San Francisco), and the third group likely thought about it too (12:00 UTC is 5:00am San Francisco, 10:00pm in Australia). It's hard to say, but probably most people setting actions don't consider converting from UTC, or maybe don't care. What this chart doesn't do a good job of showing are the times that are never (or almost never) scheduled. They wouldn't even appear as bars.
Before I looked at the data, my guess would have been that people want to run jobs on weekend days, since that's when people aren't working. But I was surprised to see that the most common day is "every day," followed by Monday and then Sunday.
At least every day makes a lot of sense - and I feel silly for not realizing that a good chunk of my own runs I do on a nightly basis. Sunday I understand, but Monday? Is this another copy pasta artifact or is Monday really ideal? And if so, why?
To be fair, to do this analysis I converted cron schedule strings into timestamps and descriptions, and did more parsing. If you want to see the raw data you can see it in the data folder, and here I'll show you raw descriptions. It's actually much easier to read directly from the data file if you really are interested.
Yeah I know it's kind of small, it's getting really late and I don't have the energy left to do a different kind of plot. Please use the data and make a better one and submit a pull request! If you are truly lazy and don't want to click, if you carefully mouse over the strings, you'll at least see a glimpse of values - everything from "At 12 minutes past the hour, every 6 hours" to "At 03:11 every day." It kind of makes me wonder if people thought about these scheduled events or just entered numbers at random.
From this very brief, just-a-few-hours-before-bed-in-my-pajamas analysis, I sense that:
At face value, it seems like we are being a little sloppy, at least from this random sample (the 1000 most recently indexed files with a cron: schedule entry). I mean, how should GitHub handle many more requests to run jobs on specific days per week or times? Have we even validated that the jobs are actually run at those times? Couldn't there just be an option to say "run for me once a (X)" and then let GitHub choose the day/month/hour that takes into consideration all the other jobs? Or maybe GitHub is such a monster now that it's backed by Microsoft that there are infinite resources for running things. I would suspect cron jobs are just a tiny fraction of all the jobs they run, which are going at all times. But there are so many more questions we could ask!
I'm particularly interested in the second point, or at least this feels like one I could tackle on my own. The first is interesting but would be a project for another day, and the third I'm not sure I could answer. So what do you think? Can we be more responsible with our cron-jobbing, or is this a nightmare that is likely to continue and will continue to keep a dinosaur like myself awake at night to wonder... "Something is not right. Could it be Cron?" 👻


The Cotswolds is a very scenic area of the UK. The area is dotted with small villages. Each village has its own personality, although every one seems to have a small but beautifully formed church and an interesting pub. The drive through the Cotswolds is an opportunity for photographs.
We will visit the village of Upper Norton to spend some time walking near the River Rye. There is a park within a short walk of the river where families can enjoy the activities. We have arranged a visit to the Church of Saint Peter in Upper Norton. The church is famous for its wonderful stained glass windows. The village post office also has many original features from the 19th century and is worth a visit. When you go in to the post office, it seems like you have stepped back in time. Children (and adults) will enjoy looking at (and tasting) the array of sweets on display in glass jars. The post office sells more sweets than it does postage stamps.
After the morning in the village, passengers will have time for a lunchtime meal at the village pub. The local beer is to be recommended - for those who like a pint.
After leaving Upper Norton, the tour will make its way to the theme park.
The afternoon will be spent at the Scorpion Theme Park - there is a huge variety of rides and attractions to experience and they are suitable for all ages.
The tour will return to Hickley in the evening, dropping passengers off at their collection point on the way back.


Internet Search
Written by: Margaret Chen
With the invention of the world wide web and a Browser War looming in the background, another important part of Internet history is how search engines came to be. At the forefront of this effort were the founders of Yahoo!, Jerry Yang and David Filo. Both were electrical engineering graduate students at Stanford University who wanted to use the internet to win a fantasy basketball league. In the process, they created a website called “Jerry and David’s guide to the World Wide Web” as a directory to other websites, organized in categories and sub-categories. It proved to be popular, and with investments from a venture capitalist, the company, Yahoo!, was created.
One of Yahoo’s biggest dilemmas from the start of their company was on where they would generate revenue from. At the time, the internet was thought of as an utopia of free thinking and academia, unconfined by the capitalistic world. However, Yahoo could think of no other way to make money but to include banner advertisements from sponsors on their website, which they feared would suffer backlash from their users. Luckily, its users continued to use Yahoo regularly, and with the advertisements, Yahoo demonstrated it was possible to profit off the internet. And yet, with all the success they faced, Yahoo was far from perfect.
It was during this time, Larry Page, a young graduate student at Stanford University, would come up with the idea that the web could show how useful a certain link was to the users by seeing the number of times a website was linked to other sites. By ranking search results based on the popularity of that website, it would help the users have a better search experience when using a search engine. This was the core foundation for the company that Larry Page cofounded with fellow student Sergey Brin as Google.
As another search engine, Google also faced the dilemma of how to make money off of search engines. Yet, Google’s founders did not want to be like another Yahoo. Instead, Google essentially copied the idea from a website called Overture, which was created by Bill Gross, the founder of Idealab. Gross’ idea was that when a user typed in a keyword in a search engine, it was indicative of their interest. In other words, it was a way to show what users might be interested in buying. Therefore, companies looking to sell their products could sell a keyword to determine the placement of their ads when the keyword is typed into the search engine. This proved to be very effective in differentiating Google’s search engine and Yahoo’s search engine in terms of user experience for relevant searches to the keyword.
While Google has established itself to be one of the most useful search engines, it also brought about fears of invasion of privacy. How much of your personal information could be stored on Google’s databases? This is a conflict that is still relevant today and will certainly continue to be a concern for all users.


"""The :code:`output` module contains data structures for controlling what
DISORT outputs.
"""
import numpy as np
[docs]class OutputArrays:
"""A structure to make the DISORT output arrays.
OutputArrays creates arrays of 0s that are designed to get populated with
values as DISORT runs.
"""
[docs] def __init__(self, n_polar: int, n_user_levels: int,
n_azimuth: int) -> None:
"""
Parameters
----------
n_polar
The number of polar angles to use in the model.
n_user_levels
The number of user levels to use in the model.
n_azimuth
The number of azimuthal angles to use in the model.
"""
self.__n_polar = n_polar
self.__n_user_levels = n_user_levels
self.__n_azimuth = n_azimuth
self.__albedo_medium = self.__make_albedo_medium()
self.__diffuse_up_flux = self.__make_diffuse_up_flux()
self.__diffuse_down_flux = self.__make_diffuse_down_flux()
self.__direct_beam_flux = self.__make_direct_beam_flux()
self.__flux_divergence = self.__make_flux_divergence()
self.__intensity = self.__make_intensity()
self.__mean_intensity = self.__make_mean_intensity()
self.__transmissivity_medium = self.__make_transmissivity_medium()
def __make_albedo_medium(self) -> np.ndarray:
return np.zeros(self.__n_polar)
def __make_diffuse_up_flux(self) -> np.ndarray:
return np.zeros(self.__n_user_levels)
def __make_diffuse_down_flux(self) -> np.ndarray:
return np.zeros(self.__n_user_levels)
def __make_direct_beam_flux(self) -> np.ndarray:
return np.zeros(self.__n_user_levels)
def __make_flux_divergence(self) -> np.ndarray:
return np.zeros(self.__n_user_levels)
def __make_intensity(self) -> np.ndarray:
return np.zeros((self.__n_polar, self.__n_user_levels,
self.__n_azimuth))
def __make_mean_intensity(self) -> np.ndarray:
return np.zeros(self.__n_user_levels)
def __make_transmissivity_medium(self) -> np.ndarray:
return np.zeros(self.__n_polar)
@property
def albedo_medium(self) -> np.ndarray:
"""Get the albedo of the medium output array.
Notes
-----
In DISORT, this variable is named :code:`ALBMED`.
"""
return self.__albedo_medium
@property
def diffuse_up_flux(self) -> np.ndarray:
"""Get the diffuse upward flux output array.
Notes
-----
In DISORT, this variable is named :code:`FLUP`.
"""
return self.__diffuse_up_flux
@property
def diffuse_down_flux(self) -> np.ndarray:
"""Get the diffuse downward flux output array, which will be the total
downward flux minus the direct beam flux.
Notes
-----
In DISORT, this variable is named :code:`RFLDN`.
"""
return self.__diffuse_down_flux
@property
def direct_beam_flux(self) -> np.ndarray:
"""Get the direct beam flux output array.
Notes
-----
In DISORT, this variable is named :code:`RFLDIR`.
"""
return self.__direct_beam_flux
@property
def flux_divergence(self) -> np.ndarray:
r"""Get the flux divergence output array, which is will represent
:math:`\frac{dF}{d\tau}` where :math:`F` is the flux and :math:`\tau`
is the optical depth. This is an exact result.
Notes
-----
In DISORT, this variable is named :code:`DFDT`.
"""
return self.__flux_divergence
@property
def intensity(self) -> np.ndarray:
"""Get the intensity output array.
Notes
-----
In DISORT, this variable is named :code:`UU`.
"""
return self.__intensity
@property
def mean_intensity(self) -> np.ndarray:
"""Get the mean intensity output array.
Notes
-----
In DISORT, this variable is named ":code:`UAVG`.
"""
return self.__mean_intensity
@property
def transmissivity_medium(self) -> np.ndarray:
"""Get the transmissivity of the medium output array.
Notes
-----
In DISORT, this variable is named :code:`TRNMED`.
"""
return self.__transmissivity_medium
[docs]class OutputBehavior:
"""A structure that holds DISORT output behavior switches.
OutputBehavior provides some default output behavior for DISORT. All the
parameters can be overriden to fit user specifications.
"""
[docs] def __init__(self, incidence_beam_conditions: bool = False,
only_fluxes: bool = False, user_angles: bool = True,
user_optical_depths: bool = False) -> None:
"""
Parameters
----------
incidence_beam_conditions
Denote what functions of the incidence beam angle should be
included. If :code:`True`, return the albedo and transmissivity of
the
entire medium as a function of incidence beam angle. In this case,
the following inputs are the only ones considered by DISORT:
- :code:`MAXCLY`
- :code:`DTAUC`
- :code:`SSALB`
- :code:`PMOM`
- :code:`NSTR`
- :code:`USRANG`
- :code:`MAXUMU`
- :code:`UMU`
- :code:`ALBEDO`
- :code:`PRNT`
- :code:`HEADER`
:code:`PLANK` is assumed to be :code:`False`, :code:`LAMBER` is
assumed to be :code:`True`, and
:code:`ONLYFL` must be :code:`False`. The only output is
:code:`ALBMED` and :code:`TRNMED`. The
intensities are not corrected for delta-M+ correction.
If :code:`False`, this is accommodates any general case of boundary
conditions including beam illumination from the top, isotropic
illumination from the top, thermal emission from the top, internal
thermal emission, reflection at the bottom, and/or thermal emission
from the bottom.
only_fluxes
Determine if only the fluxes are returned by the model. If
:code:`True`,
return fluxes, flux divergences, and mean intensities; if
:code:`False`,
return all those quantities and intensities. In addition, if
:code:`True`
the number of polar angles can be 0, the number of azimuthal angles
can be 0, phi is not used, and all values of intensity (UU) will be
set to 0.
user_angles
Denote whether radiant quantities should be returned at user angles.
If :code:`False`, radiant quantities are to be returned at computational
polar angles. Also, :code:`UMU` will return the cosines of the computational
polar angles and n_polar will return
their number ( = n_streams). :code:`UMU` must
be large enough to contain n_streams elements. If :code:`True`,
radiant quantities are to be returned at user-specified polar
angles, as follows: NUMU No. of polar angles (zero is a legal value
only when 'only_fluxes' == True ) UMU(IU) IU=1 to NUMU, cosines of
output polar angles in increasing order---starting with negative
(downward) values (if any) and on through positive (upward)
values; **MUST NOT HAVE ANY ZERO VALUES**.
user_optical_depths
Denote whether radiant quantities are returned at user-specified
optical depths.
See Also
--------
:class:`~controller.ComputationalParameters`,
:class:`~controller.ModelBehavior`,
:class:`~observation.Spectral`
"""
self.__incidence_beam_conditions = \
self.__make_incidence_beam_conditions(incidence_beam_conditions)
self.__only_fluxes = self.__make_only_fluxes(only_fluxes)
self.__user_angles = self.__make_user_angles(user_angles)
self.__user_optical_depths = self.__make_user_optical_depths(
user_optical_depths)
def __make_incidence_beam_conditions(self, ibcnd: bool) -> bool:
return self.__cast_variable_to_bool(ibcnd, 'incidence_beam_conditions')
def __make_only_fluxes(self, only_fluxes: bool) -> bool:
return self.__cast_variable_to_bool(only_fluxes, 'only_fluxes')
def __make_user_angles(self, user_angles: bool) -> bool:
return self.__cast_variable_to_bool(user_angles, 'user_angles')
def __make_user_optical_depths(self, user_optical_depths: bool) -> bool:
return self.__cast_variable_to_bool(
user_optical_depths, 'user_optical_depths')
@staticmethod
def __cast_variable_to_bool(variable: bool, name: str) -> bool:
try:
return bool(variable)
except TypeError as te:
raise TypeError(f'{name} cannot be cast into a boolean.') from te
@property
def incidence_beam_conditions(self) -> bool:
"""Get whether the model will only return albedo and transmissivity.
Notes
-----
In DISORT, this variable is named :code:`IBCND`.
"""
return self.__incidence_beam_conditions
@property
def only_fluxes(self) -> bool:
"""Get whether DISORT should only return fluxes.
Notes
-----
In DISORT, this variable is named :code:`ONLYFL`.
"""
return self.__only_fluxes
@property
def user_angles(self) -> bool:
"""Get whether radiant quantities should be returned at user angles.
Notes
-----
In DISORT, this variable is named :code:`USRANG`.
"""
return self.__user_angles
@property
def user_optical_depths(self) -> bool:
"""Get whether radiant quantities should be returned at user optical
depths.
Notes
-----
In DISORT, this variable is named :code:`USRTAU`.
"""
return self.__user_optical_depths
[docs]class UserLevel:
"""A structure to create the levels at which radiant quantities are returned
UserLevel checks that radiant quantities can be returned at user levels.
"""
[docs] def __init__(self, n_user_levels: int, optical_depth_output: np.ndarray = None) -> None:
"""
Parameters
----------
n_user_levels
The number of user levels to instantiate. Only used if
:code:`optical_depth_output` is not :code:`None`.
optical_depth_output
If radiant quantities are to be returned at user specified optical
depths this is the monotonically increasing 1D
array of optical depths where they should be output. It must not
exceed the column integrated optical depth of :code:`DTAUC`. If
radiant
quantities can simply be returned at the boundary of every
computational layer (assuming :code:`user_optical_depths` is set to
:code:`False`) this can be :code:`None`,
and this object will create an array of 0s for the output.
"""
self.__optical_depth_output = self.__make_optical_depth_output(
optical_depth_output, n_user_levels)
@staticmethod
def __make_optical_depth_output(optical_depth_output, n_user_levels):
if optical_depth_output is not None:
# TODO: ensure this is monotonically increasing
# TODO: ensure the last element does not exceed the total optical
# depth of the medium from dtauc
return optical_depth_output
else:
return np.zeros(n_user_levels)
@property
def optical_depth_output(self) -> np.ndarray:
"""Get the input user optical depth array at user levels.
Notes
-----
In DISORT, this variable is named :code:`UTAU`.
"""
return self.__optical_depth_output


Rugby Australia boss to quit after difficult tenure
Sydney - Rugby Australia chairperson Cameron Clyne on Monday announced he will not stand for re-election in 2020, taking a parting swipe at the media after a difficult four years in charge.
A former head of Australian banking giant NAB, Clyne said his term would end on March 30 when the governing body holds its annual general meeting.
During his tenure, Clyne oversaw the controversial axing of the Western Force from the Super Rugby competition and mixed results for the Wallabies.
It culminated in Australia's World Cup quarter-final flop in Japan and the resignation of coach Michael Cheika.
He also presided over the divisive sacking this year of Super Rugby's record try-scorer Israel Folau for homophobic comments, with a potentially costly unfair dismissal court case looming.
Clyne, though, pointed to a number of achievements and positive advancements under his watch, particularly the big growth in female participation in the sport.
"Unfortunately, recently, much of the focus of the media has been directed at myself," he said, referring to domestic press criticism of the performance of Clyne and chief executive Raelene Castle.
He said this had "overshadowed a lot of great work that has been done and continues to be done at the community level through to the national level by our volunteers, administrators, players, coaches, and match officials across the country".
"It is hoped that with my resignation, the attention can return to where it rightfully should be, which is on the field and that this positive work will be highlighted."


THE RETURN OF SWAMP THING Reviewed by David N. Butterworth Copyright 1989 David N. Butterworth/The Summer Pennsylvanian
Just when you thought it was safe to venture back into the bayou, along comes THE RETURN OF SWAMP THING, part monster movie, part parody, wholly (if not intentionally) awful. Not since King Kong and Godzilla first slugged it out atop Mount Fuji has there been a more laughable -- or more ludicrous -- man-in-a-monster-suit movie.
The first film of the summer season to be based on a character from a D.C. Comic, THE RETURN OF SWAMP THING plays it strictly for laughs. In Wes Craven's original 1983 horror flick, Swamp Thing was portrayed as a sad, tormented creature, the hideous result of research gone awry. In this, its purported sequel, Swamp Thing has been transformed into a superhero, ridding the swamp of botched genetic experiments and rushing to the aid of damsels in distress.
One such damsel is the exquisitely untalented Heather Locklear. Locklear, who should stick to making health spa ads, is cast as Abby Arcane, stepdaughter of scientist-gone-mad Anton Arcane (played once again by Louis Jourdan in the scenery-chewing role of the century).
Abby visits her creepy stepfather in his heavily guarded Louisiana mansion in order to discover what really happened to her mother all those many moons ago. Arcane isn't telling, but somehow you get the feeling that she didn't pass away under normal circumstances! Realizing that Abby's rare blood type holds the key to his fountain-of-youth elixir, Arcane and his beautiful henchwoman Dr. Lana Zurrell (played with campy panache by Sarah Douglas) immediately have diabolical designs on the ditzy blonde, family ties or no family ties.
From the opening scene, we learn that Abby has a very special relationship with plants. Not only does she call her succulents down-to-earth names like "Jimmy" and "Mary," but she holds entire, one-sided conversations with them. This is, I guess, just so we know that, come the time when she and Swamp Thing inevitably meet, she's going to be able to relate to him, woman to vegetable.
Sure enough, this encounter takes place when Swamp Thing rescues Abby from a pair of lecherous moonshiners. Barely batting a false eyelash at this living lump of lichen, Abby immediately senses the "soul of a wonderful human being" beneath that mossy exterior. Extraordinary as it might seem, it's love at first sight.
To pad out its ninety-minute length, the film introduces a stereotypically pudgy, twinkie-eating white kid and his precocious black pal, who are in the movie to try and photograph the fibroid avenger for commercial gain. In actual fact, they're in the film to be laughed at, even though they do get to say some real neat lines like "Swamp Thing's kicking some butt!" They also get to give the leafy fellow complimentary thumbs up from time to time, just so we know who the good guy is. Everybody in the film overacts like crazy, and these two obnoxious youngsters are no exception.
It's hard to dislike a film as good-natured as this one is, especially in an industry rife with gratuitous sex and violence. Sure, the film does have its explosive moments (courtesy the five-and-dime "special" effects), but ne'er a drop of blood is spilled throughout. And there are ample opportunities for nudity -- Locklear and Douglas weren't employed solely for their acting abilities -- but none ensue. Abby and her new found beau do get to express their love for each other, but it's tastefully done, if in a slightly silly manner (as is everything else in the film).
From the very beginning you realize that this is not a film to be taken seriously. Though harmless enough, it does tend to be rather smug and a little too cute for its own good, and you end up laughing at the film rather than with it. If it weren't so badly acted, so deliberately self-mocking all around, then it might have made for better entertainment. As it is, THE RETURN OF SWAMP THING remains strictly for the grade Z crowd. The only thought that appears to have gone into the making of this movie is that the producers decided not to call it SWAMP THING 2.
.
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


{% extends "charting.html" %} {% load tz %} {% load card %} {% block form %} {% include 'form/range.html' %} {% endblock %} {% block rest %}
| Card | Last action | Date | Diff | # cards | # story points |
| {% display_card_with_detail_link ls.card_action %} | {{ ls.card_action.action_type }} | {{ ls.card_action.date|localtime|date:"Y-m-d P T" }} | {{ ls.diff }} | {{ ls.cards_rt }} | {{ ls.story_points_rt }} |


IPv4 Address:
Netmask:
CIDR mask:
Network before
Coincident Address:
Network Address:
Broadcast Address:
This network
This Address:
Network Address
:
Binary Address:
Binary Netmask:
Broadcast Address:
Usable addresses:
Network after
Coincident Address:
Network Address:
Broadcast Address:
Feedback


---
title: Hours & Pricing
call_to_action: Contact
background_image_path:
large_header: false
show_in_navigation: true
navigation_order: 4
---
All dogs must have the following vaccinations before they will be allowed to board:
- Rabies
- Distemper
- Bordetella
Hours of Operation
For Picking up and Dropping off your pet for boarding
- Monday through Wednesday: 8:00 a.m. - 12:00 p.m. and 4:00 p.m. - 5:00 p.m.
- Thursday: 2:00 p.m. - 5:00 p.m. (September thru May only)
- Friday: 8:00 a.m. - 12:00 p.m. and 4:00 p.m. - 5:00 p.m.
- Saturday: 9:00 a.m. - 10:00 a.m. and 4:00 p.m. - 5:00 p.m.
- Sunday: 11:00 a.m. - 12:00 p.m. and 4:00 p.m. - 5:00 p.m.
Holiday Hours are 11:00 a.m. - 12:00 p.m. for the following holidays:
- Labor Day
- Memorial Day
- 4th of July
- Christmas Eve
- New Years Eve
There will be no picking up or dropping off on the following holidays:
- Easter Sunday
- Thanksgiving Day
- Christmas Day
- New Years Day
Boarding Pricing
DOG BOARDING
- First dog: $22.00 per day
- Second dog: $17.00 per day
- Three or more dogs: $17.00 per dog per day
CAT BOARDING
- One cat: $11.00 per day
- Two cats: $20.00 per day
- Three or more cats: $9.00 per cat per day
Dog Grooming - by appointment only
Pricing can very based on breed and size. Please call for pricing and to hear about our various discounts offered such as our active duty, veteran and first responder discounts.


We have a number of different teams within our agency that specialise in different areas of business so you can be sure that you won't receive a generic service and although we can't boast years and years of service we can ensure you that is a good thing in this industry. Our teams are up to date with the latest technologies.
Read more
We have a number of different teams within our agency that specialise in different areas of business so you can be sure that you won't receive a generic service and although we can't boast years and years of service we can ensure you that is a good thing in this industry. Our teams are up to date with the latest technologies. We have a number of different teams within our agency that specialise in different areas of business so you can be sure that you won't receive a generic service and although we can't boast years and years of service we can ensure you that is a good thing in this industry. Our teams are up to date with the latest technologies, media trends and are keen to prove themselves in this industry.
Read more


My name is Caroline Miranda, I am a marketing professional and web designer from Salvador, Bahia, Brazil currently living in Dublin, Ireland. In childhood I had more fun coming up with new games than actually playing them. Today, I channels all my creativity and inventiveness to turn good ideas into great projects. I am also a researcher on OBEC (Monitoring Centre for Creative Economy) of Universidade Federal da Bahia / Brazil. I currentlyenrolled in online courses (CodeSchool) to improve my knowledge in HTML and CSSand I also keep myself informed about the latest developments in ProductDesign.
.Check out what Carol use to work
Carol is available for projects as well potential job opportunities. Use the form for information about budgets and availability, or just to say hi. :) Get in contact with Carol via Linkedn.


DESIGN
We have helped thousands of up and coming artists from all around the world with their
recording of music, videography, marketing and management
DEVELOPMENT
We are looking to expand our services and products beyond East Africa
PRODUCT MANAGEMENT
Our products include
music production
Artist management
Music speakers among others..
Edwin
Edwin
Edwin
Edwin
Edwin
Edwin
Edwin
Edwin


"I am a kind of person who won't compromise when I am working on a particular task, and I keep learning and update myself with almost everything, and I feel that you are making your best choice by hiring me. I have taken several workshops on Microsoft Office software, and I have worked with the newest version as well as previous versions dating back to 1997's version. I am very comfortable with the Office suite."
Experience
5 years of total experience
Jan 2013 - Present
1 year 10 months
Senior Software Engineer
Mastek MSC SDN BHD| Ang Mo Kio, Singapore
Jan 2013 - Present (1 year 10 months)
Aerospace / Aviation / Airline
Arts/Creative/Graphics Design
Desktop Publishing Artist
Senior Executive
MYR 3,200
Training Modules Design and Development. Currently working on the development of Entrepreneur Graduate Career Accelerated Programme modules.
Contributed in the development of corporate training modules for SMECorp.
Feb 2012 - Jan 2013
11 months
Web Developer
TMS Asia Sdn Bhd| Kuala Lumpur, KL
Feb 2012 - Jan 2013(11 months)
Aerospace / Aviation / Airline
Arts/Creative/Graphics Design
Desktop Publishing Artist
Senior Executive
MYR 2,600
Contributed in the development of corporate training modules for SMECorp.
Jun 2011 - Aug 2011
3 months
IT Internship
Talent Software Bhd| Subang Jaya, Selangor
Jun 2011 - Aug 2011(3 months)
Aerospace / Aviation / Airline
Arts/Creative/Graphics Design
Desktop Publishing Artist
Junior Executive
MYR 800
EXPERIENCES GAINED:
Experience in selling intangible/conceptual products/services/ software in Medical Imaging field. Recent sales experience to healthcare providers including hospitals and diagnostic imaging centers at executive level. (senior administration, board, committees, department heads and physicians,etc.)
Experience in medical imaging/radiology, skilled in use of internet, software applications including PowerPoint, Word. Excellent oral and written communication skills and knowledge of health care information technology.
Education
May 2013
Universiti Kebangsaan Malaysia (UKM)
Bachelor's Degree in Finance/Accountancy/Banking| Malaysia
May 2013
Finance
1st Class
Education in its general sense is a form of learning in which the knowledge, skills, values, beliefs and habits of a group of people are transferred from one generation to the next through storytelling, discussion, teaching, training, and or research. Education may also include informal transmission of such information from one human being to another. Education frequently takes place under the guidance of others, but learners may also educate themselve. Any experience that has a formative effect on the way one thinks, feels, or acts may be considered educational.
Jan 2010
Universiti 2
Bachelor's Degree in Finance/Accountancy/Banking| Malaysia
Jan 2010
Finance
1st Class
Education in its general sense is a form of learning in which the knowledge, skills, values, beliefs and habits of a group of people are transferred from one generation to the next through storytelling, discussion, teaching, training, and or research. Education may also include informal transmission of such information from one human being to another. Education frequently takes place under the guidance of others, but learners may also educate themselve. Any experience that has a formative effect on the way one thinks, feels, or acts may be considered educational.
Jan 2009
Universiti 3
Bachelor's Degree in Finance/Accountancy/Banking| Malaysia
Jan 2009
Finance
1st Class
Education in its general sense is a form of learning in which the knowledge, skills, values, beliefs and habits of a group of people are transferred from one generation to the next through storytelling, discussion, teaching, training, and or research. Education may also include informal transmission of such information from one human being to another. Education frequently takes place under the guidance of others, but learners may also educate themselve. Any experience that has a formative effect on the way one thinks, feels, or acts may be considered educational.
CAREER OBJECTIVE:
To contribute positively to Company growth, sustainability and profitability while enriching personal
career exposures and experiences. My goal is to continue my career pursuit in the lines of Project Management
and Communications & Content Planning and Development
PERSONAL ATTRIBUTES:
Charismatic and responsible when leading a group/team.
Strong analytic and diagnostic skills.
Able to work independently or in a group/team.
About Me
Female/ Male
26
(+60)18-8888888
Jalan 123, Unit 456, Subang Jaya, 50300, Selangor, Malaysia


This homework has two parts. In the first part (Problem 1), you will practice concepts we discuss in class. In the second part, you will put the graph you designed in Homework 4 to use by modeling the Marvel Comics universe. By trying out your ADT in a client application, you will be able to test the usability of your design as well as the correctness, efficiency, and scalability of your implementation. You may have to overhaul, or just tweak your implementation, once you try it with a larger load.
The application builds a graph containing thousands of nodes and edges. At this size, you may discover performance issues that weren't revealed by your unit tests on smaller graphs. With a well-designed implementation, your program will run in a matter of seconds. Bugs or less ideal choices of data structures can increase the runtime to anywhere from several minutes to 30 minutes or more. If this is the case you may want to go back and revisit your graph implementation from Homework 4. Remember that different graph representations have widely varying time complexities for various operations and this, not a coding bug, may explain the slowness.
This part is designed to improve your understanding of function subtyping and true subtyping discussed in lectures. Place your answers to the questions below in file answers/hw5_problem1.pdf.
class A { Object m(X y, String s); } class B extends A { X m(X y, String s); Y m(Object y, Object s); Z m(Y y, String s); }
class Triangle { // modifies: this // effects: this_post.a=a, this_post.b=b, this_post.c=c void setSides(int a, int b, int c); } class IsoscelesTriangle extends Triangle { // modifies: this // effects: this_post.a=a, this_post.b=b, this_post.c=b void setSides(int a, int b, int c); }
abstract class Vertebrate extends Animal { // returns: an integer > 0 int neckBones(); } class Squid extends Vertebrate { // returns: 0 neck bones int neckBones(); } class Human extends Vertebrate { // returns: 7 neck bones int neckBones(); }
class Bicycle { int cadence; int speed; int gear; // effects: creates a new Bicycle Bicycle(int startCadence, int startSpeed, int startGear); // modifies: this // effects: this_post.cadence=newCadence, this_post.speed=newSpeed, this_post.gear=newGear void setParameters(int newCadence, int newSpeed, int newGear); } class MountainBike extends Bicycle { int height; // effects: creates a new MountainBike MountainBike(int startCadence, int startSpeed, int startGear, int startHeight); // modifies: this // effects: this_post.height=newHeight void setHeight(int newHeight); }
class Account { // modifies: this // effects: this_post.amount = this_pre.amount + d; void deposit(int d); } /* An account that works safely when multiple transactions attempt deposits simultaneously */ class ConcurrentAccount extends Account { // modifies: this // effects: this_post.amount = this_pre.amount + d; // throws: AbortException if another transaction is in the process of depositing money void deposit(int d); }
In this application, your graph models a social network among characters in Marvel comic books. Each node in the graph represents a character, and an edge ⟨Char1,Char2⟩ indicates that Char1 appeared in a comic book that Char2 also appeared in. There should be a separate edge for every comic book, labeled with the name of the book. For example, if Zeus and Hercules appeared in (say) five issues of a given series, then Zeus would have five edges to Hercules, and Hercules would have five edges to Zeus.
Your graph should not store reflexive edges from characters to themselves.
You will write a class hw5.MarvelPaths (in file MarvelPaths.java in package hw5) that reads the Marvel data from a file (marvel.csv), builds a graph, and finds paths between characters in the graph. You are not required to write a main method as a driver for your application; nevertheless, we encourage you to do so, both for your own convenience and for the satisfaction that comes with creating a complete, standalone application.
As you complete this assignment, you may need to modify the implementation and perhaps the public interface of your Graph ADT from Homework 4. Briefly document any changes you made and why in answers/hw5_changes.pdf (no more than 1-2 sentences per change). If you made no changes, state that explicitly. You don't need to track and document cosmetic and other minor changes, such as renaming a variable; we are interested in substantial changes to your API or implementation, such as adding a public method or using a different data structure. Describe logical changes rather than precisely how each line of your code was altered. For example, "I switched the data structure for storing all the nodes from a ___ to a ___ because ___" is more helpful than "I changed line 27 from nodes = new ___(); to nodes = new ____();."
Leave your graph in the hw4 package where it was originally written, even if you modify it for this assignment. There is no need to copy files or duplicate code! You can just import hw4 and use it in Homework 5. If you do modify your hw4 code, be sure to commit your changes to your repository.
Before you get started, obtain the Marvel Universe dataset. We have not added this file to your Git repositories because it is fairly large. Instead, download the file from the course Web site. Store the file in data/marvel.csv. (You might have to add the data directory under the project root.)
IMPORTANT: Do not commit the marvel.csv into your repository! There is a limit on each repository and committing such a large file may break this limit. This is easily taken care of in eGit, you can simply exclude marvel.csv.
Take a moment to inspect the file. A CSV ("comma-separated value") file consists of human-readable data delineated by commas, and can be opened in your favorite text editor, a spreadsheet like Excel, or with Eclipse. Each line in marvel.csv is of the form
"character","book"
where character is the name of a character, book is the title of a comic book that the character appeared in, and the two fields are separated by a comma.
The first step in your program is to construct your graph of the Marvel universe from a data file. We have written a class MarvelParser that may help. MarvelParser has one static method, readData(), which reads data from marvel.csv, or any file structured in the same format. readData() creates in-memory data structures: a Set of all characters and a Map from each book to a Set of characters in that book. These are not the data structures you want, however; you want a Graph.
We have also included a main method which takes the file name as a command-line argument and then calls readData(). To add marvel.csv as a command-line argument in Eclipse, go to Run->Run Configurations. In the Run Configurations window, choose the "Arguments" tab. In "Program Arguments", type data/marvel.csv.
Later on when measuring coverage, you can comment out the main method. (Since it is never called from the tests, it will decrease your percent coverage.) If you choose not to use our parser code, you can get rid of the file altogether. You do need to substitute with your own parser code though.
You may modify MarvelParser however you wish to fit your implementation. You may change the method signature (parameters and return value) of parseData(), or you may leave parseData() as is and write code that processes its output. The only constraint is that your code needs to take a filename as a parameter so the parser can be reused with any input file.
At this point, it's a good idea to test the parsing and graph-building operation in isolation.  The assignment formally requires this in Problem 5.
The real meat (or tofu) of MarvelPaths is the ability to find paths between two characters in the graph. Given the name of two characters, MarvelPaths searches for and returns a path through the graph connecting them. How the path is subsequently used, or the format in which it is printed out, depends on the requirements of the particular application using MarvelPaths.
Your program should return the shortest path found via breadth-first search (BFS).  Below is a general BFS pseudocode algorithm to find the shortest path between two nodes in a graph G. For readability, you should use more descriptive variable names in your actual code than are needed in the pseudocode:
start = starting node dest = destination node Q = queue, or "worklist", of nodes to visit: initially empty M = map from nodes to paths: initially empty. // Each key in M is a visited node. // Each value is a path from start to that node. // A path is a list; you decide whether it is a list of nodes, or edges, // or node data, or edge data, or nodes and edges, or something else. Add start to Q Add start->[] to M (start mapped to an empty list) while Q is not empty: dequeue next node n if n is dest return the path associated with n in M for each edge e=⟨n,m⟩: if m is not in M, i.e. m has not been visited: let p be the path n maps to in M let p' be the path formed by appending e to p add m->p' to M add m to Q If the loop terminates, then no path exists from start to dest. The implementation should indicate this to the client.
Here are some facts about the algorithm.
Many character pairs will have multiple paths. For grading purposes, your program should return the lexicographically (alphabetically) least path. More precisely, it should pick the lexicographically first character at each next step in the path, and if those characters appear in several comic books together, it should print the lexicographically lowest title of a comic book that they both appear in. The BFS algorithm above can be easily modified to support this ordering: in the for-each loop, visit edges in increasing order of m's character name, with edges to the same character visited in increasing order of comic book title. This is not meant to imply that your graph should store data in this order; it is merely a convenience for grading.
Because of this application-specific behavior, you should implement your BFS algorithm in MarvelPaths rather than directly in your graph, as other hypothetical applications that might need BFS probably would not need this special ordering. Further, other applications using the graph ADT might need to use a different search algorithm, so we don't want to hard-code a particular search algorithm in the graph ADT.
Using the full Marvel dataset, your program must be able to construct the graph and find a path in just a couple of seconds on your PC/laptop and on the Submitty. When running tests we will set a 60 second timeout for each test suite. Note that if your solution exceeds the limit, your process is cut then the output file is cut and you may get strange Error message about incorrect formatting of the output file.
Similarly to Homework 4, add an instance field that stores a Graph in MarvelPaths. For testing purposes, we require that you implement the following public methods in MarvelPaths. Otherwise, design class MarvelPaths as you wish and add operations as you wish.
The method creates a brand new graph in the instance field in MarvelPaths
and populates the graph from filename, where filename
is a data file of the format defined for marvel.csv
and is located in the data/
directory of your project.
Find the shortest path from node1 to node2 in the graph using your breadth-first search algorithm.
Paths should be chosen using the lexicographic ordering described above. If a path is found, the returned String should contain the path in the format below. That is, System.out.println(mp.findPath("CHAR1","CHARN") where mp refers to an instance of MarpvelPaths, prints the following:
path from CHAR1 to CHARN: CHAR1 to CHAR2 via BOOK1 CHAR2 to CHAR3 via BOOK2 ... CHARN-1 to CHARN via BOOKN-1
where CHAR1 is the first node listed in the arguments to findPath, CHARN is the second node listed in the arguments, and BOOKK is the title of a book that CHARK and CHARK+1 appeared in.
For example, mp.findPath("Zena","Zeus") will construct and return the String "path from Zena to Zeus:\nZena to Hercules via Book1\nHercules to Zeus via Book2\n". (We are just making this up to illustrate the placement of newline characters, there is no such a path in the Marvel universe.)
Not all characters may have a path between them. If the user gives two valid node arguments that have no path in the specified graph, output the following as String:
path from CHAR 1 to CHAR N: no path found
If a character name CHAR was not in the original dataset, simply output:
unknown character CHAR
If neither character is in the original dataset, output the line twice: first for the first node, then for the second one. These should be the only lines your program produces in this case — i.e., do not output the regular "path from ..." or "path not found" output.
What if the user asks for the path from a character in the dataset to itself? A trivially empty path is different from no path at all, so the "no path found" output isn't appropriate here. But there are no edges to print, either. So you should output the header line
path from C to C:
but nothing else. (Hint: a well-written solution requires no special handling of this case.)
This only applies to characters in the dataset: a request for a path from a character that is not in the dataset to itself should have the usual "unknown character C" output.
In all cases the string should end with \n (newline), just like in the first case.
Because the Marvel graph contains literally thousands of nodes and hundreds of thousands of edges, using it for correctness testing is probably a bad idea. By contrast, using it for scalability testing is a great idea, but should come after correctness testing has been completed using much smaller graphs. In addition, it is important to be able to test your parsing/graph-building and BFS operations in isolation, separately from each other.
You should first write *.csv files in the format defined for marvel.csv to test your MarvelPaths. All these files will go in the data/ directory.Write tests in the regular JUnit test class in folder src/test/java/hw5 (use hw5 package). You might have to create the folder src/test/java/hw5 and specify that you want to put your test class in the hw5 package. Make sure that you handle the edge cases. You will have to specify data files to load in your implementation tests, so make sure you read the File Paths section for information about specifying filenames very carefully.
As in Homework 4, run EclEmma and measure coverage of your tests. We will be measuring coverage too. The code coverage threshold will be set at 80% for this assignment.
Please answer the following questions in a file named hw5_reflection.pdf in your answers/ directory. Answer briefly, but in enough detail to help you improve your own practice via introspection and to enable us to improve PoS in the future.
Please answer the following questions in a file named hw5_collaboration.pdf in your answers/ directory.
The standard integrity policy applies to this assignment.
State whether or not you collaborated with other students. If you did collaborate with other students, state their names and a brief description of how you collaborated.
When you use test files in data/, hardcode the relative path in your tests. For example, if you use file testfile1.csv in directory data/, you can load the file using BufferedReader reader = new BufferedReader(new FileReader("data/testfile1.csv")).
Behavior may vary from one version of Eclipse to another. As long as you hardcode your relative paths starting at data/ you will be fine on Submitty.
If your program takes an excessively long time to construct the graph for the full Marvel dataset, first make sure that it parses the data and builds the graph correctly for a very small dataset. If it does, here are a few questions to consider:
As always, remember to:
You should add and commit the following files to your hw04 Git repository:
Additionally, be sure to commit any updates you may have made to the following files, so the staff has the correct version for this assignment:
None yet. Check the Submitty Discussion Forum page regularly.


Structure representing the Time information. More...
#include <csl_rtc.h>
Data Fields | |
| Uint32 | hours |
| Uint32 | minutes |
| Uint32 | seconds |
| Uint32 | nanoSec |
| CSL_rtcTimeMode | timeMode |
| CSL_rtcTimeMeridiem | meridiemMode |
Structure representing the Time information.
| Uint32 CSL_rtcTimeObj::hours |
Time value in hours.
| CSL_rtcTimeMeridiem CSL_rtcTimeObj::meridiemMode |
Meridiem type to indicate either AM mode or PM mode which can take any of the values from the following enum CSL_rtcTimeMeridiem
| Uint32 CSL_rtcTimeObj::minutes |
Time value in minutes.
| Uint32 CSL_rtcTimeObj::nanoSec |
Time value in nano seconds
| Uint32 CSL_rtcTimeObj::seconds |
Time value in seconds
| CSL_rtcTimeMode CSL_rtcTimeObj::timeMode |
Hour Mode which can take any of the two values from the enum CSL_rtcTimeMode to represent either 12 Hour mode or 24 Hour mode.


File Conversion
About Us
Contact Us
Privacy & Terms
File Conversion
Please upload the LaTex files you would like to convert to accessible PDFs


wb_sunny
How Does Sunscreen Work?
Xiaofei Zhou | xiaofei2
Kexin Yang
A. UVA
B. UVB
C. UVC
I am good to move on!
I want more details about this question
A
B
A
B
C
A
B
A
B
Congratulations! You have finished all the steps.


Articles In Book
{{model.error}}
{{article.title}}
{{article.authors}}
{{article.chapterNumber}}
{{article.chapterName}}
{{article.liked}} Liked!


G322.1+0.0
- Right Ascension: 15 20 49
- Declination: −57 10
- Size (/arcmin): 8×4.5?
- Type: S?
- Flux density at 1 GHz (/Jy): ?
- Spectral Index: ?
- Radio: Circular shell, with extension to S.
- X-ray: Diffuse emission.
- Point sources: Cir X-1 HMXB at centre.
References:
- Heinz et al. 2013, ApJ, 779, 171. Chandra observations and ATCA at 1.1–3.1 GHz (4.''0×4.''9).
ADS
Last updated: 30 Apr 2014
home |
documentation |
detailed listings |
summary listings
Dave Green/Cambridge, UK/


| Path: | README.txt |
| Last Update: | Mon Jul 20 19:09:23 +0900 2009 |
| release: | 2.6.5 |
| copyright: | copyright(c) 2006-2009 kuwata-lab.com all rights reserved. |
Erubis is an implementation of eRuby. It has the following features.
Erubis is implemented in pure Ruby. It requires Ruby 1.8 or higher. Erubis now supports Ruby 1.9.
See doc/users-guide.html for details.
$ sudo gem install erubis
$ tar xjf abstract_X.X.X.tar.bz2 $ cd abstract_X.X.X/ $ sudo ruby setup.rb $ cd .. $ tar xjf erubis_X.X.X.tar.bz2 $ cd erubis_X.X.X/ $ sudo ruby setup.rb
$ tar xjf erubis_X.X.X.tar.bz2 $ cd erubis_X.X.X/ $ cp /tmp/abstract_X.X.X/lib/abstract.rb lib $ unset RUBYLIB $ contrib/inline-require -I lib bin/erubis > contrib/erubis
Erubis supports Ruby on Rails. All you have to do is to add the following code into your ‘config/environment.rb’ and restart web server.
require 'erubis/helpers/rails_helper' #Erubis::Helpers::RailsHelper.engine_class = Erubis::Eruby #Erubis::Helpers::RailsHelper.init_properties = {} #Erubis::Helpers::RailsHelper.show_src = nil
If Erubis::Helpers::RailsHelper.show_src is ture, Erubis prints converted Ruby code into log file (‘log/development.log’ or so). It is useful for debug.
If you are exploring Eruby, see the following class at first.
‘benchmark/erubybenchmark.rb’ is a benchmark script of Erubis. Try ‘ruby erubybenchmark.rb’ in benchmark directory.
MIT License
makoto kuwata <kwa(at)kuwata-lab.com>


--- layout: post title: TestDriven.Net 1.0 out ---
Found this on Peli's blog, and as an adaptee of the xp principles, and as a .NET programmer, I simply have the duty to mention this :
TestDriven.NET 1.0 is out! Get it quick!
TestDriven.NET 1.0 is released on www.testdriven.net (MbUnit ships with TD.NET). Check out the brand new web site!
 Use the link builder and add a cool image like this one on your blog or web site...


Crisis Help
If you are having an emergency please call 911.
Phone numbers:
555-555-1212
PLACEHOLDER
Links: Click
here
PLACEHOLDER.


{% extends "global/Page.html" %} {% load otree static %} {% block title %} Please click on the button to start the task. {% endblock %} {% block content %}
You will have 5 minutes to complete it. {% next_button %}


Published
Last week the microformats.org community celebrated its 7th birthday at a gathering hosted by Mozilla in San Francisco and recognized accomplishments, challenges, and opportunities.
The microformats tagline “humans first, machines second” forms the basis of many of our principles, and in that regard, we’d like to recognize a few people and thank them for their years of volunteer service
Updated
Location N 37° 24.491, W 122° 08.313


Government agency for marine fisheries: Fisheries management entity:
Government agency for protection of the maritime environment: Major law/legislation:
, Tel.: , email: , Website:


Using the Amazon Transcribe WebSocket API
Create an AWS Account, attach the necessary IAM policy, and enter your Access Id and Secret Key below.


Your Javascript is not enabled, to play this quiz you need to turn on Javascript in your browsers settings


postcat - show Postfix queue file contents
postcat [-bdehnoqv] [-c config_dir] [files...]
The postcat(1) command prints the contents of the named files in human-readable form. The files are expected to be in Postfix queue file format. If no files are specified on the command line, the program reads from standard input.
By default, postcat(1) shows the envelope and message content, as if the options -beh were specified. To view message content only, specify -bh (Postfix 2.7 and later).
Options:
Show body content. The -b option starts producing output at the first non-header line, and stops when the end of the message is reached.
This feature is available in Postfix 2.7 and later.
The main.cf configuration file is in the named directory instead of the default configuration directory.
Print the decimal type of each record.
Show message envelope content.
This feature is available in Postfix 2.7 and later.
Show message header content. The -h option produces output from the beginning of the message up to, but not including, the first non-header line.
This feature is available in Postfix 2.7 and later.
Print the queue file offset of each record.
Search the Postfix queue for the named files instead of taking the names literally.
This feature is available in Postfix 2.0 and later.
Enable verbose logging for debugging purposes. Multiple -v options make the software increasingly verbose.
Problems are reported to the standard error stream.
Directory with Postfix configuration files.
The following main.cf parameters are especially relevant to this program.
The text below provides only a parameter summary. See postconf(5) for more details including examples.
\fBconfig_directory (see 'postconf -d' output)\fR
The default location of the Postfix main.cf and master.cf configuration files.
\fBqueue_directory (see 'postconf -d' output)\fR
The location of the Postfix top-level queue directory.
/var/spool/postfix, Postfix queue directory
postconf(5), Postfix configuration
The Secure Mailer license must be distributed with this software.
Wietse Venema IBM T.J. Watson Research P.O. Box 704 Yorktown Heights, NY 10598, USA


,
converts them to a LDL formula φ,
examines if φ is satisfiable or not, and then
returns either "valid" (¬φ is unsatisfiable), "satisfiable", or "unsatisfiable"
- -v, --verbose
-
become verbose
- -h, --help
-
show usage
rulesmc, ldlsat
LDLTools development team at IBM Research.
(C) Copyright IBM Corp. 2018.
License Apache 2.0.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.