|
DHT22Gen3_RK
|
Class for encapsulating the results to a call to getSample() More...
#include <DHT22Gen3_RK.h>
Public Types | |
| enum | SampleResult { SampleResult::SUCCESS = 0, SampleResult::ERROR, SampleResult::TOO_MANY_RETRIES, SampleResult::BUSY } |
| Enumeration for result codes from the getSample() request. More... | |
Public Member Functions | |
| DHTSample () | |
| Constructor. More... | |
| virtual | ~DHTSample () |
| Destructor. | |
| void | clear () |
| Clears the results. More... | |
| bool | isValidChecksum () const |
| Returns true if the checksum in bytes is valid. More... | |
| float | getTempC () const |
| Gets the temperature in degrees Celsius. More... | |
| float | getTempF () const |
| Gets the temperature in degrees Fahrenheit. | |
| float | getHumidity () const |
| Gets the humidity in percent RH (0-100) as a floating point number. More... | |
| float | getDewPointC () const |
| Gets the dew point in degrees Celsius. More... | |
| float | getDewPointF () const |
| Gets the dew point in degrees Fahrenheit. More... | |
| SampleResult | getSampleResult () const |
| Gets the sample result value (0 = success, non-zero = error) More... | |
| int | getTries () const |
| Gets the number of retries. More... | |
| DHTSample & | withSuccess () |
| Sets the sample result to SUCCESS. | |
| bool | isSuccess () const |
| Returns true if getSample() was successful. More... | |
| DHTSample & | withBusy () |
| Sets the sample result to BUSY. | |
| bool | isBusy () const |
| Returns true if getSample() failed because another call was in progress. | |
| DHTSample & | withError () |
| Sets the sample result to ERROR. | |
| bool | isError () const |
| Returns true if getSample() failed because of an internal error. | |
| DHTSample & | withTooManyRetries () |
| Sets the sample result to TOO_MANY_RETRIES. | |
| bool | isTooManyRetries () const |
| Returns true if getSample() failed because a valid result was not obtained in the maximum number of retries. | |
| DHTSample & | withSensorType (DHTSensorType *sensorType) |
| Sets the data format of bytes. | |
| uint8_t | operator[] (size_t index) const |
| Get a byte from the bytes array. | |
Protected Attributes | |
| SampleResult | sampleResult = SampleResult::ERROR |
| Result code. 0 is success, error are non-zero. | |
| DHTSensorType * | sensorType = 0 |
| Sensor type for this sample. | |
| uint8_t | bytes [5] = {0} |
| Raw bytes of data from DHT22. | |
| int | tries = 0 |
| Number of retries. Normally 1 for the initial try, will be greater for retries. | |
Friends | |
| class | DHT22Gen3 |
Class for encapsulating the results to a call to getSample()
|
strong |
Enumeration for result codes from the getSample() request.
Success is 0. All other codes are errors
| DHTSample::DHTSample | ( | ) |
Constructor.
You normally don't need to construct one of these; it's filled in for you by getSample()
| void DHTSample::clear | ( | ) |
Clears the results.
Sets the result to ERROR, zeros the bytes, sets tries to 0
| float DHTSample::getDewPointC | ( | ) | const |
Gets the dew point in degrees Celsius.
The value is undefined is isSuccess() is not true. You you check that before relying on this value.
| float DHTSample::getDewPointF | ( | ) | const |
Gets the dew point in degrees Fahrenheit.
The value is undefined is isSuccess() is not true. You you check that before relying on this value.
| float DHTSample::getHumidity | ( | ) | const |
Gets the humidity in percent RH (0-100) as a floating point number.
The value is undefined is isSuccess() is not true. You you check that before relying on this value.
|
inline |
Gets the sample result value (0 = success, non-zero = error)
You may want to use isSuccess(), isBusy(), isError(), or isTooManyRetries() instead.
| float DHTSample::getTempC | ( | ) | const |
Gets the temperature in degrees Celsius.
The value is undefined is isSuccess() is not true. You you check that before relying on this value.
|
inline |
Gets the number of retries.
|
inline |
Returns true if getSample() was successful.
The call completed successfully and the checksum passed. The temperature and humidity values should be valid.
| bool DHTSample::isValidChecksum | ( | ) | const |
Returns true if the checksum in bytes is valid.
You normally should check isSuccess() since that will only be set if the checksum is valid and normally don't need to call this directly.


View Job Filters plugin uses a Match Type to allow you to chain together as many filters as you like. This is extremely useful, but needs to be used properly.
The Match Types
The match types are named and described in an attempt to make it intuitive as to what they are doing. The key to understanding them is that they are meant to be chained together. In other words, the order is significant, and each filter will either "include" (i.e. add) or "exclude" (i.e. filter out, or take away) from the current accumulated filter, depending on which match type you use.
- Include Matched - Add jobs that match this filter
- Include Unmatched - Add jobs that don't match this filter
- Exclude Matched - Filter out jobs that match this filter
- Exclude Unmatched - Filter out jobs that don't match this filter
Example - All nightly test jobs
This example will create a view with all Test jobs that are run at night. It counts on a job naming convention, as well as a convention of putting a descriptive comment in the SCM polling schedule. The following filters can be interpreted as "show all 'Test' jobs but only if they also are 'nightly'".
Filter 1 - Regular Expression Job Filter
- Regular Expression - .*Test.*
- Match Value - Job name
- Match Type - Include Matched - Add jobs that match this filter
Filter 2 - Regular Expression Job Filter
- Regular Expression - .*nightly.*
- Match Value - Job schedule
- Match Type - Exclude Unmatched - Filter out jobs that don't match this filter


Imagined User
Computerless People
Chapters
IMAGINED USER
DIGITAL FOLKLORE
SURF SHIFT
COMPUTERLESS PEOPLE
ENTITIES ARCHIPELAGOES
POST-PRESENT


History of Pat's Salmon Cookies
Well, the way they make shows is, they make one show. That show's called a pilot. Then they show that show to the people who make shows, and on the strength of that one show they decide if they're going to make more shows. Some pilots get picked and become television programs. Some don't, become nothing. She starred in one of the ones that became nothing.  But I can't give you this case, it don't belong to me.
Paris
open Sunday - Thursday from 6am - 7pm.
Lima
open Sunday - Thursday from 6am -7pm.
Tokyo
open Sunday - Thursday from 6am - 7pm.
Dubai
open Sunday - Thursday from 6am - 7pm.


LATEST HEADLINES
Trump Raged at Abbas in Meeting: 'You Lied To Me'
Was 'Sgt. Pepper's' Really the First Concept Album?
How the U.K. Allowed a Nigerian Warlord to Get Warships
Trump and JFK Are More Alike Than We Like to Think
The Enduring Legacy of John F. Kennedy
Active/Negative Trump Is Doomed to Follow Nixon
U.S
DEMS CALL FOR JARED KUSHNER TO LOSE SECURITY CLEARANCE
Donald Trump's son-in-law met with Russian figures ahead of the inauguration, leading the FBI to look into the meetings.
Trump Calls White House Kushner Leaks 'Fake News'
WORLD
Trump Responds to Portland Stabbing Amid Outcry
Trump tweeted from his official presidential account on Monday.
FBI: Maryland University Killing is Possible Hate Crime
WORLD
North Korea Fires Ballistic Missile Toward Japan
It was the third ballistic missile test-launch since South Korea's liberal President Moon Jae-in took office on May 10.
U.S
Middle Schoolers Refuse Photo with Paul Ryan
The House speaker found 100 students would rather stand in a parking lot than pose for a picture with him.
SPYTALK
Donald Trump and the Agony of H.R. McMaster
Trump’s national security adviser is being hit hard by left, right and center for his White House performance
WORLD
Mattis Warns of 'Catastrophic' North Korea War
Defense Secretary James Mattis said North Korea already posed a "direct threat" to the United States.


