Reset NVRAM or PRAM on your Mac On Mac computers that have the Apple T2 chip, you can release the keys after the Apple logo appears and disappears for the second time.
How to select a different startup disk If you’re using a Mac that has the Apple T2 chip, check the settings in Startup Security Utility. These settings determine whether your Mac can start up from another disk.
Your new provisioning reality
What do the changes effectively mean to you - the person(s) responsible for Mac setup workflows?
Secure Boot devices with T2 chips, fresh out of the box:
Are configured at Full Security mode
They do not netinstall / netboot. (NetSUS, bsdpy, Server.app’s NetInstall service - none will work)
You can’t use the N key at startup to boot over the network to an imaging workflow
You can’t use the Option key at startup to select a network boot target
They do not boot from external media (USB, Thunderbolt, etc.)
You can’t use the Option key at startup to select a different attached disk to boot from
Unless your device provisioning/configuration workflow is based on the Device Enrollment Program (DEP), most of you with “light touch” automated provisioning workflows will find they’re now incompatible with T2 devices. (There are a few exceptions, I’ll cover them below.)
If your workflow is based on bootable attached media (since network boot is really dead dead dead), here’s what you have to go through to enable this:
Make sure the external boot media you created will even boot the device (the 2018 MacBook Pro runs a custom 10.13.6 fork, for example)
Boot the machine normally
Complete the Setup Assistant first user creation process, setting a password
Reboot into Recovery
Open the Secure Startup Utility and allow booting from external media and either
Set it to No Security, or
Leave it at Full / Medium (may require network connectivity to Apple, more on this below)
Reboot to the external media
NOW you can begin your workflow
… Not exactly “light touch” anymore, is it?
But let’s go over why this is. Let’s talk about what Secure Boot requires of your machine.
[ Note: This blog post doesn’t cover every aspect of what Secure Boot is checking or doing, but it does cover some new useful technical details. - mike ]
Let’s talk security levels
No Security
I’m putting this one first because it’s the easiest to talk about. Simply put, this is closest to the classic boot model we knew before the T2. All the normal stuff applies.
The device firmware has to be able to see a boot.efi it can use in a volume it can read and boot from and the OS inside the volume has to say it supports the hardware (which is foremost stored in /System/Library/CoreServices/PlatformSupport.plist, if you’ve ever wondered) and provide all the necessary hardware kexts for talking to the bits of the computer.
Secure Boot devices come with additional requirements in that the T2 chip runs its own OS (bridgeOS), but yadda yadda yadda this isn’t the boot mode you’re interested in reading about. This is your normal “if the OS is compatible, it can boot the Mac” situation.
Full Security
What’s different about this mode? Let’s investigate.
We’ll ask a Secure Boot device what it’s booting. Let’s start with the bless command:
sudo bless --getBoot --verbose
There’s a lot of information there.
But if you’ve never noticed this before on macOS devices that boot APFS (like all Secure Boot devices), macOS isn’t booting a file off of the System volume (/dev/disk1s1), it’s booting the boot.efi file from the new APFS Preboot volume (/dev/disk1s2) that you’ll find inside APFS containers:
It doesn’t matter if you’ve encrypted the device or not. Every macOS device booting an APFS filesystem boots like this.
You can see the container layout with this command: diskutil apfs list
It comes in a triplet: OS/System volume, Preboot, and Recovery. If you’re booted from a System volume within an APFS Container, you’ll also see a (temporary) VM volume, which has taken the place of and is mounted at /private/var/vm.
So we’re booting from Preboot.
Since we’re trying to figure out what’s different about a Secure Boot device, does the Preboot volume of an older Mac without a T2 chip look different in comparison?
Let’s mount them and see. For the OS that’s booted off the internal disk, that’s usually:
diskutil mount /dev/disk1s2
It should mount at /Volumes/Preboot
If you look at the top level of the disk, you’ll see one (or more) folders that look like long hex strings with dashes in them. Those are GUIDs. Not only are they GUIDs, but the GUIDs match some of the output that we saw before in diskutil apfs list
A System volume within an APFS Container has its own unique GUID. Within Preboot (and the Recovery volume as well), the top level folders will contain a folder with a name matching the GUID of the System volume it’s paired with.
+-> Volume disk1s1 FD77CA06-84E9-42D0-B5FE-6295D28CBB2F
| ---------------------------------------------------
| APFS Volume Disk (Role): disk1s1 (No specific role)
| Name: Macintosh HD (Case-insensitive)
| Mount Point: /
ls -l /Volumes/Preboot/
total 0
drwxr-xr-x 7 root wheel 224 Jul 17 09:38 FD77CA06-84E9-42D0-B5FE-6295D28CBB2F
In the HFS+ boot model, the kernel is hardcoded to look for the Recovery partition at the partition id minus 1 of the associated System partition. With APFS, a single APFS container can now contain multiple System volumes - but only a single Recovery/Preboot volume is required within the container, each of which can contain multiple GUID-named folders (one for each System volume).
Looking back at the information we got from the bless command, we can see that the boot.efi is in a subfolder within the GUID folder: System/Library/CoreServices/boot.efi
So, if this is the boot target of the Secure Boot device, maybe there’s something in here related to the Secure Boot process.
There’s quite a few files in the Preboot volume.
Maybe we could compare them to a device running the same OS version without a T2 chip. For the record here, that means I’m comparing an iMac Pro to a 2017 MacBook Pro running 10.13.6.
Let’s chop out the GUID names at the beginning (since they’re unique to every System volume) and just compare the contents of the subdirectories. Sort the lines of each and run both of them against each other through the diff command:
A “manifest” file. A structured tag file that contains signatures for OS components. Used on some of Apple’s other OSes, including iOS.
Let’s go back to Apple’s description of what Full Security does:
During startup, your Mac verifies the integrity of the operating system (OS) on your startup disk to make sure that it’s legitimate.
That sounds like something signatures would be useful for.
This information is unique to your Mac, and it ensures that your Mac starts up from an OS that is trusted by Apple.
Oh? So this might be different if we look at yet another iMac Pro? Good thing I access to a few to compare 😄
And sure enough, there are the same additional files on the other device, but the hex string before the .im4m suffix (the 15156C1879A0A6 in boot.efi.j137ap.15156C1879A0A6.im4m) is different.
Well.
If we think this is part of the security signature, let’s start with some basic experimentation and just rename (just in case we need it again …) these files.
[ Note: I had to do it from Target Disk mode! Some fun filesystem protections here (if you want to play at home) - mike ]
For extra grins, let’s poke at this comment and make sure the network is disconnected before reboot:
If your Mac can’t connect to the Internet, it displays an alert that an Internet connection is required.
Annnnnnd ……. ?
BINGO. It would seem we have part of the equation.
Reconnecting the device to the network and then later checking in Preboot, it would seem new *.j137ap.15156C1879A0A6.im4m files have been recreated.
Interestingly, each one rebuilds a uniquely named file - but always with the same hex name for itself.
They appear to be different every time they’re remade because the checksums keep changing. So they’re not static records but instead are likely dynamic signatures, needing that network access in order to be created.
So maybe the static hex string is a unique identifier of sorts.
We should try searching the machine for the identifier - maybe we can find out what it is.
Normally for this kind of thing, if I want to search through the entire contents of the machine I’d reach out to my standard tools like the Silver Searcher or RipGrep. Both of these tools will gladly recursively search through both text and binary files to locate strings you’re interested in. These guys get frequent shoutouts in my reverse engineering talks.
However, in this case, I dumbly lucked out by trying the naive approach and checking to see if the output of system_profiler (which lists other unique identifiers like ethernet MAC addresses, serial numbers, etc.) happened to contain the hex string in question.
It did!
But only because I’d freshly re-installed the OS and system_profiler tends to include recent portions of several log files. In this instance, it included install.log:
ApECID? There’s also an ApBoardID. So maybe that’s just EC? Or ECID?
Let’s try our good friends at the iPhone Wiki again, maybe they know.
The ECID (possibly standing for Exclusive Chip ID or Electronic Chip ID) is an identifier unique to every unit.
There’s a ton of detail on that page. It’s most likely lots of educated guesses from non-Apple people. Likely not all of it applies to Secure Boot Macs. But if you play around with some of the tools and suggestions they have, you’ll find out that we’re looking at basically the same thing.
Growing evidence of the new process
So Secure Boot Macs have a new unique identifier which iOS devices have had for some time: the ECID.
And it would appear that a signature manifest is generated as part of the Secure Boot process that, in Full Mode, makes a signature specific to the ECID of the device itself.
… are there any other good tidbits in the log near there?
WHOA!
So we now know this entire new process is called “personalization” AND we know the URL that it’s reaching out to: http://gs.apple.com:80/TSS/controller?action=2
Any more friendly hits on the wiki for that site or URL?
Wow, the “Sending data (request)” section there looks very similar to the details the Mac is sending: @HostPlatformInfo, ApECID, etc.
This is locking it in pretty solid that Apple has leveraged this same technology for generating signatures for validated booting for Secure Boot on Mac.
Knowing what we know now, we can play a little bit more to help confirm these files are unique to the devices they’re generated for.
Copying them between Secure Boot devices and renaming them to match the ECID of the other device still results in Secure Boot wanting to repair the signature.
Going back to the 2017 MacBook Pro that does not have Secure Boot, it doesn’t have a uniquely named .im4m file - but it does have a “generic” .im4m file for the boot.efi: boot.efi.j137ap.im4m
What happens if we delete it?
… Still boots.
So apparently devices that are not Secure Boot don’t rely on (or check/validate) the .im4m files during the boot process at all.
Let’s take one last bit from the logs that helps to confirm that these signatures are indeed the .im4m files:
Pretty clear proof that the result of the personalization process is saved to these .im4m file paths.
But what about ..
Medium Security
Allows any version of signed operating system software ever trusted by Apple to run.
During startup when Medium Security is turned on, your Mac verifies the OS on your startup disk only by making sure that it has been properly signed by Apple […]
No mention of “This information is unique to your Mac”.
So let’s:
Set it to Medium
Delete those uniquely named .im4m files again, then
Reboot!
… Hmmmmmmm, it booted.
Now my directory structure is an exact match for the 2017 MacBook Pro. I no longer have .im4m files with the ECID hex identifier.
But what about these other .im4m files that are in there (the ones without the ECID names in them)?
Maybe that’s what we’re relying on now?
Deleting .im4m files - ROUND 2!
And as soon as you do that, yes, you run into alert dialogs that the OS is no longer trusted or bootable and needs repair.
Let’s expand the thought process again.
Because there was no statement that “This information is unique to your Mac” … could we copy them from the 2017 MacBook Pro (which doesn’t have Secure Boot) back to the iMac Pro (which does have Secure Boot) and get the iMac Pro booting again?
Answer: YES
Repeating the experiment but this time copying .im4m files from a machine running 10.13.5, we get blocked at boot again.
So we now know the “generic” .im4m files are OS specific.
Knowing what we’ve found so far, let’s loop back and look at these .im4m files again and the wiki page we found mentioning them. There’s some interesting notes at the bottom mentioning ASN.1.
Are .im4m files just simply ASN.1 encoded?
Let’s run them against openssl asn1parse and find out:
boot.efi.j137ap.15156C1879A0A6.im4m:
boot.efi.j137ap.im4m:
Cool details!
There’s an embedded x509 cert in there, coming from “Apple X86 Secure Boot Root CA - G1” and “T8012Mac-TssLive-ManifestKeyGlobal-RevB-DataCenter”, for validating the signature.
And there’s a lot of those 4 letter fields: BORD, CHIP, etc.
Each of those is probably related to one of the attributes like we saw being supplied in the install.log to the personalization service.
What’s very interesting is that the ECID field is very definitely present in the Full Security mode manifest, but is missing in the Medium Security manifest. Yet again more confirmation that they’re not tied to specific hardware.
This would seem to imply that unlike Full Security mode, in Medium Security mode you could simply place already generated and correct .im4m manifests on disk - without access to the internet - as no device-specific personalization needs to occur.
One complete set of .im4m signature files is good for that OS on whatever hardware it’s compatible with.
(The phrase “air gapped imaging” comes to mind …)
And now that I’ve mentioned it - let’s talk about all of this in the context of imaging.
The lifespan of imaging: not as dead as we thought, yet
Some of us in the community have spoken quite well about it already:
In the early first release days of the iMac Pro, there was talk that you couldn’t use asr to restore an OS image to the device and have it boot out of the box.
However, if you were fortunate enough to have two iMac Pros (or brave enough to try from Internet Recovery), they could apparently image themselves.
Did you bother to check back after this news? Have you tried it again recently?
If you’re making a never booted image with wonderful tools like AutoDMG, these days asr can very definitely restore a booting macOS onto these devices, even if the host device running the asr restore is not a Secure Boot device.
So what changed?
When the iMac Pro came out, it was running a special fork (not uncommon for new hardware builds) of the current OS at the time: macOS 10.13.3 build 17D2047
When 10.13.4 was released, it was a unified build and the iMac Pro no longer ran its own fork.
So, using the knowledge of “personalization” above, can we look at the asr command itself and see what may have changed?
Let’s try some of my most favorite (and built-in) tooling to peek at the binary - strings and otool:
otool -L /usr/sbin/asr | grep -i personaliz
/System/Library/PrivateFrameworks/OSPersonalization.framework/Versions/A/OSPersonalization (compatibility version 1.0.0, current version 48.1.0)
It would appear asr gained a new trick!
In fact, the asr in the iMac Pro’s copy of 10.13.3 already had this new capability, which is why it worked from device to device or from within Recovery to itself.
asr on any 10.13.4+ macOS version now has the same capability without the need for special undocumented flags or tricks.
If you tinker a little deeper (like I have), you’ll find out that there’s code in the OSPersonalization PrivateFramework to read the ECID of a target disk mode attached device. This allows it to personalize a device even in Full Security mode with the ECID-specific, device-specific manifest.
Apple doesn’t recommend or support monolithic system imaging as an installation method, because the system image might not include model-specific information such as firmware updates.
Or do they? Read it again.
Apple doesn’t recommend or support
They don’t say you can’t. Just that they don’t recommend it. That it’s not supported.
They quite obviously built the functionality into asr.
But - should you?
It’s hard to beat the speed of target disk mode restore of an AutoDMG built image.
And Secure Boot devices support Target Disk mode out of the box. This means you can restore a personalized image to a Secure Boot device and it will boot it first try. Suddenly a “light touch” (hold T at boot) workflow is back. And there are amazing tools starting to be available out there for this like Google’s Restor.
But - should you?
Are you someone that needs to worry that a delivered device has been manipulated mid-shipment?
If you try placing a simple LaunchDaemon on a Secure Boot device’s System volume, it doesn’t stop it from booting in Full Security mode. That’s not one of the things in the signature manifest. Honestly there are a billion places the OS could be modified to auto-launch things as root at start up. Secure Boot checks some things. It doesn’t check all things (yet?). It’s focused right now on securing the core of the boot process.
So what do you do in that situation instead? Internet Recovery?
Guess how many machines you could have restored back to vanilla with something like Restor in the same amount of time.
But - should you?
because the system image might not include model-specific information such as firmware updates
This warning is something to consider. There have been definite changes in how the OS installer works. If you were going to do image restoring workflows, you should consider that portions of your device may not have the necessary software if you’re restoring anything other than the last OS version it ran. To make this effective, you’d probably need to keep your fleet of devices on top of OS updates and make sure your restoration image is the latest OS version with patches at all times.
But - should you?
There are also alternative projects out there that are more than “light touch” but still drastically less than running through Setup Assistant just to create an account you’ll destroy again. An example of this is Greg Neagle’s Bootstrappr.
Boot into recovery, type two commands, and you’re off to the races.
But this only works for provisioning clean machines. If you’re bringing devices back from users to be redeployed, it won’t wipe and restore the machines to a pristine state or deal with FileVault encrypted disks, etc. So you’re still looking at something like Internet Recovery to return the device to a new state.
But - should you?
Secure Boot macOS devices are still very new! There are definitely corners and edges around the concept of imaging them that we surely haven’t stumbled over yet.
But - should you?
Apple doesn’t recommend or support
I think if you read between the lines there, Apple understands that right now some organizations may feel they have the need for these workflows still.
If Apple continues down similar paths to what it’s done with iOS, they could eventually possibly split the OS into its own volume - possibly even in a read only image with all mutable and user data stored separately.
If they ever get to that state, some of the security concerns above will just evaporate. The only OS on the device will be one that’s trusted and verified to a deeper state than macOS is today. We could even gain the “Erase All Content And Settings” functionality.
Nobody but Apple knows will be next. But they do, in the meantime, provide guidance.
And their guidance is that you should be looking at DEP/MDM-based workflows for your provisioning. The latest operating system versions already include some features (like managing automatic kernel extension loading) that can only be done remotely and adjusted post-deployment via MDM deployed profiles. SIU had the capability to make network bootable images that ran scutil to reconfigure the trust settings, but all of that is moot now that Secure Boot devices don’t network boot at all. MDM is the only game.
If you or your organization feel the need to image devices, then do so.
Just know why you’re doing it. Simply putting files on disk isn’t a good enough reason. MDM or MDM-deployed agents can do that.
And be aware it is very very very likely not a long term solution.
You should definitely, in the meantime, be getting MDM going in your environment.
As always, hope this helps.
- mike
postscript -
With access to the 2018 MacBook Pro, if you look at the Preboot volume, you’ll see two different but similar files for its version of macOS.
Instead of just the “j137ap” .im4m files, you’ll also see “j680ap” and “j132ap” files.
Going back to the install.log again, you can find this line:
HardwareModel = j137ap;
Quick Google searches will suggest that “j137ap” is likely an internal model identifier of either the iMac Pro itself or the specific T2 chip inside it. “j680ap” and “j132ap”, with a little poking around, you’ll find are for the new 13” and 15” 2018 MacBook Pro devices.
This would indicate that the signatures, while “generic” in Medium mode, do still need to exist for the specific Secure Boot device model you’re attempting to boot it on.


