|
SSD1306 OLED display driver
1.7.6
This library is developed to control SSD1306/SSD1331/SSD1351/IL9163/PCD8554 RGB i2c/spi LED displays
|
LCD direct draw functions for all display types: color and monochrome. More...
Classes | |
| struct | SAppMenu |
Macros | |
| #define | ssd1306_drawCanvas(x, y, w, h, buf) ssd1306_drawBuffer(x, y, w, h, buf) |
Functions | |
| void | ssd1306_setPos (uint8_t x, uint8_t y) |
| void | ssd1306_fillScreen (uint8_t fill_Data) |
| void | ssd1306_clearScreen (void) |
| void | ssd1306_negativeMode (void) |
| void | ssd1306_positiveMode (void) |
| uint8_t | ssd1306_printFixed (uint8_t xpos, uint8_t y, const char *ch, EFontStyle style) |
| uint8_t | ssd1306_printFixed2x (uint8_t xpos, uint8_t y, const char ch[], EFontStyle style) __attribute__((deprecated)) |
| uint8_t | ssd1306_printFixedN (uint8_t xpos, uint8_t y, const char ch[], EFontStyle style, uint8_t factor) |
| size_t | ssd1306_write (uint8_t ch) |
| Prints single character to display at current cursor position. More... | |
| size_t | ssd1306_print (const char ch[]) |
| Prints null-terminated string to display at current cursor position. More... | |
| uint8_t | ssd1306_charF6x8 (uint8_t x, uint8_t y, const char ch[], EFontStyle style=STYLE_NORMAL) __attribute__((deprecated)) |
| uint8_t | ssd1306_charF12x16 (uint8_t xpos, uint8_t y, const char ch[], EFontStyle style) __attribute__((deprecated)) |
| uint8_t | ssd1306_charF6x8_eol (uint8_t left, uint8_t y, const char ch[], EFontStyle style, uint8_t right) __attribute__((deprecated)) |
| void | ssd1306_putPixel (uint8_t x, uint8_t y) |
| void | ssd1306_putPixels (uint8_t x, uint8_t y, uint8_t pixels) |
| void | ssd1306_drawRect (uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2) |
| void | ssd1306_drawLine (uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2) |
| void | ssd1306_drawHLine (uint8_t x1, uint8_t y1, uint8_t x2) |
| void | ssd1306_drawVLine (uint8_t x1, uint8_t y1, uint8_t y2) |
| void | ssd1306_drawBuffer (uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint8_t *buf) |
| void | ssd1306_drawBufferFast (lcdint_t x, lcdint_t y, lcduint_t w, lcduint_t h, const uint8_t *buf) |
| void | ssd1306_drawBitmap (uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint8_t *buf) |
| void | gfx_drawMonoBitmap (lcdint_t x, lcdint_t y, lcduint_t w, lcduint_t h, const uint8_t *buf) |
| void | ssd1306_clearBlock (uint8_t x, uint8_t y, uint8_t w, uint8_t h) |
| void | ssd1306_drawSpriteEx (uint8_t x, uint8_t y, uint8_t w, const uint8_t *sprite) |
| void | ssd1306_drawSprite (SPRITE *sprite) |
| void | ssd1306_eraseSprite (SPRITE *sprite) |
| void | ssd1306_eraseTrace (SPRITE *sprite) |
| SPRITE | ssd1306_createSprite (uint8_t x, uint8_t y, uint8_t w, const uint8_t *data) |
| void | ssd1306_replaceSprite (SPRITE *sprite, const uint8_t *data) |
| void | ssd1306_createMenu (SAppMenu *menu, const char **items, uint8_t count) |
| void | ssd1306_showMenu (SAppMenu *menu) |
| void | ssd1306_showMenu8 (SAppMenu *menu) |
| void | ssd1306_updateMenu (SAppMenu *menu) |
| void | ssd1306_updateMenu8 (SAppMenu *menu) |
| uint8_t | ssd1306_menuSelection (SAppMenu *menu) |
| void | ssd1306_menuDown (SAppMenu *menu) |
| void | ssd1306_menuUp (SAppMenu *menu) |
LCD direct draw functions for all display types: color and monochrome.
LCD direct draw functions are applicable for all display types. These functions will work both for monochrome and 8-bit/16-bit color OLED displays. You need remember, that for RGB oled displays these functions work only in special ssd1306 compatible mode. If you're going to combine NanoEngine capabilities with these functions, don't forget to switch addressing mode via ssd1306_setMode(). Direct draw functions draw directly in GDRAM and do not use any double-buffering.
| #define ssd1306_drawCanvas | ( | x, | |
| y, | |||
| w, | |||
| h, | |||
| buf | |||
| ) | ssd1306_drawBuffer(x, y, w, h, buf) |
Draws bitmap, located in SRAM, on the display Each byte represents 8 vertical pixels.
| x | - horizontal position in pixels |
| y | - vertical position in blocks (pixels/8) |
| w | - width of bitmap in pixels |
| h | - height of bitmap in pixels (must be divided by 8) |
| buf | - pointer to data, located in SRAM: each byte represents 8 vertical pixels. |
Definition at line 317 of file ssd1306_1bit.h.
Draws bitmap, located in Flash, on the display
| x | - horizontal position in pixels |
| y | - vertical position in pixels |
| w | - width of bitmap in pixels |
| h | - height of bitmap in pixels (must be divided by 8) |
| buf | - pointer to data, located in Flash: each byte represents 8 vertical pixels. |
Definition at line 701 of file ssd1306_1bit.c.
| uint8_t ssd1306_charF12x16 | ( | uint8_t | xpos, |
| uint8_t | y, | ||
| const char | ch[], | ||
| EFontStyle | style | ||
| ) |
Prints text to screen using double size font 12x16.
| xpos | - horizontal position in pixels |
| y | - vertical position in blocks (pixels/8) |
| ch | - NULL-terminated string to print |
| style | - font style (EFontStyle). |
Definition at line 445 of file ssd1306_1bit.c.
| uint8_t ssd1306_charF6x8 | ( | uint8_t | x, |
| uint8_t | y, | ||
| const char | ch[], | ||
| EFontStyle | style = STYLE_NORMAL |
||
| ) |
Prints text to screen using font 6x8.
| x | - horizontal position in pixels |
| y | - vertical position in blocks (pixels/8) |
| ch | - NULL-terminated string to print |
| style | - font style (EFontStyle), normal by default. |
Definition at line 399 of file ssd1306_1bit.c.
| uint8_t ssd1306_charF6x8_eol | ( | uint8_t | left, |
| uint8_t | y, | ||
| const char | ch[], | ||
| EFontStyle | style, | ||
| uint8_t | right | ||
| ) |
Prints text to screen using set font. If real text ends before right boundary, the remaining part on the display will be erased till right boundary.
| left | - horizontal position in pixels |
| y | - vertical position in blocks (pixels/8) |
| ch | - NULL-terminated string to print |
| style | - font style (EFontStyle), normal by default. |
| right | - right boundary of the text to output |
Definition at line 520 of file ssd1306_1bit.c.
| void ssd1306_clearBlock | ( | uint8_t | x, |
| uint8_t | y, | ||
| uint8_t | w, | ||
| uint8_t | h | ||
| ) |
Fills block with black pixels
| x | - horizontal position in pixels |
| y | - vertical position in blocks (pixels/8) |
| w | - width of block in pixels |
| h | - height of block in pixels (must be divided by 8) |
Definition at line 758 of file ssd1306_1bit.c.
| void ssd1306_clearScreen | ( | void | ) |
Fills screen with zero-byte
Definition at line 64 of file ssd1306_1bit.c.
| void ssd1306_createMenu | ( | SAppMenu * | menu, |
| const char ** | items, | ||
| uint8_t | count | ||
| ) |
Creates menu object with the provided list of menu items. List of menu items (strings) must exist all until menu object is no longer needed. Selection is set to the first item by default.
| menu | - Pointer to SAppMenu structure |
| items | - array of null-termintated strings (located in SRAM) |
| count | - count of menu items in the array |
Definition at line 41 of file ssd1306_menu.c.
| SPRITE ssd1306_createSprite | ( | uint8_t | x, |
| uint8_t | y, | ||
| uint8_t | w, | ||
| const uint8_t * | data | ||
| ) |
Creates sprite object. Sprite height is fixed to 8 pixels
| x | - horizontal position in pixels |
| y | - vertical position in pixels |
| w | - width of sprite in pixels |
| data | - pointer to data, located in Flash: each byte represents 8 vertical pixels. |
Definition at line 871 of file ssd1306_1bit.c.
| void ssd1306_drawBitmap | ( | uint8_t | x, |
| uint8_t | y, | ||
| uint8_t | w, | ||
| uint8_t | h, | ||
| const uint8_t * | buf | ||
| ) |
Draws bitmap, located in Flash, on the display
| x | - horizontal position in pixels |
| y | - vertical position in blocks (pixels/8) |
| w | - width of bitmap in pixels |
| h | - height of bitmap in pixels (must be divided by 8) |
| buf | - pointer to data, located in Flash: each byte represents 8 vertical pixels. |
Definition at line 683 of file ssd1306_1bit.c.
| void ssd1306_drawBuffer | ( | uint8_t | x, |
| uint8_t | y, | ||
| uint8_t | w, | ||
| uint8_t | h, | ||
| const uint8_t * | buf | ||
| ) |
Draws bitmap, located in SRAM, on the display Each byte represents 8 vertical pixels.
| x | - horizontal position in pixels |
| y | - vertical position in blocks (pixels/8) |
| w | - width of bitmap in pixels |
| h | - height of bitmap in pixels (must be divided by 8) |
| buf | - pointer to data, located in SRAM: each byte represents 8 vertical pixels. |
Definition at line 668 of file ssd1306_1bit.c.
| void ssd1306_drawBufferFast | ( | lcdint_t | x, |
| lcdint_t | y, | ||
| lcduint_t | w, | ||
| lcduint_t | h, | ||
| const uint8_t * | buf | ||
| ) |
Draws bitmap, located in SRAM, on the display Each byte represents 8 vertical pixels.
| x | - horizontal position in pixels |
| y | - vertical position in pixels (must be devided by 8) |
| w | - width of bitmap in pixels |
| h | - height of bitmap in pixels (must be divided by 8) |
| buf | - pointer to data, located in SRAM: each byte represents 8 vertical pixels. |
Definition at line 655 of file ssd1306_1bit.c.
| void ssd1306_drawHLine | ( | uint8_t | x1, |
| uint8_t | y1, | ||
| uint8_t | x2 | ||
| ) |
Draws horizontal line
| x1 | - left boundary in pixels |
| y1 | - position Y in pixels |
| x2 | - right boundary in pixels |
Definition at line 613 of file ssd1306_1bit.c.
| void ssd1306_drawLine | ( | uint8_t | x1, |
| uint8_t | y1, | ||
| uint8_t | x2, | ||
| uint8_t | y2 | ||
| ) |
Draws line
| x1 | - x position in pixels of start point |
| y1 | - y position in pixels of start point |
| x2 | - x position in pixels of end point |
| y2 | - y position in pixels of end point |
Definition at line 569 of file ssd1306_1bit.c.
| void ssd1306_drawRect | ( | uint8_t | x1, |
| uint8_t | y1, | ||
| uint8_t | x2, | ||
| uint8_t | y2 | ||
| ) |
Draws rectangle
| x1 | - left boundary in pixel units |
| y1 | - top boundary in pixel units |
| x2 | - right boundary in pixel units |
| y2 | - bottom boundary int pixel units |
Definition at line 647 of file ssd1306_1bit.c.
| void ssd1306_drawSprite | ( | SPRITE * | sprite | ) |
Draws sprite on the display. Position can be changed by updating x and y fields of SPRITE structure.
| sprite | - pointer to SPRITE structure |
Definition at line 786 of file ssd1306_1bit.c.
| void ssd1306_drawSpriteEx | ( | uint8_t | x, |
| uint8_t | y, | ||
| uint8_t | w, | ||
| const uint8_t * | sprite | ||
| ) |
Draws bitmap, located in Flash, on the display. This sprite must have wx8 size
| x | - horizontal position in pixels |
| y | - vertical position in blocks (pixels/8) |
| w | - width in pixels |
| sprite | - pointer to data, located in Flash: each byte represents 8 vertical pixels. |
Definition at line 774 of file ssd1306_1bit.c.
| void ssd1306_drawVLine | ( | uint8_t | x1, |
| uint8_t | y1, | ||
| uint8_t | y2 | ||
| ) |
Draws vertical line
| x1 | - position X in pixels |
| y1 | - top boundary in pixels |
| y2 | - bottom boundary in pixels |
Definition at line 623 of file ssd1306_1bit.c.
| void ssd1306_eraseSprite | ( | SPRITE * | sprite | ) |
Clears sprite from the display leaving black rectangle.
| sprite | - pointer to SPRITE structure |
Definition at line 812 of file ssd1306_1bit.c.
| void ssd1306_eraseTrace | ( | SPRITE * | sprite | ) |
Clears some sprite parts in old position on the display.
| sprite | - pointer to SPRITE structure |
Definition at line 834 of file ssd1306_1bit.c.
| void ssd1306_fillScreen | ( | uint8_t | fill_Data | ) |
Fills screen with pattern byte
Definition at line 49 of file ssd1306_1bit.c.
| void ssd1306_menuDown | ( | SAppMenu * | menu | ) |
Moves selection pointer down by 1 item. If there are no items below, it will set selection pointer to the first item. Use ssd1306_updateMenu() to refresh menu state on the display.
| menu | - Pointer to SAppMenu structure |
Definition at line 156 of file ssd1306_menu.c.
| uint8_t ssd1306_menuSelection | ( | SAppMenu * | menu | ) |
Returns currently selected menu item. First item has zero-index.
| menu | - Pointer to SAppMenu structure |
Definition at line 151 of file ssd1306_menu.c.
| void ssd1306_menuUp | ( | SAppMenu * | menu | ) |
Moves selection pointer up by 1 item. If selected item is the first one, then selection pointer will set to the last item in menu list. Use ssd1306_updateMenu() to refresh menu state on the display.
| menu | - Pointer to SAppMenu structure |
Definition at line 168 of file ssd1306_menu.c.
| void ssd1306_negativeMode | ( | void | ) |
All drawing functions start to work in negative mode. Old picture on the display remains unchanged.
Definition at line 881 of file ssd1306_1bit.c.
| void ssd1306_positiveMode | ( | void | ) |
All drawing functions start to work in positive (default) mode. Old picture on the display remains unchanged.
Definition at line 886 of file ssd1306_1bit.c.
| size_t ssd1306_print | ( | const char | ch[] | ) |
Prints null-terminated string to display at current cursor position.
Prints null-terminated string to display at current cursor position
| ch | - string to print to the display. 'LF' and 'CR' are skipped |
Definition at line 388 of file ssd1306_1bit.c.
| uint8_t ssd1306_printFixed | ( | uint8_t | xpos, |
| uint8_t | y, | ||
| const char * | ch, | ||
| EFontStyle | style | ||
| ) |
Prints text to screen using fixed font.
| xpos | - horizontal position in pixels |
| y | - vertical position in pixels |
| ch | - NULL-terminated string to print |
| style | - font style (EFontStyle), normal by default. |
Definition at line 78 of file ssd1306_1bit.c.
| uint8_t ssd1306_printFixed2x | ( | uint8_t | xpos, |
| uint8_t | y, | ||
| const char | ch[], | ||
| EFontStyle | style | ||
| ) |
Prints text to screen using double size fixed font.
| xpos | - horizontal position in pixels |
| y | - vertical position in pixels |
| ch | - NULL-terminated string to print |
| style | - font style (EFontStyle), normal by default. |
Definition at line 162 of file ssd1306_1bit.c.
| uint8_t ssd1306_printFixedN | ( | uint8_t | xpos, |
| uint8_t | y, | ||
| const char | ch[], | ||
| EFontStyle | style, | ||
| uint8_t | factor | ||
| ) |
Prints text to screen using size fixed font, scaled by factor value.
Factor value 0 gives regular font size (6x8 for example)
Factor value 1 gives double font size (12x16 if 6x8 font is used)
Factor value 2 gives fourth font size (24x32 if 6x8 font is used)
Factor value 3 gives eighth font size (48x64 if 6x8 font is used)
| xpos | - horizontal position in pixels |
| y | - vertical position in pixels |
| ch | - NULL-terminated string to print |
| style | - font style (EFontStyle), normal by default. |
| factor | - 0, 1, 2, 3. |
Definition at line 243 of file ssd1306_1bit.c.
| void ssd1306_putPixel | ( | uint8_t | x, |
| uint8_t | y | ||
| ) |
Put single pixel on the LCD.
| x | - horizontal position in pixels |
| y | - vertical position in pixels |
Definition at line 535 of file ssd1306_1bit.c.
| void ssd1306_putPixels | ( | uint8_t | x, |
| uint8_t | y, | ||
| uint8_t | pixels | ||
| ) |
Puts eight vertical pixels on the LCD at once.
| x | - horizontal position in pixels |
| y | - vertical position pixels. Should be multiply of 8. |
| pixels | - bit-pixels to draw on display |
Definition at line 542 of file ssd1306_1bit.c.
| void ssd1306_replaceSprite | ( | SPRITE * | sprite, |
| const uint8_t * | data | ||
| ) |
Replaces image of the sprite with different data. The width must be the same as the width of original sprite image
| sprite | - pointer to SPRITE structure |
| data | - pointer to data, located in Flash: each byte represents 8 vertical pixels. |
Definition at line 876 of file ssd1306_1bit.c.
| void ssd1306_setPos | ( | uint8_t | x, |
| uint8_t | y | ||
| ) |
Set position in terms of display.
| x | - horizontal position in pixels |
| y | - vertical position in blocks (pixels/8) |
| void ssd1306_showMenu | ( | SAppMenu * | menu | ) |
Shows menu items on the display. If menu items cannot fit the display, the function provides scrolling.
| menu | - Pointer to SAppMenu structure |
Definition at line 91 of file ssd1306_menu.c.
| void ssd1306_showMenu8 | ( | SAppMenu * | menu | ) |
Shows menu items on the display. If menu items cannot fit the display, the function provides scrolling.
| menu | - Pointer to SAppMenu structure |
Definition at line 102 of file ssd1306_menu.c.
| void ssd1306_updateMenu | ( | SAppMenu * | menu | ) |
Updates menu items on the display. That is if selection is changed, the function will update only those areas, affected by the change.
| menu | - Pointer to SAppMenu structure |
Definition at line 113 of file ssd1306_menu.c.
| void ssd1306_updateMenu8 | ( | SAppMenu * | menu | ) |
Updates menu items on the display. That is if selection is changed, the function will update only those areas, affected by the change.
| menu | - Pointer to SAppMenu structure |
Definition at line 132 of file ssd1306_menu.c.
| size_t ssd1306_write | ( | uint8_t | ch | ) |
Prints single character to display at current cursor position.
Prints single character to display at current cursor position
| ch | - character to print to the display. 'LF' and 'CR' are skipped |
Definition at line 345 of file ssd1306_1bit.c.


