Objective: to gain a deeper understanding of how a CPU functions at a low level.
We’re going to write an emulator for the world-famous LambdaSchool-8 computer, otherwise known as LS-8! This is an 8-bit computer with 8-bit memory addressing, which is about as simple as it gets.
An 8 bit CPU is one that only has 8 wires available for addresses (specifying where something is in memory), computations, and instructions. With 8 bits, our CPU has a total of 256 bytes of memory and can only compute values up to 255. The CPU could support 256 instructions, as well, but we won’t need them.
For starters, we’ll execute code that stores the value 8 in a register, then prints it out:
# print8.ls8: Print the number 8 on the screen
10000010 # LDI R0,8
00000000
00001000
01000111 # PRN R0
00000000
00000001 # HLT
The binary numeric value on the left in the print8.ls8
code above is either:
10000010
for LDI
), also known as the opcodeor
00000000
for R0
or 00001000
for the value 8
), also known as the operands.This code above requires the implementation of three instructions:
LDI
: load “immediate”, store a value in a register, or “set this register to this value”.PRN
: a pseudo-instruction that prints the numeric value stored in a register.HLT
: halt the CPU and exit the emulator.See the LS-8 spec for more details.
The above program is already hardcoded into the source file cpu.py
. To run it, you will eventually:
python3 ls8.py
but you’ll have to implement those three above instructions first!
cpu.py
Add list properties to the CPU
class to hold 256 bytes of memory and 8 general-purpose registers.
Hint: you can make a list of a certain number of zeros with this syntax:
Also add properties for any internal registers you need, e.g. PC
.
Later on, you might do further initialization here, e.g. setting the initial value of the stack pointer.
In CPU
, add method ram_read()
and ram_write()
that access the RAM inside the CPU
object.
ram_read()
should accept the address to read and return the value stored there.
ram_write()
should accept a value to write, and the address to write it to.
Inside the CPU, there are two internal registers used for memory operations: the Memory Address Register (MAR) and the Memory Data Register (MDR). The MAR contains the address that is being read or written to. The MDR contains the data that was read or the data to write. You don’t need to add the MAR or MDR to your
CPU
class, but they would make handy parameter names forram_read()
andram_write()
, if you wanted.
We’ll make use of these helper function later.
Later on, you might do further initialization here, e.g. setting the initial value of the stack pointer.
CPU
’s run()
methodThis is the workhorse function of the entire processor. It’s the most difficult part to write.
It needs to read the memory address that’s stored in register PC
, and store that result in IR
, the Instruction Register. This can just be a local variable in run()
.
Some instructions requires up to the next two bytes of data after the PC
in memory to perform operations on. Sometimes the byte value is a register number, other times it’s a constant value (in the case of LDI
). Using ram_read()
, read the bytes at PC+1
and PC+2
from RAM into variables operand_a
and operand_b
in case the instruction needs them.
Then, depending on the value of the opcode, perform the actions needed for the instruction per the LS-8 spec. Maybe an if-elif
cascade…? There are other options, too.
After running code for any particular instruction, the PC
needs to be updated to point to the next instruction for the next iteration of the loop in run()
. The number of bytes an instruction uses can be determined from the two high bits (bits 6-7) of the instruction opcode. See the LS-8 spec for details.
HLT
instruction handlerAdd the HLT
instruction definition to cpu.py
so that you can refer to it by name instead of by numeric value.
In run()
in your if-else block, exit the loop if a HLT
instruction is encountered, regardless of whether or not there are more lines of code in the LS-8 program you loaded.
We can consider HLT
to be similar to Python’s exit()
in that we stop whatever we are doing, wherever we are.
LDI
instructionThis instruction sets a specified register to a specified value.
See the LS-8 spec for the details of what this instructions does and its opcode value.
PRN
instructionThis is a very similar process to adding LDI
, but the handler is simpler. See the LS-8 spec.
At this point, you should be able to run the program and have it print 8
to the console!
In cpu.py
, the LS-8 programs you’ve been running so far have been hardcoded into the source. This isn’t particularly user-friendly.
Make changes to cpu.py
and ls8.py
so that the program can be specified on the command line like so:
python3 ls8.py examples/mult.ls8
(The programs print8.ls8
and mult.ls8
are provided in the examples/
directory for your convenience.)
For processing the command line, checkout sys.argv
. Try running the following Python program with different arguments on the command line to see how it works:
Note that sys.argv[0]
is the name of the running program itself.
If the user runs python3 ls8.py examples/mult.ls8
, the values in sys.argv
will be:
so you can look in sys.argv[1]
for the name of the file to load.
Bonus: check to make sure the user has put a command line argument where you expect, and print an error and exit if they didn’t.
In load()
, you will now want to use those command line arguments to open a file, read in its contents line by line, and save appropriate data into RAM.
As you process lines from the file, you should be on the lookout for blank lines (ignore them), and you should ignore everything after a #
, since that’s a comment.
You’ll have to convert the binary strings to integer values to store in RAM. The built-in int()
function can do that when you specify a number base as the second argument:
Extend your LS8 emulator to support the following program:
# mult.ls8: Multiply 8x9 and print 72
10000010 # LDI R0,8
00000000
00001000
10000010 # LDI R1,9
00000001
00001001
10100010 # MUL R0,R1
00000000
00000001
01000111 # PRN R0
00000000
00000001 # HLT
One you run it with python3 ls8.py examples/mult.ls8
, you should see:
72
Check the LS-8 spec for what the MUL
instruction does.
Note:
MUL
is the responsiblity of the ALU, so it would be nice if your code eventually called thealu()
function with appropriate arguments to get the work done.
run()
loopDo you have a big if-elif
block in your cpu_run()
function? Is there a way to better modularize your code? There are plenty of them!
What is the time complexity of the
if-elif
cascade? In the worst case, we’re going to have to check the value inIR
against all of the possible opcode values. This isO(n)
. It would be a lot better if it we anO(1)
process…
One option is to use something called a branch table or dispatch table to simplify the instruction handler dispatch code. This is a list or dictionary of functions that you can index by opcode value. The upshot is that you fetch the instruction value from RAM, then use that value to look up the handler function in the branch table. Then call it.
Example of a branch table:
OP1 = 0b10101010
OP2 = 0b11110000
class Foo:
def __init__(self):
# Set up the branch table
self.branchtable = {}
self.branchtable[OP1] = self.handle_op1
self.branchtable[OP2] = self.handle_op2
def handle_op1(self, a):
print("op 1: " + a)
def handle_op2(self, a):
print("op 2: " + a)
def run(self):
# Example calls into the branch table
ir = OP1
self.branchtable[ir]("foo")
ir = OP2
self.branchtable[ir]("bar")
c = Foo()
c.run()
All CPUs manage a stack that can be used to store information temporarily. This stack resides in main memory and typically starts at the top of memory (at a high address) and grows downward as things are pushed on. The LS-8 is no exception to this.
Implement a system stack per the spec. Add PUSH
and POP
instructions. Read the beginning of the spec to see which register is the stack pointer.
PUSH
and POP
items to and from the stack.If you run python3 ls8.py examples/stack.ls8
you should see the output:
2
4
1
Back in the old days, functions were called subroutines. In machine code, subroutines enable you to jump to any address with the CALL
instruction, and then return back to where you called from with the RET
instruction. This enables you to create reusable functions.
Subroutines have many similarities to functions in higher-level languages. Just as a function in C, JavaScript or Python will jump from the function call, to its definition, and then return back to the line of code following the call, subroutines will also allow us to execute instructions non-sequentially.
The stack is used to hold the return address used by RET
, so you must implement the stack in step 10, first. Then, add subroutine instructions CALL
and RET
.
For CALL
, you will likely have to modify your handler call in cpu_run()
. The problem is that some instructions want to execute and move to the next instruction like normal, but others, like CALL
and JMP
want to go to a specific address.
Note:
CALL
is very similar to theJMP
instruction. However, there is one key difference between them. Can you find it in the specs?
PC
directly, you don’t want to advance the PC to the next instruction. So you’ll have to set up a special case for those types of instructions. This can be a flag you explicitly set per-instruction… but can also be computed from the value in IR
. Check out the spec for more.If you run python3 ls8.py examples/call.ls8
you should see the output:
20
30
36
60
Add interrupts to the LS-8 emulator.
You must have implemented a CPU stack before doing this.
You must have implmented the ST
instruction before doing this.
See the LS-8 spec for details on implementation.
The LS-8 should fire a timer interrupt one time per second. This could be implemented by calling datetime.now()
(in the datetime
module) each iteration of the main loop and checking to see if one second has elapsed.
When the timer is ready to fire, set bit 0 of the IS register (R6).
Later in the main instruction loop, you’ll check to see if bit 0 of the IS register is set, and if it is, you’ll push the registers on the stack, look up the interrupt handler address in the interrupt vector table at address 0xF8
, and set the PC to it. Execution continues in the interrupt handler.
Then when an IRET
instruction is found, the registers and PC are popped off the stack and execution continues normally.
This code prints out the letter A
from the timer interrupt handler that fires once per second.
# interrupts.ls8
10000010 # LDI R0,0XF8
00000000
11111000
10000010 # LDI R1,INTHANDLER
00000001
00010001
10000100 # ST R0,R1
00000000
00000001
10000010 # LDI R5,1
00000101
00000001
10000010 # LDI R0,LOOP
00000000
00001111
# LOOP (address 15):
01010100 # JMP R0
00000000
# Timer interrupt Handler
# When the timer interrupt occurs, output an 'A'
# INTHANDLER (address 17):
10000010 # LDI R0,65
00000000
01000001
01001000 # PRA R0
00000000
00010011 # IRET
The assembly program is interested in getting timer interrupts, so it sets the IM register to 00000001
with LDI R5,1
.
The interrupt timer gets to 1 second, and sets bit #0 in IS.
At the beginning of each cpu_run()
loop, the CPU checks to see if interrupts are enabled. If not, it continues processing instructions as normal. Otherwise:
Bitwise-AND the IM register with the IS register. This masks out all the interrupts we’re not interested in, leaving the ones we are interested in:
Step through each bit of masked_interrupts
and see which interrupts are set.
for i in range(8):
# Right shift interrupts down by i, then mask with 1 to see if that bit was set
interrupt_happened = ((masked_interrupts >> i) & 1) == 1
# ...
(If the no interrupt bits are set, then stop processing interrupts and continue executing the current instruction as per usual.)
If interrupt_happened
, check the LS-8 spec for details on what to do.
This gets tricky because you have to see if a key has been pressed without stopping the program from running otherwise. The easiest way to do this is with polling. (“Was a key hit? What about now? What about now?”)
Google for python keyboard poll
to get some ideas on how to do this. Windows does it differently than Unix/Mac.
Write an LS-8 assembly program that prints this curve on the screen:
*
**
****
********
****************
********************************
****************************************************************
Each subsequent line has two-times the number of asterisks as the previous line.
Use loops to get this done.
Doing this correctly requires implementing CMP
, and some comparative forms of JMP
, such as JLT
or JNE
or JEQ
.
Hint: Look in the asm/
directory and learn how to use the asm.js
assembler. This way you can write your code in assembly language and use the assembler to build it to machine code and then run it on your emulator.