"After just one look, it was obvious Node.js had the mixture of power, flexibility, and speed we needed to run the servers at the Batcave. We'll never go back to LAMP."
-Batman


Toggle navigation
NewsFeed
FriendFeed
Write a Post
(current)
My Profile
Login
Username:
Password:
Remember Me
Logout
Angular seed app: v


{% extends "webca/web/base.html" %} {% block content %}
Please, don't use the Back button on the browser to go back to request pages.
Go back to my requests


networkx.generators.geometric.waxman_graph¶
-
waxman_graph
(n, beta=0.4, alpha=0.1, L=None, domain=(0, 0, 1, 1), metric=None, seed=None)[source]¶ Return a Waxman random graph.
The Waxman random graph model places
n
nodes uniformly at random in a rectangular domain. Each pair of nodes at distanced
is joined by an edge with probability\[p = \beta \exp(-d / \alpha L).\]This function implements both Waxman models, using the
L
keyword argument.- Waxman-1: if
L
is not specified, it is set to be the maximum distance between any pair of nodes. - Waxman-2: if
L
is specified, the distance between a pair of nodes is chosen uniformly at random from the interval[0, L]
.
Parameters: n (int or iterable) – Number of nodes or iterable of nodes
beta (float) – Model parameter
alpha (float) – Model parameter
L (float, optional) – Maximum distance between nodes. If not specified, the actual distance is calculated.
domain (four-tuple of numbers, optional) – Domain size, given as a tuple of the form
(x_min, y_min, x_max, y_max)
.metric (function) – A metric on vectors of numbers (represented as lists or tuples). This must be a function that accepts two lists (or tuples) as input and yields a number as output. The function must also satisfy the four requirements of a metric. Specifically, if \(d\) is the function and \(x\), \(y\), and \(z\) are vectors in the graph, then \(d\) must satisfy
- \(d(x, y) \ge 0\),
- \(d(x, y) = 0\) if and only if \(x = y\),
- \(d(x, y) = d(y, x)\),
- \(d(x, z) \le d(x, y) + d(y, z)\).
If this argument is not specified, the Euclidean distance metric is used.
seed (integer, random_state, or None (default)) – Indicator of random number generation state. See Randomness.
Returns: A random Waxman graph, undirected and without self-loops. Each node has a node attribute
'pos'
that stores the position of that node in Euclidean space as generated by this function.Return type: Examples
Specify an alternate distance metric using the
metric
keyword argument. For example, to use the “taxicab metric” instead of the default Euclidean metric:>>> dist = lambda x, y: sum(abs(a - b) for a, b in zip(x, y)) >>> G = nx.waxman_graph(10, 0.5, 0.1, metric=dist)
Notes
Starting in NetworkX 2.0 the parameters alpha and beta align with their usual roles in the probability distribution. In earlier versions their positions in the expression were reversed. Their position in the calling sequence reversed as well to minimize backward incompatibility.
References
[1] B. M. Waxman, Routing of multipoint connections. IEEE J. Select. Areas Commun. 6(9),(1988) 1617–1622. - Waxman-1: if


Integer cursus bibendum augue ac cursus .
Lorem Ipsum is simply dummy text of the printing and typesetting industry
read moreLorem Ipsum is simply dummy text of the printing and typesetting industry
read moreLorem Ipsum is simply dummy text of the printing and typesetting industry
read more


https://fonts.googleapis.com/css?family=Montserrat:700|Open+Sans:400,800
Used for the logo.
Used for titles.
Only in uppercase.
Only weight 700.
Used for everything else.
Can be regular 400 or extrabold 800.
The first authentic use of 73 is in the publication The National Telegraphic Review and Operators' Guide, first published in April 1857. At that time, 73 meant "My love to you"! Succeeding issues of this publication continued to use this definition of the term. Curiously enough, some of the other numerals used then had the same definition as they have now, but within a short time, the use of 73 began to change. "In the National Telegraph Convention, the numeral was changed from the Valentine-type sentiment to a vague sign of fraternalism. Here, 73 was a greeting, a friendly "word" between operators and it was so used on all wires.
The first authentic use of 73 is in the publication The National Telegraphic Review and Operators' Guide, first published in April 1857. At that time, 73 meant "My love to you"! Succeeding issues of this publication continued to use this definition of the term. Curiously enough, some of the other numerals used then had the same definition as they have now, but within a short time, the use of 73 began to change. "In the National Telegraph Convention, the numeral was changed from the Valentine-type sentiment to a vague sign of fraternalism. Here, 73 was a greeting, a friendly "word" between operators and it was so used on all wires.
The first authentic use of 73 is in the publication The National Telegraphic Review and Operators' Guide, first published in April 1857. At that time, 73 meant "My love to you"! Succeeding issues of this publication continued to use this definition of the term. Curiously enough, some of the other numerals used then had the same definition as they have now, but within a short time, the use of 73 began to change. "In the National Telegraph Convention, the numeral was changed from the Valentine-type sentiment to a vague sign of fraternalism. Here, 73 was a greeting, a friendly "word" between operators and it was so used on all wires.