Services
$history
Methods:
go(relativeIndex)
- Goes back/forward in history
Properties:
urlStack
- Array of objects, one for every entry in the history. Every entry has a
url
property.
activeIndex
- The index in
urlStack
of the current history index
previousIndex
- The previous index in
urlStack
. Useful to detect the browser back button.
jqmViewCache
This is a cache created by angular's cacheFactory
and stores all cached views.
It can be used to evict cached views on demand.
For the api see cacheFactory
.


Installing PyDoA
¶
Requirements¶
This package has the following dependencies:
Installation¶
You can install PyDoA using pip:
pip install pydoa
To install the latest developer version of PyDoA you can type:
git clone https://github.com/pankajchejara23/pydoa.git
cd pydoa
python setup.py install
You may need to add the --user
option to the last line if you do not
have root access.
You can also install the latest developer version in a single line with pip:
pip install git+https://github.com/pankajchejara23/pydoa.git


Topics
Video Tutorials
Slides
Links
Computer Networking
Reachable Link found in
Medium violet Red Color Button
Not Reachable Link found in
Crimson Color Button
Overview of the Internet
Overview of Networking Protocols
Network Edge
Network Core
Protocol Layers / Service Model
Application Layer
Web and HTTP
FTP, E-mail and DNS
Circuit Switching VS Packet Switching
Recursive query vs iterative query
CSMA/CD - Carrier Sense Multiple Access with Collision Detection
CSMA/CA - Wireless Medium Access Control Protocol
OSI Model
Data Encapsulation & De-encapsulation
TCP vs UDP
How TCP starts and close session
Binary to Decimal (IPv.4 conversion)
Tricks to five classes of IPv4
Bandwidth, throughput, and speed
TDM, Statistical TDM & FDM
Simplex, half duplex, and full duplex
Three-way Handshake
Transport Layer: Transport Layer Services
Multiplexing and De multiplexing
Connectionless Transport: UDP
UDP and TCP: Comparison of Transport Protocols
Principles of Reliable Data Transport
Connection-Oriented Transport: TCP
Principles of Congestion Control
TCP Congestion Control
Network Layer: Datagram Networks
Inside a Router
Details of the Internet Protocol (IP)
IP Sub netting
Routing Algorithms (Link State, Distance Vector)
Routing in the Internet (Routing Information Protocol (RIP)
Open Shortest Path First (OSPF)
Border Gateway Protocol (BGP))


Posts
NASA Acceptance
CHAOSS - Augur: Pipermail Part 2
CHAOSS - Augur: Pipermail Part 1
CHAOSS - Augur: SentiCR
GSoC Week 14: Opening New Doors
GSoC Week 13: Time to reconnect
GSoC Week 12: Stay up to date
GSoC Week 11: Let's take a moment
GSoC Week 10: Could you not?
Kaggle: Digit Recognition
GSoC Week 9: Oh you like drawing?
GSoC Week 8: What about the future?
GSoC Week 7: Wasn't that kind of negative?
GSoC Week 6: I need some space
GSoC Week 5: Lots of messages
First!!! GSoC Week 4!!!
subscribe via RSS