Canelo Alvarez vs Sergey Kovalev TV channel, live stream, undercard and UK start time
Sergey Kovalev stands in the way of Canelo Alvarez winning a world title at a fourth different weight
by Martin Domin, https://www.facebook.com/mirrorfightingCanelo Alvarez will bid to cement his position as one of the best pound-for-pound fighters in the world when he takes on Sergey Kovalev tonight.
The Mexican has already won world titles at light-middleweight, middleweight and super-middleweight and tonight bids to do the same at light-heavyweight.
Kovalev, meanwhile, is fighting for the second time in just over two months after his penultimate round stoppage of Anthony Yarde in August.
The Brit almost stopped Kovalev in the ninth round but the champion rallied to cling on to his belt.
Kovalev insists he will be too big and strong for Canelo but the Russian will walk to the Las Vegas ring as the underdog.
Here is everything you need to know about tonight's fights...
What time will the fights start?
The main event will start at around 5am UK time.
What TV channel are they on in the UK?
The fights will be shown on Sky Sports Action from 1am in the UK.
Is there a live stream?
Sky Sports customers can stream the fights through the Sky Go app or the website.
Who is on the undercard?
Ryan Garcia vs Romero Duno
Bakhram Murtazaliev vs Jorge Fortea
Seniesa Estrada vs Marlen Esparza
Blair Cobbs vs Carlos Ortiz Cervantes
Meiirim Nursultanov vs Cristian Olivas
Evan Holyfield vs Nick Winstead
What are the odds?
Canelo Alvarez 1/4
Sergey Kovalev 10/3
Latest news
Barry McGuigan has delivered his verdict on tonight's main event...
Saul ‘Canelo’ Alvarez has his eyes on history. He not only wants to become a four division world champion, he is jumping two divisions to challenge for a light heavyweight title, which is pretty much unheard of among Mexican fighters.
Canelo is a hall-of-famer no doubt, and has identified a fading, 36-year-old Sergey Kovalev as the perfect foe, the right man in the right place at the right time.
Though Kovalev lost the WBO title twice, initially to Andre Ward in his first defeat as a pro, he regained in avenging his shock loss to Eleider Alvarez.
The defeat to Alvarez marked a low point and highlighted the dissolute lifestyle issues that had finally caught up with him.
Kovalev Ward ‘I’ three years ago was close, He dropped Ward before losing by decision. In the rematch seven months later Kovalev appeared to capitulate too easily.
It was a mental disintegration as much as physical. It looked like he did not want to continue. Ward is a once in a lifetime talent so it does not mean Kovalev was not a great fighter.
After the Alvarez disaster in April last year Kovalev turned to Buddy McGirt, a no-nonsense character who appears to have turned things around.
After winning back the WBO belt in the rematch in February, Kovalev added big hitting Anthony Yarde to his list of victims in August.
That showed that he was at least half decent back in shape, and that the chin held up. Though he does not punch as hard as Yarde, Canelo is way more accomplished and will test Kovalev in every department.
My worry is Kovalev does not make the weight easily and does not take shots to the body as well as he did.
Kovalev is the bigger specimen but Canelo is the fresher. Kovalev’s Achilles heel is the body. Canelo’s strength is his body punching so you can see how this might play out.
However, if Alvarez can’t find him and has to walk in and take chances Kovalev is well in the match.
Canelo is a strong favourite here but don't be surprised if Kovalev has him over and takes it to the wire. So there is jeopardy in it for both.
Ultimately Kovalev is going up a level here in intensity, pressure and sense of occasion. And that’s a whole different ball game.


Interface AudioRendererEventListener
-
@Deprecated public interface AudioRendererEventListener
Deprecated.com.google.android.exoplayer2 is deprecated. Please migrate to androidx.media3 (which contains the same ExoPlayer code). See the migration guide for more details, including a script to help with the migration.Listener of audioRenderer
events. All methods have no-op default implementations to allow selective overrides.
-
-
Nested Class Summary
Nested Classes Modifier and Type Interface Description static class
AudioRendererEventListener.EventDispatcher
Deprecated.Dispatches events to anAudioRendererEventListener
.
-
Method Summary
All Methods Instance Methods Default Methods Deprecated Methods Modifier and Type Method Description default void
onAudioCodecError(Exception audioCodecError)
Deprecated.Called when an audio decoder encounters an error.default void
onAudioDecoderInitialized(String decoderName, long initializedTimestampMs, long initializationDurationMs)
Deprecated.Called when a decoder is created.default void
onAudioDecoderReleased(String decoderName)
Deprecated.Called when a decoder is released.default void
onAudioDisabled(DecoderCounters counters)
Deprecated.Called when the renderer is disabled.default void
onAudioEnabled(DecoderCounters counters)
Deprecated.Called when the renderer is enabled.default void
onAudioInputFormatChanged(Format format)
Deprecated.default void
onAudioInputFormatChanged(Format format, DecoderReuseEvaluation decoderReuseEvaluation)
Deprecated.Called when the format of the media being consumed by the renderer changes.default void
onAudioPositionAdvancing(long playoutStartSystemTimeMs)
Deprecated.Called when the audio position has increased for the first time since the last pause or position reset.default void
onAudioSinkError(Exception audioSinkError)
Deprecated.Called whenAudioSink
has encountered an error.default void
onAudioUnderrun(int bufferSize, long bufferSizeMs, long elapsedSinceLastFeedMs)
Deprecated.Called when an audio underrun occurs.default void
onSkipSilenceEnabledChanged(boolean skipSilenceEnabled)
Deprecated.Called when skipping silences is enabled or disabled in the audio stream.
-
-
-
Method Detail
-
onAudioEnabled
default void onAudioEnabled(DecoderCounters counters)
Deprecated.Called when the renderer is enabled.- Parameters:
counters
-DecoderCounters
that will be updated by the renderer for as long as it remains enabled.
-
onAudioDecoderInitialized
default void onAudioDecoderInitialized(String decoderName, long initializedTimestampMs, long initializationDurationMs)
Deprecated.Called when a decoder is created.- Parameters:
decoderName
- The decoder that was created.initializedTimestampMs
-SystemClock.elapsedRealtime()
when initialization finished.initializationDurationMs
- The time taken to initialize the decoder in milliseconds.
-
onAudioInputFormatChanged
@Deprecated default void onAudioInputFormatChanged(Format format)
Deprecated.
-
onAudioInputFormatChanged
default void onAudioInputFormatChanged(Format format, @Nullable DecoderReuseEvaluation decoderReuseEvaluation)
Deprecated.Called when the format of the media being consumed by the renderer changes.- Parameters:
format
- The new format.decoderReuseEvaluation
- The result of the evaluation to determine whether an existing decoder instance can be reused for the new format, ornull
if the renderer did not have a decoder.
-
onAudioPositionAdvancing
default void onAudioPositionAdvancing(long playoutStartSystemTimeMs)
Deprecated.Called when the audio position has increased for the first time since the last pause or position reset.- Parameters:
playoutStartSystemTimeMs
- The approximate derivedSystem.currentTimeMillis()
at which playout started.
-
onAudioUnderrun
default void onAudioUnderrun(int bufferSize, long bufferSizeMs, long elapsedSinceLastFeedMs)
Deprecated.Called when an audio underrun occurs.- Parameters:
bufferSize
- The size of the audio output buffer, in bytes.bufferSizeMs
- The size of the audio output buffer, in milliseconds, if it contains PCM encoded audio.C.TIME_UNSET
if the output buffer contains non-PCM encoded audio.elapsedSinceLastFeedMs
- The time since audio was last written to the output buffer.
-
onAudioDecoderReleased
default void onAudioDecoderReleased(String decoderName)
Deprecated.Called when a decoder is released.- Parameters:
decoderName
- The decoder that was released.
-
onAudioDisabled
default void onAudioDisabled(DecoderCounters counters)
Deprecated.Called when the renderer is disabled.- Parameters:
counters
-DecoderCounters
that were updated by the renderer.
-
onSkipSilenceEnabledChanged
default void onSkipSilenceEnabledChanged(boolean skipSilenceEnabled)
Deprecated.Called when skipping silences is enabled or disabled in the audio stream.- Parameters:
skipSilenceEnabled
- Whether skipping silences in the audio stream is enabled.
-
onAudioCodecError
default void onAudioCodecError(Exception audioCodecError)
Deprecated.Called when an audio decoder encounters an error.This method being called does not indicate that playback has failed, or that it will fail. The player may be able to recover from the error. Hence applications should not implement this method to display a user visible error or initiate an application level retry.
Player.Listener.onPlayerError(com.google.android.exoplayer2.PlaybackException)
is the appropriate place to implement such behavior. This method is called to provide the application with an opportunity to log the error if it wishes to do so.- Parameters:
audioCodecError
- The error. Typically aMediaCodec.CodecException
if the renderer usesMediaCodec
, or aDecoderException
if the renderer uses a software decoder.
-
onAudioSinkError
default void onAudioSinkError(Exception audioSinkError)
Deprecated.Called whenAudioSink
has encountered an error.If the sink writes to a platform
AudioTrack
, this will be called for allAudioTrack
errors.This method being called does not indicate that playback has failed, or that it will fail. The player may be able to recover from the error. Hence applications should not implement this method to display a user visible error or initiate an application level retry.
Player.Listener.onPlayerError(com.google.android.exoplayer2.PlaybackException)
is the appropriate place to implement such behavior. This method is called to provide the application with an opportunity to log the error if it wishes to do so.- Parameters:
audioSinkError
- The error that occurred. Typically anAudioSink.InitializationException
, aAudioSink.WriteException
, or anAudioSink.UnexpectedDiscontinuityException
.
-
-


@import controllers.documentation.ReverseRouter
@(title: String = "Play Framework - Build Modern & Scalable Web Apps with Java and Scala")(implicit req: RequestHeader, reverseRouter: ReverseRouter)
@main(title, "notfound") {
We're sorry, your request could not be completed as dialed. Please check the URL and try your request again.
}