{% extends "email/base.html" %} {% block content %} You should have gotten your period {{ expected_in }} {{ day }} ago, on {{ expected_date}}. Did you forget to add your last period? {% endblock %}


Home > Reference > Functions reference > Design functions > ScriptIDs
ScriptIDs Purpose Returns a list of all script IDs in fileName, separated by carriage returns. Format ScriptIDs(fileName) Parameters fileName - the name of an open database file (local or remote). Important See Design functions for information about literal text parameters. Data type returned text Originated in FileMaker Pro 6.0 or earlier Examples ScriptIDs(“Customers”) returns a list of all the script IDs in the Customers database file. Related topics Functions reference (category list) Functions reference (alphabetical list) About formulas About functions Defining calculation fields Using operators in formulas


To submit a file click on `Pick a file!` button.
{{ fileSubmitCtrl.file.lastModifiedDate | date: 'medium' }}
To submit a file you can also drop a file in the drop area below.


As the employee data covers a relatively long period of time (1980s-1990s), it is likely that an employee who stayed long enough with the company would have worked in different deparments or held different titiles due to transfer or promotion over time. Such employees would have multiple records in tables. Relationships between tables should reflect this.
The following ERD generated by Quick Database Diagrams gives an overview of how the tables are related to each other:


Simply put, virtualization is using a single machine’s hardware to run multiple virtual machines within it. Virtualization helps solve the problem of underutilized resources between the hardware and the user. VM’s still need all of the same computing resources as a computer. Each VM still requires a certain allocation of the physical hardware’s CPU, RAM,and storage. Thus the total CPU, RAM, and storage of the individual VM’s cannot exceed the specs of the underlying hardware.
For instance, previously companies used to have 4 physical servers; one mail server, one web server, and another two servers to run an application on. They each run at 25% capacity which was only a quarter of its full potential. It was not always easy for one server to perform 3 different functions, but that is what virtualization solved for. It is the same physical hardware, but now it is just utilized more efficiently
Benefits of virtualization include the following:
- increased manageability because you have the ability to move, copy, or isolate VM’s
- Increased sustainability due to the energy savings from running less hardware and using less electricity
- Increased availability in order to snapshot, clone, and run redundant VM’s
- And increased security due to the isolation of the VM’s and various applications
The picture below is a great depiction of what virtualization looks like. On top of your physical hardware you have a hypervisor. On top of this you have your virtual machines with their own guest operating systems. Finally, on top of all of these layers is your application.
Here are some links which we used in our journey to grasp the concept of virtualization better:
- https://opensource.com/resources/virtualization#:~:text=Virtualization%20is%20the%20process%20of,on%20a%20computer%20system%20simultaneously.
- https://www.redhat.com/en/topics/virtualization/what-is-virtualization
- https://en.wikipedia.org/wiki/Virtualization
- https://www.vmware.com/solutions/virtualization.html
- https://www.ibm.com/cloud/learn/virtualization-a-complete-guide
- https://www.nutanix.com/info/virtualization