Package org.lwjgl.opengl
Class WGL
- java.lang.Object
-
- org.lwjgl.opengl.WGL
-
public class WGL extends java.lang.Object
Native bindings to WGL functionality.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class and Description static class
WGL.Functions
Contains the function pointers loaded fromGL.getFunctionProvider()
.
-
Field Summary
Fields Modifier and Type Field and Description static int
WGL_FONT_LINES
WGL_FONT_POLYGONSUseFontOutlines format.static int
WGL_SWAP_MAIN_PLANE
WGL_SWAP_OVERLAY1
WGL_SWAP_OVERLAY10
WGL_SWAP_OVERLAY11
WGL_SWAP_OVERLAY12
WGL_SWAP_OVERLAY13
WGL_SWAP_OVERLAY14
WGL_SWAP_OVERLAY15
WGL_SWAP_OVERLAY2
WGL_SWAP_OVERLAY3
WGL_SWAP_OVERLAY4
WGL_SWAP_OVERLAY5
WGL_SWAP_OVERLAY6
WGL_SWAP_OVERLAY7
WGL_SWAP_OVERLAY8
WGL_SWAP_OVERLAY9
WGL_SWAP_UNDERLAY1
WGL_SWAP_UNDERLAY10
WGL_SWAP_UNDERLAY11
WGL_SWAP_UNDERLAY12
WGL_SWAP_UNDERLAY13
WGL_SWAP_UNDERLAY14
WGL_SWAP_UNDERLAY15
WGL_SWAP_UNDERLAY2
WGL_SWAP_UNDERLAY3
WGL_SWAP_UNDERLAY4
WGL_SWAP_UNDERLAY5
WGL_SWAP_UNDERLAY6
WGL_SWAP_UNDERLAY7
WGL_SWAP_UNDERLAY8
WGL_SWAP_UNDERLAY9SwapLayerBuffers flags.
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method and Description static boolean
wglCopyContext(long src, long dst, int mask)
Copies selected groups of rendering states from one OpenGL rendering context to another.static long
wglCreateContext(long hdc)
Creates a new OpenGL rendering context, which is suitable for drawing on the device referenced by device.static long
wglCreateLayerContext(long hdc, int layerPlane)
Creates a new OpenGL rendering context for drawing to a specified layer plane on a device context.static boolean
wglDeleteContext(long context)
Deletes a specified OpenGL rendering context.static long
wglGetCurrentContext()
Obtains a handle to the current OpenGL rendering context of the calling thread.static long
wglGetCurrentDC()
Obtains a handle to the device context that is associated with the current OpenGL rendering context of the calling thread.static long
wglGetProcAddress(java.nio.ByteBuffer proc)
Returns the address of an OpenGL extension function for use with the current OpenGL rendering context.static long
wglGetProcAddress(java.lang.CharSequence proc)
Returns the address of an OpenGL extension function for use with the current OpenGL rendering context.static boolean
wglMakeCurrent(long hdc, long hglrc)
Makes a specified OpenGL rendering context the calling thread's current rendering context.static boolean
wglShareLists(long hglrc1, long hglrc2)
Enables multiple OpenGL rendering contexts to share a single display-list space.static boolean
wglUseFontBitmaps(long hdc, int first, int count, int listBase)
Creates a set of bitmap display lists for use in the current OpenGL rendering context.static boolean
wglUseFontOutlines(long hdc, int first, int listBase, float deviation, float extrusion, int format, GLYPHMETRICSFLOAT.Buffer glyphMetrics)
Creates a set of display lists, one for each glyph of the currently selected outline font of a device context, for use with the current rendering context.
-
-
-
Field Detail
-
WGL_FONT_LINES
public static final int WGL_FONT_LINES
UseFontOutlines format.- See Also:
- Constant Field Values
-
WGL_FONT_POLYGONS
public static final int WGL_FONT_POLYGONS
UseFontOutlines format.- See Also:
- Constant Field Values
-
WGL_SWAP_MAIN_PLANE
public static final int WGL_SWAP_MAIN_PLANE
SwapLayerBuffers flags.- See Also:
- Constant Field Values
-
WGL_SWAP_OVERLAY1
public static final int WGL_SWAP_OVERLAY1
SwapLayerBuffers flags.- See Also:
- Constant Field Values
-
WGL_SWAP_OVERLAY2
public static final int WGL_SWAP_OVERLAY2
SwapLayerBuffers flags.- See Also:
- Constant Field Values
-
WGL_SWAP_OVERLAY3
public static final int WGL_SWAP_OVERLAY3
SwapLayerBuffers flags.- See Also:
- Constant Field Values
-
WGL_SWAP_OVERLAY4
public static final int WGL_SWAP_OVERLAY4
SwapLayerBuffers flags.- See Also:
- Constant Field Values
-
WGL_SWAP_OVERLAY5
public static final int WGL_SWAP_OVERLAY5
SwapLayerBuffers flags.- See Also:
- Constant Field Values
-
WGL_SWAP_OVERLAY6
public static final int WGL_SWAP_OVERLAY6
SwapLayerBuffers flags.- See Also:
- Constant Field Values
-
WGL_SWAP_OVERLAY7
public static final int WGL_SWAP_OVERLAY7
SwapLayerBuffers flags.- See Also:
- Constant Field Values
-
WGL_SWAP_OVERLAY8
public static final int WGL_SWAP_OVERLAY8
SwapLayerBuffers flags.- See Also:
- Constant Field Values
-
WGL_SWAP_OVERLAY9
public static final int WGL_SWAP_OVERLAY9
SwapLayerBuffers flags.- See Also:
- Constant Field Values
-
WGL_SWAP_OVERLAY10
public static final int WGL_SWAP_OVERLAY10
SwapLayerBuffers flags.- See Also:
- Constant Field Values
-
WGL_SWAP_OVERLAY11
public static final int WGL_SWAP_OVERLAY11
SwapLayerBuffers flags.- See Also:
- Constant Field Values
-
WGL_SWAP_OVERLAY12
public static final int WGL_SWAP_OVERLAY12
SwapLayerBuffers flags.- See Also:
- Constant Field Values
-
WGL_SWAP_OVERLAY13
public static final int WGL_SWAP_OVERLAY13
SwapLayerBuffers flags.- See Also:
- Constant Field Values
-
WGL_SWAP_OVERLAY14
public static final int WGL_SWAP_OVERLAY14
SwapLayerBuffers flags.- See Also:
- Constant Field Values
-
WGL_SWAP_OVERLAY15
public static final int WGL_SWAP_OVERLAY15
SwapLayerBuffers flags.- See Also:
- Constant Field Values
-
WGL_SWAP_UNDERLAY1
public static final int WGL_SWAP_UNDERLAY1
SwapLayerBuffers flags.- See Also:
- Constant Field Values
-
WGL_SWAP_UNDERLAY2
public static final int WGL_SWAP_UNDERLAY2
SwapLayerBuffers flags.- See Also:
- Constant Field Values
-
WGL_SWAP_UNDERLAY3
public static final int WGL_SWAP_UNDERLAY3
SwapLayerBuffers flags.- See Also:
- Constant Field Values
-
WGL_SWAP_UNDERLAY4
public static final int WGL_SWAP_UNDERLAY4
SwapLayerBuffers flags.- See Also:
- Constant Field Values
-
WGL_SWAP_UNDERLAY5
public static final int WGL_SWAP_UNDERLAY5
SwapLayerBuffers flags.- See Also:
- Constant Field Values
-
WGL_SWAP_UNDERLAY6
public static final int WGL_SWAP_UNDERLAY6
SwapLayerBuffers flags.- See Also:
- Constant Field Values
-
WGL_SWAP_UNDERLAY7
public static final int WGL_SWAP_UNDERLAY7
SwapLayerBuffers flags.- See Also:
- Constant Field Values
-
WGL_SWAP_UNDERLAY8
public static final int WGL_SWAP_UNDERLAY8
SwapLayerBuffers flags.- See Also:
- Constant Field Values
-
WGL_SWAP_UNDERLAY9
public static final int WGL_SWAP_UNDERLAY9
SwapLayerBuffers flags.- See Also:
- Constant Field Values
-
WGL_SWAP_UNDERLAY10
public static final int WGL_SWAP_UNDERLAY10
SwapLayerBuffers flags.- See Also:
- Constant Field Values
-
WGL_SWAP_UNDERLAY11
public static final int WGL_SWAP_UNDERLAY11
SwapLayerBuffers flags.- See Also:
- Constant Field Values
-
WGL_SWAP_UNDERLAY12
public static final int WGL_SWAP_UNDERLAY12
SwapLayerBuffers flags.- See Also:
- Constant Field Values
-
WGL_SWAP_UNDERLAY13
public static final int WGL_SWAP_UNDERLAY13
SwapLayerBuffers flags.- See Also:
- Constant Field Values
-
WGL_SWAP_UNDERLAY14
public static final int WGL_SWAP_UNDERLAY14
SwapLayerBuffers flags.- See Also:
- Constant Field Values
-
WGL_SWAP_UNDERLAY15
public static final int WGL_SWAP_UNDERLAY15
SwapLayerBuffers flags.- See Also:
- Constant Field Values
-
-
Method Detail
-
wglCreateContext
public static long wglCreateContext(long hdc)
Creates a new OpenGL rendering context, which is suitable for drawing on the device referenced by device. The rendering context has the same pixel format as the device context.- Parameters:
hdc
- handle to a device context for which the function creates a suitable OpenGL rendering context
-
wglCreateLayerContext
public static long wglCreateLayerContext(long hdc, int layerPlane)
Creates a new OpenGL rendering context for drawing to a specified layer plane on a device context.- Parameters:
hdc
- the device context for a new rendering contextlayerPlane
- the layer plane to which you want to bind a rendering context. The value 0 identifies the main plane. Positive values oflayerPlace
identify overlay planes, where 1 is the first overlay plane over the main plane, 2 is the second overlay plane over the first overlay plane, and so on. Negative values identify underlay planes, where 1 is the first underlay plane under the main plane, 2 is the second underlay plane under the first underlay plane, and so on. The number of overlay and underlay planes is given in thereserved
member of thePIXELFORMATDESCRIPTOR
structure.
-
wglCopyContext
public static boolean wglCopyContext(long src, long dst, int mask)
Copies selected groups of rendering states from one OpenGL rendering context to another.- Parameters:
src
- the source OpenGL rendering context whose state information is to be copieddst
- the destination OpenGL rendering context to which state information is to be copiedmask
- which groups of thesrc
rendering state are to be copied todst
. It contains the bitwise-OR of the same symbolic names that are passed to thePushAttrib
function. You can useALL_ATTRIB_BITS
to copy all the rendering state information.
-
wglDeleteContext
public static boolean wglDeleteContext(long context)
Deletes a specified OpenGL rendering context.- Parameters:
context
- handle to an OpenGL rendering context that the function will delete
-
wglGetCurrentContext
public static long wglGetCurrentContext()
Obtains a handle to the current OpenGL rendering context of the calling thread.
-
wglGetCurrentDC
public static long wglGetCurrentDC()
Obtains a handle to the device context that is associated with the current OpenGL rendering context of the calling thread.
-
wglGetProcAddress
public static long wglGetProcAddress(java.nio.ByteBuffer proc)
Returns the address of an OpenGL extension function for use with the current OpenGL rendering context.- Parameters:
proc
- points to a null-terminated string that is the name of the extension function. The name of the extension function must be identical to a corresponding function implemented by OpenGL.
-
wglGetProcAddress
public static long wglGetProcAddress(java.lang.CharSequence proc)
Returns the address of an OpenGL extension function for use with the current OpenGL rendering context.- Parameters:
proc
- points to a null-terminated string that is the name of the extension function. The name of the extension function must be identical to a corresponding function implemented by OpenGL.
-
wglMakeCurrent
public static boolean wglMakeCurrent(long hdc, long hglrc)
Makes a specified OpenGL rendering context the calling thread's current rendering context. All subsequent OpenGL calls made by the thread are drawn on the device identified by device. You can also use MakeCurrent to change the calling thread's current rendering context so it's no longer current.- Parameters:
hdc
- handle to a device context. Subsequent OpenGL calls made by the calling thread are drawn on the device identified bydc
.hglrc
- handle to an OpenGL rendering context that the function sets as the calling thread's rendering context. Ifcontext
isNULL
, the function makes the calling thread's current rendering context no longer current, and releases the device context that is used by the rendering context. In this case,hdc
is ignored.
-
wglShareLists
public static boolean wglShareLists(long hglrc1, long hglrc2)
Enables multiple OpenGL rendering contexts to share a single display-list space.- Parameters:
hglrc1
- the OpenGL rendering context with which to share display lists.hglrc2
- the OpenGL rendering context to share display lists withhglrc1
. Thehglrc2
parameter should not contain any existing display lists whenwglShareLists
is called.
-
wglUseFontBitmaps
public static boolean wglUseFontBitmaps(long hdc, int first, int count, int listBase)
Creates a set of bitmap display lists for use in the current OpenGL rendering context. The set of bitmap display lists is based on the glyphs in the currently selected font in the device context. You can then use bitmaps to draw characters in an OpenGL image.Creates count display lists, one for each of a run of count glyphs that begins with the first glyph in the device parameter's selected fonts.
- Parameters:
hdc
- the device context whose currently selected font will be used to form the glyph bitmap display lists in the current OpenGL rendering contextfirst
- the first glyph in the run of glyphs that will be used to form glyph bitmap display listscount
- the number of glyphs in the run of glyphs that will be used to form glyph bitmap display lists. The function creates count display lists, one for each glyph in the run.listBase
- the starting display list
-
wglUseFontOutlines
public static boolean wglUseFontOutlines(long hdc, int first, int listBase, float deviation, float extrusion, int format, GLYPHMETRICSFLOAT.Buffer glyphMetrics)
Creates a set of display lists, one for each glyph of the currently selected outline font of a device context, for use with the current rendering context. The display lists are used to draw 3-D characters of TrueType fonts. Each display list describes a glyph outline in floating-point coordinates.The run of glyphs begins with thefirstglyph of the font of the specified device context. The em square size of the font, the notional grid size of the original font outline from which the font is fitted, is mapped to 1.0 in the x- and y-coordinates in the display lists. The extrusion parameter sets how much depth the font has in the z direction.
The glyphMetrics parameter returns a
GLYPHMETRICSFLOAT
structure that contains information about the placement and orientation of each glyph in a character cell.- Parameters:
hdc
- the device context with the desired outline font. The outline font ofdc
is used to create the display lists in the current rendering context.first
- the first of the set of glyphs that form the font outline display listslistBase
- the starting display listdeviation
- the maximum chordal deviation from the original outlines. When deviation is zero, the chordal deviation is equivalent to one design unit of the original font. The value of deviation must be equal to or greater than 0.extrusion
- how much a font is extruded in the negative z direction. The value must be equal to or greater than 0. When extrusion is 0, the display lists are not extruded.format
- the format to use in the display lists. When format isFONT_LINES
, thewglUseFontOutlines
function creates fonts with line segments. When format isFONT_POLYGONS
,wglUseFontOutlines
creates fonts with polygons. One of:FONT_LINES
FONT_POLYGONS
glyphMetrics
- an array ofcount
GLYPHMETRICSFLOAT
structures that is to receive the metrics of the glyphs. WhenglyphMetrics
isNULL
, no glyph metrics are returned.
-
-