Object | +--FtpClient
Deprecated use {link helma.Ftp} instead
Defined in FtpClient.js
| SUMMARY: Constructor | Properties | Methods | DETAIL: Constructor | Properties | Methods |
| Constructor Summary | |
FtpClient(<String> server)
Constructor for File objects, to send and receive files from an FTP server. |
| Methods Summary | |
void
|
ascii()
Sets transfer mode to ascii for transmitting text-based data. |
void
|
binary()
Sets transfer mode to binary for transmitting images and other non-text files. |
void
|
cd(<String> dir)
Changes the working directory on the FTP server. |
void
|
getFile(<String> source,<String> dest)
Transfers a file from the FTP server to the local file system. |
String
|
getString(<String> source)
Retrieves a file from the FTP server and returns it as string. |
void
|
lcd(<String> dir)
Changes the working directory of the local machine when being connected to an FTP server. |
Boolean
|
login(<String> username,<String> password)
Logs in to the FTP server. |
void
|
logout()
Terminates the current FTP session. |
Boolean
|
mkdir(<String> name)
Creates a new directory on the server. |
Boolean
|
putFile(<String> dest)
Transfers a file from the local file system to the remote server. |
Boolean
|
putString(<String> source,<String> dest)
Transfers text from a string to a file on the FTP server. |
| Constructor Detail |
FtpClient(<String> server)
var ftp = new FtpClient("ftp.mydomain.com");
server
- as String, the address of the FTP Server to connect to
| Method Detail |
void ascii()
var ftp = new FtpClient("ftp.host.dom"); ftp.login("user", "pass"); ftp.ascii();
void binary()
var ftp = new FtpClient("ftp.host.dom"); ftp.login("user", "pass"); ftp.binary();
void cd(<String> dir)
var ftp = new FtpClient("ftp.host.dom"); ftp.login("user", "pass"); // use absolute pathname ftp.cd("/home/users/fred/www"); // change to parent directory ftp.cd(".."); // use relative pathname ftp.cd("images");
dir
- as String, the path that the remote working directory should be changed to
void getFile(<String> source,<String> dest)
var ftp = new FtpClient("ftp.host.dom"); ftp.login("user", "pass"); ftp.getFile(".htaccess", "htaccess.txt");
source
- as String, the name of the file that should be downloaded
dest
- as String, the name which the file should be stored under
String getString(<String> source)
var ftp = new FtpClient("ftp.host.dom"); ftp.login("user", "pass"); var str = ftp.getString("messages.txt");
source
- as String, the name of the file that should be downloaded
void lcd(<String> dir)
var ftp = new FtpClient("ftp.host.dom"); ftp.login("user", "pass"); // use absolute pathname ftp.lcd("/home/users/fred/www"); // change to parent directory ftp.lcd(".."); // use relative pathname ftp.lcd("images");
dir
- as String, the path that the local working directory should be changed to
Boolean login(<String> username,<String> password)
var ftp = new FtpClient("ftp.host.dom"); if (ftp.login("user", "pass")) res.write("User logged in."); else res.write("Unable to log in."); User logged in.
username
- as String
password
- as String
void logout()
var ftp = new FtpClient("ftp.host.dom"); ftp.login("user", "pass"); ftp.putFile("htaccess.txt", ".htaccess"); ftp.logout();
Boolean mkdir(<String> name)
var ftp = new FtpClient("ftp.host.dom"); ftp.login("user", "pass"); if (ftp.mkdir("testdir")) ftp.cd("testdir") else ftp.logout();
name
- as String, the name of the directory to be created
Boolean putFile(<String> dest)
var ftp = new FtpClient("ftp.host.dom"); ftp.login("user", "pass"); if (ftp.putFile("testfile")) res.write("File transferred successfully."); else res.write("Transfer error."); File transferred successfully.
dest
- as String, the name of the destination file to be uploaded
Boolean putString(<String> source,<String> dest)
var ftp = new FtpClient("ftp.host.dom"); ftp.login("user", "pass"); ftp.putString("Hello, World!", "message.txt");
source
- as String, the text content that should be uploaded
dest
- as String, the name of the remote destination file
| SUMMARY: Constructor | Properties | Methods | DETAIL: Constructor | Properties | Methods |


{% extends "account/base.html" %} {% load i18n %} {% block head_title %}{% trans "Sign Up Closed" %}{% endblock %} {% block content %}
{% trans "We are sorry, but the sign up is currently closed." %}


# File app/controllers/leads_controller.rb, line 65 def convert @lead = current_user.organization.leads.find params[:id] @accounts = current_user.organization.accounts.all.map(&:name) @opportunity_owner = current_user.organization.users.map(&:email) end
# File app/controllers/leads_controller.rb, line 71 def convert_lead @lead = current_user.organization.leads.find params[:id] @lead.update_attributes params[:lead] @account = current_user.organization.accounts.where(name: params['account_name']).first @contacts = current_user.organization.contacts.all.map(&:email) unless @contacts.include? @lead.email @contact = current_user.organization.contact.create params['lead'] end @opportunities = current_user.organization.opportunities.all.map(&:opportunity_name) unless @opportunities.include? @lead.opportunity_name @opportunity = current_user.organization.opportunities.create(opportunity_name: @lead.opportunity_name, account_name: @lead.account_name, owner: @lead.opportunity_owner) end flash[:notice] = 'Lead has been converted' redirect_to opportunity_path(@opportunity) end
# File app/controllers/leads_controller.rb, line 12 def create @lead = current_user.organization.leads.new params[:lead] @lead.update_attributes(assigned_to: @lead.lead_owner) if @lead.save current_user.organization.leads << @lead<EMAIL_ADDRESS>@lead).deliver redirect_to lead_path @lead, flash[:notice] = 'New Lead Created' else render :new end end
# File app/controllers/leads_controller.rb, line 94 def create_web_lead @in_lead = [] default_url = "http://demo.railscrm.com" #CHANGE THIS TO A VALID URL fields = ["first_name","last_name", "email", "company", "phone", "address", "city", "state", "zip", "comments"] fields.each do |field| if params["#{field}"].present? @in_lead << field end end @value="" @required="required" @lead_owner = encrypt(current_user.email) @redirect_url = params[:redirect_url].empty? ? default_url : params[:redirect_url] render "web_form" end
# File app/controllers/leads_controller.rb, line 53 def destroy @lead = Lead.find params[:id] if @lead.destroy flash[:notice] = 'Lead Deleted' redirect_to :back else flash[:error] = 'Lead could not be deleted' redirect_to :back end end
# File app/controllers/leads_controller.rb, line 36 def edit end
# File app/controllers/leads_controller.rb, line 110 def external_form email = decrypt(params[:lead_owner]) user = User.where(:email =>email).first requestor = "#{request.protocol}#{request.fullpath}" if user.nil? redirect_to requestor else redirect_url = params[:redirect_url] leads = params[:params].split(" ") @lead = Lead.new leads.each do |lead| @lead.update_attribute("#{lead}", params["#{lead}"]) end @lead.update_attributes(:lead_owner => email,:lead_source => requestor) if @lead.save<EMAIL_ADDRESS>@lead).deliver redirect_to redirect_url end end end
# File app/controllers/leads_controller.rb, line 24 def index @leads = current_user.organization.leads end
# File app/controllers/leads_controller.rb, line 4 def new @lead = current_user.organization.leads.new @lead_owner = current_user.organization.users.map(&:email) @lead_status = Lead.status @lead_sources = Lead.sources @lead_interests = Lead.interests end
# File app/controllers/leads_controller.rb, line 87 def new_web_lead leads = Lead.new minus_lead = ["_type","_id","created_at", "updated_at", "lead_source", "lead_status","lead_owner", "account_name","opportunity_name","opportunity_owner","assigned_to_id", "interested_in"] lead = leads.attribute_names.to_a @lead = lead-minus_lead end
# File app/controllers/leads_controller.rb, line 28 def show @lead = current_user.organization.leads.find params[:id] @lead_owner = current_user.organization.users.map(&:email) @lead_status = Lead.status @lead_sources = Lead.sources @lead_interests = Lead.interests end
# File app/controllers/leads_controller.rb, line 39 def update @lead = current_user.organization.leads.find params[:id] if params[:commit] == 'Convert' convert_lead else if @lead.update_attributes params[:lead]<EMAIL_ADDRESS>@lead).deliver redirect_to lead_path @lead, flash[:notice] = 'Lead Updated' else render :edit end end end


Perl 5 is a highly capable, feature-rich programming language with over 25 years of development. More about why we love Perl...
Learning Perl 5With free online books, over 25,000 extension modules, and a large developer community, there are many ways to learn Perl 5. |
The Perl CommunityPerl has an active world wide community with over 300 local groups, mailing lists and support/discussion websites. |
CPANThe Comprehensive Perl Archive Network (CPAN) has over 25,000 open source distributions available for download. |
Events and ConferencesConferences, social and technical events around the world offer lots of networking and learning opportunities. |
Perl 6Perl 6 is a sister language, part of the Perl family. Perl 6 is not production ready yet, you can get involved with its development though. |
The Perl FoundationThe Perl Foundation is dedicated to the advancement of the Perl programming language through open discussion, collaboration, design, and code. |
Current Perl version
Find out more
Tip
Perl -- Because life's too short to code without punctuation.


Source code for apache_beam.runners.pipeline_context
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
"""Utility class for serializing pipelines via the runner API.
For internal use only; no backwards-compatibility guarantees.
"""
from apache_beam import pipeline
from apache_beam import pvalue
from apache_beam import coders
from apache_beam.runners.api import beam_runner_api_pb2
from apache_beam.transforms import core
class _PipelineContextMap(object):
"""This is a bi-directional map between objects and ids.
Under the hood it encodes and decodes these objects into runner API
representations.
"""
def __init__(self, context, obj_type, proto_map=None):
self._pipeline_context = context
self._obj_type = obj_type
self._obj_to_id = {}
self._id_to_obj = {}
self._id_to_proto = proto_map if proto_map else {}
self._counter = 0
def _unique_ref(self):
self._counter += 1
return "ref_%s_%s" % (self._obj_type.__name__, self._counter)
def populate_map(self, proto_map):
for id, proto in self._id_to_proto.items():
proto_map[id].CopyFrom(proto)
def get_id(self, obj):
if obj not in self._obj_to_id:
id = self._unique_ref()
self._id_to_obj[id] = obj
self._obj_to_id[obj] = id
self._id_to_proto[id] = obj.to_runner_api(self._pipeline_context)
return self._obj_to_id[obj]
def get_by_id(self, id):
if id not in self._id_to_obj:
self._id_to_obj[id] = self._obj_type.from_runner_api(
self._id_to_proto[id], self._pipeline_context)
return self._id_to_obj[id]
[docs]class PipelineContext(object):
"""For internal use only; no backwards-compatibility guarantees.
Used for accessing and constructing the referenced objects of a Pipeline.
"""
_COMPONENT_TYPES = {
'transforms': pipeline.AppliedPTransform,
'pcollections': pvalue.PCollection,
'coders': coders.Coder,
'windowing_strategies': core.Windowing,
# TODO: environment
}
def __init__(self, context_proto=None):
for name, cls in self._COMPONENT_TYPES.items():
setattr(
self, name, _PipelineContextMap(
self, cls, getattr(context_proto, name, None)))
@staticmethod
[docs] def from_runner_api(proto):
return PipelineContext(proto)
[docs] def to_runner_api(self):
context_proto = beam_runner_api_pb2.Components()
for name in self._COMPONENT_TYPES:
getattr(self, name).populate_map(getattr(context_proto, name))
return context_proto