{% include head.html %}
{{ site.tag_text }}
home
|
things
|
about
|
contact
slideshow
|
van
|
table 6
|
table 11
|
kitchen table
|
cardboard
sun tracker
|
halfdome
|
one dimension calendar
entryway shelf
|
pupper treater
{{ content }}
{% include scripts.html %}


{% include libs/jquery_js.html %} {% include libs/bootstrap_js.html %} {% include libs/sh_js.html %} {% include libs/datatables_js.html %} {% include note.js %} {% include copy.js %}


Reliable, efficient delivery
Powered by Technology
Our Artificial Intelligence powered tools use millions of project data
points to ensure that your project is successful
Supervisor
Monitors activity to identify project roadblocks
Team Builder
Scans our talent network to create the optimal team for your project
Calculator
Uses data from past projects to provide better delivery estimates
Karma
Regularly evaluates our talent to ensure quality


 It comes as no surprise, then, that this basic fact should finally have asserted itself in the annals of my drug use.
Heretofore I'd exhibited a remarkable wooden leg to all of the tryptamines. This combined with a natural hunger for and delight in intense experiences has made my attempts to probe the depths of experience rather spotty. It took 25 mg insufflated 5-MeO-DiPT to get me where I wanted to go. 5-MeO-DMT had next to no effect, although I insufflated and vaporized enough to drive most people insane. I was pleasantly surprised, then, when 55 mg insufflated DPT was quite intense, strongly visual (highly unusual for me), and physically difficult.
Some 7 hours after coming down from this first experience, I was aching for more; for the first time I had found a drug I would like to take again immediately. Like any rational person embarking on a 3-hour trip at 10 AM, I unplugged the phone, set up the room for extra comfort (soft halogen light, drawn shades, light bedding), and cleared my mind and relaxed.  Alone. In other words, I violated a rule I had previously held sacrosanct: *always* have a sitter.
The first hour of the trip wasn't too bad compared to what came later. 15 minutes passed as I gingerly came up and settled into the peak. I stared at the acoustic tiles on the ceiling, which was breathing and swimming with color. Sometime around 10:20 (I had started at 9:55), I started feeling impatient. Where was the transcendently beautiful intensity of the previous trip? It was at this point, I think, that things began to sour.
My initial awareness that I was being dumb and the ambivalent nature of the experience combined, and I started getting uncomfortable - too hot, thirsty, heart racing. Soon things were getting out of control. I saw men in baseball caps crouching in corners; they were just piles of papers jutting from my bedside table. I also started having trouble seeing. Everything blurred as though a strong wind were smearing it.
I looked at the clock: it was 10:40. I walked to the computer and turned the monitor on; I tried to type some impressions but found I couldn't muster the dexterity. The monitor (which I always have set to low brightness) was much too bright, painfully so - even at 0 brightness it hurt my eyes. I started turning down the contrast, and this was useless, too. The pain scared me, as rightfully it should have; I can't even begin to imagine how dilated my eyes must have been.
I opened up a browser window to try to look up phone numbers of friends - I was deathly afraid to leave the room for fear of being spotted by the janitors, the house manager, the house masters, or my friends. I was especially afraid that they would mock me. I was, however, convinced that if I could only call one of my more experienced friends (or one female friend who had helped to keep me calm during the first DPT trip) that I would come down.
At this point I think I lost consciousness for a little while. When I woke up, I began hurtling around my room, trying vainly to escape the pain and fear I was suffering. As I was doing this, one of the most frightening things I've ever experienced took place. I felt pangs of intense longing for one of my friends who, although he disapproves even of drinking, is accepting and comforting in equal measure. I turned to a chair was certain that he was in it, figuring that my yelling and loud roaming (which were in fact whimpers and cautious motion) had attracted his attention. That the door was locked occurred to me, but I assumed that he'd picked up a key from the security desk. Scared and comforted at the same time, I went to touch his arm only to find him gone - disappeared.
I was really and truly overwhelmed now; I felt everyone I knew and cared about falling away. The janitors and people walking outside my room became policemen and the housemasters getting ready to bang down my door to send me to prison or rehab or an institution.
Right then I finally decided I would meet them on my own terms - I felt certain that if I could get a drink of water that I'd feel better. I was wrong; the brightness of the hall and my fear of running into someone in what I felt was an obviously blitheringly insane state combined. I got two steps into the bathroom before vomiting. As I recall, I didn't even realize I'd thrown up until I saw flecks of it in my hands and on the ground.
I was sure I was dying; I couldn't feel my heartbeat any more. Even if I lived, I was sure that I would be revealed as a drug user to my parents and that they would cut me loose and send me to a public institution to live out my days.
I saw that one of my friends, G, had his door open; I wanted to go to him, but he was listening to some heavy house music. Every beat of the bass drum hurt me. So I kept dodging in and out of my room and the bathroom, back and forth, sometimes closing the door. During a hop into the bedroom, I heard the thud in the bathroom; I ducked back out of the bedroom to see the female janitor rounding the opposite corner to get the necessary supplies to clean up the vomit. I lingered in the hallway, pacing in abject terror, afraid to go anywhere because I was sure cops or other authority figures from school would be there to greet me in their disappointment.
I finally mustered the will to go to my G's room after a few fearful attempts to make the 5 step journey. I asked him what time it was: 10:50. I had been experiencing severe time dilation. I traded a few stilted niceties - I was sure he knew something was up by then (which it turns out he didn't). I went in and out a couple times, hid in my room some more, and finally fled to the lounge in desperation around 11.
G and another friend (who was half-asleep on the couch) were watching TV. G asked me if I had seen the vomit in the bathroom; I jabbed a thumb into my sternum to indicate that it came from me. I had no reason to lie, and at this point I was intent on mitigating the inevitable damage to my reputation and future. G asked me if was going to clean up the vomit; I stammered out 'yeah' in reply, but I just plopped down onto the couch. As Yu-Gi-Oh! came on, he asked why this had happened. I said 'you know' and generally danced around his question until I finally had to come out and say that it was DPT. He wanted to know whether it was a second trip or the first one; when I indicated that it was a second trip, he asked why I had done more. All I could do was shrug and say that I had wanted to.
He shrugged OK, and we started watching the show - I figured that it'd be all right, since I had calmed down a bit. This was a mistake. Yu-Gi-Oh! is a long, victory (read: stomping the other guy into oblivion) focused card game commercial. In this episode, Joey (a Brooklyn dude with a blind sister) was battling a creepy insectoid named Weevil and his parasite queen. There was much goop, scary creatures, etc. Each exchange between the two of them ramped up my terror andistaste like a tire jack until I was very nearly overwhelmed again. I kept asking my friend the time - I desperately wanted this to be over, and I couldn't account for time on my own. Finally the litany of 'ha ha - I've got you now!' and commercials (especially a disturbing Fruity Pebbles commercial) got to be too much. I begged my friend to turn off the TV and go to his room with me.
I felt safer in his room than I had in my own. He was going to take a shower and leave me alone, but I asked him please to stay with me. I was very contrite about it; I kept apologizing over and over for what was happening. He tried to move a chair closer to sit nearer to me, but the noise was too much stimulation; it hurt. After trying to get some information about the DPT out of me - all I could say was '10 AM' and indicate 3 hours' duration - I finally asked him just to read about it, that it would make me feel better. While he was reading, he gave me a watch to look at, and I watched the clock like a hawk.
I finally started coming down around 11:45. We were talking about a date he had that night... Once I was down, I hugged and thanked him. I don't know if I've ever felt better. Our friendship was confirmed, and I had that near-death (perceived near-death?) glow about me. In the shower that afternoon, I sang with unprecedented energy and depth of feeling. In other words, I felt really, truly alive.
So what did I get out of this? Some perspective, for one: in the same way that I've been questing for an alcohol hangover (another wooden leg), I think I was looking for this. I think the potential for pain in these substances finally seemed real. This in turn has given me a sense of respect. I don't mean this in the goofy-dopey-spiritual sense, but in the same way that one respects the power inherent in a hot stove. If you love and look for intensity as I do, you are *bound* to be met with a measure you simply cannot handle at some point.
I also gained a real respect for the concept of the sitter. The best set (eager and happy, if reserved about being alone) and setting (comfort!) means nothing without a sitter. The equilibrating influence really does make a tremendous difference in the quality and tone of the experience, if only because there's someone to share the pain and ecstasy with.
All the same, I would not only consider flying solo again, I would even do it with this much DPT. I know now that I can trust my friends to help me if I need it, without reservations or judgement. I know to let anxiousness go. Finally, I *know* that what I feared is primarily a result of guilt over this hobby. I've worked through it and have come to terms with it. I don't think I'd tell my parents I use hallucinogens, but I'm confident I could deal with it maturely if they found out - even if they wouldn't. For that *alone* this trip was invaluable.
With all that said, I don't want you to read this as a cautionary tale, or as a strong exhortation to always have a sitter. I don't demand that you stick to by-the-book tripping. I'm not saying you should avoid DPT. What I am saying is this: no matter what the tone of the experience, there's potentially a lot to learn from it. Take advantage of that.  Just keep in mind that a little thought and a little analysis goes a long way.
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.