Software architects, you are doing it wrong
Introduction
A post by @abdullin nailed it pretty good: software architects are doing it wrong all the time. Here’s why:
Made a sketch "Software Architecture 101", but I REALLY need to use a thin marker or have less stuff #Chaotic pic.twitter.com/ZJptDRCD0z
— Tom Janssens (@ToJans) September 23, 2013
CHAOS !!!
Well, it looks like chaos, but this is only because I used a big marker and no pencil, so there was no room for corrections, but allow me to clarify this Behemoth.
1. Software architects need to rethink the reason for their existence.
They need to reflect about why they exist. The stereotypical software architect used to be a really intelligent techie somewhat lacking social skills. However, he was able to put together something that was a reasonable fit for the “regular devs”, even though they did not really grasp everything that happened behind the doors. The architect was the boss, and the developers were the followers.
The problem is the world is evolving; this approach made sense before we were in a knowledge economy, but the democratization of knowledge has resulted in the fact that everyone can find, download and use a framework, library, platform, whatever and build out systems that meet the requirements. However, it is the responsibility of a software architect to understand the cost, liability and impact of any given choice.
The focus of a software architect has shifted from “what matches my requirements” to “what does not match my developers' requirements”.
In the past you could either pick vendor and product A, B or C, and that was it. Now you have hundreds, maybe even thousands of vendors to choose from. You need a deeper understanding to grasp the true impact.
Also, due to the plethora of choices, an architect needs to be aware of a lot of things, he can learn them at heart when he needs them. Because the architect needs to listen to it’s developers, he should also be very proficient in social skills.
2. Software is not rigid.
When you build software, you start out with an idea. However, this is just one model; as you develop your piece of software you will notice it evolves. This implies that your software architecture also might no longer be the best fit for the solution space.
There is a difference between easy and simple. Software architects should understand this, and use easy things for rigid parts, and simple things for instable parts.
A software architect needs to understand the potential cost and risk of his choices, and evolve his architecture where necessary, which brings us to the next part:
3. Flexibility is required.
Some parts of your problem space might be relatively well known, and thus your initial ideas about the solution space might be quite good, so introducing some technical debt (i.e. vendor lock-in etc) in that part should not be a problem, as long as you understand and motivate the change you make. Some parts of software are never touched after being initially written, and thus using quick win techniques (like drag ‘n’ drop development, 4GL’s) should not be a problem really.
However, for the parts that are relatively unknown - and thus might change a lot - you require flexibility. Having a vendor lock-in in parts of your core domain is an absolute no-no in my opinion, unless you are willing and able to do a complete rewrite. Once again it is the architect’s responsibility to point out liabilities like this.
4. Huge cost in “Silver Bullet” frameworks.
Most of the software architects know “No silver bullet” by Fred Brooks and are aware of things like “The second system effect”(i.e. one size fits all systems).
However, every single architect - been there, done that, got the T-shirt - goes through the phase where he starts building a “generic software architecture framework” that will be used over the whole organisation. In fact, he or she might even evolve it into a vNext at the next customer/client and so on.
However, the fact is that - except for well-known problems and/or well-established solution spaces - a custom framework is almost never worth the trouble.
I am not saying that you should reimplement a http server, because that is a well-established domain, but for anything out of the ordinary I would strongly advise against doing such a thing.
There are some exceptions to this rule (f.e. NancyFx, Simple.Web), but in an enterprise context the cost and risk of writing your own framework is usually not worth the potential gain.
Please note that this is my opinion regarding frameworks, libraries should not pose a problem given a reasonable approach.
5. But I need scalability
Yes you do, so you can opt for framework/library X, but be aware:
Just because you have a certain requirement that can be met by using component X, does not imply you have to use it everywhere.
Stereotypical architects love the “quest for the perfect model”, having the ultimate utopian belief that something does exists which will fit all.
He should pay attention to what the developers need, not the other way around, so choices are based on a need, which brings us to the next part:
6. Only when it hurts.
Given some reasonable software development skills, one should avoid premature optimization as long as possible. Usually all this kind of optimization comes at a cost, which might not be necessary at all…
I have seen way to many start-ups working on a piece of software for over a year without having a single customer; in fact, I am a well established member of that club, so believe me when I refer to this quote:
“Do the simplest thing that could possibly work” - Ward Cunningham
Why are you messing around with event buses and scalable platforms when you have not verified a single customer yet? You are basically yak-shaving and saying “Wow, look at the great architecture I can build”. The resulting $$ on the bank account while doing that is exactly zero!
7. Five simple rules
Respect the basic practices of software development, and teach your developers about them. I wrote some down here, but there is a plethora of resources available on the net.
Make sure you and developers understand proper development practices and use them.
8. Grow organically
Eric Evans had it right a decade ago: writing software is about exploring your problem domain; in fact, software might even be considered a by-product, as is your software-architecture. Allow your systems to grow and evolve in a deeper understanding of your problem and solution domain.
Software is never done, but always a work in progress.
Adapt and adjust. Understand the cost and risk of growing and adjusting; make it very explicit.
9. And you will get to the finish
Software architects unite! You no longer need to be the awkward-to-talk to techie in the room, but you should be a leader (not a manager) for your developers. But - this is very important - your leadership style should be humbling, not top-down, what people in economics refer to as level-5 leadership.
In today’s ever changing world of knowledge everywhere it is no longer important what you know, but what you do with that knowledge, and most of all:
“Efficiency is doing things right; effectiveness is doing the right things.” - Peter F. Drucker


 Yet, we cant help but fall in love with you. You would think all that charm would be nauseating or some may call it cliche.  Oh, how you’ve taught me.