2021 Fundraisers
To benefit the rural elementary school in Ixpaco, Guatemala
Fundraiser to Replace the School's Outhouses with Flushing Toilets
The elementary school in Ixpaco is aging and is in need of repairs.However, the school district lacks the resources to make the needed renovations. The staff, parents and students agree that remodeling the outhouses is the top priority.
You helped reach the fundraiser goal and these are the improvements that will be made:
- Replace the 3 outhouses toilets (because they are disintegrating)with flushing toilets!
- Cover the pit latrines with reinforced concrete and use the existing dwellings to install flushing toilets.
- Installation of water and drains for flushing toilets.
- Replace the tin roof since the tin sheets have been corroded by the sulfur of the nearby lagoon and students get wet when using the outhouses in the winter.
- Replace the doors of the outhouses with wood doors. The doors are corroded as well.
- Modify the outhouses roof to be angled since when it rains water drains into a classroom through the window.
- Installation of urinals for males to use.
- Installation of sinks to encourage good hygiene.
- Installation of electricity in the outhouses since they are dark, even darker in the winter months.
Fundraiser for Textbooks and Interior Paint for the Classrooms
The school district doesn't provide textbooks for the Ixpaco elementary school students and only two thirds of the families can afford to purchase them annually. Due to the pandemic that number was down close to half this year. The school principal was told to reuse last year's textbooks but with your help we ensured that all of the students have a textbook and can continue growing academically this year.
Thank you!
You helped get 121 students a new textbook and all the classrooms got a much needed coat of paint. This is what some of the students said about it:
The staff, parents and students are thankful for your generosity and gave me permission to share these pictures with you:


{% extends 'base.html' %} {% block title %} About {% endblock %} {% block content %}
One of the most effective ways to combat COVID-19 is to make sure that everyone practices safety measures from the beginning, such as wearing a mask, social distancing, or staying at home. It is thus important to understand how the public awareness of these COVID health measures has evolved since the outbreak, and from there shed light on how public health campaigns could best boost people’s awareness of the appropriate disease control actions during a pandemic.
To achieve this goal, this project focuses on investigating public awareness of health measures, during COVID-19 pandemic, as reflected in tweets. A machine learning-based language model has been built and trained on a corpus of thousands of COVID-related tweets, identified via six hashtags (in alphabetical order): #coronahoax, #nomask, #plandemic, #scamdemic, #socialdistance, #wearamask. More specifically, the model consists of a pretrained distilBERT component that generates a 768-dimensional sentence embedding for input tweet text and a two-layer fully-connected neural network that converts sentence embedding into opinion score.
Opinion Model Architecture
Note that distilBERT is a "distilled" version of BERT: it only has 6 transformer blocks. Due to limited computational power, this project uses distilBERT as a faster and lighter alternative to BERT to generate embedding for input text.
To learn more about distilBERT, please refer to Huggingface's documentation here.
{% endblock %}


Thank you for ordering {{$_SESSION['qty']}} {{$_SESSION['color']}} {{ $_SESSION['pet'] }}!
You also purchased:


Beware saying “fibre is here”
by Staff WriterThe Advertising Regulatory Board (ARB) has ruled that fibre network operators which are busy rolling out fibre in a neighbourhood may not claim “fibre is here”.
MetroFibre Networx recently planted small boards in an area where it was rolling out fibre, with the wording “MetroFibre is here. Reliable Fibre to your Home”.
This is standard practice for most fibre network operators in South Africa to inform residents that fibre is being rolled out in their area.
The MetroFibre Networx notice, however, resulted in a complaint from a consumer who argued that MetroFibre Networx was promoting its services with a false advertisement.
According to the complainant, he was informed that the promised fibre is not yet available in his area, Sinoville, as it is still in the project phase and the roll-out is planned for 2020.
MetroFibre Networx explains
MetroFibre Networx confirmed that fibre is located in the area referred to in the complaint.
The company added that it takes time to get fibre into every street in every precinct, and this process is dependent on permissions from the local municipalities.
The first step is to connect the area, after which it will focus on delivering fibre to each street on a planned roll-out basis.
MetroFibre Networx said it expects to complete the entire precinct by the end of December 2019.
ARB ruling
The ARB said the claim “MetroFibre is here” at its present location creates an impression that the fibre that is being promoted is available for all residences in that area.
“However, the reality is that there are some areas where the fibre is not yet available due to logistical reasons, as stated by the advertiser,” the ARB said.
“A disclaimer, change of wording or an explanation accompanying the claim could have easily clarified that although the advertiser’s fibre is presently located in the area, there are some streets where it is still not yet available.”
The ARB ruled that the claim “MetroFibre is here” creates a misleading impression that fibre is available for all residences in the street where the board was placed.
The ARB requested MetroFibre Networx to withdraw its “MetroFibre is here” claim in its current format at the current location.


YourDataStories looks at TED broken down into individual “Contracts”. A Contract has:
- a Buyer (Contracting Authority) and a Seller (Contractor),
- a duration or date range,
- a price,
- a CPV (Common Procurement Vocabulary) (e.g. Construction work for highways, Air-sea rescue services), a CPV
Code


A bilingual education is a form of heteroglossia where two cultures are forced to be engaged through two different languages in the classroom. In the typical United States bilingual classroom, deemed by Sonia Nieto in Affirming Diversity as the “transitional bilingual education,” the main goal is to teach students English as a second language. In this model, the student receives a timeframe in which she is supposed to be fully fluent in English without any need for her native language.
Although this is a popular and viable model, a more applicable bilingual education model to the topic of linguistic diversity is referred to by Nieto as the “maintenance bilingual education,” where the goal is not to transition the student from a native language to English, but rather to preserve both, giving the student the asset of a second language as well as preserving the culture that comes with it.
In addition, another model that aligns with the principles of applying heteroglossia is the “two-way bilingual education,” in which students of the minority language integrate with students of the majority language. In this model, our culturally sustaining pedagogy is achieved, as students from all backgrounds interact and acquire a mutual respect and understanding of all cultures.
Over the course of the history of the United states, bilingual education has had supporters and dissentors. An interesting proposed reason for dissent is the issue of patriotism. One's ability to transition from a language, for example German post World War II, has served as a proxy for love of the United States. In this right, many U.S. presidents have vocally condemned bilingual education, including Teddy Roosevelt and Ronald Reagan. Roosevelt is quoted as saying, "We have room for but one language here, and that is the English language," clearly betraying his disregard for a bilingual education. In fact, as evidenced by our study of heteroglossia and culturally sustaining pedagogy, a bilingual education supports the popular Bush-regime movement of "No Child Left Behind."
As a last thought excercise before moving out of the classroom, think about the following questions:


Definition
based on given TilesDefinition
with
given name.TilesDefinition
If not, check if action has Annotation TilesDefinitions
If given tileName is not null and present in TilesDefinitions
, return it
Return first element of TilesDefinitions
Return null
ObjectFactory
to create the ViewPreparerDefinition
s and
Attribute
s in a way as close to tiles.xml
as possible.<add-attribute>
element in tiles.xml
.<add-list-attribute>
element in tiles.xml
.<definition>
element in tiles.xml
.TilesDefinition
s.<put-attribute>
element in tiles.xml
.<put-list-attribute>
element in tiles.xml
.Copyright © 2000–2020 Apache Software Foundation. All rights reserved.


Call<PHONE_NUMBER> to place an order
2600 Boardwalk, Wildwood, NJ 08260
Since Eric's doors opened in 2007, Eric's Pizza Palace has prided itself in providing quality slices and exceptional service by their team of chefs who identify together as a family. One of the proudest achievements of Eric's Pizza Palace was being featured on Chef Gordon Ramsey's Kitchen Nightmares during its final season. With a wide variety of pizza toppings even for the pickiest of eaters, Eric's Pizza Palace is sure to sate anyone's hunger. Come visit your favorite pizza shop's favorite pizza shop today.
Located off of Ocean and E Poplar Ave on the Wildwood boardwalk
M-Th: 11am-10pm
Fri-Sat: 11am-12am
Sun: 11am-9pm
Have a question or concern? We'd love to hear from you. Send us a message and we'll respond as soon as possible.


{% extends "layout-v2.html" %} {% block pageTitle %} NHS Cervical screening management system {% endblock %} {% block header %} {% include '../../v11/components/header-3.html' %} {% endblock %} {% block content %}
Information: Check who receives notification emails. Staff members involved in cervical screening tasks should receive the appropriate notification emails.
If this problem persists then contact the help desk


The code is available on github.
Credit: the CSS style sheet of this page was shamelessly stolen from the MLsub demo page.


{% include head.html %}
Hello! I’m Jami Gibbs and I'm a software developer from Chicago. I founded Rescue Themes which specializes in nonprofit and niche website templates. When I'm not contributing to a cool side project or sharpening my JS skills, I'm kicking up road dust and pouring down a few craft brews.


(Photos) Good news for Manchester United as Solskjaer welcomes five players back to training
by Magnus EriksenManchester United have been given some positive injury news as Ole Gunnar Solskjaer welcomes five players back to training.
See the photos below as the likes of Eric Bailly, Nemanja Matic and Diogo Dalot can be seen back with the group after some time out of the team.
Manchester Evening News reporter Samuel Luckhurst also claims Luke Shaw and Axel Tuanzebe returned to training in a welcome boost for the Red Devils.
It’s not been the best start to the season for Solskjaer, but having more options like these available to him can only help over the upcoming hectic festive period.


Work Day Scheduler
A simple calendar app for scheduling your work day
9am
10am
11am
12am
1pm
2pm
3pm
4pm
5pm


October 13
For [God] hath made [Jesus] to be sin for us, who knew no sin; that we might be made the righteousness of God in him. 2 Corinthians 5:21
When you were born again, you weren't half-reborn, you weren't made halfrighteous or a quarter righteous. You were made the righteousness of God in Christ! You were made a "joint-heir with Him." According to Strong's Concordance that word joint-heir refers to a personal equality based on an equality of possession.
Jesus went to the Cross to give you what He already possessed. He rose again so you could be recreated in His image. You are the victory of Almighty God! You are more than a conqueror in Christ Jesus.  John 17:23 actually says that God loves you as much as He loves Jesus.
Once you dare to accept that fact, your life will forever be changed. You'll no longer be satisfied to just sit around whining and wishing things were different. You'll want to step up to the position of authority that Jesus has given you, to take your rightful place beside Him and learn to operate the way He does. As His people, we are everything to God that Jesus is.
If you'll receive that message, if you'll dare to believe it, if you'll dare to put it into action, it will radically alter your life. It will take you from religion to reality! Scripture Reading: John 17:16-26