Javascript (JS) is an object oriented programming language wherease HTML is a markup language whose job is to display it to the eyes of the user. With JS you can add functionality or behaviour to the web application. Not only JS is used to make a website to visuallly look attractive and interactive, it can also be used on the server side i.e how your website can be available on the webservice and how people use your site. A more technical feature JS can do is that it can change the type of variable or add new properties or methods to an object while the programming is running.
The analogy of control flow is like before we can be at work, we need to actually leave the house and make a trip to the office. As a total beginner to JS, my high level understanding of contro flow is like, for some lines of codes to work, the order of which the codes are executed will need to be logical to the order of how they have been declared or run under different conditions. loops in JS is when a set of code repeated in any amount of times for any amount of items like arrays or objects. The day to day analogy for this is the process I go through everyday; getting out of bed, take a shower, brush teeth, get dressed and put make up on, leave the house, get to my car and drive to work. This process goes on the same way for 5 days a week. On the weekend, my routines change slightly. This will keep going until one day I decide to stop working.
Objects and arrays data are represented differently. An object is surounded by curly braces { } and an array surrounded by square brackets [ ]. Data arrays can be accessed by [ ] with its index specified inside the brackets or the value. On the other hand, to access an object's property we need to use a period sign (.) followed by variable name and name of the property. See example below:
var myFavouriteNumber = [32, 25, 27, 40]. To access the data of students array, student[0] which will return number 32.
var student = { name: "maya", age: 32, city:"auckland"} to access property age of the object student: student.age will return 32.
A function can be described in an analogy like a recipe for your favourite chocolate cake. You use this recipe to make your own cake and since the steps and ingridients have already been written for you, you can use this recipe and even modify it to how you like it. w3schools.com define function as a block of code designed to perform a particular task. Functions can customize behaviour and can be reuse through out the program. To have intelligent functions can save you a lot of time and is probably one of the keys to run a smart application.