Khaya Mthethwa says the church needs to change with the times
by Phakamani MvelasheCape Town - Gospel star and pastor Khaya Mthethwa is worried that the church might lose its relevance if it doesn’t change with the times.
The former Idols SA winner says the world is changing and most industries and institutions are adapting to the changes in order to thrive.
However, he believes the church has been stubborn in this regard and wants to remain in the past. He explains that there’s no better time than now to make that change.
“Everything is changing, every institution and industry is changing. The church is in denial... May the church as an institution have the grace to adapt to the future otherwise we will find ourselves in a place of irrelevance. God give us the future - NOW! #IwannaBeTheChange [sic],” he says.
When people confused his call for the church to change to him meaning Jesus must change. Khaya quickly pointed out that he meant the institution as we know it.


Buy [b], Sell [s], [space] for more, [h] for Help
> S 2
Sell USD/GBP at current market?
Enter $ quantity or [esc] to cancel
$ 3600
= 360,000 units | 3.64% of equity
Your standard trade options are set at
-$1,000 stop loss x100 leverage $1,800 take profit
Confirm [y], Change [c] or Cancel [esc]
> Y
OK
Sell postion in USD/GBP opened at 1.1453
Please note overnight fee of $10.20 daily, $28.40 weekend applies
[o] for your Open positions,
[t] for Trade history, [n] News headlines. [h] for Help any time.
> 3
Latest news
- 1. 14.31
US Stocks Snapshot - Wall St opens little changed as oil edges up
- 2. 14:30
Swiss Basilea says profits still 2-3 years away
- 3. 14:30
UPDATE 1 - Standard & Poor’s affirms BHP Billiton’s credit rating
- 4. 14:30
Ex-divs to take 13.2 points off FTSE 100 on Mar.3
- 5. 14:28
UK’s Avonmouth LNG storage site to stop operations on April 30
- 6. 14:23
UPDATE 2 - Kenya’s inflation falls, may pave way for easing of rates
- 7. 14:23
UPDATE 1 - Russia to cut high-grade diesel exports from Primorsk in March - traders
- 8.14:23
Belgian Q4 GDP confirmed at 0.3 pct qtr/qtr
1-7 for these stories, [space] for more, type any other option


Bounce!
File
New
Open
Save
Save As
Export
Examples
Blink An Led
Loops
Writing to an IO Pin
Print Hello World
Timers
WS2812 Led Demo
Go!
Stop!
Set as start code
Connect
Find Chip
-- no code yet
Baud Rate
9600
57600
115200
Serial Scan Timeout For Response:
10
1
10
1
1
1
9
45
0
1
3.1
64
10
50
1
100
1
100
0
abc
text
abc
text
text
abc
abc
abc
abc
5
list
list
list
list
,
100
50
0
#ff0000
#3333ff
0.5
0
0
0
0
0
TRUE
0
500
0
0
Please enter a device filename.
OK
Cancel
Files On Chip
init.lua
test.html
Upload as start code
Upload as...
Upload other...
Download...
Delete File
Do this code!


×
How To Play
Open and print
this marker image
OR open the above marker image on your desktop computer and view this example on your mobile phone


Matt's Magnificent Weather Forecast
Belfast Events
energy
calories
protein
31/12/2017
31/12/2017
fat
saturates
saturates
saturates
saturates
saturates
saturates
Venue has no link
Venue has a link


Whether you’re at home or on the go, you won’t lose track of when bills are due, or whether you have enough in your accounts to pay them.
We’ll send you reminders when bills are due so you can pay them on the spot, or schedule the payment for later. No stamps, no phone calls, no hassle, and best of all no more late fees.
BillBo was specifically designed for mobile ease of use. See all your accounts, bills and due dates, but optimized for your mobile lifestyle and devices.


Gateway
BOT
28-Nov-19 06:16 PM
[dscrd-prt] <ComputerGenie > an interface and terms that are standardized
show the the print of those specs and I'll make it so
[dscrd-prt] <ComputerGenie > without arcane commands required
the word arcane was arcane until you got educated
[dscrd-prt] <ComputerGenie > available from a consistent source
github is consistant
[dscrd-prt] <ComputerGenie > with basic setup questions
what questions? define the exact level of "basic"...
[dscrd-prt] <ComputerGenie > it should work predictably, with minimal need for debug commands or restarts
No one here can control when M$ft decides to add the RandomDataCorruption feature to Windows setups, that is wholly at their discretion
[dscrd-prt] <ComputerGenie > @Cam [Trivia Challenge!] feel free to elaborate any of those points at your convenience
[dscrd-prt] <Cam [Trivia Challenge!]> Both Apple and Microshaft publish human interface guidelines. There are also standards coming from different schools.
arcane = understood by few, so it goes with "basic" make a wallet that a peson new to cryptocurrency can understand.
github is not currently consistent, in terms of where the pirate wallets are. As I mentioned, the sevenseas on piratenetwork git doesn't work.
I'm really not talking about microshaft in this instance, but predictable still applies. No matter the platform, the install process should be similar.
And this is all coming from a perspective that I'm happy to help where I can, but I'm not a coder. I'm not trying to argue; I hope my answers give my perspective clearly.
[dscrd-prt] <ComputerGenie > make a wallet that a peson new to cryptocurrency can understand
tell me what that means.....
what is it that cannot be understood?
[dscrd-prt] <ComputerGenie > Both Apple and Microshaft publish human interface guidelines.
The Office Metro guidelines are like 397 pages and almost no user like it, so there's that.
I'm not trying to argue
I'm honestly not either
The problem is that we keep hearing the same thing, but with no defining bits that really say anything other than "make it different, I don't know how different, just different"
[dscrd-prt] <Cam [Trivia Challenge!]> Well the answer is predictable and as few clicks as possible, with zero command line needed. New users don't know what ./pirated
means or is doing in their system.
[dscrd-prt] <Cam [Trivia Challenge!]> I honestly think for Linux, the best answer is Snapcraft snaps. Work in most amd64 linux distributions
[dscrd-prt] <Cam [Trivia Challenge!]> For mac a DMG that drag and drop to applications shortcut works
[dscrd-prt] <Cam [Trivia Challenge!]> For windoze, a stock install program that many QT wallets use with the option of changing the default data dir is best.
[dscrd-prt] <ComputerGenie > the answer is predictable
In stead of continuing to ask "what does that mean?", I'll ask it this way......
What isn't predictable and what are you expecting when something else happens/appears?
Give specific examples that can actually be remedied and the remedy.
[dscrd-prt] <ComputerGenie > for Linux, the best answer is Snapcraft snaps.
I have no idea what those words even mean ♂
[dscrd-prt] <Cam [Trivia Challenge!]> https://snapcraft.io/
Snaps are containerised software packages that are simple to create and install. They auto-update and are safe to run. And because they bundle their dependencies, they work on all major Linux systems without modification.
[dscrd-prt] <ComputerGenie > secretly hopes every "app store" dies a fiery death
[dscrd-prt] <ComputerGenie > as few clicks as possible
so your answer is to install an app that installs an app to install apps?
(edited)
[dscrd-prt] <Cam [Trivia Challenge!]> SevenSeas and pirateocean both don't always work when I've downloaded them. I've done about 6 diffeent linux installs in the last few weeks (one drive I have has four partitions, each for a different distro) and I download the wallets and sometimes they work and sometimes they don't. They hang, or they say they need the daemon. But which daemon? komodod or pirated? or both? Sometimes one works then after reboot it doesn't work. Or I have to start it manually, sometimes not.  I hear what you're saying and probably would have said the same thing 3 months ago.
[dscrd-prt] <ComputerGenie > I download the wallets and sometimes they work and sometimes they don't
what doesn't work in PirateOcean?
I can't fix what I don't know is "broken"
[dscrd-prt] <Cam [Trivia Challenge!]> Download pirate-qt-linux, if you click on it in file manager you get an error that there is no application installed for "shared library" files
[dscrd-prt] <Cam [Trivia Challenge!]> in terminal ./pirate-qt-linux
returns bash: ./pirate-qt-linux: Permisssion denied
[dscrd-prt] <Cam [Trivia Challenge!]> sudo ./pirate-qt-linux
returns sudo: ./pirate-qt-linux: command not found
[dscrd-prt] <Cam [Trivia Challenge!]> I forgot chmod +x pirate-qt-linux
[dscrd-prt] <kaks> @Cam [Trivia Challenge!] execute
chmod +x pirate
Then ./pirate-qt-linux
[dscrd-prt] <mrlynch> this is good feedback
[dscrd-prt] <Cam [Trivia Challenge!]> and now, just talking about predictability, I closed sevenseas which DID start my daemon this time, but it doesn't stop the daemon, so now pirateocean can't get a lock. and the sevenseas doesn't include pirate-cli so I can't issue a ./pirate-cli stop
command
[dscrd-prt] <Cam [Trivia Challenge!]> so I have to kill the process after looking it up with htop
[dscrd-prt] <kaks> Move your topic to #pirate-ocean pls
[dscrd-prt] <Cam [Trivia Challenge!]> This really started as just the thought process of making Pirate easy to use- I know it devolved into specifics of wallets, and it's not as much trouble shooting as it is trying to make ARRR more accessible to the masses
[dscrd-prt] <ComputerGenie > this is good feedback
except for the fact that permissions is an issue that is beyond our control
[dscrd-prt] <ComputerGenie > This really started as just the thought process of making Pirate easy to use
yes, and that's why I didn't move to a chan because Pirate isn't just any one wallet
for all we know the best solution that might come out of this is a wallet that doesn't even exist yet ♂
[dscrd-prt] <> CG: Th chmod could be handled in a one-click install-script...
[dscrd-prt] <Cam [Trivia Challenge!]> agreed
[dscrd-prt] <ComputerGenie > @salmonskinrolI I've given serious thought to having 2 bash files (one to "install" and one to run), but I fear that more files than what we have now would be more confusing than what we have now (I still haven't been able to find a way through first timers understanding the install zcash-params error)
[dscrd-prt] <> hmmm, let me look up some code snippets.. brb
[dscrd-prt] <Cam [Trivia Challenge!]> Yeah the zcash params are something that people may need some hand-holding through.
[dscrd-prt] <Cam [Trivia Challenge!]> BTW I am succesfully running pirateocean now. It worked great with my existing wallet and params and chain. I forgot that one reason i switched to sevenseas is because PO doesn't show tx info (just feedback for you Genie. some people may prefer that)
[dscrd-prt] <ComputerGenie > yeah, I haven't learned how to do that yet, but it will be added as soon as I do
[dscrd-prt] <Cam [Trivia Challenge!]> I do think the interface is better (simpler more predicable LOL)
[dscrd-prt] <ComputerGenie > that's literally what we already have
[dscrd-prt] <ComputerGenie > just no - in the script name
(edited)
[dscrd-prt] <ComputerGenie > and who is explaining to folks how to get it into /opt/ if running from Downloads is confusing?
[dscrd-prt] <> Hence the path parameter...
[dscrd-prt] <> Basically what you need is one install script and an explainer how to run it on the download page... the script can check and install zcash parameters, bootstrap (if desired), set rights... The whole shebang.


User name: {{userclass.username}}
Followers:{{userclass.followers}}
Following:{{userclass.following}}
Number of Repository:{{userclass.public_repos}}
List of Public Repositories
{{reposi.name}}
Description: {{reposi.description}}
Date: {{reposi.created_at|date}}
created in {{reposi.created_at|dateCount}} days