|
Converts 4 or 8 signed word integers from the destination operand (first operand) and 4 or 8 signed word integers from the source operand (second operand) into 8 or 16 unsigned byte integers and stores the result in the destination operand. (See Figure 4-1 for an example of the packing operation.) If a signed word integer value is beyond the range of an unsigned byte integer (that is, greater than FFH or less than 00H), the saturated unsigned byte integer value of FFH or 00H, respectively, is stored in the destination.
The PACKUSWB instruction operates on either 64-bit or 128-bit operands. When operating on 64-bit operands, the destination operand must be an MMX technology register and the source operand can be either an MMX technology register or a 64-bit memory location. When operating on 128-bit operands, the destination operand must be an XMM register and the source operand can be either an XMM register or a 128-bit memory location.
|


|
SmartVehicle-Sortic
SmartFactory
|
The Vehicle Controll class contains the FSM for the complete Vehicle. More...
#include <VehicleCtrl.h>
Classes | |
| struct | Vehicle |
| Holds all relevant infos for the Vehicle. More... | |
Public Types | |
| enum | Event { Event::PosReached, Event::HSsucessful, Event::AnswerReceived, Event::NoAnswerReceived, Event::Error, Event::Resume, Event::Reset, Event::NoEvent } |
| Enum holds all possible events. More... | |
Public Member Functions | |
| VehicleCtrl () | |
| Construct a new Vehicle Ctrl object. More... | |
| void | loop () |
| Calls the do-function of the active state and hence generates Events. More... | |
| void | loop (Event currentEvent) |
| procceses the current Event and calls the do-function of the active state More... | |
Public Attributes | |
| struct VehicleCtrl::Vehicle | vehicle |
Private Types | |
| enum | State { State::waitForBox, State::handshake, State::loadVehicle, State::unloadVehicle, State::resetState, State::errorState } |
| Enum holds all possible state's. More... | |
Private Member Functions | |
| void | process (Event e) |
| changes the state of the FSM based on the event More... | |
| void | entryAction_waitForBox () |
| entry action of the waitForBox More... | |
| VehicleCtrl::Event | doAction_waitForBox () |
| main action of the waitForBox More... | |
| void | exitAction_waitForBox () |
| exit action of the waitForBox More... | |
| void | entryAction_handshake () |
| entry action of the handshake More... | |
| VehicleCtrl::Event | doAction_handshake () |
| main action of the handshake More... | |
| void | exitAction_handshake () |
| exit action of the handshake More... | |
| void | entryAction_loadVehicle () |
| entry action of the loadVehicle More... | |
| VehicleCtrl::Event | doAction_loadVehicle () |
| main action of the loadVehicle More... | |
| void | exitAction_loadVehicle () |
| exit action of the loadVehicle More... | |
| void | entryAction_unloadVehicle () |
| entry action of the unloadVehicle More... | |
| VehicleCtrl::Event | doAction_unloadVehicle () |
| main action of the unloadVehicle More... | |
| void | exitAction_unloadVehicle () |
| exit action of the unloadVehicle More... | |
| void | entryAction_errorState () |
| entry action of the errorState More... | |
| VehicleCtrl::Event | doAction_errorState () |
| main action of the errorState More... | |
| void | exitAction_errorState () |
| exit action of the errorState More... | |
| void | entryAction_resetState () |
| entry action of the resetState More... | |
| VehicleCtrl::Event | doAction_resetState () |
| main action of the resetState More... | |
| void | exitAction_resetState () |
| exit action of the resetState More... | |
| String | decodeState (State state) |
| Decodes the State-Enum and returns a description. More... | |
| String | decodeEvent (Event event) |
| Decodes the Event-Enum and returns a description. More... | |
| void | publishState (State state) |
| Update State and Publish actual state. More... | |
| void | publishPosition () |
| Update position and Publish actual position. More... | |
| void | publishTargetPosition () |
| Update position and Publish actual position. More... | |
| void | publishTargetPositionBlockLine () |
| bool | checkForError () |
| Check if a new message with a error is received. More... | |
| void | clearGui () |
| clear node Red gui More... | |
Private Attributes | |
| State | lastStateBevorError |
| holds the last state of the FSM so it's possible to resume after error More... | |
| State | currentState |
| holds the current state of the FSM More... | |
| Event | currentEvent |
| holds the current event of the FSM More... | |
| int | substate = 0 |
| actual Substate of FSM More... | |
| int | pSorticPark [SORTIC_MAX_LINE] = {0} |
| Sortic with 10 diffrent lines. More... | |
| int | pTransferPark [SORTIC_MAX_LINE] = {1} |
| Sortic with 10 diffrent lines. More... | |
| unsigned int | pRandomDelayFactor = 0 |
| some sort of ALOHA stuff More... | |
| Event(VehicleCtrl::* | doActionFPtr )(void) = nullptr |
| Functionpointer to call the current states do-function. More... | |
| NavigationCtrl | pNavCtrl |
| Navigation Controll object. More... | |
| Communication | pComm = Communication(DEFAULT_HOSTNAME) |
| Communication object. More... | |
| HoistCtrl | pHoistCtrl |
| Hoist Controll object. More... | |
| unsigned long | currentMillis = 0 |
| will store current time More... | |
| unsigned long | previousMillis = 0 |
| will store last time published More... | |
| unsigned long | previousMillisPublishToken = 0 |
| will store last time token published More... | |
| unsigned long | previousMillisPublish = 0 |
| will store last publish time More... | |
| unsigned long | previousMillisPublishPos = 0 |
| will store last publish position time More... | |
The Vehicle Controll class contains the FSM for the complete Vehicle.
Definition at line 34 of file VehicleCtrl.h.
|
strong |
Enum holds all possible events.
| Enumerator | |
|---|---|
| PosReached | Vehicle is in position. |
| HSsucessful | Handshake was sucessful. |
| AnswerReceived | Answer received. |
| NoAnswerReceived | No Answer received. |
| Error | Error occured. |
| Resume | Resume after Error occured. |
| Reset | Reset after Error occured. |
| NoEvent | No event generated. |
Definition at line 58 of file VehicleCtrl.h.
|
strongprivate |
Enum holds all possible state's.
https://stackoverflow.com/questions/18335861/why-is-enum-class-preferred-over-plain-enum
| Enumerator | |
|---|---|
| waitForBox | wait for box to transport |
| handshake | handshake |
| loadVehicle | load box |
| unloadVehicle | unload box |
| resetState | reset state |
| errorState | error state |
Definition at line 108 of file VehicleCtrl.h.
| VehicleCtrl::VehicleCtrl | ( | ) |
Construct a new Vehicle Ctrl object.
Definition at line 15 of file VehicleCtrl.cpp.
| void VehicleCtrl::loop | ( | ) |
Calls the do-function of the active state and hence generates Events.
Definition at line 31 of file VehicleCtrl.cpp.
| void VehicleCtrl::loop | ( | Event | currentEvent | ) |
procceses the current Event and calls the do-function of the active state
| currentEvent | - Event |
Definition at line 36 of file VehicleCtrl.cpp.
|
private |
changes the state of the FSM based on the event
| e | - Event |
Definition at line 43 of file VehicleCtrl.cpp.
|
private |
entry action of the waitForBox
Definition at line 128 of file VehicleCtrl.cpp.
|
private |
main action of the waitForBox
Definition at line 149 of file VehicleCtrl.cpp.
|
private |
exit action of the waitForBox
Definition at line 175 of file VehicleCtrl.cpp.
|
private |
entry action of the handshake
Definition at line 182 of file VehicleCtrl.cpp.
|
private |
main action of the handshake
0 check for ack
10 publish ack for Box 5 times
Definition at line 195 of file VehicleCtrl.cpp.
|
private |
exit action of the handshake
Definition at line 250 of file VehicleCtrl.cpp.
|
private |
entry action of the loadVehicle
Definition at line 256 of file VehicleCtrl.cpp.
|
private |
main action of the loadVehicle
0 check position
10 wait for gateway
11 listen if only one in gateway
20 check which gateway to block
21 block Gateway Sortic
22 block gateway Transfer
30 chek if in position
40 raise hoist
Definition at line 278 of file VehicleCtrl.cpp.
|
private |
exit action of the loadVehicle
Definition at line 419 of file VehicleCtrl.cpp.
|
private |
entry action of the unloadVehicle
Definition at line 425 of file VehicleCtrl.cpp.
|
private |
main action of the unloadVehicle
0 check actual sector and subscribe to handover
10 search suitable targetPos Transfer
11 ensure valid target position Transfer
20 search suitable targetPos Sortic
21 ensure valid target position Sortic
50 set targetposition
100 check position
200 wait for free gateway
210 listen if only one in gateway
300 check which gateway to block
310 block gateway Sortic
320 block gateway Transfer
400 chek if in position
500 lower hoist
600 publish position to Box
Definition at line 437 of file VehicleCtrl.cpp.
|
private |
exit action of the unloadVehicle
Definition at line 783 of file VehicleCtrl.cpp.
|
private |
entry action of the errorState
pass Errorevent to Hoist and NavCtrl
Definition at line 788 of file VehicleCtrl.cpp.
|
private |
main action of the errorState
check for reset message
Definition at line 799 of file VehicleCtrl.cpp.
|
private |
exit action of the errorState
Definition at line 822 of file VehicleCtrl.cpp.
|
private |
entry action of the resetState
Definition at line 828 of file VehicleCtrl.cpp.
|
private |
main action of the resetState
check for resume message
Definition at line 844 of file VehicleCtrl.cpp.
|
private |
exit action of the resetState
Definition at line 861 of file VehicleCtrl.cpp.
|
private |
Decodes the State-Enum and returns a description.
| state | - enum State |
Definition at line 873 of file VehicleCtrl.cpp.
|
private |
Decodes the Event-Enum and returns a description.
| event | - enum Event |
Definition at line 899 of file VehicleCtrl.cpp.
|
private |
Update State and Publish actual state.
| state | - state for update |
Definition at line 974 of file VehicleCtrl.cpp.
|
private |
Update position and Publish actual position.
Definition at line 979 of file VehicleCtrl.cpp.
|
private |
Update position and Publish actual position.
Definition at line 990 of file VehicleCtrl.cpp.
|
private |
Definition at line 997 of file VehicleCtrl.cpp.
|
private |
Check if a new message with a error is received.
Definition at line 961 of file VehicleCtrl.cpp.
|
private |
clear node Red gui
Definition at line 1020 of file VehicleCtrl.cpp.
| struct VehicleCtrl::Vehicle VehicleCtrl::vehicle |
|
private |
holds the last state of the FSM so it's possible to resume after error
Definition at line 116 of file VehicleCtrl.h.
|
private |
holds the current state of the FSM
Definition at line 117 of file VehicleCtrl.h.
|
private |
holds the current event of the FSM
Definition at line 118 of file VehicleCtrl.h.
|
private |
actual Substate of FSM
Definition at line 119 of file VehicleCtrl.h.
|
private |
Sortic with 10 diffrent lines.
Definition at line 120 of file VehicleCtrl.h.
|
private |
Sortic with 10 diffrent lines.
Definition at line 121 of file VehicleCtrl.h.
|
private |
some sort of ALOHA stuff
Definition at line 122 of file VehicleCtrl.h.
|
private |
Functionpointer to call the current states do-function.
https://stackoverflow.com/questions/1485983/calling-c-class-methods-via-a-function-pointer
Definition at line 128 of file VehicleCtrl.h.
|
private |
Navigation Controll object.
Definition at line 130 of file VehicleCtrl.h.
|
private |
Communication object.
Definition at line 131 of file VehicleCtrl.h.
|
private |
Hoist Controll object.
Definition at line 132 of file VehicleCtrl.h.
|
private |
will store current time
Definition at line 134 of file VehicleCtrl.h.
|
private |
will store last time published
Definition at line 135 of file VehicleCtrl.h.
|
private |
will store last time token published
Definition at line 136 of file VehicleCtrl.h.
|
private |
will store last publish time
Definition at line 137 of file VehicleCtrl.h.
|
private |
will store last publish position time
Definition at line 138 of file VehicleCtrl.h.