---
layout: post
title: "My Week in Review"
date: 2015-03-22 17:45:00 +0000
categories:
tags:
image: https://s3.amazonaws.com/audreywatters/2015-03-22-stella.jpg
imagecredits: https://www.flickr.com/photos/surreal_badger/16870437026/
---
Travel
- Nope. I did get some travel plans made for May (I’ll be speaking at Davidson College).
- Upcoming week: Hermosa Beach.
Hack Education Writing
Writing Elsewhere
Other Projects
- I worked on an article about the history (histories) of MOOCs for the forthcoming World of Learning essay collection.
- I worked on my slides for next week’s webinar with Bryan Alexander on the Horizon Report.
- Thanks to Anya Kamenetz for including me in this list of “indispensable women transforming education.”
Reading and Viewing
- I read (and blurbed) Chris Lehmann and Zac Chase’s new book Building School 2.0.
- Kin and I watched Season 1 of The Blacklist.
Family and Friends
- My niece sent Flat Stella to visit, so I gave her a tour of the beach (and the local bar). I’m a bad aunt.


Equivalent to the Axis Tab in the Format Data Series dialog box. Changes the axis on which a series is plotted. This function is for compatibility with Microsoft Excel versions earlier than Microsoft Excel 97.
Syntax
SERIES.AXES(axis)
Axis is a number specifying on which axis to plot the data series: use 1 for primary axis, 2 for secondary axis.
Return to index


It appears that you don't have a valid session with Bookmarkly in this browser. Please sign in before bookmarking pages.


--- title: Which permalink: /which/ layout: default excerpt: Some of our creations. ---
Have a look at the products we created. Please share and support.
{{report.description}}


Preparation time
over 2 hours
Cooking time
no cooking required
Serves
Makes 615g/1lb 6oz
Dietary
Making traditional puff pastry takes time and physical effort, but following Lorraine Pascale’s method will ensure light, crispy pastry everytime.
Rub the flour, salt and the 40g/1½oz chilled butter together into a large bowl with your fingertips until they resemble fine breadcrumbs. Make a well in the centre of the mixture, pour in the water and mix this with the dry mixture in the bowl. Once the mixture is well combined, use your hands to form it into a ball, then wrap it in clingfilm and chill in the fridge for 25 minutes.
Once cooled, unwrap the dough and score a large cross in the middle using a sharp knife. Lift all four corners from the middle of the cross, and then pull them up and out.
Place softened 210g/7½fl oz butter in the centre of the dough, then fold the corners of the cross back to the centre, covering the butter, so it is completely enclosed. (The corners should overlap in the centre so no butter is showing.)
To start the rolling and folding process, begin by rolling the pastry out away from you on a well-floured surface to a rectangle roughly 3 times as long as it is wide. Keep the corners square and edges straight by pressing a palette knife or ruler against them. Lift the dough occasionally to make sure it isn’t sticking; flour the work surface again if necessary and sprinkle with more flour as you go, dusting away any excess with a pastry brush.  Turn the dough 90 degrees.
Repeat the same process as above, making sure that the pastry doesn’t stick to the surface when rolling. You have now given the dough two rolls and folds. Wrap the dough in clingfilm and chill in the fridge for 20 minutes.
Remove the dough from the fridge, unwrap and give it two more rolls and folds. Wrap and rest in the fridge for at least another 20 minutes. The block of puff pastry can at this point be kept in the fridge for a day or two, or frozen.
Remove from the fridge, unwrap and give the dough a final two rolls and folds, then roll it out to the size desired for your chosen recipe. Place on a baking tray, cover with oiled clingfilm and leave to rest in the fridge for about 30 minutes before using.


--- method: GET endpoint: /status help: Get the state of the service description: Query for the status of an instance. empty: true responses: - file: get-status.json status: 200 - file: get-status-failed.html status: 503 ---
The status code 503 is used to indicate to load balancers that a service is not available for requests right now.


|
Robot
The embedded systems for UTRA's autonomous humanoid soccer-playing robot
|
This file implements MX28-specific functions. More...
#include "../h/MX28.h"
Go to the source code of this file.
Macros | |
| #define | MX28_REG_MULTI_TURN_OFFSET 0x14 |
| #define | MX28_REG_RESOLUTION_DIVIDER 0x16 |
| #define | MX28_REG_D_GAIN 0x1A |
| #define | MX28_REG_I_GAIN 0x1B |
| #define | MX28_REG_P_GAIN 0x1C |
| #define | MX28_REG_GOAL_ACCELERATION 0x49 |
Functions | |
| void | Dynamixel_SetCWAngleLimit (Dynamixel_HandleTypeDef *hdynamixel, float minAngle) |
| Sets the clockwise angle limit for the current motor. More... | |
| void | Dynamixel_SetCCWAngleLimit (Dynamixel_HandleTypeDef *hdynamixel, float maxAngle) |
| Sets the counter-clockwise angle limit for the current motor. More... | |
| void | MX28_SetMultiTurnOffset (Dynamixel_HandleTypeDef *hdynamixel, int16_t offset) |
| For an actuator in multi-turn mode, this applies a tunable offset to all positions. That is it allows you to change where the actuator considers position 0 to be. For an actuator not in multi-turn mode, this setting has no effect. More... | |
| void | MX28_SetResolutionDivider (Dynamixel_HandleTypeDef *hdynamixel, uint8_t divider) |
| Unimplemented. This function should change the resolution divider, allowing for more precise or less precise control settings depending on the value. More... | |
| void | MX28_SetDGain (Dynamixel_HandleTypeDef *hdynamixel, uint8_t DGain) |
| Sets the value of the derivative gain used in the motor's PID controller. More... | |
| void | MX28_SetIGain (Dynamixel_HandleTypeDef *hdynamixel, uint8_t IGain) |
| Sets the value of the integral gain used in the motor's PID controller. More... | |
| void | MX28_SetPGain (Dynamixel_HandleTypeDef *hdynamixel, uint8_t PGain) |
| Sets the value of the proportional gain used in the motor's PID controller. More... | |
| void | MX28_SetGoalAcceleration (Dynamixel_HandleTypeDef *hdynamixel, float goalAcceleration) |
| Sets the goal acceleration. The argument should be in units of degree/s^2. More... | |
| void | MX28_EnterMultiTurnMode (Dynamixel_HandleTypeDef *hdynamixel) |
| Activates multi-turn mode, which allows the actuator to have a range of controllable position values from -28672 to 28672. More... | |
Variables | |
| const uint8_t | MX28_MAX_VELOCITY = 117 |
| const uint8_t | MX28_DEFAULT_BAUD_RATE = 0x22 |
| const uint16_t | MX28_DEFAULT_CCW_ANGLE_LIMIT = 0x0FFF |
| const uint8_t | MX28_DEFAULT_HIGHEST_VOLTAGE_LIMIT = 0xA0 |
| const uint8_t | MX28_DEFAULT_D_GAIN = 0x08 |
| const uint8_t | MX28_DEFAULT_I_GAIN = 0x00 |
| const uint8_t | MX28_DEFAULT_P_GAIN = 0x08 |
| const uint16_t | MX28_DEFAULT_PUNCH = 0x0000 |
This file implements MX28-specific functions.
Definition in file MX28.c.
| #define MX28_REG_GOAL_ACCELERATION 0x49 |
| #define MX28_REG_MULTI_TURN_OFFSET 0x14 |


| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
GDB needs to know the file name of the program to be debugged, both in order to read its symbol table and in order to start your program. To debug a core dump of a previous run, you must also tell GDB the name of the core dump file.
15.1 Commands to Specify Files Commands to specify files 15.2 Debugging Information in Separate Files Debugging information in separate files 15.3 Errors Reading Symbol Files Errors reading symbol files
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
You may want to specify executable and core dump file names. The usual way to do this is at start-up time, using the arguments to GDB's start-up commands (see section Getting In and Out of GDB).
Occasionally it is necessary to change to a different file during a
GDB session. Or you may run GDB and forget to
specify a file you want to use. Or you are debugging a remote target
via gdbserver
(see section Using the gdbserver
Program). In these situations the GDB commands to specify
new files are useful.
file filename
run
command. If you do not specify a
directory and the file is not found in the GDB working directory,
GDB uses the environment variable PATH
as a list of
directories to search, just as the shell does when looking for a program
to run. You can change the value of this variable, for both GDB
and your program, using the path
command.
You can load unlinked object `.o' files into GDB using
the file
command. You will not be able to "run" an object
file, but you can disassemble functions and inspect variables. Also,
if the underlying BFD functionality supports it, you could use
gdb -write to patch object files using this technique. Note
that GDB can neither interpret nor modify relocations in this
case, so branches and some initialized variables will appear to go to
the wrong place. But this feature is still handy from time to time.
file
file
with no argument makes GDB discard any information it
has on both executable file and the symbol table.
exec-file [ filename ]
PATH
if necessary to locate your program. Omitting filename means to
discard information on the executable file.
symbol-file [ filename ]
PATH
is
searched when necessary. Use the file
command to get both symbol
table and program to run from the same file.
symbol-file
with no argument clears out GDB information on your
program's symbol table.
The symbol-file
command causes GDB to forget the contents of
some breakpoints and auto-display expressions. This is because they may
contain pointers to the internal data recording symbols and data types,
which are part of the old symbol table data being discarded inside
GDB.
symbol-file
does not repeat if you press RET again after
executing it once.
When GDB is configured for a particular environment, it
understands debugging information in whatever format is the standard
generated for that environment; you may use either a GNU compiler, or
other compilers that adhere to the local conventions.
Best results are usually obtained from GNU compilers; for example,
using GCC
you can generate debugging information for
optimized code.
For most kinds of object files, with the exception of old SVR3 systems
using COFF, the symbol-file
command does not normally read the
symbol table in full right away. Instead, it scans the symbol table
quickly to find which source files and which symbols are present. The
details are read later, one source file at a time, as they are needed.
The purpose of this two-stage reading strategy is to make GDB
start up faster. For the most part, it is invisible except for
occasional pauses while the symbol table details for a particular source
file are being read. (The set verbose
command can turn these
pauses into messages if desired. See section Optional Warnings and Messages.)
We have not implemented the two-stage strategy for COFF yet. When the
symbol table is stored in COFF format, symbol-file
reads the
symbol table data in full right away. Note that "stabs-in-COFF"
still does the two-stage strategy, since the debug info is actually
in stabs format.
symbol-file filename [ -readnow ]
file filename [ -readnow ]
core-file [filename]
core
core-file
with no argument specifies that no core file is
to be used.
Note that the core file is ignored when your program is actually running
under GDB. So, if you have been running your program and you
wish to debug a core file instead, you must kill the subprocess in which
the program is running. To do this, use the kill
command
(see section Killing the Child Process).
add-symbol-file filename address
add-symbol-file filename address [ -readnow ]
add-symbol-file filename -ssection address ...
add-symbol-file
command reads additional symbol table
information from the file filename. You would use this command
when filename has been dynamically loaded (by some other means)
into the program that is running. address should be the memory
address at which the file has been loaded; GDB cannot figure
this out for itself. You can additionally specify an arbitrary number
of `-ssection address' pairs, to give an explicit
section name and base address for that section. You can specify any
address as an expression.
The symbol table of the file filename is added to the symbol table
originally read with the symbol-file
command. You can use the
add-symbol-file
command any number of times; the new symbol data
thus read keeps adding to the old. To discard all old symbol data
instead, use the symbol-file
command without any arguments.
Although filename is typically a shared library file, an executable file, or some other object file which has been fully relocated for loading into a process, you can also load symbolic information from relocatable `.o' files, as long as:
add-symbol-file
command.
Some embedded operating systems, like Sun Chorus and VxWorks, can load
relocatable files into an already running program; such systems
typically make the requirements above easy to meet. However, it's
important to recognize that many native systems use complex link
procedures (.linkonce
section factoring and C++ constructor table
assembly, for example) that make the requirements difficult to meet. In
general, one cannot assume that using add-symbol-file
to read a
relocatable object file's symbolic information will have the same effect
as linking the relocatable object file into the program in the normal
way.
add-symbol-file
does not repeat if you press RET after using it.
add-symbol-file-from-memory address
syscall DSO
into each
process's address space; this DSO provides kernel-specific code for
some system calls. The argument can be any expression whose
evaluation yields the address of the file's shared object file header.
For this command to work, you must have used symbol-file
or
exec-file
commands in advance.
add-shared-symbol-files library-file
assf library-file
add-shared-symbol-files
command can currently be used only
in the Cygwin build of GDB on MS-Windows OS, where it is an
alias for the dll-symbols
command (see section 18.1.5 Features for Debugging MS Windows PE Executables).
GDB automatically looks for shared libraries, however if
GDB does not find yours, you can invoke
add-shared-symbol-files
. It takes one argument: the shared
library's file name. assf
is a shorthand alias for
add-shared-symbol-files
.
section section addr
section
command changes the base address of the named
section of the exec file to addr. This can be used if the
exec file does not contain section addresses, (such as in the
a.out
format), or when the addresses specified in the file
itself are wrong. Each section must be changed separately. The
info files
command, described below, lists all the sections and
their addresses.
info files
info target
info files
and info target
are synonymous; both print the
current target (see section Specifying a Debugging Target),
including the names of the executable and core dump files currently in
use by GDB, and the files from which symbols were loaded. The
command help target
lists all possible targets rather than
current ones.
maint info sections
maint info sections
. In addition to the section information
displayed by info files
, this command displays the flags and file
offset of each section in the executable and core dump files. In addition,
maint info sections
provides the following command options (which
may be arbitrarily combined):
ALLOBJ
sections
section-flags
ALLOC
LOAD
.bss
sections.
RELOC
READONLY
CODE
DATA
ROM
CONSTRUCTOR
HAS_CONTENTS
NEVER_LOAD
COFF_SHARED_LIBRARY
IS_COMMON
set trust-readonly-sections on
The default is off.
set trust-readonly-sections off
show trust-readonly-sections
All file-specifying commands allow both absolute and relative file names as arguments. GDB always converts the file name to an absolute file name and remembers it that way.
GDB supports GNU/Linux, MS-Windows, HP-UX, SunOS, SVr4, Irix, and IBM RS/6000 AIX shared libraries.
On MS-Windows GDB must be linked with the Expat library to support shared libraries. See Expat.
GDB automatically loads symbol definitions from shared libraries
when you use the run
command, or when you examine a core file.
(Before you issue the run
command, GDB does not understand
references to a function in a shared library, however--unless you are
debugging a core file).
On HP-UX, if the program loads a library explicitly, GDB
automatically loads the symbols at the time of the shl_load
call.
There are times, however, when you may wish to not automatically load symbol definitions from shared libraries, such as when they are particularly large or there are many of them.
To control the automatic loading of shared library symbols, use the commands:
set auto-solib-add mode
on
, symbols from all shared object libraries
will be loaded automatically when the inferior begins execution, you
attach to an independently started inferior, or when the dynamic linker
informs GDB that a new library has been loaded. If mode
is off
, symbols must be loaded manually, using the
sharedlibrary
command. The default value is on
.
If your program uses lots of shared libraries with debug info that takes large amounts of memory, you can decrease the GDB memory footprint by preventing it from automatically loading the symbols from shared libraries. To that end, type set auto-solib-add off before running the inferior, then load each library whose debug symbols you do need with sharedlibrary regexp, where regexp is a regular expression that matches the libraries whose symbols you want to be loaded.
show auto-solib-add
To explicitly load shared library symbols, use the sharedlibrary
command:
info share
info sharedlibrary
sharedlibrary regex
share regex
run
. If
regex is omitted all shared libraries required by your program are
loaded.
nosharedlibrary
Sometimes you may wish that GDB stops and gives you control
when any of shared library events happen. Use the set
stop-on-solib-events
command for this:
set stop-on-solib-events
show stop-on-solib-events
Shared libraries are also supported in many cross or remote debugging configurations. A copy of the target's libraries need to be present on the host system; they need to be the same as the target libraries, although the copies on the target can be stripped as long as the copies on the host are not.
For remote debugging, you need to tell GDB where the target libraries are, so that it can load the correct copies--otherwise, it may try to load the host's libraries. GDB has two variables to specify the search directories for target libraries.
set sysroot path
set sysroot
to find shared
libraries, they need to be laid out in the same way that they are on
the target, with e.g. a `/lib' and `/usr/lib' hierarchy
under path.
The set solib-absolute-prefix
command is an alias for set
sysroot
.
You can set the default system root by using the configure-time `--with-sysroot' option. If the system root is inside GDB's configured binary prefix (set with `--prefix' or `--exec-prefix'), then the default system root will be updated automatically if the installed GDB is moved to a new location.
show sysroot
set solib-search-path path
show solib-search-path
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
GDB allows you to put a program's debugging information in a file separate from the executable itself, in a way that allows GDB to find and load the debugging information automatically. Since debugging information can be very large--sometimes larger than the executable code itself--some systems distribute debugging information for their executables in separate files, which users can install only when they need to debug a problem.
GDB supports two ways of specifying the separate debug info file:
Depending on the way the debug info file is specified, GDB uses two different methods of looking for the debug file:
So, for example, suppose you ask GDB to debug
`/usr/bin/ls', which has a debug link that specifies the
file `ls.debug', and a build ID whose value in hex is
abcdef1234
. If the global debug directory is
`/usr/lib/debug', then GDB will look for the following
debug information files, in the indicated order:
You can set the global debugging info directory's name, and view the name GDB is currently using.
set debug-file-directory directory
show debug-file-directory
A debug link is a special section of the executable file named
.gnu_debuglink
. The section must contain:
Any executable file format can carry a debug link, as long as it can
contain a section named .gnu_debuglink
with the contents
described above.
The build ID is a special section in the executable file (and in other
ELF binary files that GDB may consider). This section is
often named .note.gnu.build-id
, but that name is not mandatory.
It contains unique identification for the built files--the ID remains
the same across multiple builds of the same build tree. The default
algorithm SHA1 produces 160 bits (40 hexadecimal characters) of the
content for the build ID string. The same section with an identical
value is present in the original built binary with symbols, in its
stripped variant, and in the separate debugging information file.
The debugging information file itself should be an ordinary
executable, containing a full set of linker symbols, sections, and
debugging information. The sections of the debugging information file
should have the same names, addresses, and sizes as the original file,
but they need not contain any data--much like a .bss
section
in an ordinary executable.
The GNU binary utilities (Binutils) package includes the `objcopy' utility that can produce the separated executable / debugging information file pairs using the following commands:
objcopy --only-keep-debug foo foo.debug strip -g foo |
These commands remove the debugging information from the executable file `foo' and place it in the file `foo.debug'. You can use the first, second or both methods to link the two files:
objcopy --add-gnu-debuglink=foo.debug foo |
Ulrich Drepper's `elfutils' package, starting with version 0.53, contains
a version of the strip
command such that the command strip foo -f
foo.debug has the same functionality as the two objcopy
commands and
the ln -s
command above, together.
ld --build-id
or
the GCC counterpart gcc -Wl,--build-id
. Build ID support plus
compatibility fixes for debug files separation are present in GNU binary
utilities (Binutils) package since version 2.18.
Since there are many different ways to compute CRC's for the debug
link (different polynomials, reversals, byte ordering, etc.), the
simplest way to describe the CRC used in .gnu_debuglink
sections is to give the complete code for a function that computes it:
unsigned long gnu_debuglink_crc32 (unsigned long crc, unsigned char *buf, size_t len) { static const unsigned long crc32_table[256] = { 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d }; unsigned char *end; crc = ~crc & 0xffffffff; for (end = buf + len; buf < end; ++buf) crc = crc32_table[(crc ^ *buf) & 0xff] ^ (crc >> 8); return ~crc & 0xffffffff; } |
This computation does not apply to the "build ID" method.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
While reading a symbol file, GDB occasionally encounters problems,
such as symbol types it does not recognize, or known bugs in compiler
output. By default, GDB does not notify you of such problems, since
they are relatively common and primarily of interest to people
debugging compilers. If you are interested in seeing information
about ill-constructed symbol tables, you can either ask GDB to print
only one message about each such type of problem, no matter how many
times the problem occurs; or you can ask GDB to print more messages,
to see how many times the problems occur, with the set
complaints
command (see section Optional Warnings and Messages).
The messages currently printed, and their meanings, include:
inner block not inside outer block in symbol
The symbol information shows where symbol scopes begin and end (such as at the start of a function or a block of statements). This error indicates that an inner scope block is not fully contained in its outer scope blocks.
GDB circumvents the problem by treating the inner block as if it had
the same scope as the outer block. In the error message, symbol
may be shown as "(don't know)
" if the outer block is not a
function.
block at address out of order
The symbol information for symbol scope blocks should occur in order of increasing addresses. This error indicates that it does not do so.
GDB does not circumvent this problem, and has trouble
locating symbols in the source file whose symbols it is reading. (You
can often determine what source file is affected by specifying
set verbose on
. See section Optional Warnings and Messages.)
bad block start address patched
The symbol information for a symbol scope block has a start address smaller than the address of the preceding source line. This is known to occur in the SunOS 4.1.1 (and earlier) C compiler.
GDB circumvents the problem by treating the symbol scope block as starting on the previous source line.
bad string table offset in symbol n
Symbol number n contains a pointer into the string table which is larger than the size of the string table.
GDB circumvents the problem by considering the symbol to have the
name foo
, which may cause other problems if many symbols end up
with this name.
unknown symbol type 0xnn
The symbol information contains new data types that GDB does
not yet know how to read. 0xnn
is the symbol type of the
uncomprehended information, in hexadecimal.
GDB circumvents the error by ignoring this symbol information.
This usually allows you to debug your program, though certain symbols
are not accessible. If you encounter such a problem and feel like
debugging it, you can debug gdb
with itself, breakpoint
on complain
, then go up to the function read_dbx_symtab
and examine *bufp
to see the symbol.
stub type has NULL name
GDB could not find the full definition for a struct or class.
const/volatile indicator missing (ok if using g++ v1.x), got...
info mismatch between compiler and debugger
GDB could not parse a type specification output by the compiler.
| [ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Please send FSF & GNU inquiries & questions to<EMAIL_ADDRESS>There are also other ways to contact the FSF.
These pages are maintained by the GDB developers.
Copyright Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.
This document was generated by GDB Administrator on March, 27 2008 using texi2html


Level 1 Information Gathering
(think: Compliance Driven) Mainly a click-button information gathering process. This level of information can be obtained almost entirely by automated tools. Bare minimum to say you did IG for a PT.
Acme Corporation is required to be compliant with PCI / FISMA / HIPAA. A Level 1 information gathering effort should be appropriate to meet the compliance requirement.


Jacob Ian MatthewsI am a professional software developer who loves making web applications! I like to bring business ideas to life and I plan on starting my own Software-as-a-service company in the Financial Technology (FinTech) industry. I am also a multi-instrumentalist musician, an avid investor and reader, a follower of Stoicism, and a coffee enthusiast!


Preparation time
over 2 hours
Cooking time
30 mins to 1 hour
Serves
Serves 4
Homemade pretzels taste wonderful. Top with corned beef hash and poached eggs for a truly original breakfast.
For the pretzels, in a large bowl, whisk together the warm water and yeast until the yeast has dissolved. Stir in 500g/1lb 1½oz of the flour (the mixture should form quite a loose batter). Cover with cling film or a damp tea towel and set aside in a warm place for a few hours, or until the batter has almost doubled in size and the surface is covered with air bubbles.
Place the remaining flour into the bowl of an electric stand mixer. Add the salt and sugar, then add the olive oil and tip in the risen pretzel batter. Using the dough hook attachment, work the mixture for 6-7 minutes over a slow speed, until it comes together to form a smooth dough that comes away cleanly from the sides of the bowl. Turn the dough out onto a floured work surface. (Alternatively, if you do not have a stand mixer, knead the ingredients together on a floured work surface until smooth and elastic.)
Roll the dough out into a sausage shape about 2cm/1in thick. Form the dough into a large pretzel shape and pinch the ends together to secure. Place onto a greased baking tray. Cover and set aside to rise in a warm place for 30 minutes or so.
Preheat the oven to 220C/430F/Gas 7.
To finish the pretzel, mix the beaten egg with the water and brush the mixture over each pretzel. Sprinkle the pretzel with your preferred topping of salt flakes, poppy seeds or sesame seeds.
Bake the pretzel in the oven for 30 minutes, or until golden-brown and cooked through.
For the corned beef hash, melt the butter in a frying pan until foaming and gently fry the onion for 2-3 minutes, or until softened.
Add the potatoes and the corned beef and fry for 5-6 minutes, pressing down the mixture every so often with a fish slice, until the mixture is golden-brown and crisp.
When the corned beef hash is cooked, remove the pan from the heat, sprinkle over the Worcestershire sauce and parsley and season to taste with sea salt and freshly ground black pepper.
For the poached eggs, pour enough water into a large deep pan so that it is two-thirds full. Bring to the boil.
Place the eggs, still in their shells, into the boiling water for 20 seconds, then remove with a slotted spoon.
Add a splash of white wine vinegar to the pan, then swirl the water gently to create a whirlpool effect. Crack one egg into the centre of the whirlpool and poach for 2-3 minutes, or until the egg is cooked to your liking. Remove from the pan with a slotted spoon and set aside to drain on kitchen paper. Keep warm. Repeat the process with the remaining eggs.
To serve, spoon the corned beef hash onto four serving plates and top each with a poached egg. Break the large pretzel into four pieces to serve.


NOTHING TO LOSE (1997) STARS TIM ROBBINS AND MARTIN LAWRENCE A TOUCHSTONE RELEASE A REVIEW BY DAVID WILCOCK (C)1997 DAVID WILCOCK
Tim Robbins and Martin Lawernce team up in this road movie comedy.  He goes into depression, and drives around his neighbourhood until he arrives inside the usual 'ghetto' side of every American city. There, Lawernce attempts to steal his car, but to no avail, and is dragged along with Robbin's on a trip to Arizona. There, they hold up a store, are mistaken for two other robbers (just like in My Cousin Vinny) and are chased by the police, and the other robbers. Of course, there's gags along the way, usually from Lawernce.
Although the film is midly funny, and quite watchable, there's something so horribly familiar about it all. This film should really be called Beverly Hills Midnight Run There's Lawernce with his wisecracking and heavy profanity, just like Eddie Murphy in Beverly Hills Cop, and pratically the same idea as Midnight Run. It's full of all the road movie cliches, and even has a 'comedy' car chase, which just seemed so eighties. Even the credit sequence seemed to be out of a Steve Martin, or Chevy Chase, eighties comedy.
There also isn't much chemistry between Robbins and Lawernce. In PLANES, TRAINS AND AUTOMOBILES, there was real chemistry between Steve Martin and John Candy. In NOTHING TO LOSE, there is hardly chemistry at all. Towards the end the chemistry seems to work, but for the bulk of the film, there is hardly any,
The director directs the film in a workman like fashion, but gets the jokes across. And although there is no chemistry between the two leads, they give good performances on their own. Lawerence gives a good Eddie Murphy performance, and Robbin's is alright aswell. However, Robbin's performance is nowhere near as good as the characters he played in JACOB'S LADDER, and THE PLAYER. In fact, if you want to see Robbin's do comedy much better than in NOTHING TO LOSE, I suggest you rent out THE HUDSUCKER PROXY, where he is much funnier.
NOTHING TO LOSE does have some funny moments in it, however. The humour isn't particulary sophisticated, but if you enojyed DUMB & DUMBER, you might enjoy this. The characters in Arizona are funny, and there's also a good scene where Robbin's asks a shopkeeper which 'threatening approach' was better, Lawerences (which consisted of Lawerence threatening to shoot the shopkeeper's ass, and swearing a lot), or himselfs, (which was speaking in a deep, scary voice) But the gags are predictable, the lack of chemistry infurating, and the ending too far-fetched and 'perfect'
NOTHING TO LOSE then, is Robbin's first 'bad' movie (and hopefully his last), and suggests that Odereick should twice before making another film. He nearly ruined Carrey's career with ACE VENTURA: WHEN NATURE CALLS, let's hope he hasn't ruined Robbin's (or even Lawerence's) with NOTHING TO LOSE.
Overall Rating=** out of *****
Review By David Wilcock
DAVID WILCOCK<EMAIL_ADDRESS>Visit the Wilcock Movie Page! http://wilcockmovie.home.ml.org -OR- http://www.geocities.com/hollywood/9061
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