|
fop 0.94 | ||||||||||
| PREV NEXT | FRAMES NO FRAMES |
See:
Description
| Control and Startup | |
| org.apache.fop | |
| org.apache.fop.apps | Application classes used for running FOP embedded in other applications. |
| org.apache.fop.cli | This package contains the command-line client for Apache FOP. |
| org.apache.fop.servlet | This package contains two sample FOP servlets. |
| XSL-FO Tree | |
| org.apache.fop.datatypes | XSL Datatypes. |
| org.apache.fop.fo | Classes, constants and basic infrastructure for the FO tree. |
| org.apache.fop.fo.expr | Classes for XSL expressions and functions. |
| org.apache.fop.fo.extensions | Base classes for implementing extensions to XSL-FO. |
| org.apache.fop.fo.extensions.destination | Classes to support named destinations (only relevant for PDF output) |
| org.apache.fop.fo.extensions.svg | SVG extension classes which handle elements from the SVG namespace. |
| org.apache.fop.fo.extensions.xmp | Extension classes which handles XMP metadata. |
| org.apache.fop.fo.flow | All the block- and inline-level flow formatting objects. |
| org.apache.fop.fo.pagination | All the pagination and declaration formatting objects. |
| org.apache.fop.fo.pagination.bookmarks | Formatting objects for bookmarks as defined since XSL 1.1. |
| org.apache.fop.fo.properties | Classes representing the various property types as well as supporting data structures for the FO tree. |
| Layout | |
| org.apache.fop.layoutmgr | FOP's layout engine. |
| org.apache.fop.layoutmgr.inline | Layout managers for inline formatting objects and line building. |
| org.apache.fop.layoutmgr.list | Layout managers for lists. |
| org.apache.fop.layoutmgr.table | Layout managers for tables. |
| Area Tree | |
| org.apache.fop.area | FOP's area tree. |
| org.apache.fop.area.inline | FOP's area tree: inline-level areas |
| org.apache.fop.traits | Trait classes and other supporting data structures. |
| Paginated Rendering | |
| org.apache.fop.render | Generic renderer interface. |
| org.apache.fop.render.afp | |
| org.apache.fop.render.afp.exceptions | |
| org.apache.fop.render.afp.extensions | |
| org.apache.fop.render.afp.fonts | |
| org.apache.fop.render.afp.modca | |
| org.apache.fop.render.afp.tools | |
| org.apache.fop.render.awt | AWT Renderer used for displaying rendered pages in Java applications. |
| org.apache.fop.render.awt.viewer | AWT Viewer PreviewDialog and PreviewPanel. |
| org.apache.fop.render.bitmap | Bitmap Renderer which creates TIFF and PNG images from rendered pages. |
| org.apache.fop.render.java2d | Java2D Renderer which paints rendered pages on Graphics2D instances. |
| org.apache.fop.render.pcl | PCL Renderer (Supports PCL5 and HP GL/2) |
| org.apache.fop.render.pcl.extensions | |
| org.apache.fop.render.pdf | PDF Renderer |
| org.apache.fop.render.print | Renderer which prints rendered pages directly to a printer. |
| org.apache.fop.render.ps | PostScript Renderer |
| org.apache.fop.render.ps.extensions | Extensions specific to the PostScript Renderer. |
| org.apache.fop.render.svg | SVG (Structured Vector Graphics) Renderer |
| org.apache.fop.render.txt | Plain Text Renderer |
| org.apache.fop.render.txt.border | Border handling classes for the Plain Text Renderer |
| org.apache.fop.render.xml | Area Tree XML Renderer. |
| Structural Rendering | |
| org.apache.fop.render.mif | MIF Output Support |
| org.apache.fop.render.rtf | RTF (Rich Text Format) Output Support |
| Utility | |
| org.apache.fop.fonts | Classes for font handling. |
| org.apache.fop.fonts.apps | Command-line tools for generating XML font metric files from Type 1 and TrueType fonts. |
| org.apache.fop.fonts.autodetect | A collection of classes that aid in the autodetection of installed system fonts. |
| org.apache.fop.fonts.base14 | Base 14 fonts used for PDF and PostScript. |
| org.apache.fop.fonts.truetype | Classes for TrueType fonts. |
| org.apache.fop.fonts.type1 | Classes for Adobe Type 1 fonts. |
| org.apache.fop.hyphenation | Hyphenation support. |
| org.apache.fop.image | Contains image loading adapters for various image sources and the image cache. |
| org.apache.fop.image.analyser | Image analyzers for determining the format of an image and to preload its intrinsic size. |
| org.apache.fop.pdf | Classes for handling the low-level creation of PDF documents. |
| org.apache.fop.svg | Classes that add SVG support to FOP and SVG->PDF conversion for Batik. |
| org.apache.fop.tools | Various tools for FOP. |
| org.apache.fop.tools.anttasks | FOP-related tasks for Apache Ant. |
| org.apache.fop.util | Various utility classes (I/O, codecs, color support, service discovers etc.). |
| RTFLib (formerly JFor) Subpackage Candidate | |
| org.apache.fop.render.rtf.rtflib.exceptions | Classes handling specialized exceptions that arise during RTF creation. |
| org.apache.fop.render.rtf.rtflib.rtfdoc | Independent subsystem (not specific to FOP) classes that are used to build RTF documents. |
| org.apache.fop.render.rtf.rtflib.tools | Utility classes used in RTF file generation. |
| Other Packages | |
| org.apache.fop.text.linebreak |
Apache FOP formats and renders XSL-FO input into a variety of output formats, including PDF and PostScript.
To more information, including general documentation, go to the Apache FOP Home Page.
|
fop 0.94 | ||||||||||
| PREV NEXT | FRAMES NO FRAMES |


The media queries service allows users to subscribe to screen size changes at different breakpoints.
Suscribes to screen size changes. The listener
function is called when breakpoints change. It is called with a SkyMediaBreakpoints
argument, which is an enum that represents the new breakpoint. The possible values for the argument are xs
for screen widths of 767px or less, sm
for screen widths of 768px to 991px, md
for screen widths of 992px to 1199px, and lg
for screen widths of 1200px or greater).


✔ Appointment booked
Please keep this information for your records
Booking reference number
0002 7480 8900
Date and time
Monday 2nd May 2016, 2:00pm
Clinic
General Respiratory Medicine-Respiratory Medicine-CityTH (NAME Hosp)-CODE
Location
Beckett St, Leeds, LS9 7TF
Referred by
Dr Zubeir Smith at Colton Mill Medical Centre
Information
Please arrive 30 minutes before your appointment is due to start. Wear loose clothing.
What happens next?
We’ve sent your request to the provider. The provider will contact you if there are any issues with this booking.


I'm a front-end web developer😍 and pursuing my Btech degree in Computer Science. I enjoy facing challenges😋 and I never give up until I get something right😊.
I started learning programming language when I went to college. Now I'M in 2nd year and pursuing my btech degree in computer science.Ihave a good knowledge of C and Python programming language. Als0, I have some knowledge about datastructure and algorithm. Along with this I know html and css(Intermedaite Level).
I like to play cricket and when I was in school I have participated in many sports competition. I also won a medal in cricket when I was in class XII.
Do you want to have your own websites then you can contact me. Also you can contact me if you want to share your knowledge regarding technology or want to know something about technology like web development. Together we will try to solve those problem. If you are in competitive programming then it will be beneficial for me too....We will code together!
CONTACT ME


Package
Class
Use
Tree
Deprecated
Index
Help
PREV NEXT
FRAMES
NO FRAMES
All Classes
A
C
D
F
G
I
L
M
O
P
S
T
W
A
addAttr(String, String)
- Method in class com.google.enterprise.sdk.onebox.
Field
Optionally, additional attributes can be added to the Field element as needed for display formatting.
addField(Field)
- Method in class com.google.enterprise.sdk.onebox.
ModuleResult
Optionally, up to eight
Field
elements can be added to the result to provide additional information for display.
addResult(ModuleResult)
- Method in class com.google.enterprise.sdk.onebox.
OneBoxResults
Add an actual result to the OneBox provider's result set.
C
canAddResult()
- Method in class com.google.enterprise.sdk.onebox.
OneBoxResults
Determines whether there is room to add another result.
com.google.enterprise.sdk.onebox
- package com.google.enterprise.sdk.onebox
D
doGet(HttpServletRequest, HttpServletResponse)
- Method in class com.google.enterprise.sdk.onebox.
OneBoxProvider
Called by the application server's servlet runner when GET method requests are made for this servlet.
F
FailureCode
- class com.google.enterprise.sdk.onebox.
FailureCode
.
Failure return codes that a OneBox provider can report.
Field
- class com.google.enterprise.sdk.onebox.
Field
.
Class representing a unit of metadata for a OneBox provider result.
Field(String, String)
- Constructor for class com.google.enterprise.sdk.onebox.
Field
The constructor requires the name of the Field element and the value of the element.
G
getAttrs()
- Method in class com.google.enterprise.sdk.onebox.
Field
getFields()
- Method in class com.google.enterprise.sdk.onebox.
ModuleResult
getText()
- Method in class com.google.enterprise.sdk.onebox.
ModuleResult
getUrl()
- Method in class com.google.enterprise.sdk.onebox.
ModuleResult
getValue()
- Method in class com.google.enterprise.sdk.onebox.
Field
I
IOneBoxResults
- interface com.google.enterprise.sdk.onebox.
IOneBoxResults
.
Interface that must be implemented by classes encapsulating OneBox for Enterprise result sets.
L
logHeaders(HttpServletRequest)
- Method in class com.google.enterprise.sdk.onebox.
OneBoxProvider
Convenience method for logging the HTTP headers sent in the request.
lookupFailure
- Static variable in class com.google.enterprise.sdk.onebox.
FailureCode
M
ModuleResult
- class com.google.enterprise.sdk.onebox.
ModuleResult
.
Class representing a single result from a OneBox provider response.
ModuleResult(String, String)
- Constructor for class com.google.enterprise.sdk.onebox.
ModuleResult
The only constructor requires both a URL for the result link and a display text String for the link.
O
OneBoxProvider
- class com.google.enterprise.sdk.onebox.
OneBoxProvider
.
Abstract base class servlet for providing OneBox results.
OneBoxProvider()
- Constructor for class com.google.enterprise.sdk.onebox.
OneBoxProvider
OneBoxResults
- class com.google.enterprise.sdk.onebox.
OneBoxResults
.
Class encapsulating a response result set from a call to a OneBox provider.
OneBoxResults()
- Constructor for class com.google.enterprise.sdk.onebox.
OneBoxResults
P
processRequest(HttpServletRequest, HttpServletResponse)
- Method in class com.google.enterprise.sdk.onebox.
OneBoxProvider
Top level request processor for this OneBox provider.
provideOneBoxResults(String, String, String, String, String, String, String, String[])
- Method in class com.google.enterprise.sdk.onebox.
OneBoxProvider
Method to handle OneBox requests where no user authentication is required.
provideOneBoxResults(String, String, String, String, String, String, String, String, String, String[])
- Method in class com.google.enterprise.sdk.onebox.
OneBoxProvider
Method to handle OneBox requests where simple username / password based authentication of the end user is required.
provideOneBoxResults(String, String, String, String, String, String, String, String, String[])
- Method in class com.google.enterprise.sdk.onebox.
OneBoxProvider
Method to handle OneBox requests where LDAP based authentication of the end user is required.
provideOneBoxResults(String, String, String, String, String, Cookie, String, String, String[])
- Method in class com.google.enterprise.sdk.onebox.
OneBoxProvider
Method to handle OneBox requests where forms based (Single Sign-On) authentication of the end user is required.
S
securityFailure
- Static variable in class com.google.enterprise.sdk.onebox.
FailureCode
serialize()
- Method in interface com.google.enterprise.sdk.onebox.
IOneBoxResults
Returns an XML String that describes a OneBox results set and adheres to Google's OneBox for Enterprise response Schema.
serialize()
- Method in class com.google.enterprise.sdk.onebox.
OneBoxResults
Serialize the current state of this OneBoxResults object to an XML string that conforms to the Google Schema for OneBox for Enterprise provider responses.
setFailure(FailureCode, String)
- Method in class com.google.enterprise.sdk.onebox.
OneBoxResults
In the event of provider failure, set the failure code and a diagnostic message.
setImageUrl(String)
- Method in class com.google.enterprise.sdk.onebox.
OneBoxResults
Optionally provide an identifying icon for the result set.
setProviderText(String)
- Method in class com.google.enterprise.sdk.onebox.
OneBoxResults
Text identifying the provider that ultimately handled the OneBox request.
setResultsTitleLink(String, String)
- Method in class com.google.enterprise.sdk.onebox.
OneBoxResults
Optionally provide a title link for the results set.
T
timeout
- Static variable in class com.google.enterprise.sdk.onebox.
FailureCode
toString()
- Method in class com.google.enterprise.sdk.onebox.
FailureCode
W
webAppBaseURL
- Variable in class com.google.enterprise.sdk.onebox.
OneBoxProvider
A
C
D
F
G
I
L
M
O
P
S
T
W
Package
Class
Use
Tree
Deprecated
Index
Help
PREV NEXT
FRAMES
NO FRAMES
All Classes