We started our journey by taking the slow ferry with “Ferry hopper” from Kimolos island to Milos for a transfer and then Milos to Santorini. in total, the tickets cost about 70 euros each person one way. I would recommend you plan and book your tickets before your trip! you can collect your tickets in person at the ticket offices before your trip. If you are travelling from Athens, there are direct ferries and flights straight to Santorini!
Once we arrived to Santorini, we had our rental car waiting for us. We booked with “Santorini rent a car” and they were very timely and always picked up their phones when we had issues. it cost us 213 euros for 5 days with full insurance.
We stayed in Perissa at a hotel called “Villa Anemomilos Perissa” John the owner was very friendly and the facilities were decent, there was a pool on site and the black beach was a 8 minute walk away! John checked us in himself and gave us a good amount of tips for things to see and do. We paid 260 euros for 4 nights with free parking which is very affordable for Santorini standards! Don’t worry about the room, it was very clean and we even had a cute balcony facing the mountains! Okay so with logistics out of the way, lets get to the fun part!
Day 1: Famous Oia for beautiful pictures and Fira by night!
Let’s get honest about Oia. It is definitely worth the hype! The iconic white washed houses,small streets that lead you around like a mini maze, view of the caldera and the many photo opportunities. BUT be aware that its going to be really hot from the burning sun and super crowded with tourists from around the world. Especially if you visit in the summer months. Unless you have a larger budget to book a beautiful villa or room in Oia, I would suggest taking all your beautiful pictures in the day and moving on to explore other parts of Santorini.
Picture spots: When you first enter Oia, you will see Atlantis book store (they sell really good books which I honestly think you should check out) and just on the roof of the store is a cute photo op. Next, walk towards Oia castle, on the way you have lots of opportunities with the blue dome and white washed houses. At the castle, you’ll be faced with a treat of pictures, enjoy! Ultimately, I would say go down the little streets, you never know where they will lead you and that is where we took most of our pictures! So put on your explorer hats, brave the crowds and create your own story.
Also, a good tip is to bring lots of water. We sat down for non-alcoholic juices in a nice tavern with a view and got charged 23 euros. I would like to think we paid for the view- it was magnificent with the blue domes and the sea! But if you are on a tight budget, be prepared for Oia!
We went home to freshen up and decided to go to Fira in the evening for the sunset and dinner. We had no plans, we wondered the streets and walked into boutiques and shops, admiring work from Greek designers. Fira is where the party is at! There were several fun looking bars and clubs we would have loved to enter if we were not so tired from the day! We ended up at a Greek tavern and ordered my favourite stuffed aubergines and grilled sardines (yum!). No pictures here as we were starving and forgot! (This happens to everyone I’m sure?).
Day 2: Imerovigli by day and wine tasting by night
This felt like the day of photo shoots! We just kept snapping everything we saw. I would really suggest Imerovigli for photo taking!  We originally wanted to hire a photographer but note its really expensive! They were charging 130 to 140 euros for 30 minutes. So, instead I made Sar my photographer! It was still a hot day but at least we were not rushing about. A little tip, you could stay in this town too! It is also called the “balcony of the Aegean” with beautiful sunsets! Honestly though, sunsets in Santorini are magnificent in every town.
After the photo shoot, we drove up to Akrotiri for some pictures by the lighthouse! It was quiet up there, it felt like us against the world. If you have the time and a car, it is worth a look!
Finally, for the evening we made a table reservation at Santos winery for wine tasting and the sunset. This is definitely a must do on the list! But first, I recommend you request for a table right in front with the best view (your hotel could book this for you). Also, you do not have to book for the winery tour! you can have the view by just buying a glass of wine. Have a look at the menu before hand, it helped us decide what we liked and was affordable. We ordered the 10 wine flight for tasting which cost 31 euros shared between 2 people, saying that we really liked the famous vinsanto a dessert wine made from sun dried grapes! We also ordered the seafood platter made with “beech wood smoked salmon fillet, Greek steeped trout, octopus, marinated hake fillet with olive oil and capers, breadsticks, tomatoes, rocket leaves” it costs 29 euros and note the portion was small but delicious. We were definitely still hungry after! So maybe get a snack before?
Day 3: Volcano trek and sunset on the boat
We booked the sunset cruise in person at Fira in a tour office called “Dakoutros Travel”. It cost us about 32 euros each person but it was worth every penny. You will have to get the boat from the old port. Going down is NOT EASY! it is steep and slippery and the sun will be burning so just imagine. You have three ways to get down. The cable car, donkey ride or walk down. the cable car will cost you 6 euros each person and it takes 2 minutes but the queues are massive, the donkeys cost the same but I would avoid it as we saw them being mistreated and they just looked sad it was hard to watch. So we walked down and it took us about 20-30 minutes and we saw quite a few people fall, not forgetting the smell of donkey poo.
Once you’re down, you’ll get on the boat with a group of people. It was not so crowded, we had about 20-30 people! this is amazing as the day boats could go up to 100 people. We started with the volcano trek, it was steep but easy to overcome and hot but not as hot as earlier in the day. The guide explains the history of Santorini and how the island split due to an earthquake. The volcano is on sea making it unique I felt! We saw several tiny craters with sulphur gas coming out from it and hot water. Very interesting experience-It takes about 20 minutes to reach the peak! Note here to bring a large bottle of water, you will need it!
After the trek, we made our way back to the boat and were taken to the hot springs where everyone jumps off the boat and gets the opportunity to swim in the volcanic hotsprings. Here they will provide floats too for people who need it. If you do not swim, you can skip this part too. Avoid wearing a white swimsuit as the hotsprings could colour your clothes.
Next, they brought us to Thirassia island. It is the old Santorini where houses are traditional. Here we could swim or get something to eat. Sar and I got a quick souvlaki for 3 euros to conserve our energy! it was heaven. Such a nice secluded spot away from crowds.
Finally, we ended up watching the sunset on the boat. Lets just say it was the best sunset of our lives! I had a little corner and we just sat there admiring the sunset together. no picture can ever do justice to what we experienced. Good thing is you will get complimentary wine on the boat while watching the sunset (don’t expect much as they’re in tiny plastic cups, but still a treat!).
Our night had not ended yet. I should add that Sar and I attended a concert from a famous Greek singer called Giannis Haroulis. Sar loves his music and want to know what I thought? He was indeed amazing! His voice was so beautiful it could serenade you and excite you at the same time. By the end of the night we were out of our seats jumping around with all his other fans.
Day 4: Beach day
You will need to climb down to get to the beach which some people say is abit tricky, but I say its worth it! What a beautiful sight to see the blue waters crash against the red shore.
We came to have a look at the beach and it was definitely a sight! Maybe sneak in a cheeky swim!
But as you can see, we liked the black beach best!  Perissa beach is organised, which is perfect if you wish to get your freddo cuppacino or some food!
We finished our trip at the sunset view cafe! it is in the middle of nowhere with a windmill. The perfect find. Sar tried the local beer “volcan” which he really liked and I had a strawberry mojito which was not that great so maybe stick with local beers! The sunset once again blew our minds. Santorini you have stolen our hearts and minds and the best part is, you know it! Confident, strong and beautiful.
I would like to leave a tip at the end that we flew out of Santorini back to Athens - don’t expect much from the airport. Only one tiny duty free shop and you will be cramped in there with hundreds of people waiting for their flights. Well, what is one bad experience versus all the good we just shared with you! Start planning your holidays to the Greek islands!