We aggregate methodologies!
- envisioneer wireless niches
- recontextualize mission-critical deliverables
- architect viral niches
- envisioneer world-class paradigms
- utilize virtual bandwidth
- innovate sticky paradigms
- drive front-end content
- mesh 24/365 ROI
- disintermediate customized users


The PyObjC package provides the glue needed to interface the Python interpreter
with the Objective-C language. At its core is the objc
module makes
Objective-C objects and classes available as first-class Python citizens. It is
not only possible to use Objective-C objects but you can also subclass
Objective-C classes.
To make it easier to use the core objc
module, this package also provides
a number of modules that are wrappers for the Cocoa frameworks, such as
Foundation and AppKit. These modules not only give you access to the classes in
these frameworks but also to the functions and constants in those modules.
To install this package double-click on PyObjC.pkg
. This will install the
PyObjC python package and some Project Builder templates. The documentation
and examples are found in the folder PyObjC Documentation and Examples
.
Install these by dragging this folder to you disk, /Library/Documentation
is a suitable location.
NOTE: This installer package is for Mac OS X 10.2 with the Python 2.2 supplied
by Apple. There is a seperate installer for Mac OS X 10.3. If you use
MacPython 2.3 on Mac OS X 10.2 you should use the Package Manager
application to install PyObjC. In other situation you can install PyObjC from
the source archive.