{% extends "base.html" %} {% block title %}
Medieval catalogues > HENRY DE KIRKESTEDE > Catalogus, c. 1360
{% endif %}16 identified entries found.
All data was derived from the List of Identifications by Professor Richard Sharpe.
{% if not printing %}
A key to codes used in the List is available (opens in new tab).{% endif %}


Home
Tutorials
About
Overview: Git and GitHub
How to install Git and GitHub
Basic Git Commands
Conflicts and solutions
Branching


{% extends "twentytwentymud/banner.html" %} {% block title %} Splash Screen {% endblock %} {% block header_text %}twentytwentyMUD{% endblock %} {% block content %}
A MUD is a text-based Multi User Dungeon.
By interacting with a terminal you will navigate through different rooms, complete tasks, and interact with other users.
Create an account or log-in to an existing one to play.
{% if user.is_authenticated %} {% else %} {% endif %}


01. Project Introduction
# Project Introduction
Welcome to Project 3: RESTful Web API with Node.js Framework
In Project 2: Private Blockchain, you solved the challenge of how to persist our blockchain dataset. Your next challenge is to build a RESTful API using a Node.js framework that will interfaces with the private blockchain.
By configuring an API for your private blockchain you expose functionality that can be consumed by several types of web clients ranging from desktop, mobile, and IoT devices.
For your next project, you will be creating a RESTful web API for your private blockchain. The API project will require two endpoints:
- GET block
- POST block
# Why this project?
This project introduces you to the fundamentals of web APIs with Node.js frameworks.
Using your own private blockchain to create a web API is a huge first step toward developing your own web applications that are consumable by a variety of web clients. Later in this program, you’ll be programming blockchain technologies that utilize these similar features using smart contracts.
# What will I learn?
You will learn to create and manage a web API with a Node.js framework to interact with your private blockchain. You’ll get first hand experience generating API endpoints and configuring the endpoints response that can be consumable by many types of web clients.
This project helps build on the skills you’ve learned so far an allow you to apply these skills using real world technologies to get hands on with the tools used to create web APIs.
# How does this help my career?
Understanding web APIs and ways to create them will help you build user applications later in the program. These applications will serve as great portfolio items for potential employers.
# Project Prerequisites
Completing this project successfully depends on your ability to apply skills you have learned throughout the program. The following lessons were made specifically to help you through this project. Feel free to reference this material as you complete the project.
Throughout the remaining project description, we will link to relevant resources from each of these lessons. If you have not completed these lessons, please take the time to familiarize yourself with their content.
# Get Started
Coming up, we'll look at some of the resources you'll use to support you as you build this project. In the next section, you'll hear about the main features your star registry service will provide.
## Note
For this project you need to use as your Project 2: Private Blockchain code base that passed the review.


A third year Computer Science undergraduate student at Rose-Hulman Institute of Technology with an interest in social media, education, and web development. I am ready to assist a company's needs through software development, UX design, web development, and database administration.
On my free time I enjoy free-time watching anime, drawing, and working out. These three things have been my favorite activites to do since I was 15. I discovered both anime and drawing at around the same time, the former leading to the latter. And I continued to do both activies since. They are my "stress-relievers" or coping mechanisms.
I have always considered myself a gym rat since I first started doing sports at the age of 10, but I just recently started going to the gym this past summer. I have not set any real goals for myself other than eventually gaining the courage to use the squat rack.


梦之队
Menu
首页
关于我们
博客
队员1
队员2
队员3
样例
加入我们
报名
New Start
The first step is as good as half over
石丽楠
Posted by
石丽楠
on January 13, 2018
沙旭
Posted by
沙旭
on January 13, 2018
李月
Posted by
李月
on January 13, 2018
李月
Posted by
李月
on January 13, 2018
Older Posts →


Memblocks are used to store and manipulate various types of data. Unlike arrays that can store basic values, memory blocks can be used to
manipulate bitmap, image, sound and even 3D mesh data. There are 256 memblocks available and share the common ability to manipulate data at
the byte level, share their internal memory pointers and copy between memblocks easily.
Click any of the following commands for more information.
Syntax
COPY MEMBLOCK [Source Memblock],[Target Memblock],[Source Location],[Target Location],[Bytes]
Description
This command will copy one section of a memblock to another section of another memblock.
The Source Memblock and Target Memblock parameters must be existing memblocks.
The Source Location and Target Location parameters must be byte locations within the respective memblocks.
The Bytes parameter is the number of
bytes you wish to copy from one memblock to the other.
Examples
Syntax
DELETE MEMBLOCK [Memblock Number]
Description
This command will delete a memblock. If the memblock does not exist this command will fail.
The parameter must be specified using an integer value.
Examples
Syntax
MAKE MEMBLOCK FROM BITMAP [Memblock Number],[Bitmap Number]
Description
This command will make a memblock from a bitmap. The specified values must be integer values and the source bitmap must exist
or the command will fail.
View memblock bitmap data structure.
Examples
Syntax
MAKE BITMAP FROM MEMBLOCK [Bitmap Number],[Memblock Number]
Description
This command will make a bitmap from a memblock. The specified values must be integer values and the source resource must exist or the command will fail.
View memblock bitmap data structure.
Examples
Syntax
MAKE MEMBLOCK [Memblock Number],[Size in Bytes]
Description
This command will make a memblock of the given size.
If the memblock already exists this command will fail.
The parameters must be specified using integer values.
Examples
Syntax
MAKE MESH FROM MEMBLOCK [Mesh Number],[Memblock Number]
Description
This command will create a mesh from a memblock. The memblock specified must already exist and follow the correct structure for mesh data, otherwise the command will fail.
View Memblock Mesh Data Structure.
Examples
Syntax
WRITE MEMBLOCK BYTE [Memblock Number],[Position],[Byte]
Description
This command will write a
byte to a memblock at the specified location.
The memblock must exist or the command will fail.
The position value is specified in bytes.
The parameters must be specified using integer values.
Examples
Syntax
WRITE MEMBLOCK DWORD [Memblock Number],[Position],[DWord]
Description
This command will write a
dword to a memblock at the specified location.
The memblock must exist or the command will fail.
The position value is specified in
bytes.
The parameters must be specified using integer values.
Examples
Syntax
WRITE MEMBLOCK FLOAT [Memblock Number],[Position],[Float]
Description
This command will write a
float to a memblock at the specified location.
The memblock must exist or the command will fail.
The position value is specified in
bytes.
The parameters must be specified using integer values.
Examples
Syntax
WRITE MEMBLOCK WORD [Memblock Number],[Position],[Word]
Description
This command will write a
word to a memblock at the specified location.
The memblock must exist or the command will fail.
The position value is specified in
bytes.
The parameters must be specified using integer values.
Examples


https://ft.nvdetr.org/form/1099GCR filled date 4/4/2022 Q: I believe the amount is incorrect because: The amount I received in 2021 was $14,802. The amount on 1099-G is $22,979 ($8,177 higher than the amount I received) I checked my employnv.gov account and saw someone fraudulently submitted a new PUA claim and filed for 17 weeks on 8/17/2021 for the weeks ending from 4/24/2021 through 08/14/2021. Q: Please add any additional information you would like to provide: I have already reported the fraud through the online form at https://ft.nvdetr.org/form/Fraud. ?? and I have submitted an appeal. cc blob wmv1.wmv video


Note: This form does NOT save automatically, so please click the Save Draft button frequently (located at the bottom of the page).
To select multiple units, press and hold the Ctrl key (Windows) or Command key (Mac).
Lesson Overview
Materials & Resources
Bulleted list of physical materials needed to execute the lesson.
Before you get started
Instruction Plan
Standards
Sorry, you can't submit just yet!
- {{ e.$name }} is {{ key }}
Draft
Awaiting Approval
Returned
Published
Saving
Cancel
{{vm.lesson.status === 'published' ? 'Revert to draft' : 'Save draft' }}


| Class | Output |
|---|---|
.{{ atomic.class }} |
{{ atomic.output }} |
By design, our lists inherit some sensible margins by default. However, in some layouts, you may want to strip these default margins by adding .list-reset
and then explicitly choosing a list style and list style position. These classes can be applied to ordered and unordered lists interchangably, though if you’re wanting to show decimals, it’s most appropriate to mark your list up as an ordered list.
By default, the position of markers in a list item are outside their containing element.