Plugin Information |
|---|
View Node and Label parameter on the plugin site for more information. |
This plugin adds two new parameter types to job configuration - node and label, this allows to dynamically select the node where a job/project should be executed.
- 1.7 (7. Dec. 2015)
- 1.6 (23. Nov. 2015)
- 1.5.1 (2. March 2014)
- 1.5.0 (10. Feb 2014)
- 1.4 (28. March 2013)
- 1.3 (9. Dec 2012)
- 1.2.1 (2. July 2012)
- 1.2 (25. June 2012)
- 1.1.4 (21. May 2012)
- 1.1.3 (11. May 2012)
- 1.1.2 (25. Feb. 2011)
- 1.1.1 (27. Nov. 2011)
- 1.1.0 (15. Nov. 2011)
- 1.0.0 (18. Sep. 2011)
- 0.2.0
- 0.1.2
- 0.1.0
Description
The plugin allows to configure additional parameters for a job. These new parameter types are 'Node' and 'Label'. This is specially useful if you want to execute the job on different nodes without changing the configuration over and over again. It also allows you to use Jenkins in a scenario where you would like to setup different nodes with the same script/jobs configured - e.g. SW provisioning.
Another usage scenario would be to configure a node maintenance job which you could trigger on request on each node.
Restrict where this project can be run
If your using a node or label parameter to run your job on a particular node, you should not use the option "Restrict where this project can be run" in the job configuration - it will not have any effect to the selection of your node anymore!
Node
Define a list of nodes on which the job should be allowed to be executed on. A default node used for scheduled jobs can be defined.
You are able to configure the job to run one after the other or even concurrent.
In case multi node selection was disabled, you get a dropdown to select one node to execute the job on.
If multi node selection was enabled, you get the chance to select multiple nodes to run the job on. The job will then be executed on each of the nodes, one after the other or concurrent - depending on the configuration.
Label
Define a label of 'Restrict where this project can be run' on the fly.
Trigger via script
One can also trigger a job via remote call (e.g. script)
Trigger job on multiple nodes:
curl --silent -u USER:PASSWORD --show-error --data 'json={"parameter":[{"name":"PARAMNAME","value":["node1","node2"]}]}&Submit=Build' http://localhost:8080/job/remote/build?token=SECTOKEN
Although the first format also supports passing just one node name as parameter in the list, the plugin also supports to pas a simple key/value parameter to trigger the job on single node only:
curl --silent -u USER:PASSWORD --show-error --data 'json={"parameter":[{"name":"PARAMNAME","value":"master"}]}&Submit=Build' http://localhost:8080/job/remote/build?token=SECTOKEN
If you have a 'label' parameter (instead of a 'node' parameter), then the request should look like this:
curl --silent -u USER:PASSWORD --show-error --data 'json={"parameter":[{"name":"PARAMNAME","label":"mylabel"}]}&Submit=Build' http://localhost:8080/job/remote/build?token=SECTOKEN
It is also possible to pass the parameter via GET (example: NODENAME is a 'Node' parameter defined on the job):
http://localhost:8080/jenkins/job/MyJob/buildWithParameters?NODENAME=node1
Parameterized Trigger plugin
Post Build Action
If the Parameterized Trigger Plugin is installed, an additional parameter is available to pass to the target job. The parameterized trigger plugin handles Node and Label parameters as every other parameter if you use the option 'Current build parameters'.
But it is not possible to use the 'Predefined parameters' to overwrite such a parameter, therefore the NodeLabel Parameter plugin adds a new parameter to the trigger plugin.
This parameter type defines where the target job should be executed, the value must match either a label or a node name - otherwise the job will just stay in the queue. The NodeLabel parameter passed to the target job, does not have to exist on the target job (but if the target has one defined, it should match the name). This way it is possible to trigger jobs on different nodes then they are actually configured.
BuildParameterFactory
The nodelabel parameter plugin also adds a BuildParameterFactory
to the parameterized trigger plugin, this factory enables you to trigger a build of a specific project on all nodes having the same label.
- Add the a "Trigger/call builds on other projects" build step
- define the project you want to run on each node
- select the "All Nodes for Label Factory" from the "Add ParameterFactory" dropdown
- define the label identifying all the nodes you want to run the project on
Similarly, you can also add "Build on every online node" as a parameter factory. This will cause the specified projects to run on all nodes (master and all slaves) that are online and have non-zero executor configured to it.
Version History
1.7 (7. Dec. 2015)
- fix JENKINS-22185 Trigger a build in all nodes matching a label (thanks to Antonio)
1.6 (23. Nov. 2015)
- add MIT license PR #8 (thanks vaneyckt)
- fix JENKINS-28374 enable triggering via rebuild plugin (thanks lrobertson39)
- fix JENKINS-27880 expose value in API (thanks Charles Stephens)
- fix typo PR #4 (thanks guysoft)
1.5.1 (2. March 2014)
- fix JENKINS-21828 encoding issues with german "umlaute"
- integrate PR #3 LabelParameterDefinition extends SimpleParameterDefinition to support better integration with other plugins
1.5.0 (10. Feb 2014)
- implement JENKINS-17660 for convenience, allow usage of 'value' for calls of label parameters via script
- implement JENKINS-21194 add notion of NodeEligibility to differentiate between different offline modes of nodes
- new feature: "build on all nodes matching label" for Label parameter
- fix JENKINS-20885 default node not selected in dropdown
- fix JENKINS-20823 Stack Trace when Configuring a task with "Label Factory"
- lift dependency to core 1.509.4
1.4 (28. March 2013)
- implement JENKINS-17305 don't wait for offline nodes (new option added for node parameter and parameter factory)
- implement JENKINS-14407 allow multi-value default for scheduled builds
1.3 (9. Dec 2012)
- Add new build parameter factory for Parameterized Trigger Plugin : List of nodes - factory takes a list of nodes to trigger the job on
- fix JENKINS-15339 breaks Windows batch file build steps if Name field not filled in
- fix JENKINS-15370 Value of Node param variable does not contain all values when selecting multiple nodes
1.2.1 (2. July 2012)
- fixed JENKINS-14230 Node parameter value can't be passed by HTTP GET
1.2 (25. June 2012)
- fix JENKINS-14120 confusing output
- fix JENKINS-13902 move 'master' up in selection list
- fix JENKINS-14109 Passing ${NODE_NAME} as Node Parameter to downstream job not possible on master
1.1.4 (21. May 2012)
- supported a build parameter factory that lets you run a specified job on all the slaves.
1.1.3 (11. May 2012)
- fix JENKINS-13704 Unable to start a concurrent build when there are nodeParameterValues
1.1.2 (25. Feb. 2011)
- fix JENKINS-12226 Triggering a build with "Current build parameters" fails when the current build parameters includes a node name
- fix issue if a a job has many parameters
1.1.1 (27. Nov. 2011)
- Fix issue if a label was using expressions
1.1.0 (15. Nov. 2011)
- Added a BuildParameterFactory to get all Nodes for a Label when triggered via buildstep from "parameterized-trigger-plugin" (pull #1, thanks to wolfs)
1.0.0 (18. Sep. 2011)
- fix JENKINS-10982 trim labels / nodes
- fix JENKINS-11006 fix remote triggering (e.g. via script)
- enhance node parameter to support concurrent job execution
- ...in case you have an issue after updating to this version, try to just open the job configuration and save it again.
0.2.0
- add badge icon to show on which node/label the build was done
- add support to execute the job on multiple nodes automatically (one after the other)
0.1.2
- add additional parameter to parameterized-trigger plugin (JENKINS-10088)
0.1.0
- Inital
Help and Support
For Help and support please use the Jenkins Users mailing list.
The comment list below is not monitored.
Attachments:
screen-capture-1.gif (image/gif)
screen-capture-2.gif (image/gif)
screen-capture-3.gif (image/gif)
screen-capture-4.gif (image/gif)
run_edit.jpg (image/jpeg)
remote_catalog.jpg (image/jpeg)
labelParameter.jpg (image/jpeg)
selectParameter.jpg (image/jpeg)
triggerWithNode.jpg (image/jpeg)
triggerWithLabel.jpg (image/jpeg)
nodeParameter.jpg (image/jpeg)
parameterized-trigger-param.jpg (image/jpeg)
config_node_param.jpg (image/jpeg)
multinode_selection.jpg (image/jpeg)
config_plugin.jpg (image/jpeg)
screen-capture-4.jpg (image/jpeg)


There is nothing as dull in a student's life as badly made PowerPoint presentations. Using PowerPoint has become a rule, whenever you present something in an university setting or otherwise. Everybody does it. And even when you follow all the hints on 'how to make a good presentations', like the ones Maris talked about in our last post at the JEPS Bulletin, you end up with just a PowerPoint presentation. How to change that and spice things up?
Prezi is a free online presentation software. Its four strongest points are that it's: free, looks good, intuitive and new.
Free
If you are a student, more often than not, you are on a tight budget. Prezi has its basic features (everything you need to make a presentation) freely accessible online. If you are interested in some improved features, you can always pay for them. But as it is, everybody can use it and access it, unlike our most common presentation software buddy, the PowerPoint.
Looks good
What's even better about Prezi - it looks effective, engaging and really cool. Its zoom feature is in its core a pretty simple option, but with creative usage, it can make an ordinary presentation look like something completely different. Check out this presentation about the usage of perspectives in Prezi (made, of course, in Prezi) to see what I'm talking about.
Intuitive
When I first saw a Prezi presentation in a TED lecture online, the first thing that came to mind was: "That must be hard to make!" The truth couldn't be further from it. With a clean-cut and very minimal user interface, it manages to offer all its functions in a very intuitive way; very unlike our standard text processing or presentation software. The zooming is created through the use of framing - it's like setting check points for the camera to follow through your presentation. The site also offers video tutorials on how to use Prezi, which are very helpful even if you don't get the interface from the start.
New
With the widespread use of PowerPoint, different presentation software is rarely used. Even if you have a relatively dull topic to cover, with Prezi, the newness of the presentation style will surely keep your audience engaged and interested through the smart use of the zooming tool and the natural flow through the presentation it allows. Prezi's sheer newness for most people who haven't seen it will only be a plus. Just remember not to over use the zooming rotations, to avoid causing motion sickness to your audience!
As a conclusion, check out the official Journal of European Psychology Students presentation done in Prezi. If you would like to present JEPS at your college, local student organization or conference, feel free to use it.
Happy Prezi using!
__________________________________________________________________________________________
Ivan Flis is a graduate student of psychology at the Center for Croatian Studies at the University of Zagreb, Croatia. He is the Editor-in-Chief of the Journal of European Psychology Students (JEPS) and the Chair of the Right to Research Coalition Coordinating Committee for Africa, Europe and Middle East.


| DOSE: |
66 mg |
insufflated |
Heroin |
(powder / crystals) |
Ten weeks...this long I'd been free of heroin and happy about it. Fast forward to two weeks ago and I'm hanging out with a friend, V. V suggested to me that we purchase a 15 dollar bag (about .1 grams) and we do so. This report is nothing special, simply about my most recent encounter. So on and off til yesterday we spend our days purchasing bags and sniffing ourselves into a lovely relaxed state.
Yesterday:
It's me, V, and another close friend, E. We were relaxing at V's house as usual. Our normal connect (D, one of many) wasn't responding so after going through about 4 not-so-reliable ones, we found 'S'. Shortly after, we hopped in the Mexican cab and we were on our way. Listening to both the radio, and numerous loud Mexican arguments over the CB, we sat tapping our fingers awaiting our arrival to the meeting point. Having sacrificed a bit of cash on the cab ride there, we settled for two bags. Each of us receiving about 2/3.
After walking around for a little while, looking extremely obvious trying to find a suitable stairway to sniff in, we found sanctuary in a quiet little apartment building. An odd first, the bag's stamps were 'WATER BOY', usually being skull or empire. We found a flat surface, and cut up the bags. After V complaining that due to tolerance not even a whole bag would affect him, I let him take a very tiny bit off my line. V, E and I do our lines and make the walk to the train. The heroin hitting me and E somewhere in the middle of the trip. Feeling incredible, we walked, having pointless two word discussions between periods of silence.
We picked a spot conveniently located by the car doors in case we felt the need to vomit from the bumpy ride. We nodded in and out of consciousness. Bits of melodic trance music flowing into my ears. It was a beautiful feeling. Sometime later we are awakened by the loud, penetrating sounds of a Mexican train band. Screaming and beating their guitars as if they owed them money. I made some doped up gestures and faces at E and he nodded back acknowledging that the music was annoying and nauseating him as well. Shortly after they left and soon our ride was over. We exited the train.
Walking from the train station to meet our friends, we discussed how we felt and unsuccessfully attempted to gather funds to buy some marijuana. At the corner where we were with friends, we sat speechless. Only moving if it was to get a cigarette. The sight of food made us nauseous, and soon it was time to walk up the block and vomit. Which felt good, refreshing and clean. Friends stared at us, knowing well what we had done but not mentioning it for fear of an awkward moment I suppose.
As usual, the police came by. Nothing serious. I happen to be good friends with the officers that roll by everyday. I nodded like I was paying attention to the things he said. Keeping the vomit down and my eyelids up was a difficult task. So I stood, pondering the consequences of throwing up on a police officer, until they left. About an hour later, we all left and went home to sleep.
The overall experience of heroin is a beautiful one. Warmth, sedation, euphoria... but overall it is plain nothingness.  Until trying it, I never really understood what the hype was about. But in no way am I encouraging ANYONE to try heroin. It is very addictive and I doubt I'll be able to get clean again. If you've got the ability to use heroin on and off without addiction or withdrawl, then you're lucky. My advice to those who know they've got addictive personalities, is NOT to try heroin.
Be careful kids.
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.


pnmtosgi(1) pnmtosgi(1) NAME pnmtosgi - convert a portable anymap to a SGI image file SYNOPSIS pnmtosgi [-verbatim|-rle] [-imagename Name] [pnmfile] DESCRIPTION Reads a portable anymap as input. Produces an SGI image file as output. The SGI image will be 2-dimensional (1 channel) for PBM and PGM input, and 3-dimensional (3 channels) for PPM. OPTIONS -verbatim Write an uncompressed file. -rle (default) Write a compressed (run length encoded) file. -imagename name Write the string "name" into the imagename field of the header. The name string is limited to 79 characters. If no name is given, pnmtosgi writes "no name" into this field. BUGS Probably. REFERENCES SGI Image File Format documentation (draft v0.95) by Paul Haeberli (paul@sgi.com). Available via ftp at sgi.com:graphics/SGIIMAGESPEC. SEE ALSO pnm(5), sgitopnm(1) AUTHOR Copyright (C) 1994 by Ingo Wilken<EMAIL_ADDRESS>burg.de) 29 Januar 1994 pnmtosgi(1)