This particular encoding method takes the previous encodings and puts them all together, while adding a few tricks. It
starts with the data URI method (Fig. 15)
Upon base64 decoding this we are presented with some a hex-encoded string
Upon escaping the hex characters we are presented with the flipped base64 encoding method.
Upon flipping and base64 decoding, we are presented with a nested dean edwards JavaScript packer. This packer is very popular and easily decoded. Websites like http://jsbeautifier.org/ or tools like JSDetox (http://www.relentless-coding.org/projects/jsdetox) have no problem decoding it
After the second round of unpacking, the code is starting to emerge:
The last step to make it readable is to decode the URL encoding. Finally, we have the normalized phishing landing page


Won’t get fooled again
Funded by rich brothers
Behind them...?
Drizzly McAdams
Black man on porch eating peanuts
Vassily Smyslov
What Masie knew


Menu Demo
Active State
The active/current page should always have the class "active" attached to its menu link. It will appear darker than the other links. Alternatively, you can specify a different css selector to apply the active state. In Drupal 8 all the links use the "is-active" class, so you would use the active-selector attribute to change which element gets the darker styling. Note that this is a css selector, not a class name, so if you're using a class name you'll need to prefix it with a '.'
Six Links
Dropdown Menus
This version of the byu-menu
does not restrict the usage of dropdown menus. Though, because
these elements would be in the light DOM, we do not style them with the provided package of components. It
is up to the end user to style them in a way compliant with the BYU brand
standards.
The following code is an example of a dropdown menu with our components. This code is a proof-of-concept and not accessible or mobile friendly. Do not copy this code without the appropriate edits.
This is the CSS we've included on this page to make the dropdown function. This example required no Javascript.
.dropdown {
position: relative;
display: inline-block;
z-index: 10;
}
.dropdown-btn {
border: none;
color: #002E5D;
background-color: white;
font-family: 'HCo Ringside Narrow SSm', Arial, sans-serif;
font-size: 16px;
height: 32px;
}
.dropdown-btn:hover {
background-color: #e6e6e6;
}
.dropdown-child {
display: none;
min-width: 200px;
position: absolute;
background-color: white;
box-shadow: 0 4px 8px #c5c5c5;
}
.dropdown-child a {
color: #002e5d;
font-size: 16px;
padding: 12px;
text-decoration: none;
display: block;
}
.dropdown-child a:hover {
background-color: #e6e6e6;
}
.dropdown:hover .dropdown-child {
display: block;
background-color: white;
}


To get started, simply type in a URL with (http or https) and hit [Enter] or click "Add To Blacklist". Once you make an update to your tab, the program will start working.


{{location.name}} Phone: {{location.phone}} Rating: {{location.review_count}} Reviews {{ location.visitors }} Visitors tonight {{ location.visitors }} Going


Recent Projects {% for project in collections.projects.slice(0,3) %} {{projectSnippet(project, console)}} {% endfor %} View All Projects →


I help businesses and projects turn their ideas into
SOLUTIONS
I'm a Fullstack developer with a passion for solving problems and the environment. I combine the magic of backend's and creativity of user experinces on the frontend to build solutions
My goal is to help companies and projects reach their full potenial with the implementaion of technology and inovation
My arsenal :
I look forward to sharing my passion, creativity and dedication to the vision
Lets build something together!


Find the weather
Do you want to know the weather forecast for the specific location? Then fill out the form below
The weather form
Trouver ma météo 🌤
Your search results


--- layout: default title: Mission 1 ---
Induction routemap
Getting your IT set up
Tips for setting your objectives
Objectives template
Making the most of your network
Requesting informal feedback
Finding a mentor
The Careers portal