|
What is cpphs? How do I use it? Downloads |
Differences to cpp cpphs as a library Contacts |
cpphs is a liberalised re-implementation of cpp, the C pre-processor, in Haskell.
Why re-implement cpp? Rightly or wrongly, the C pre-processor is widely used in Haskell source code. It enables conditional compilation for different compilers, different versions of the same compiler, and different OS platforms. It is also occasionally used for its macro language, which can enable certain forms of platform-specific detail-filling, such as the tedious boilerplate generation of instance definitions and FFI declarations. However, there are two problems with cpp, aside from the obvious aesthetic ones:
This version of the C pre-processor is pretty-much feature-complete, and compatible with the -traditional style. It has two main modes:
Source language features:
| #ifdef | simple conditional compilation |
| #if | the full boolean language of defined(), &&, ||, ==, etc. |
| #elif | chained conditionals |
| #define | in-line definitions (text replacements and macros) |
| #undef | in-line revocation of definitions |
| #include | file inclusion |
| #line | line number directives |
| #pragma | cpp pragmas (ignored) |
| \\n | line continuations within all # directives |
| /**/ | token catenation within a macro definition |
| ## | ANSI-style token catenation |
| # | ANSI-style token stringisation |
| __FILE__ | special text replacement for DIY error messages |
| __LINE__ | special text replacement for DIY error messages |
| __DATE__ | special text replacement |
| __TIME__ | special text replacement |
Macro expansion is recursive. Redefinition of a macro name does not generate a warning. Macros can be defined on the command-line with -D just like textual replacements. Macro names are permitted to be Haskell identifiers e.g. with the prime ' and backtick ` characters, which is slightly looser than in C, but they still may not include operator symbols.
Numbering of lines in the output is preserved so that any later processor can give meaningful error messages. When a file is #include'd, cpphs inserts #line directives for the same reason. Numbering should be correct even in the presence of line continuations. If you don't want #line directives in the final output, use the --noline option, or if you would prefer them in {-# LINE #-} Haskell pragma format, use the --linepragma option.
Any syntax error in a cpp directive gives a warning message to stderr. Failure to find a #include'd file also produces a warning to stderr. In both cases, processing continues on the rest of the input.
Usage: cpphs [ filename | -Dsym | -Dsym=val | -Ipath ]+ [-Ofile] [--include=file]* [--nomacro] [--noline] [--linepragma] [--nowarn] [--pragma] [--strip] [--strip-eol] [--text] [--hashes] [--layout] [--unlit] [ --cpp compatopts ] cpphs --version
You can give any number of filenames on the command-line. The results are catenated on standard output. (Macro definitions in one file do not carry over into the next.) If no filename is given, cpphs reads from standard input.
Note: if you wish to use cpphs as a replacement for gcc's cpp in conjunction with the ghc compiler then the extra options you need to give to ghc are these:
-cpp -pgmPcpphs -optP--cpp
Options:
| -Dsym | define a textual replacement (default value is 1) |
| -Dsym=val | define a textual replacement with a specific value |
| -Dsym(args)=val | define a macro with arguments |
| -Ipath | add a directory to the search path for #include's |
| -Ofile | specify a file for output (default is stdout) |
| --include=file | #include the given file at the start of the input |
| --nomacro | only process #ifdef's and #include's, do not expand macros |
| --noline | remove #line droppings from the output |
| --linepragma | convert #line droppings into {-# LINE #-} format |
| --nowarn | suppress messages from missing #include files, or #warning |
| --pragma | retain #pragma in the output (normally removed) |
| --strip | convert traditional C-style comments (not eol //) to whitespace, even outside cpp directives |
| --strip-eol | convert modern C-style comments (including /**/ and //) to whitespace, even outside cpp directives |
| --hashes | recognise the ANSI # stringise operator, and ## for token catenation, within macros |
| --text | treat input as plain text, not Haskell code |
| --layout | preserve newlines within macro expansions |
| --unlit | unlit literate source code |
| --cpp compatopts | accept standard cpp options: -o, -x, -ansi, -traditional, -P, -C, -A, etc |
| --version | report version number of cpphs and stop |
There are NO textual replacements defined by default. (Normal cpp usually has definitions for machine, OS, etc. You can easily create a wrapper script if you need these.) The search path is searched in order of the -I options, except that the directory of the calling file, then the current directory, are always searched first. Again, there is no default search path (unless you define one via a wrapper script).
Current stable version:
cpphs-1.15, release date 2012.11.30
By HTTP:
.tar.gz,
Hackage.
Development:
The current darcs repository of cpphs is available at
darcs get http://code.haskell.org/cpphs(Users on Windows or MacOS filesystems may need to use the --partial flag.) What's new, over and above the latest stable release?
Older versions:
cpphs-1.14, release date 2012.07.11
By HTTP:
.tar.gz,
Hackage.
cpphs-1.13, release date 2011.09.26
By HTTP:
.tar.gz,
Hackage.
cpphs-1.12, release date 2011.06.26
By HTTP:
.tar.gz,
Hackage.
cpphs-1.11, release date 2010.01.31
By HTTP:
.tar.gz,
.zip,
Hackage.
cpphs-1.10, release date 2010.01.30
By HTTP:
.tar.gz,
.zip,
cpphs-1.9, release date 2009.09.07
By HTTP:
.tar.gz,
.zip.
cpphs-1.8, release date 2009.08.06
By HTTP:
.tar.gz,
.zip.
cpphs-1.7, release date 2009.06.22
By HTTP:
.tar.gz,
.zip.
cpphs-1.6, release date 2008.10.09
By HTTP:
.tar.gz,
.zip.
cpphs-1.5, release date 2007.06.05
By HTTP:
.tar.gz,
.zip.
Windows binary,
cpphs-1.4, release date 2007.04.17
By HTTP:
.tar.gz,
.zip.
cpphs-1.3, release date 2006.10.09
By HTTP:
.tar.gz,
.zip,
Windows binary.
cpphs-1.2, release date 2006.05.04
By HTTP:
.tar.gz,
.zip,
Windows binary.
cpphs-1.1, release date 2005.10.14
By HTTP:
.tar.gz,
.zip.
cpphs-1.0, release date 2005.10.05
By HTTP:
.tar.gz,
.zip.
cpphs-0.9, release date 2005.03.17
By HTTP:
.tar.gz,
.zip.
cpphs-0.8, release date 2004.11.14
By HTTP:
.tar.gz,
.zip.
cpphs-0.7, release date 2004.09.01
By HTTP:
.tar.gz,
.zip.
cpphs-0.6, release date 2004.07.30
By HTTP:
.tar.gz,
.zip.
#if ( foo ) && ( bar )
#if foo && bar || baz && frob
#define f (f' id). Previously, this was interpreted as a parametrised macro, with arguments in the parens, and no expansion. Now, the space indicates that this is a textual replacement, and the parenthesised expression is in fact the replacement.
cpphs-0.5, release date 2004.06.07
By HTTP:
.tar.gz,
.zip.
cpphs-0.4, release date 2004.05.19
By HTTP:
.tar.gz,
.zip.
cpphs-0.3, release date 2004.05.18
By HTTP:
.tar.gz,
.zip.
Fix recursive macro expansion bug. Added option to strip C comments. Added option to recognise the # stringise operator.
cpphs-0.2, release date 2004.05.15
By HTTP:
.tar.gz,
.zip.
Implements textual replacement and macro expansion.
cpphs-0.1, release date 2004.04.07
By HTTP:
.tar.gz,
.zip.
Initial release: implements conditional compilation and file inclusion only.
Building instructions
To build cpphs, use
hmake cpphs [-package base]or
ghc --make cpphs [-o cpphs]or
mv cpphs.hugs cpphs # a simple runhugs script
You will notice that the command-line arguments for cpphs are not the same as for the original cpp. If you want to use cpphs as a completely drop-in replacement for the real cpp, that is, to accept the same arguments, and have broadly the same behaviour in response to them, then use the --cpp compatibility option as the first commandline flag.
In general, cpphs is based on the -traditional behaviour, not ANSI C, and has the following main differences from the standard cpp.
General
Macro definition language
You can use cpphs as a library from within a Haskell program. The main interface is in Language.Preprocessor.Cpphs. Haddock documentation is here. To make the library available to your haskell compiler, you must install the cpphs package using Cabal.
I am interested in hearing your feedback on cpphs. Bug reports especially welcome. You can send feature requests too, but I won't guarantee to implement them if they depart much from the ordinary cpp's behaviour. Please mail
Copyright: © 2004-2012 Malcolm Wallace, except for ParseLib (Copyright © 1995 Graham Hutton and Erik Meijer)
License: The library modules in cpphs are distributed under the terms of the LGPL (see file LICENCE-LGPL for more details). If that's a problem for you, contact me to make other arrangements. The application module 'cpphs.hs' itself is GPL (see file LICENCE-GPL). If you have a commercial use for cpphs and find the terms of the (L)GPL too onerous, you can instead choose to distribute unmodified binaries (not source), under the terms of LICENCE-commercial
This software comes with no warranty. Use at your own risk.


Shrek the Third (2007)
★
6.1 / 10 (195,203 votes)
PG — 93 min — Animation Adventure Comedy
Cast:
Mike Myers
Cameron Diaz
Eddie Murphy
Languages:
English
When his new father-in-law, King Harold falls ill, Shrek is looked at as the heir to the land of Far, Far Away. Not one to give up his beloved swamp, Shrek recruits his friends Donkey and Puss in Boots to install the rebellious Artie as the new king. Princess Fiona, however, rallies a band of royal girlfriends to fend off a coup d'etat by the jilted Prince Charming.
Data Retrieved: 2015-11-01
File / Directory Name: "Shrek The Third (2007)"


I am continuously seeking more knowledge and wisdom. Right now I am putting in many hours of coding at Epicodus, a programming bootcamp.
When I had a life I played in a band, practiced my photography and read sci-fi and nonfiction.
If you would like to make a hearty donation to a wonderful cause, click below.


Nice! You've added Non Sequitur to your team.
What's next?
Try this when you
go back to Slack
/quote @shania
/quote amazing
/quote @raj jump


WITNESS LIST Human Services Committee February 26, 2001-2:00P HB 1002 For: Cole, Pat (National Training Center on Domestic and Sexual Violence) On: Temple, Larry (Texas Workforce Commssion) Registering, but not testifying: For: Bresette, Patrick (Center for Public Policy Priorities) Corrigan, Jennifer (Texas Council on Family Violence) Hernandez, Leslie (National Association of Social Workers - Texas) Johnson, Karen (United Way of Texas) On: Denton, Judy (Texas Department of Human Services) HB 1003 Registering, but not testifying: For: Bresette, Patrick (Center for Public Policy Priorities) Cole, Pat (National Training Center on Domestic and Sexual Violence) Corrigan, Jennifer (Texas Council on Family Violence) Hernandez, Leslie (National Association of Social Workers - Texas) Johnson, Karen (United Way of Texas) On: Denton, Judy (Texas Department of Human Services) HB 1004 For: Cole, Pat (National Training Center on Domestic and Sexual Violence) On: Denton, Judy (Texas Department of Human Services) Temple, Larry (Texas Workforce Commssion) Registering, but not testifying: For: Bresette, Patrick (Center for Public Policy Priorities) Corrigan, Jennifer (Texas Council on Family Violence) Hernandez, Leslie (National Association of Social Workers - Texas) Johnson, Karen (United Way of Texas) HB 1005 Registering, but not testifying: For: Bresette, Patrick (Center for Public Policy Priorities) Cole, Pat (National Training Center on Domestic and Sexual Violence) Corrigan, Jennifer (Texas Council on Family Violence) Hernandez, Leslie (National Association of Social Workers - Texas) Johnson, Karen (United Way of Texas) On: Denton, Judy (Texas Department of Human Services) HB 1006 Registering, but not testifying: For: Bresette, Patrick (Center for Public Policy Priorities) Cole, Pat (National Training Center on Domestic and Sexual Violence) Corrigan, Jennifer (Texas Council on Family Violence) Hernandez, Leslie (National Association of Social Workers - Texas) Briefing on TANF Waiver issues On: Bresette, Patrick (Center for Public Policy Priorities) Denton, Judy (Department of Human Services) Gilbert, Don (Health and Human Service Commission) Temple, Larry (Texas Workforce Commission)


IncomingRequest Class
The IncomingRequest class provides an object-oriented representation of an HTTP request from a client, like a browser. It extends from, and has access to all the methods of the Request and Message classes, in addition to the methods listed below.
Accessing the Request
An instance of the request class already populated for you if the current class is a descendant of
CodeIgniter\Controller
and can be accessed as a class property:
<?php
namespace App\Controllers;
use CodeIgniter\Controller;
class UserController extends Controller
{
public function index()
{
if ($this->request->isAJAX()) {
// ...
}
}
}
If you are not within a controller, but still need access to the application’s Request object, you can get a copy of it through the Services class:
<?php
$request = \Config\Services::request();
It’s preferable, though, to pass the request in as a dependency if the class is anything other than the controller, where you can save it as a class property:
<?php
use CodeIgniter\HTTP\RequestInterface;
class SomeClass
{
protected $request;
public function __construct(RequestInterface $request)
{
$this->request = $request;
}
}
$someClass = new SomeClass(\Config\Services::request());
Determining Request Type
A request could be of several types, including an AJAX request or a request from the command line. This can
be checked with the isAJAX()
and isCLI()
methods:
<?php
// Check for AJAX request.
if ($request->isAJAX()) {
// ...
}
// Check for CLI Request
if ($request->isCLI()) {
// ...
}
Note
The isAJAX()
method depends on the X-Requested-With
header,
which in some cases is not sent by default in XHR requests via JavaScript (i.e., fetch).
See the AJAX Requests section on how to avoid this problem.
is()
New in version 4.3.0.
Since v4.3.0, you can use the is()
method. It returns boolean.
<?php
// Checks HTTP methods. Returns boolean.
$request->is('get');
$request->is('post');
$request->is('put');
$request->is('delete');
$request->is('head');
$request->is('patch');
$request->is('options');
// Checks if it is an AJAX request. The same as `$request->isAJAX()`.
$request->is('ajax');
// Checks if it is a JSON request.
$request->is('json');
getMethod()
You can check the HTTP method that this request represents with the getMethod()
method:
<?php
// Returns 'post'
$method = $request->getMethod();
By default, the method is returned as a lower-case string (i.e., 'get'
, 'post'
, etc).
Important
The functionality to convert the return value to lower case is deprecated. It will be removed in the future version, and this method will be PSR-7 equivalent.
You can get an
uppercase version by wrapping the call in strtoupper()
:
// Returns 'GET'
$method = strtoupper($request->getMethod());
You can also check if the request was made through and HTTPS connection with the isSecure()
method:
<?php
if (! $request->isSecure()) {
force_https();
}
Retrieving Input
You can retrieve input from $_SERVER
, $_GET
, $_POST
, and $_ENV
through the Request object.
The data is not automatically filtered and returns the raw input data as passed in the request.
Note
It is bad practice to use global variables. Basically, it should be avoided and it is recommended to use methods of the Request object.
The main
advantages to using these methods instead of accessing them directly ($_POST['something']
), is that they
will return null if the item doesn’t exist, and you can have the data filtered. This lets you conveniently
use data without having to test whether an item exists first. In other words, normally you might do something
like this:
<?php
$something = $_POST['foo'] ?? null;
With CodeIgniter’s built-in methods you can simply do this:
<?php
$something = $request->getVar('foo');
Getting Data
The getVar()
method will pull from $_REQUEST
, so will return any data from $_GET
, $POST
, or $_COOKIE
(depending on php.ini request-order).
Note
If the incoming request has a Content-Type
header set to application/json
,
the getVar()
method returns the JSON data instead of $_REQUEST
data.
While this is convenient, you will often need to use a more specific method, like:
$request->getGet()
$request->getPost()
$request->getCookie()
$request->getServer()
$request->getEnv()
In addition, there are a few utility methods for retrieving information from either $_GET
or $_POST
, while
maintaining the ability to control the order you look for it:
$request->getPostGet()
- checks$_POST
first, then$_GET
$request->getGetPost()
- checks$_GET
first, then$_POST
Getting JSON Data
You can grab the contents of php://input
as a JSON stream with getJSON()
.
Note
This has no way of checking if the incoming data is valid JSON or not, you should only use this method if you know that you’re expecting JSON.
<?php
$json = $request->getJSON();
By default, this will return any objects in the JSON data as objects. If you want that converted to associative
arrays, pass in true
as the first parameter.
The second and third parameters match up to the depth
and options
arguments of the
json_decode PHP function.
If the incoming request has a Content-Type
header set to application/json
, you can also use getVar()
to get
the JSON stream. Using getVar()
in this way will always return an object.
Getting Specific Data from JSON
You can get a specific piece of data from a JSON stream by passing a variable name into getVar()
for the
data that you want or you can use “dot” notation to dig into the JSON to get data that is not on the root level.
<?php
/*
* With a request body of:
* {
* "foo": "bar",
* "fizz": {
* "buzz": "baz"
* }
* }
*/
$data = $request->getVar('foo');
// $data = "bar"
$data = $request->getVar('fizz.buzz');
// $data = "baz"
If you want the result to be an associative array instead of an object, you can use getJsonVar()
instead and pass
true in the second parameter. This function can also be used if you can’t guarantee that the incoming request will have the
correct Content-Type
header.
<?php
// With the same request as above
$data = $request->getJsonVar('fizz');
// $data->buzz = "baz"
$data = $request->getJsonVar('fizz', true);
// $data = ["buzz" => "baz"]
Note
See the documentation for dot_array_search()
in the Array
helper for more information on “dot” notation.
Retrieving Raw Data (PUT, PATCH, DELETE)
Finally, you can grab the contents of php://input
as a raw stream with getRawInput()
:
<?php
$data = $request->getRawInput();
This will retrieve data and convert it to an array. Like this:
<?php
var_dump($request->getRawInput());
/*
* Outputs:
* [
* 'Param1' => 'Value1',
* 'Param2' => 'Value2',
* ]
*/
You can also use getRawInputVar()
, to get the specified variable from raw stream and filter it.
<?php
// When the request body is 'foo=one&bar=two&baz[]=10&baz[]=20'
var_dump($request->getRawInputVar('bar'));
// Outputs: two
// foo=one&bar=two&baz[]=10&baz[]=20
var_dump($request->getRawInputVar(['foo', 'bar']));
/*
* Outputs:
* [
* 'foo' => 'one',
* 'bar' => 'two'
* ]
*/
// foo=one&bar=two&baz[]=10&baz[]=20
var_dump($request->getRawInputVar('baz'));
/*
* Outputs:
* [
* '10',
* '20'
* ]
*/
// foo=one&bar=two&baz[]=10&baz[]=20
var_dump($request->getRawInputVar('baz.0'));
// Outputs: 10
Filtering Input Data
To maintain security of your application, you will want to filter all input as you access it. You can
pass the type of filter to use as the second parameter of any of these methods. The native filter_var()
function is used for the filtering. Head over to the PHP manual for a list of valid
filter types.
Filtering a POST variable would look like this:
<?php
$email = $request->getVar('email', FILTER_SANITIZE_EMAIL);
All of the methods mentioned above support the filter type passed in as the second parameter, with the
exception of getJSON()
and getRawInput()
.
Retrieving Headers
You can get access to any header that was sent with the request with the headers()
method, which returns
an array of all headers, with the key as the name of the header, and the value is an instance of
CodeIgniter\HTTP\Header
:
<?php
var_dump($request->headers());
/*
* Outputs:
* [
* 'Host' => CodeIgniter\HTTP\Header,
* 'Cache-Control' => CodeIgniter\HTTP\Header,
* 'Accept' => CodeIgniter\HTTP\Header,
* ]
*/
If you only need a single header, you can pass the name into the header()
method. This will grab the
specified header object in a case-insensitive manner if it exists. If not, then it will return null
:
<?php
// these are all equivalent
$host = $request->header('host');
$host = $request->header('Host');
$host = $request->header('HOST');
You can always use hasHeader()
to see if the header existed in this request:
<?php
if ($request->hasHeader('DNT')) {
// Don't track something...
}
If you need the value of header as a string with all values on one line, you can use the getHeaderLine()
method:
<?php
// Accept-Encoding: gzip, deflate, sdch
echo 'Accept-Encoding: ' . $request->getHeaderLine('accept-encoding');
If you need the entire header, with the name and values in a single string, simply cast the header as a string:
<?php
echo (string) $header;
The Request URL
You can retrieve a URI object that represents the current URI for this request through the
$request->getUri()
method. You can cast this object as a string to get a full URL for the current request:
<?php
$uri = (string) $request->getUri();
The object gives you full abilities to grab any part of the request on it’s own:
<?php
$uri = $request->getUri();
echo $uri->getScheme(); // http
echo $uri->getAuthority(); // snoopy:password@example.com:88
echo $uri->getUserInfo(); // snoopy:password
echo $uri->getHost(); // example.com
echo $uri->getPort(); // 88
echo $uri->getPath(); // /path/to/page
echo $uri->getRoutePath(); // path/to/page
echo $uri->getQuery(); // foo=bar&bar=baz
print_r($uri->getSegments()); // Array ( [0] => path [1] => to [2] => page )
echo $uri->getSegment(1); // path
echo $uri->getTotalSegments(); // 3
You can work with the current URI string (the path relative to your baseURL) using the getRoutePath()
.
Note
The getRoutePath()
method can be used since v4.4.0. Prior to v4.4.0,
the getPath()
method returned the path relative to your baseURL.
Uploaded Files
Information about all uploaded files can be retrieved through $request->getFiles()
, which returns an array of
CodeIgniter\HTTP\Files\UploadedFile
instance. This helps to ease the pain of working with uploaded files,
and uses best practices to minimize any security risks.
<?php
$files = $request->getFiles();
See Working with Uploaded Files for the details.
You can retrieve a single file uploaded on its own, based on the filename given in the HTML file input:
<?php
$file = $request->getFile('userfile');
You can retrieve an array of same-named files uploaded as part of a multi-file upload, based on the filename given in the HTML file input:
<?php
$files = $request->getFileMultiple('userfile');
Note
The files here correspond to $_FILES
. Even if a user just clicks submit button of a form and does not upload any file, the file will still exist. You can check that the file was actually uploaded by the isValid()
method in UploadedFile. See Verify a File for more details.
Content Negotiation
You can easily negotiate content types with the request through the negotiate()
method:
<?php
$language = $request->negotiate('language', ['en-US', 'en-GB', 'fr', 'es-mx']);
$imageType = $request->negotiate('media', ['image/png', 'image/jpg']);
$charset = $request->negotiate('charset', ['UTF-8', 'UTF-16']);
$contentType = $request->negotiate('media', ['text/html', 'text/xml']);
$encoding = $request->negotiate('encoding', ['gzip', 'compress']);
See the Content Negotiation page for more details.
Class Reference
Note
In addition to the methods listed here, this class inherits the methods from the Request Class and the Message Class.
The methods provided by the parent classes that are available are:
CodeIgniter\HTTP\Request::getIPAddress()
CodeIgniter\HTTP\Request::isValidIP()
CodeIgniter\HTTP\Request::getMethod()
CodeIgniter\HTTP\Request::setMethod()
CodeIgniter\HTTP\Request::getServer()
CodeIgniter\HTTP\Request::getEnv()
CodeIgniter\HTTP\Request::setGlobal()
CodeIgniter\HTTP\Request::fetchGlobal()
CodeIgniter\HTTP\Message::getBody()
CodeIgniter\HTTP\Message::setBody()
CodeIgniter\HTTP\Message::appendBody()
CodeIgniter\HTTP\Message::populateHeaders()
CodeIgniter\HTTP\Message::headers()
CodeIgniter\HTTP\Message::header()
CodeIgniter\HTTP\Message::hasHeader()
CodeIgniter\HTTP\Message::getHeaderLine()
CodeIgniter\HTTP\Message::setHeader()
CodeIgniter\HTTP\Message::removeHeader()
CodeIgniter\HTTP\Message::appendHeader()
CodeIgniter\HTTP\Message::prependHeader()
CodeIgniter\HTTP\Message::getProtocolVersion()
CodeIgniter\HTTP\Message::setProtocolVersion()
- class CodeIgniter\HTTP\IncomingRequest
- isCLI()
- Returns
True if the request was initiated from the command line, otherwise false.
- Return type
bool
- isAJAX()
- Returns
True if the request is an AJAX request, otherwise false.
- Return type
bool
- isSecure()
- Returns
True if the request is an HTTPS request, otherwise false.
- Return type
bool
- getVar([$index = null[, $filter = null[, $flags = null]]])
- Parameters
- Returns
$_REQUEST
if no parameters supplied, otherwise the REQUEST value if found, or null if not- Return type
array|bool|float|int|object|string|null
The first parameter will contain the name of the REQUEST item you are looking for:
<?php $request->getVar('some_data');
The method returns null if the item you are attempting to retrieve does not exist.
The second optional parameter lets you run the data through the PHP’s filters. Pass in the desired filter type as the second parameter:
<?php $request->getVar('some_data', FILTER_SANITIZE_FULL_SPECIAL_CHARS);
To return an array of all POST items call without any parameters.
To return all POST items and pass them through the filter, set the first parameter to null while setting the second parameter to the filter you want to use:
<?php $request->getVar(null, FILTER_SANITIZE_FULL_SPECIAL_CHARS); // returns all POST items with string sanitation
To return an array of multiple POST parameters, pass all the required keys as an array:
<?php $request->getVar(['field1', 'field2']);
Same rule applied here, to retrieve the parameters with filtering, set the second parameter to the filter type to apply:
<?php $request->getVar(['field1', 'field2'], FILTER_SANITIZE_FULL_SPECIAL_CHARS);
- getGet([$index = null[, $filter = null[, $flags = null]]])
- Parameters
- Returns
$_GET
if no parameters supplied, otherwise the GET value if found, or null if not- Return type
array|bool|float|int|object|string|null
This method is identical to
getVar()
, only it fetches GET data.
- getPost([$index = null[, $filter = null[, $flags = null]]])
- Parameters
- Returns
$_POST
if no parameters supplied, otherwise the POST value if found, or null if not- Return type
array|bool|float|int|object|string|null
This method is identical to
getVar()
, only it fetches POST data.
- getPostGet([$index = null[, $filter = null[, $flags = null]]])
- Parameters
- Returns
$_POST
and$_GET
combined if no parameters specified (prefer POST value on conflict), otherwise looks for POST value, if nothing found looks for GET value, if no value found returns null- Return type
array|bool|float|int|object|string|null
This method works pretty much the same way as
getPost()
andgetGet()
, only combined. It will search through both POST and GET streams for data, looking first in POST, and then in GET:<?php $request->getPostGet('field1');
If no index is specified, it will return both POST and GET streams combined. Although POST data will be preferred in case of name conflict.
- getGetPost([$index = null[, $filter = null[, $flags = null]]])
- Parameters
- Returns
$_GET
and$_POST
combined if no parameters specified (prefer GET value on conflict), otherwise looks for GET value, if nothing found looks for POST value, if no value found returns null- Return type
array|bool|float|int|object|string|null
This method works pretty much the same way as
getPost()
andgetGet()
, only combined. It will search through both GET and POST streams for data, looking first in GET, and then in POST:<?php $request->getGetPost('field1');
If no index is specified, it will return both GET and POST streams combined. Although GET data will be preferred in case of name conflict.
- getCookie([$index = null[, $filter = null[, $flags = null]]])
- Parameters
- Returns
$_COOKIE
if no parameters supplied, otherwise the COOKIE value if found or null if not- Return type
array|bool|float|int|object|string|null
This method is identical to
getPost()
andgetGet()
, only it fetches cookie data:<?php $request->getCookie('some_cookie'); $request->getCookie('some_cookie', FILTER_SANITIZE_FULL_SPECIAL_CHARS); // with filter
To return an array of multiple cookie values, pass all the required keys as an array:
<?php $request->getCookie(['some_cookie', 'some_cookie2']);
Note
Unlike the Cookie Helper function
get_cookie()
, this method does NOT prepend your configuredConfig\Cookie::$prefix
value.
- getServer([$index = null[, $filter = null[, $flags = null]]])
- Parameters
- Returns
$_SERVER
item value if found, null if not- Return type
array|bool|float|int|object|string|null
This method is identical to the
getPost()
,getGet()
andgetCookie()
methods, only it fetches getServer data ($_SERVER
):<?php $request->getServer('some_data');
To return an array of multiple
$_SERVER
values, pass all the required keys as an array.<?php $request->getServer(['SERVER_PROTOCOL', 'REQUEST_URI']);
- getUserAgent([$filter = null])
- Parameters
$filter (
int
) – The type of filter to apply. A list of filters can be found here.
- Returns
The User Agent string, as found in the SERVER data, or null if not found.
- Return type
This method returns the User Agent string from the SERVER data:
<?php $request->getUserAgent();
- getPath()
- Returns
The current URI path relative to baseURL
- Return type
string
This method returns the current URI path relative to baseURL.
Note
Prior to v4.4.0, this was the safest method to determine the “current URI”, since
IncomingRequest::$uri
might not be aware of the complete App configuration for base URLs.
- setPath($path)
Deprecated since version 4.4.0.
- Parameters
$path (
string
) – The relative path to use as the current URI
- Returns
This Incoming Request
- Return type
Note
Prior to v4.4.0, used mostly just for testing purposes, this allowed you to set the relative path value for the current request instead of relying on URI detection. This also updated the underlying
URI
instance with the new path.


index
module components.preprocessing.tokenizer
TokenizedLex
TokenizedSentence
TokenizedText
Tokenizer
Simple tokenizer that leaves the input unchanged and that generates character
offsets of tokens and sentences.
Usage:
tokenizer = Tokenizer(text_string)
tokenizer.tokenize_text()
At this point, you can get lists of sentences offsets and token offsets in the
tokenizer object:
print tokenizer.sentences
print tokenizer.tokens
You can also get the output as an xml string or in the old-fashioned
format with one-sentences-per-line and tokens separated by spaces:
print tokenizer.get_tokenized_as_xml()
print tokenizer.get_tokenized_as_string()
Both methods return unicode strings.
If you run this file as the main script, it expects a filename as the single
argument. It prints both the xml string and the old-fashioned string to the
standard output, followed by a note on elasped time. Edit the end of the script
to change this.
class TokenizedLex
Inherits from: object
Public Functions
__init__(self, b, e, text)
__str__(self)
as_pairs(self)
as_string(self, indent='')
as_vertical_string(self, indent='')
print_as_string(self, indent='')
print_as_xmlstring(self, indent='')
class TokenizedSentence
Inherits from: object
Public Functions
__init__(self, b, e)
append(self, item)
as_pairs(self)
as_string(self)
as_vertical_string(self)
print_as_string(self)
print_as_xmlstring(self)
class TokenizedText
Inherits from: object
This class takes a list of sentences of the form (begin_offset, end_offset)
and a list of tokens of the form (begin_offset, end_offset, text), and
creates a list of elements. Each element can either be a TokenizedSentence
or a TokenizedLex (the latter for a token outside a sentence tag).
Public Functions
__init__(self, sentences, tokenizer_lexes)
as_pairs(self)
Return self as a list of pairs, where usually each pair contains a
string and a TokenizedLex instance. Also inserts a ('<s>', None) for the
beginning of each sentence. This is intended to take tokenized text and
prepare it for the TreeTagger (which does not recognize </s> tags.
as_string(self)
as_vertical_string(self)
print_as_string(self)
print_as_xmlstring(self)
class Tokenizer
Inherits from: object
Class to create lex tags and s tags given a text string that is not
modified. The lexes and sentences are gathered in the variables with the
same name. The token variable contains intermediate data, basically starting
with a list of non-whitespace character sequences, splitting and merging
these sequences as processing continues.
One thing that should be added is functionality that forces sentence
boundaries, so that document structure level processing or prior tags can
help correctly tokenize headers and such.
Public Functions
__init__(self, text)
get_tokenized(self, xml, s_open, s_close, lex_open, lex_close, lexindent)
Return the tokenized text as a string.
get_tokenized_as_string(self)
Return the tokenized text as a string where sentences are on one line
and tokens are separated by spaces. Not that each sentence ends with a
space because each token is followed by a space.
get_tokenized_as_xml(self)
Return the tokenized text as an XML string. Crappy way of printing
XML, will only work for lex and s tags. Need to eventually use a method
on TarsqiDocument (now there is a method on DocSource that probably
needs to be moved.
slurp_token(self, offset)
Given a string and an offset in the string, return two tuples, one
for whitespace characters after the offset and one for non-whitespaces
characters immediately after the whitespace. A tuple consists of a begin
offset, an end offset and a string.
tokenize_text(self)
Tokenize a text and return an instance of TokenizedText. Create lists
of sentences and lexes and feed these into the TokenizedText. Each token
and each sentence is a pair of a begin position and end position.
Private Functions
_first_token_start(self)
Return the begin position of the first token. This could be of the
core token or of a punctuation marker that was split off.
_restore_abbreviation(self, core_token, closing_puncts)
Glue the period back onto the core token if the first closing punctuation
is a period and the core token is a known abbreviation.
_set_lexes(self, )
Set lexes list by flattening self.tokens. Sometimes empty core tokens are
created, filter those out at this step.
_set_sentences(self)
_set_tag_indexes(self)
Populate dictionaries that stire tags on first and last offsets.
_slurp(self, offset, test)
_split_contraction(self, puncts1, tok, puncts2)
_split_contractions(self)
_split_punctuation(self, word)
Return a triple of opening punctuations, core token and closing
punctuation. A core token can contain internal punctuation but
token-initial and token-final punctuations are stripped off. If a token
has punctuation characters only, then the core token wil be the empty
string and the closing list will be empty.
_split_word(self, word)
Split a word into it's constitutent parts. A word is a tuple of begin
offset, end offset and a sequence of non-whitespace characters.
module functions
test_nonspace(char)
test_space(char)
token_is_abbreviation(token)
Return True if token is an abbreviation or acronym. Note that this
overgeneralizes since it catches all initials, including 'So would I. This
is...'. Decided that it was better to miss some sentence boundaries than
adding wrong boundaries.


Libbson Versioning
Versioning Macros and Functions
The following preprocessor macros can be used to perform various checks based on the version of the library you are compiling against. This may be useful if you only want to enable a feature on a certain version of the library.
Synopsis
#define BSON_CHECK_VERSION(major, minor, micro) #define BSON_MAJOR_VERSION (1) #define BSON_MINOR_VERSION (2) #define BSON_MICRO_VERSION (1) #define BSON_VERSION_S "1.2.1" #define BSON_VERSION_HEX (BSON_MAJOR_VERSION << 24 | \ BSON_MINOR_VERSION << 16 | \ BSON_MICRO_VERSION << 8)


Watch Age of Empires IV’s first gameplay trailer from X019
by Jeff GrubbMicrosoft revealed the first gameplay trailer for the epic real-time strategy game Age of Empires IV at the X019 fan event today. The team that’s working with developer Relic on the game also got a name: World’s Edge. Xbox veteran Shannon Loftis is heading up that studio.
The gameplay trailer shows off Age of Empires IV’s medieval setting. It also reveals the Mongol and English civilizations that players can guide through conquering the world. The video also highlights the detailed world and battles. The stone cities are alive with citizens going about their day and patrolling soldiers. But when the battle starts, hundreds of units can clash against one another in a fight for supremacy.
You can watch the trailer by clicking play at the top of this story.