The principles or methods employed in making something or attaining an objective.
WTH is Art anyway?
Any human activity or product made with an aesthetic and/or communicative purpose
through which ideas, emotions, concepts -or in general: worldviews- are expressed
through the use of diverse resources and means
Merriam-Webster / Oxford
Code as the Medium
Code is used to create the Artwork but the code itself is not the artwork
Any form of art in which computers play a role in production or display of the artwork
Code as the Artwork
Code is used to create the Artwork and the code itself is a part of
The Algorithm Auction
The world’s first auction celebrating the art of code was held on March 27, 2015
at the Cooper Hewitt, Smithsonian Design Museum.
It featured several prints of historically important algorithms as well as some early designs of important chipsets.


ROME includes a set of parsers and generators for the various flavors of syndication
feeds, as well as converters to convert from one format to another. The parsers can
give you back Java objects that are either specific for the format you want to
work with, or a generic normalized SyndFeed class that lets you work on with the data
without bothering about the incoming or outgoing feed type.
For more info about ROME, visit the main
site


Image-to-Braille Generator
Input File (Or drag-n-drop below):
Kernel Scale:
Threshold:
Invert:
Fix Alignment:


“Enjoy the best-selling No.1 beer. Belgian white beer with orange peel has been recognized by everyone throughout its long history. The soft foam and the fragrant scent will brighten your day. Present today’s fragrant joy.”
“Enjoy the best-selling No.1 beer.
Belgian white beer with orange peel has been recognized by everyone throughout its long history.
The soft foam and the fragrant scent will brighten your day. Present today’s fragrant joy.”
The Original Belgian Wheat Beer.
Almost 600 years ago in the Belgian village,
Watch the commercials you saw on TV, YouTube and streets.
Aren’t you curious about the type and price of the product? We help you make your purchase.
Help you connect with our service team.
Get the service center information from here.


Local knowledge, worldwide. It's like Yelp for anchorages.
Hey there, sailor! Looking for a great place to drop the hook? Or know about one? Sign up for our beta!


Pgday.eu is a non-profit event, you can get involved in many ways. Don't hesitate to contact us if you want to help us!
If you would like to help out, either before or during the conference, there are several things you can do.
Please Contact us if you're interested!
The advertising partnership campaign for PGDay 2009 has just started. There are several opportunities for you to join the advertising Partnership Campaign. It is also possible to directly sponsor a speaker for the conference.
The deadline is over. We are now scoring the various proposals.
Donations for the organisation of PGDay 2009 are officially collected by PostgreSQL Europe, a non profit organization that promotes PostgreSQL and the free software culture throughout Europe.
Your donations are vital, as they allow us to invite the best speakers in the world to PGDay 2009 in France and to keep the event fees as low as possible.
Any profits from the conference will be reinvested to others activities of PostgreSQL Europe, such as helping local users groups.
Give us your feedback!
Volunteers
Sponsors
Speakers
Donate
Contact us


Including files in source distributions with MANIFEST.in
¶
When building a source distribution
for your package, by default only a minimal set of files are included. You may
find yourself wanting to include extra files in the source distribution, such
as an authors/contributors file, a docs/
directory, or a directory of
data files used for testing purposes. There may even be extra files that you
need to include; for example, if your setup.py
computes your
project's long_description
by reading from both a README and a changelog
file, you'll need to include both those files in the sdist so that people that
build or install from the sdist get the correct results.
Adding & removing files to & from the source distribution is done by writing a
MANIFEST.in
file at the project root.
How files are included in an sdist¶
The following files are included in a source distribution by default:
all Python source files implied by the
py_modules
andpackages
setup()
argumentsall C source files mentioned in the
ext_modules
orlibraries
setup()
argumentsscripts specified by the
scripts
setup()
argumentall files specified by the
package_data
anddata_files
setup()
argumentsthe file specified by the
license_file
option insetup.cfg
(setuptools 40.8.0+)all files specified by the
license_files
option insetup.cfg
(setuptools 42.0.0+)all files matching the pattern
test/test*.py
setup.py
(or whatever you called your setup script)setup.cfg
README
README.txt
README.rst
(Python 3.7+ or setuptools 0.6.27+)README.md
(setuptools 36.4.0+)pyproject.toml
(setuptools 43.0.0+)MANIFEST.in
After adding the above files to the sdist, the commands in MANIFEST.in
(if such a file exists) are executed in order to add and remove further files
to & from the sdist. Default files can even be removed from the sdist with the
appropriate MANIFEST.in
command.
After processing the MANIFEST.in
file, setuptools removes the
build/
directory as well as any directories named RCS
,
CVS
, or .svn
from the sdist, and it adds a PKG-INFO
file and an *.egg-info
directory. This behavior cannot be changed with
MANIFEST.in
.
MANIFEST.in
commands¶
A MANIFEST.in
file consists of commands, one per line, instructing
setuptools to add or remove some set of files from the sdist. The commands
are:
Command |
Description |
|---|---|
|
Add all files matching any of the listed patterns |
|
Remove all files matching any of the listed patterns |
|
Add all files under directories matching |
|
Remove all files under directories matching |
|
Add all files anywhere in the source tree matching any of the listed patterns |
|
Remove all files anywhere in the source tree matching any of the listed patterns |
|
Add all files under directories matching |
|
Remove all files under directories matching |
The patterns here are glob-style patterns: *
matches zero or more regular
filename characters (on Unix, everything except forward slash; on Windows,
everything except backslash and colon); ?
matches a single regular filename
character, and [chars]
matches any one of the characters between the square
brackets (which may contain character ranges, e.g., [a-z]
or
[a-fA-F0-9]
). Setuptools also has undocumented support for **
matching
zero or more characters including forward slash, backslash, and colon.
Directory patterns are relative to the root of the project directory; e.g.,
graft example*
will include a directory named examples
in the
project root but will not include docs/examples/
.
File & directory names in MANIFEST.in
should be /
-separated;
setuptools will automatically convert the slashes to the local platform's
appropriate directory separator.
Commands are processed in the order they appear in the MANIFEST.in
file. For example, given the commands:
graft tests
global-exclude *.py[cod]
the contents of the directory tree tests
will first be added to the
sdist, and then after that all files in the sdist with a .pyc
, .pyo
, or
.pyd
extension will be removed from the sdist. If the commands were in the
opposite order, then *.pyc
files etc. would be only be removed from what
was already in the sdist before adding tests
, and if tests
happened to contain any *.pyc
files, they would end up included in the
sdist because the exclusion happened before they were included.