Radex Wrapper Functions¶
-
spectralradex.radex.
add_data_path
(filename)¶ Adds the path to the packaged datafiles to a filename. :meta private:
-
spectralradex.radex.
format_run_for_grid
(line_count, parameters, target_value, columns, grid_variables, grid_parameters)¶ Simple function to set up and reformat the output of
run()
forrun_grid()
:meta private:
-
spectralradex.radex.
get_default_parameters
()¶ Get the default RADEX parameters as a dictionary, this largely serves as an example for the input required for
run()
.molfile can be a complete path to a collisional datafile in the LAMDA database format or one of the files listed by
list_data_files()
.method is 1 (uniform sphere), 2 (LVG), or 3 (slab)
-
spectralradex.radex.
get_example_grid_parameters
()¶ Returns a dictionary of parameters for RADEX with iterables which can be used with
run_grid()
.
-
spectralradex.radex.
list_data_files
()¶ SpectralRadex is packaged with a selection of LAMDA collisional datafiles. This function prints the list of available files. You can provide the full path to another file in the parameter dictionary to use one not packaged with SpectralRadex.
-
spectralradex.radex.
run
(parameters, output_file=None)¶ Run a single RADEX model
- Parameters
parameters (dict) – A dictionary containing the RADEX inputs that the user wishes to set, all other parameters will use the default values. See
get_default_parameters()
for a list of possible parameters.output_file (str) – If not
None
, the RADEX results are stored to this file in csv format/
-
spectralradex.radex.
run_grid
(parameters, target_value='FLUX (K*km/s)', freq_range=[0, 30000000.0], pool=None)¶ Runs a grid of RADEX models using all combinations of input lists of H2 density, temperature, and the molecular column density. Returns a dataframe of results and can be parallelized with the
pool
parameter.- Parameters
parameters – A dictionary of parameters as provided by
get_default_parameters()
orget_example_grid_parameters()
. Parameters should take a single value when they are constant over the grid and contain and interable if they are to be varied.molfile (str) – Collisional data file for the molecule for which the emission should be calculated.
target_value (str,optional) – RADEX output column to be returned. Select one of ‘T_R (K)’, ‘FLUX (K*km/s)’, ‘FLUX (erg/cm2/s)’
freq_range (iterable,float,optional) – Limit output lines to be those with frequencies in the range (fmin,fax).
pool (Pool, optional) – a Pool object with
map()
,close()
, andjoin()
methods such as multiprocessing.Pool or schwimmbad.MPIPool. If supplied, the grid will be calculated in parallel.