?6
7
8
9
10
S^Yokk
copyright
reserved
Botanical
Garden
New
York
Botanical
Garden
1L.E3MA1
Species:__
Location:
iÈ
Pan.
As
________Elev.
ÀÈ5*0
Tree
M
Shrub
l_J
Vine
l_]
Herb
bfl
Fern
M
Moss
l_l____
Size:-IÑmÈ,.
Vt^VV____Name
:_
Notes:
Wo
Oc[
u
,
-Ident.
by:.
Date;
3\;
Collected
by
L.
R.
HOLDRIDGE
No.
ffr
IU
FLORA
OF
HAITI,
W.
I.
The
University
of
Texas
Herbarium
(LL,
TEX)
Mentzelia
aspera
L.
Det:
B.
L.
Turner,
7
Feb
2001
1623481
Legend -
Level of confidence that token is an accurately-transcribed word
extremely low
very low
low
undetermined
medium
high
very high


Leave Tiberias, and ride past Kibbutz Ginosar, Migdal and Capernaum, sites from the Second Temple period, known to us from the New Testament. Continue to the Yehudia Junction leading to the eastern side of the lake. Continue south to Kibbutz Ein Gev and Kibbutz Ha'on, then turn off to the beautiful site of Hamat Gader, an active spa and archaeological site of the second-largest bath complex in the entire Roman Empire.
Enjoy lunch and the natural spa. You can also tour one of the largest crocodile farms in the Middle East. Ascend the Golan Heights to the Mitzpe Shalom observation point. Our return route takes us past Kibbutz Kinneret, and the renowned Kinneret Cemetery, where legendary icons such as Rachel the Poetess and Naomi Shemer are buried.


Full item wipe is imminent
Posted: Sat Aug 30, 2008 8:30 pm
Sorry everyone, but it's necessary because I changed the way items are referenced and you'll all end up with different items than you have right now in the next update if I don't wipe. This could also let you get access to some of the really nifty stuff I'm adding without actually having to go find it...and although it'd be admittedly cool to get your hands on 10 of the "energetic emerald sword" or the "vile topaz falchion" just because you had a few extra clubs in your inventory, they're supposed to be rare
On a more fun note, here's a preview of what's coming! Probably tomorrow evening:
On a more fun note, here's a preview of what's coming! Probably tomorrow evening:
- Items on character
- Enchantment (buffing) spells
- A whole bunch of new monsters
- Possibly new spell types
- A ton of new items


10 Publications 6
Authorship on scientific publications is based on significant contributions to the intellectual input, execution of studies, and writing of papers. Here is the statement on authorship from the journal Evolution: “Authorship of a paper carries with it responsibility as well as credit. All those whose names appear as authors should have played a significant role in designing or carrying out the research, writing the manuscript, or providing extensive guidance to the execution of the project. They should be able to present and defend the work in a public forum.”
Within the CLL, the PI (Ailís Cournane) has final say on all authorship issues for work conducted by lab members in whole or in part during one’s tenure in the lab. However, as a general guideline, the “default” policies are stated below. These are subject to change and to modification for specific circumstances, including but not limited to exceptionally high or minimal contribution.
Regarding standard research publications, the criterion for co-authorship is contribution in any one or combination of the following three areas: intellectual input (including initial design and subsequent modification and development of the project); execution (including data analysis); and writing of the paper (including figure and table preparation) for submission. We also abide by the Evolution criterion that all authors should be able to present and defend all the work, not just their piece of the work, in a public forum. Such a presentation should include accurate and thorough discussion of the relation of the work to other published studies on the topic. For authorship, there must have been intellectual input and engagement
To be considered for “first author”, the researcher must have contributed >50% of the writing of the final draft as well as significant contribution to either the intellectual input or execution of the project. If the paper drafts given to the PI are so poorly prepared (as determined by the PI) that rewriting from scratch is easier than editing, first authorship by the writer may be forfeited.
Writing in a timely, prioritized (it is THE most important part of the job) fashion is essential: The first author has no more than 4 months from the end of data collection for a particular publication, as determined by the lab PI, to prepare the paper draft. Failure to produce a well-prepared draft in this timeframe may forfeit the right to first-authorship. It does not need to be perfect, it needs to be drafted (=exist) and get subjected to edits and contributions from the other authors (especially the last author, typically Ailis).
For review papers, authorship requires the incorporation of a significant amount of writing. As above, if a potential author submits text that is either rewritten or otherwise omitted from the final version, authorship may be nullified.
Adapted from Noor Lab (Noor, 2012)↩


Chewzer
Making your life simpler, one meal at a time.
A meal planner that can be as detailed or as generic as you need. Chewzer adapts to your preferences and plans accordingly
- Date: Summer/Fall 2016
- Category: UX Design
User Research
Research Goals
- What are their nutrition goals?
- Do people struggle meeting their nutrition goals?
- Do people struggle coming up with new recipes that reflect these goals?
- How do people organize their grocery list/approach?
HYPOTHESES
- Young Professionals
- Parents
- College Students
USER DEMOGRAPHICS
- Shoppers have a pre-set budget, but often get off course.
- Shoppers aimlessly wander the store searching by meal ingredients.
- People need an easy way to come up with new, goal-based meals.
USER INTERVIEW QUESTIONS
- How old are you?
- What is your profession?
- How many times a week do you cook your own meals?
- Are you on a diet?
- What is your level of cooking experience?
- How many people are you cooking for?
- How technologically savvy would you consider yourself?
- How strictly would you adhere to a food planner?
- Would you need reminders in order to stick to the meals we’ve planned?
- Would you like your meals to be planned daily or for the entire week?
- What would you like to be targeted (e.g. protein, vegetable/fruit servings, carbs, etc)?
- How many meals would you like to be suggested for each day?
- Would you like to count snacks between meals as well?
- Would you like diet options (vegan, paleo, vegetarian, etc)?
- How often do you grocery shop?
- Do you group your grocery list?
- Do you struggle to come up with new recipes?
- Do you plan your meals by nutrition?
- What are the current ways you plan your meals?
- Do you factor in eating out?
- Do you set a budget?
- How many grocery stores do you shop at?
- Walk or drive to the store?
- Are you aware of sales before entering the store?
- Would you want to plan on an app/website/both?
RESULTS
COMPETITIVE ANALYSIS
My Fitness Pal
Pros
- Tracks nutrition
- Large database of food/restaurant
- Incorporates fitness goals
- Allows you to add own recipes
- Intuitive
- Reminder option if you haven’t logged meals
Cons
- No meal planning aspect
- No recipe suggestions
- Must upgrade for a lot of features
Yummly
Pros
- Suggests recipes based on what food you like
- Unclear what the defined path is
- Don’t have to create an account
- Connect with other accounts
- Can add recipe to shopping list
- Suggestions based on location
Cons
- Not many new recipes daily
- Directions are opened in browser window
- Dislike the accordion scroll style
- Doesn’t have a planner
- Doesn’t track nutrition/fitness goals
USER PERSONAS
Steve, 35
Steve is a 35-year-old father who commutes into the city each day for work. Him and his wife, Kim, have two children in elementary school for whom they pack lunch for each day. Kim and Steve typically pack their lunch 4 times per week. Monday through Friday they eat dinner at home and on the weekends they typically go out for dinner as a family. They eat three meals plus snacks each day and would like those planned accordingly. They aim to have dinner a healthy balance of vegetables and protein, but other than that do not have any dietary restrictions. They do not have a set budget, but are active about finding deals at their local super market. Both Steve and Kim and intermediate level cooks.
Alice, 26
Alice lives alone in the city and cooks for herself at least 5 days a week. Her diet is dairy free. She enjoys trying new recipes and usually eats whatever she had for dinner the night before for lunch – but is open to other alternatives. She likes eating a simple breakfast as part of her morning routine. She works out regularly and thinks that being more careful about her diet with help her lose a couple extra pounds. She goes to the grocery store weekly and plans her meals for the week each Sunday. She is a pretty skilled cook, and appreciates challenging recipes.
Annie, 22
Annie is a 22-year-old accountant living with three other roommates. She is a vegetarian and often struggles to find new and exciting recipes. She typically comes up with a few recipes she’ll want to make for the next two weeks and wings the rest when she gets to the store. She enjoys having two meals planned per day and eats out a 1-2 times per week. She is still beginning to master cooking for herself every day and wants to start with easier recipes. Annie is a busy person and wants to be able to cook her meals in less than 30 minutes. She has a budget of $50 per week.
USER FLOW
FEATURE PRIORITIZATION
INFORMATION ARCHITECTURE
CARD SORT
SITE MAP


{{#markdown}}
OK, so we have a nice client side application that creates and renders it's own data.
So, if we were in any framework other than Meteor, we would start implementing a series of REST endpoints to connect the server to the client.
Also, we would need to create a database and functions to connect to it.
And we haven't talked about realtime, in which case we would need to add sockets, and a local DB for cache and handle latency compensation (or just ignore those features and create a not - so - good and modern app...)
But luckily, we use Meteor!
Meteor makes writing distributed client code as simple as talking to a local database.
Every Meteor client includes an in-memory database cache. To manage the client cache, the server publishes sets of JSON documents, and the client subscribes to these sets. As documents in a set change, the server patches each client's cache automatically.
That introduce us to a new concept - **Full Stack Reactivity**.
In an Angularish language we might call it **3 way data binding**.
The way to handle data in Meteor is through the `Mongo.Collection` class. It is used to declare MongoDB collections and to manipulate them.
Thanks to minimongo, Meteor's client-side Mongo emulator, `Mongo.Collection` can be used from both client and server code.
# Declare a collection
So first, let's define our first parties collection that will store all our parties.
Add:
Parties = new Mongo.Collection("parties");
to the beginning of the `app.js` file.
Notice that this code runs outside of the `isClient` statement.
That means that this collection and the actions on it will run both on the client (minimongo) and the server (Mongo), you only have to write it once, and Meteor will take care of syncing both of them.
# Binding to Angular
Now that we've created the collection, our client needs to subscribe to it's changes and bind it to our parties Angular array.
To bind them we are going to use the built-in angular-meteor service called [$meteor.collection](/api/meteorCollection).
We are going to replace the declaration of `$scope.parties` with the following command inside the `PartiesListCtrl` controller:
$scope.parties = $meteor.collection(Parties);
This line declares a new `$scope.parties` variable (so we don't need to do something like `$scope.parties = [];` ) and then binds it to the Parties Mongo collection.
We also need to add the `$meteor` service to the controller with dependency injection.
Our `app.js` file should look like this:
__`app.js`:__
Parties = new Mongo.Collection("parties");
if (Meteor.isClient) {
angular.module('socially',['angular-meteor']);
angular.module('socially').controller('PartiesListCtrl', ['$scope', '$meteor',
function($scope, $meteor){
$scope.parties = $meteor.collection(Parties);
}]);
}
Now every change that happens to the `$scope.parties` variable will automatically be saved to the local minimongo and synced to the MongoDB server DB and all the other clients in realtime!
But we still don't have data in that collection, so let's add some.
Let's initialize our server with the same parties we had before.
Add this to the bottom of `app.js`:
if (Meteor.isServer) {
Meteor.startup(function () {
if (Parties.find().count() === 0) {
var parties = [
{'name': 'Dubstep-Free Zone',
'description': 'Can we please just for an evening not listen to dubstep.'},
{'name': 'All dubstep all the time',
'description': 'Get it on!'},
{'name': 'Savage lounging',
'description': 'Leisure suit required. And only fiercest manners.'}
];
for (var i = 0; i < parties.length; i++)
Parties.insert(parties[i]);
}
});
}
As you can probably understand, this code runs only on the server, and when Meteor starts it initializes the DB with these sample parties.
Run the app and you should see the list of parties on the screen.
In the next chapter we will see how easy it is to manipulate the data, save and publish changes to the server, and by doing so, all the connected clients will automatically get updated.
# Inserting parties from the console
Items inside collections are called documents. Let's use the server database console to insert some documents into our collection.
In a new terminal tab, go to your app directory and type:
meteor mongo
This opens a console into your app's local development database. At the prompt, type:
db.parties.insert({ name: "A new party", description: "From the mongo console!" });
In your web browser, you will see the UI of your app immediately update to show the new party.
You can see that we didn't have to write any code to connect the server-side database to our front-end code — it just happened automatically.
Insert a few more parties from the database console with different text.
Now let's do the same but with remove. At the prompt, type the following command to look at all the parties and their properties:
db.parties.find({});
Now choose one party you want to remove and copy it's id property.
Then, remove it using that id (replace N4KzMEvtm4dYvk2TF with your party's id value):
db.parties.remove( {"_id": "N4KzMEvtm4dYvk2TF"});
Again, you will see the UI of your app immediately update with that party removed.
Try running more actions like updating an object from the console and so on.
In the next step, we'll see how to add functionality to our app's UI so that we can add parties without using the database console.
# Summary
In this chapter you saw how easy and fast it is to create a full connection between our client data, the server and all the other connected clients.
{{/markdown}}


The Hunger Games
"[The Hunger Games] is a violent, jarring, speed-rap of a novel that generates nearly constant suspense...I couldn't stop reading."
"I was so obsessed with this book I had to take it with me out to dinner and hide it under the edge of the table so I wouldn't have to stop reading. The story kept me up for several nights in a row, because even after I was finished, I just lay in bed wide awake thinking about it...The Hunger Games is amazing."
I"The Hunger Games is as close to perfect an adventure novel as I've ever read. I could not put it down. Collins has transformed the ancient Labyrinth myth into a terrifyingly believable tale of future America. Readers will be hungry for more."


 When autofit mode is on the columns for the window are adjusted when the window is resized so that the number of columns just fits across the window.
This can be used as a simple way of changing the number of display columns. You can also set the number of columns explicitly as well as the column grouping and offset in the Window page of the Options Dialog.
Shortcuts
Toolbar:


%file newheader%>
<%file newnavbar%>
<%lmheader%>
Pattern <%title%> - Content
<%definition%>
<%introduction%>
<%resref%>
Pattern Content
Structure
<%resource-table%>
UML Diagram (Legend)
<%svg A%>
Structure
<%resource-table-all%>
UML Diagram (Legend)
<%svg B%>
Alternate definitions: Master Definition XML + JSON.
<%tx%>
<%inv%>
<%notes%>
Mappings
<%logical-mappings%>
Each non-grey cell contains a number, the number of elements and extensions (if > 0) mapped in the resource
that are mapped to the pattern element in the column. If there are 0 elements and extensions, the
number is not shown. In addition, the cell has a color and some character flags.
Colors:
- Grey: the resource has no element or extension for the pattern element
- White: the resource has an element that implements the pattern element with the same name
- Yellow: the resource has a documented extension that implements the pattern element with the same name
- Blue: the resource has an element that implements the pattern element with a different name
- Red: the resource has an element that implements that pattern element, but the type or cardinality does not match
Flags:
- E: pattern element implemented by an extension
- N: pattern element implemented by an element with a different name
- T: pattern element implemented by an element with a different type
- C: pattern element implemented by an element with a different cardinality
<%file newfooter%>


Saturday. I don't think much of what happened tonight could be translated to text, but here, for the sake of remembrance, I'll give an overview of this tragedy and miracle.
I'd been on somewhat of a psychedelic 'bender' lately - 20mg 2C-T-2 about 5 days ago, moderate doses of 5-MeO-DiPT on Thursday and Friday, and today it all came to a spectacular pinnacle, an unplanned event I could never recreate.
Tonight, at 9:40 PM, alone in my room lit by bubble lamp and lava lamp, with a trance compilation entitled Euphoria providing the ambiance, I loaded a small amount of 5-MeO-DMT into my glass pipe. I only wanted a small hit, something I've discovered to be a manageable transcendental moment through experimentation. My mistake, however, was not showing enough caution concerning the pipe's inside already being covered with half-vaporized portions of previous doses. I held the hot flame on too long, vaporized too thoroughly. Every bit of residue melted at once and a strong-tasting gas filled the apparatus.
I realized my mistake as soon as I brought the smoke into my mouth. Smoke was pouring out of the pipe at both ends, and it hit before I even exhaled. A normal vaporized dose of this chemical will usually take at least 5-10 seconds before anything is felt. This time, it hit immediately and gripped harder than words can describe.
I gagged and threw the pipe and lighter down in panic. Most of what happened after this was too much to register in my memory, and what I do remember is hard to put into words. What came was a feeling more terrifying than I could've ever imagined in my lifetime. My insides turned to stone. I stopped breathing. I tried to force the action again, but there was far too much going on in my mind for such trivial matters as breathing.
I thrashed about on the floor a bit, then fell on my waterbed. Survival was uncertain, but I fought for my life.  I've experienced the idea of matter vibration objectively, but this time I felt it firsthand, as every molecule of mine vibrated and released me into liquid psychedelic warmth and energy flow. I was pure energy. Layers peeled off from such depth, I knew that if I survived, I would never be the same. Time stood still as I discovered entelechy.
All the depression I've been feeling lately, all the confusion, everything I was, everything I knew, it all bled from my cold bare skin. It shouldn't take such a severe attack on my mortality to realize the futility of the suffering I put myself through, but sometimes it does. This was a real lesson in impermanence. Whatever happened to me in this state of unlimited terror, it eventually showed signs of easing and I realized I was going to be okay.
I lie on my back on the waterbed. Breathing began to to steady and I began to calm. I began to remember who I was and objects began to separate again, rather than seeing the multicolored liquid blend that was swirling around me just minutes before. Somehow, sometime during my death/rebirth, I turned on the television and turned down the music, perhaps for grounding. I knew that I'd eventually come to be very grateful for what had to be the most terrifying experience of my life, this experienced molecular death.
I lied there staring at the ceiling, thinking, integrating. I ran a few math equations through my head to make sure I hadn't damaged my brain too badly. I was going to be alright. It was a strongly traumatic to my mind and body, but that didn't seem to matter. All that mattered was that I was alive. I was just glad to be alive.
I didn’t sober for a while. Whereas I usually feel normal after at least 30 minutes, this time it took well over an hour. I just sat still thinking of what I could learn from this. None of the depression I'd been feeling, none of the confusion, none of my troubles, none of it mattered anymore. I'd just transcended my life and had the divine psychedelic experience I never could've imagined. It was a difficult experience, but before long, I'd come to really value its impact on me.
Afterwards, there were no adverse side-effects, surprisingly. My health seemed to be in good order. It wouldn’t have mattered much, though. I was just glad to be alive.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


Compose Docs
Welcome to the Compose theme user guide! This guide shows you how to get started creating technical documentation sites using Compose, including site customization and how to use Compose’s blocks and templates.
Welcome to the Compose theme user guide! This guide shows you how to get started creating technical documentation sites using Compose, including site customization and how to use Compose’s blocks and templates.


Buttons
Primary
Secondary
Success
Danger
Warning
Info
Light
Dark
Link
Outline buttons
Primary
Secondary
Success
Danger
Warning
Info
Light
Dark
Sizes large
Large button
Large button
Sizes small
Small button
Small button
Sizes block
Block level button
Block level button
Active state
Primary link
Link
Disabled state
Primary button
Button
Primary link
Link


See what I did there? That took a significant amount of brain power tonight. It must be the end of the semester.
CEP811 is closing this week and for my final post with that particular tag, I’m going to reflect a little bit. I’ll try not to ramble too much.
Long story short: I’ll definitely be using the Raspberry Pi when I get back to the classroom someday. This course was a particular challenge for me because everything I’ve planned and written about has been in spe. (That’s Latin, folks.) So, while I can’t go and do some of the things I’ve written about tomorrow, I have them filed away for the future. The big thing about maker tools is that they can do whatever we want them to do. The Raspberry Pi, for me, is something that will allow one more student to explore something they might be interested in. Sure, there are times I’ll bring it into what we do to pique some interest, but like any other tool, it’s not something I can require every student to engage with. I get wary when we talk about “every student should need to learn how to code,” because that’s ignoring the fact that every student has different strengths, weaknesses, and interests.
If the tools in my classroom encourage students to think, to question, or to explore (play?), then I think they’re effective. I want to see students take risks and I want to provide a variety of modes for them to risk with. It isn’t about the curriculum I design to go specifically with the Pi, but the challenge it will present to learners. I want to evaluate how they rise to meet that challenge and how they cope with dealing with new tools. We see this happening as young as first grade now with designing lunch boxes. It isn’t about having fancy tools or toys, but how we engage our students.
(Scott, 2000, p. 16)
Socrates denied being a teacher because he didn’t fit the definition given by culture. I feel this is something we battle today. Culturally, a teacher is someone who stands in front of students, a content expert, to instruct. Metaphysically, teachers are so much more than that:
@bennettscience A teacher is charged with finding flaws within themselves and others, without wallowing in failure.
— Ben Rimes (@techsavvyed) December 11, 2013
@bennettscience A teacher is charged with knowing just how hard to push a learner past their point of brilliance before going over the ledge
— Ben Rimes (@techsavvyed) December 11, 2013
@bennettscience The role of the teacher is not to provide knowledge but to point and guide to better knowledge acquisition skills. #edchat
— Heather Askea (@hblanton) December 11, 2013
@bennettscience @techsavvyed a teacher is a person that convinces others to learn stuff they wouldn't otherwise want to learn
— William Chamberlain (@wmchamberlain) December 11, 2013
So, how will the maker ideas fit into my class? They should already be there. I need to be addressing and encouraging student’s innate desire to be creators, explorers, and discoverers. Sure, the Raspberry Pi will help me do that. But it isn’t about the device…it’s about the pedagogy we bring to give context to the tool.
Looking back, I wish I had been more aggressive with my own maker project plans. I don’t have a working program like I had hoped to, and that’s mostly because I didn’t make it a priority through the course. I think had I continued that project through each week, I would have felt like each week had more of a connection. However, I do feel like I pushed myself to think beyond the obvious with each prompt. I wanted to get to the root of my beliefs and draw out each component of the class as much as I could. I challenged myself to take risks and write provocatively, and through that, I have been able to reframe some of my core beliefs about education.
Scott, G.A. (2000). Plato’s Socrates as Educator. Albany, NY: SUNY Press.
Written on December 10th, 2013 by Brian Bennett Categorized in: All MAET Teaching
Leave a comment


The data was obtained from the nba website. I think this is not the best choice to represent this data but it was good to try stacked area charts


Indicates if sidebar is in the flat mode.
Boolean, default = false
If sidebar is in the flat more, only node icon will be displayed. Parent child structures are also ignored. Flat mode is
useful to make sidebar take less space.
You can define it during object creation:
or during run-time:


Over the course of the summer we talked to potential end users, NGO’s, political representatives and academics for their opinions on our device. We wanted to know what it would take to make our biosensor useful so it could be properly implemented in society. Through these conversations we learned that for it to be an improvement upon current methods it would need to be easy to use, portable, inexpensive to manufacture. These conversations guided us throughout our design evolution to create the simple but elegant design we have right now.
Another big input for our design process was trying to computationally model how our biosensor will behave with respect to sample application to help us understand how it will actually work.
Once we decided on a paper-based biosensor we wanted to make sure it would have optimal utility. This initial prototype is a simple design with the immobilised enzymes in the centre. By dipping the biosensor in a solution, the diffusion of the solution should re-hydrate the freeze-dried enzymes and produce a colour. This design, ideally the size of a microscope slide, should be easy to use and portable which is exactly what is required.
A talk with former MSP Susan Deacon led us to realise we need to have multiple tests on one strip for increased effectiveness compared to current detection methods. After a group brainstorm session on how to multiplex our first prototype we designed our second prototype. This prototype has laser cut rectangles to allow multiple bioactive zones. The whole biosensor will be covered in sticky tape, creating hydrophobic barriers between the different bioactive zones.
Once we put prototype 2 to the test, we realised that the colour diffused too much making it difficult to read the results of the test
With the help of our modelling efforts we were able to come up with a new solution, make cavities in the design in order to contain the colour produced. This prototype would also allow us to control the amount of time the solution stays on the bioactive zone ensuring that it would be there long enough to produce the colour.
At this time we really did think we had a winner, but talking to more experts made us realise we could incorporate what we heard by decreasing the amount of solution required. The previous prototype requires 150 µl of liquid sample which could be deemed too much and a waste, therefore discouraging people to use it.
We took inspiration from a design created by George Whiteside's lab at Harvard University and came up with the design we have now. This final design only requires one tenth of the amount of solution thereby decreasing the overall amount of drug used.


@* * Copyright 2021 HM Revenue & Customs * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *@ @import config.FrontendAppConfig @import views.ViewHelpers.pageTitle @this( govukLayout: views.html.layouts.GovukLayoutWrapper, forms: views.components.forms, html: views.components.html, appConfig: FrontendAppConfig ) @(successAction: Call, failureAction: Call, checkStatusAction: Call)(implicit request: Request[_], messages: Messages) @govukLayout( pageTitle("view.upload-file.waiting"), backLink = false, refresh = 3) {