PyObjC 2.0 introduced a way to load enhanced API descriptions from XML “bridgesupport” files. The format of this file is shared between a number of bridges, although later releases of PyObjC added more capabilities that aren’t in the official format.
As of PyObjC 2.4 [1] use of bridgesupport files is deprecated, the compiled metadata system allows for faster and lazy loading.
Bridgesupport files are XML files with a root element “signatures” that has child elements for various kind of API descriptions. The API descriptions contain information that cannot be extracted at runtime, such as the names and types of global variables (constants), enum labels, function prototypes and additional information about method signatures.
PyObjC supports loading bridgesupport files when initializing a module using initFrameworkWrapper(), as well as parsing the contents of bridgesupport files using parseBridgeSupport().
The function initFrameworkWrapper() is basicly a one-step solution for wrapping a framework: it loads the framework bundle and bridgesupport file and then initializes the contents of the wrapper module. Bridgesupport files are located using a search path:
“PyObjC.brigesupport” next to the module calling initFrameworkWrapper().
A resource file inside the framework itself (with suffix ”.bridgesupport” and the same basename as the framework, located in subdirectory “BridgeSupport”).
A resource name with the same basename as the framework and suffix ”.bridgesupport” in “/System/Library/BridgeSupport”
Note
PyObjC will not load bridgesupport files from “/Library/BridgeSupport” or “~/Library/BridgeSupport” to avoid depending on system-specif files that could make a bundled PyObjC application non-portable.
When a bridgesupport is loaded from the last two location the function also looks for “PyObjCOverrides.bridgesupport” next to the module that called initFrameworkWrapper().
The easiest way to create a framework wrapper using bridgesupport files is to use a python package where the “__init__.py” contains a call of initFrameworkWrapper()
import objc as _objc
__bundle__ = _objc.initFrameworkWrapper("FrameworkName",
frameworkIdentifier="com.apple.Framework",
frameworkPath=_objc.pathForFramework("/System/Library/Frameworks/FrameworkName.framework")
globals=globals())
The framework name, identifier and path should be replaced by the information for the framework you are wrapping.
The initFrameworkWrapper() will load bridgesupport files from a file named “PyObjC.bridgesupport” next to the “__init__.py” when such a file exist, and otherwise from the default location in the framework itself.
Note
The call to objc.pathForFramework() ensures that the wrapper does the right thing when DYLD environment variables are set (see dyld(1) for more information on those).
This section describes the BridgeSupport file as supported by PyObjC. PyObjC supports a slightly different dialect of those files than what is described in Apple’s manual page for BridgeSupport.
The file is an XML document with a toplevel element named “signatures”. The standard proscribes an attribute named version, that attribute is ignored by PyObjC. A minimal BridgeSupport file is:
<signature version='1.0'>
</signatures>
The document root has children that contain the metadata for various types of objects.
The sections below contain more information about all types, with details about their semantics, supported child elements and attributes.
The document can contain other elements, attributes, and extra whitespace and those will be ignored by the bridgesupport parser.
Bridgesupport elements are processed in an undefined order, the side effects of alle elements that have the same name will take place but it is undefined which definition will be bound to a name in the module globals dictionary.
See also
A number of elements have a “type” attribute that contains an Objective-C runtime type encoding. Most contain the type encoding for a single type, the signature for methods in informal protocol contains the type signatures of the return value and all arguments (included the implicit ones).
The type signatures are described in Apple’s Objective-C Runtime Programming Guide, and the format of the BridgeSupport file uses that format with one small change: the BridgeSupport file can contain some type encoding that aren’t presesnt in Apple’s runtime and redefines one type encoding.
Typecode Description B used for type BOOL, is used for bool in the Objective-C runtime Z used for type bool T used for type UniChar t used for type char in the role of a single character z used for type char in the role of a small integer
The bridge uses the information provided by these ehnanced type encodings and translates them to regular type encodings when communicating with the Objective-C runtime (or other Objective-C code).
A number of elements that are described below have attributes that are booleans. When the documentation says that an attribute is a boolean attribute the value of the attribute is either true or false:
<function name='func1' variadic='true' />
<function name='func1' variadic='false' />
The values true and false correspond to the Python values True and False (the obvious interpretation).
Nodes of this type define a CoreFoundation type, such CFURLRef. These elements are used to define a Python proxy for the CoreFoundation type and to register that type with the bridge. The proxy type is a subclass of objc_object.
<cftype name='CFURLRef' type='^{CFURLRef}' gettypeid_func='CFURLGetTypeID' />
These elements do not have child elements, all information is encoded in attributes:
- name: the name of the Objetive-C type (such as CFURLRef
- type, type64: the type encoding for the Objective-C type, type64 contains the encoding for use in 64-bit mode when that encoding is different from the encoding used in 32-bit mode.
- gettypeid_func: (optional) the name of a C function for retrieving the type ID of the type, the default is derived from the name (strip “Ref” from the end of name, then add “GetTypeID”)
- tollfree: (optional) the name of an Objective-C class that is tollfree bridged to this type For tollfree bridged types the bridge does not create a new proxy type, but reuses the proxy type for the Objective-C class. That is, in Python the CoreFoundation and Objective-C interfaces can be used without any form of casting.
Describes additional metadata for Objective-C classes.
<class name='NSObject'>
<method selector='description'>
<retval type='@' />
</method>
</class>
The element has a single attribute name with the name of the Objective-C class. When that class is not present in the runtime the metadata is stored for later use (a later class definition or bundle loading action might make the class known to the runtime later on).
The element has 0 or more children with method definitions, the tag for those children is <method> and other children are ignored.
A <method> element has the following attributes:
Method’s have 0 or more <arg> and <retval> child elements that describe additional information about the method prototype (information that cannot be extracted from the Objective-C runtime). The structure of <arg> and <retval> elements is described in the section describing function and method prototypes.
This element defines a C constant/variable definition.
<constant name="NSZeroPoint" type="{_NSPoint=ff}" type64="{_CGPoint=dd}" />
This element does not have children, all information is encoded in attributes.
The bridge will ignore constants that have a type that is a struct type with embedded function pointers.
Note
Due to the way these values are exposed to Python they will behave like constants in Python, the Python representation will not change when the value of the C variable would change. This means that <constant> definitions aren’t useful to expose variable definitions that aren’t effectively constant (such as the NSApp variable).
This element defines a numeric constant such as an enum label or C a macro that expands into an integer or float literal.
<enum name='NSCompareEqual' value='0' />
This element does not have children, all information is encoded in attributes.
The value attribute can contain a numeric constant in a number of formats:
When the value cannot be parsed the definition is ignored.
This element defines a global C function.
<function name="NSCreateObject">
<retval type="@" />
<arg type="#" />
</function>'
Information about the function itself is encoded in attributes of the <function> elements, information about the return value is encoded as the child element <retval> and information about arguments is encoded using <arg> elements.
The structure of <arg> and <retval> elements is described in the section describing function and method prototypes.
Note
Variadic functions are only supported when the bridge has enough information to construct a valid argument list using one of the arguments described above or a printf_format attribute on one of the <arg> children.
This element is intended to be used to define function aliases, that is an alternative name for a <function> element. Due to the way PyObjC is implemented the element can also be used to define an alias for other elements (for example <enum> or <constant> elements).
<function_pointer name='AlternateName' original='BasicName' />
This element does not have children, all information is encoded in attributes.
This element is used to describe an Objective-C informal protocol, that is a set of methods expected by an API that are described in the documentation but are not a formal @protocol definition. The information in informal protocol definitions are used by the bridge to automaticly adjust the method signatures of method that are defined in Python.
<informal_protocol name="NSTableViewDataSource">
<method selector="numberOfRowsInTableView:" type="i@:@" type64="q@:@" />
</informal_protocol>
The <informal_protocol> element has a single attribute, name, with the name of the protocol. Child elements with tag <method> contain more information about methods in the protocol. Other child elements are ignored.
All information for <method> elements is provided through attributes, the element does not have child elements (and does not contain the same kind of information as <method> elements in <class> definitions.
The following attributes can be used for <method> elements:
Note
The <method> elelments in an informal protocol cannot be used to describe complicated method signatures, such as variadic methods or pointer arguments that refer to arrays. This can be worked around by describing such methods using <method> notes of a <class> definition for class NSObject as well.
This element defines a name that expands into a C NULL pointer, and that is represented as None in Python.
<null_const name='nil' />
This element does not have children, all information is encoded in attributes.
This element describes pointer types that are used as handles.
<opaque name='NSOpaqueType' type='^{opaque}' />
These elements do not have child elements, all information is encoded in attributes:
name: The name of the type
to describe the type for the 64-bit runtime when that type is different from the type for the 32-bit runtime.
This element describes C constants that are string literals, for example C macros.
<string_constant name="NSLabel" value="label text" />
These elements do not have child elements, all information is encoded in attributes:
This element describes a C structure type and is used to create a Python type with a simular interface (see createStructType()).
<struct name='NSPoint' type='{_NSPoint="x"f"y"f}' type64='{_CGPoint="x"d"y"d}' />
These elements do not have child elements, all information is encoded in attributes:
name: The name of the structure type, this is usually the typedef name in C
type, type64: The Objective-C type encoding of the type. Use type64 when the encoding for the 64-bit runtime is different from the encoding for the 32-bit runtime.
The encoding should be for a structure type and must include embedded field names, when the field names are not present the definition is ignored. A structure type contains embedded field names with the encoding contains a (double-)quoted field name just before the type encoding of that field. In the example above the field names are x and y.
alias: Name of a Python type that should be used for the Python representation of this structure. That type should be created using createStructType() (or a <struct> element in a bridgesupport file). The value of the attribute is a fully qualified name.
One example for using this is to map the Objective-C types NSPoint and CGPoint to the same Python type.
The elements <function> and <method> (in <class> definitions) can have child elements that are used to describe the full prototype (for functions) or additional information about the prototype (for methods).
For functions the <arg> children contain information about all arguments, in order (and without using the attribute index described below). The <retval> child element can contain information about the function return value, when that element is not present the function has return type void.
For methods the <arg> children can contain more information about some arguments, these children have an index attribute that tells which argument is described. Likewise the <retval> element can optionally provide more information about the return value of a method.
It is undefined which <retval> element is used when more then one of them is present, and the bridge may also ignore definitions with multiple <retval> elements.
The following attributes can be used with <arg> and <retval> elements:
index: For <arg> children of <method> elements only. Contains the argument index, where index 0 is the first explicit method argument (that is, the two implicit arguments cannot not present in the bridgesupport file).
type, type64: Type of the argument or return value. Required for children of <function>, and optional for children of <method> (the default type is extracted from the Objective-C runtime). The type64 attribute can be used to describe the type for the 64-bit runtime when that type is different from the type for the 32-bit runtime.
type_modifier: A modifier for pointer arguments. Use value ‘n’ to specify that a value is passed into the function, ‘o’ to specify that a value is passed out of the function and ‘N’ to specify that a value is passed both ways.
When none of the c_array_... attributes are used the argument is a pass-by-reference argument (single value), otherwise the argument is a buffer (C array).
already_cfretained: Boolean attribute (default False). When True, the return value, or pass-by-reference output parameter, is an object that is returned with an increased retain count (that is, the Objective-C caller must call CFRelease() when it no longer needs to access the value).
already_retained: Boolean attribute (default False). When True, the return value, or pass-by-reference output parameter, is an object that is returned with an increased retain count (that is, the Objective-C caller must call the retain method when it no longer needs to access the value).
Metadata where both already_retained and already_cfretained are true is invalid and will be ignored.
c_array_length_in_result: Boolean attribute (default False). When true the <arg> is a pointer argument that points to a buffer of values where the number of values is in the return value of the function or method. This is commonly used with output parameters (see type_modifier), and with an argument that is used to specify the size of the buffer that needs to be allocated before calling the function or method.
c_array_delimited_by_null: Boolean attribute (default False). When true the value is a pointer to a null-terminated buffer of values.
c_array_of_variable_length: Boolean attribute (default False). When true the value is a pointer to a buffer where the bridge has no information about the expected size. For arguments the bridge assumes that the size of the sequence that the caller passes is sufficient (for input parameters), for return values the bridge creates a special sequence type that doesn’t limit the indexes you can use.
printf_format: Boolean attribute (default False). When true the argument is a printf-style format string, used when the function or method is a variadic callable to convert the additional arguments.
function_pointer: Boolean attribute (default False). When true the argument is a function pointer, the function interface is described by child elements of this element.
block: Boolean attribute (default False). When true the argument is a block, the block interface is described by child elements of this element.
function_pointer_retained: Boolean attribute (default False). When true and either function_pointer or block is true, the function pointer argument will be stored by the called function. The bridge cannot create a temporary C bridge for the function that’s cleaned up after the call.
free_result: The return value in C is a buffer that should be freed using the function free().
sel_of_type, sel_of_type64: Used when the argument has type SEL: the value of the attribute describes the type signature of a selector. This data is used by the decorator selectorFor() to adjust the method signature of a newly defined python method.
c_array_of_fixed_length: The argument or return value is a C array of a fixed length. The attribute value is the (integer) value of that length.
c_array_length_in_arg: The argument or return value is an array whose length is passed in another argument. The value is the index of that argument (for methods index 0 is the first explicit argument). For <arg> nodes the value can also be two integers separated by a comma, in those cases the first value is the argument that contains the array length that should be passed to the function while the second value the argument that contains the usuable length of the array when the function returns.
| Parameters: |
|
|---|
Load a BridgeSupport XML file with metadata for a framework.
The definitions from the framework will be added to the globals dictionary.
Note
This function is primarily present for backward compatibility and for users that need an easy way to wrap their own Objective-C code. PyObjC itself uses a different metadata mechanism that’s better tuned to the needs of PyObjC.
Changed in version 2.4: This function is not present.
Changed in version 2.5: The function is available again.
| Parameters: |
|
|---|
Load the named framework using the identifier if that has result otherwise using the path. Also loads the information in the bridgesupport file ( either one embedded in the framework or one next to the module that called initFrameworkWrapper()).
See Basic structure and use for more information on the way this function loads for bridgesupport files.
Changed in version 2.4: This function is not present.
Changed in version 2.5: The function is available again.
Footnotes
| [1] | Technically, deprecation started in PyObjC 2.5, the bridgesupport system was temporarily removed in PyObjC 2.4. |


● 5 Years of experience in various coding development languages, most recently C, C++, and C#/ .Net
● Strong desire to apply coding knowledge and skillset to a challenging, high-quality engineering environment
● A self-starter with a background in embedded systems
● C#/.Net Development
● Maintain a functional test software tool used in a manufacturing environment
● Create and use NuGet Packages for development
● Integrate new hardware drivers into the functional test software
● Manage a TFS repository through Visual Studio Team Services
● ARM Distributed Antenna System Web Server Backend Development in C++
● Database management with SQLite
● Managed transition from SVN to Git
● Front End Development in Javascript/HTML
● Firmware Verification Development
● C Development
● Maintained firmware test software tools used to find firmware bugs
● Worked on a large team members and with others in the firmware team
● Tracked work with Jira management tool
● Worked with several git repositories
● C#/.Net Development
● Maintained a functional test software tool used in a manufacturing environment
● Created and use NuGet Packages for development
● Integrated new hardware drivers into the functional test software
● Managed a TFS repository through Visual Studio Team Services
● Worked with software engineers to manage software applications for real-time-location-systems
● Maintained SQL server to communicate with the application
● Increased knowledge of implementing C#/.NET programs on application
● Expanded knowledge of maintaining a Git repository
● Operated under senior design engineer to manage software built for embedded systems in motor controls
● Expanded knowledge of implementing C/C++ programs on an embedded system
● Increased knowledge of maintaining a project requirements document
● Actively used and committed to an internal software repository for continuous software support
● Worked under senior engineer to design control panels for commercial customers
● Gained knowledge of EPlan drafting and increased familiarization with reading schematics
● Used Dynamic Layout Software, Shortest Distance Software and APE (Automated Panel Expert) technology
● Built electrical panels and understand electrical panel function
GPA: 3.29
GPA: 3.85


Toggle navigation
Event Registration
Home
Status
About
Interested People
Data loading...
Unable to load data...Try refreshing the page.
Experience
Profession
Age


Toggle navigation
Living Legends
About
Details
Tickets
Ticket Scanned
{{ticket.type | uppercase}}
Scan Success
Already Used
Family Size: {{ticket.size}}
You must be approved and login to scan tickets.
Username
Password
Register


Harrow’s 1st (we think) Folk and Craft festival. Based around the main venue of the Ryan Theatre, we are presenting a weekend festival.
Feature artists include - Reg Meuross, Holy Moly and the Crackers, India Electric Co., While and Mathews, and many others.
Featured artists, up and coming singers and musicians, dance troops, various workshops, story-telling, food, drink, crafts and Good Company.


BJP crossed limits of shamelessness, will defeat it in trust vote with Sena, NCP: Congress
Congress said Governor BS Koshiyari's decision to administer chief minister's oath to Devendra Fadnavis without verifying authenticity of the letter of support given by Ajit Pawar was unfortunate and will be remembered as a black moment in Maharashtra's history.
The Congress on Saturday said the BJP has crossed "all limits of shamelessness" in complete disregard to the Constitution, hours after BJP's Devenedra Fadnavis took oath as Maharashtra's chief minister with support from NCP's Ajit Pawar.
Addressing a press conference in Mumbai, senior Congress leader Ahmed Patel also criticised Governor BS Koshiyari's decision to administer chief minister's oath to Devendra Fadnavis without verifying authenticity of the letter of support given by NCP's Ajit Pawar was unfortunate and will be remembered as a black moment in Maharashtra's history. He said the governor never gave the Congress a chance to form government even though other parties were invited.
Follow LIVE updates on Maharashtra
On Saturday morning, Ajit Pawar, who was recently elected as NCP's CLP leader, took oath as deputy chief minister after pledging support to the BJP. He reportedly handed over a letter of support signed by NCP MLAs but the NCP has distanced itself from this decision.
The Congress said it will explore all legal and political options to form government in Maharashtra and that its alliance with the Shiv Sena and the Nationalist Congress Party (NCP) remains intact.
Asked about the next course of action, Ahmed Patel said NCP chief Sharad Pawar will be holding a meeting with his party MLAs at 4.30pm today.
"Sharad ji will decide what action has to be taken against Ajit Pawar and others and whether they need a new CLP leader and party whip. All Congress MLAs with us. We will explore political and legal options and together defeat the BJP during the floor test," Ahmed Patel said.


| Opcode/Instruction | Op/En | 64/32-bit Mode | CPUID Feature Flag | Description |
|---|---|---|---|---|
|
0F 50 /r MOVMSKPS reg, xmm |
RM | V/V | SSE | Extract 4-bit sign mask from xmm and store in reg. The upper bits of r32 or r64 are filled with zeros. |
|
VEX.128.0F.WIG 50 /r VMOVMSKPS reg, xmm2 |
RM | V/V | AVX | Extract 4-bit sign mask from xmm2 and store in reg. The upper bits of r32 or r64 are zeroed. |
|
VEX.256.0F.WIG 50 /r VMOVMSKPS reg, ymm2 |
RM | V/V | AVX | Extract 8-bit sign mask from ymm2 and store in reg. The upper bits of r32 or r64 are zeroed. |
| Op/En | Operand 1 | Operand 2 | Operand 3 | Operand 4 |
| RM | ModRM:reg (w) | ModRM:r/m (r) | NA | NA |
Extracts the sign bits from the packed single-precision floating-point values in the source operand (second operand), formats them into a 4- or 8-bit mask, and stores the mask in the destination operand (first operand). The source operand is an XMM or YMM register, and the destination operand is a general-purpose register. The mask is stored in the 4 or 8 low-order bits of the destination operand. The upper bits of the destination operand beyond the mask are filled with zeros.
In 64-bit mode, the instruction can access additional registers (XMM8-XMM15, R8-R15) when used with a REX.R prefix. The default operand size is 64-bit in 64-bit mode.
128-bit versions: The source operand is a YMM register. The destination operand is a general purpose register.
VEX.256 encoded version: The source operand is a YMM register. The destination operand is a general purpose register.
Note: In VEX-encoded versions, VEX.vvvv is reserved and must be 1111b, otherwise instructions will #UD.
DEST[0] ← SRC[31]; DEST[1] ← SRC[63]; DEST[2] ← SRC[95]; DEST[3] ← SRC[127]; IF DEST = r32 THEN DEST[31:4] ← ZeroExtend; ELSE DEST[63:4] ← ZeroExtend; FI;
1.
ModRM.MOD = 011B required
(V)MOVMSKPS (128-bit version)
DEST[0] (cid:197) SRC[31] DEST[1] (cid:197) SRC[63] DEST[2] (cid:197) SRC[95] DEST[3] (cid:197) SRC[127] IF DEST = r32 THEN DEST[31:4] (cid:197) 0; ELSE DEST[63:4] (cid:197) 0; FI
VMOVMSKPS (VEX.256 encoded version)
DEST[0] (cid:197) SRC[31] DEST[1] (cid:197) SRC[63] DEST[2] (cid:197) SRC[95] DEST[3] (cid:197) SRC[127] DEST[4] (cid:197) SRC[159] DEST[5] (cid:197) SRC[191] DEST[6] (cid:197) SRC[223] DEST[7] (cid:197) SRC[255] IF DEST = r32 THEN DEST[31:8] (cid:197) 0; ELSE DEST[63:8] (cid:197) 0; FI
int _mm_movemask_ps(__m128 a)
int _mm256_movemask_ps(__m256 a)
None.
See Exceptions Type 7; additionally
| #UD | If VEX.vvvv ≠ 1111B. |


Logo
Home
Form
Third Sidebar Link
Fourth Sidebar Link
Menu
Home
Form
Third Sidebar Link
Fourth Sidebar Link
z-depth-3
First Name
Last Name
Date of Birth
Weight
Email
Phone Number
Address 1
Address 2
City
Country
Ireland
England
Spain
Amount


Disaggregate and visualize
Immersion Service Considerations
Interested in change over time.
Pre- and Post-surveys are common.
Want information on
- Learning gains
- Impact
- Changes in perspective
Challenges
- Measuring change
- Finding statistical significance
Often looking at data like this
Q1 - Change!!
Q2 - No Change??
Often looking at data like this
Q1 - Change!!
Q2 - No Change??
Disaggregate and visualize to see patterns in data
Is this change significant?
Visual statistics can help
- Generate 19 randomized versions of data
- Add the real data to the set to get a total of 20 data sets
- Generate a chart for each set and shuffle them
- Show panel of 20 charts to a naive audience
If an observer can identify the real data,
the pattern is significant at a p-value of 0.05
Slider for collecting better data


6th edition
09:30 AM
Registration Starts
10:00 AM
Welcome Note
10:20 AM
From web to mobile... Evolve yourself
Key considerations to keep in mind while switching from web to mobile application testing
By: Sandhya.S
Resources: Session PPT
10:40 AM
Who do you think owns your application?
How neglecting Android security model enables hackers to abuse your application and gives him/her an opportunity to tear apart your reputation
By: Nazneen Rupawalla
Resources: Session PPT
11:20 AM
Tea Break
11:40 AM
One page to test them all!
challenges faced while coming up with a framework, which can sustain 3 platforms ( mobile web, iOS and android) having similar functionality and screen in spite of their internals being different
By: Priti Biyani
Resources: Session PPT
12:15 PM
Mobile testing for enterprise application in cloud
How When Why's of cloud service in mobile testing
By: Bharathan Kumaran
Resources: Session PPT
12:30 PM
01:15 PM
Lunch
02:00 PM
Workshop - Appium
In this workshop you will get to know the basics of setting up appium and using it to automate an android application(native).
(Hardware and Software requirements for the workshop will be mentioned in the acknowledgment mail)
By: Jaya Chakravarthi/Thivya Lakshimi
04:30 PM
Wrap up and Networking
With over 9 years of indulgence into Software Quality Assurance, Sandhya has a wide spread testing experience ranging from mission critical applications to public facing websites. She has worked across multiple domains spanning web and mobile. Exploring Big Data and Lean Agile are her current areas of interest.
Priti is currently working in mobile project since last one year. She has worked on web applications before. She believes everything has simple way and so find simple way of doing things! Apart from this, you will find her solving more designing problems by OOPs way in Java, Ruby. She likes to blog about her learnings.
Jaya is a QA working with Thoughtworks with an industry experience of over 9 years. He has worked in various domains like retail, banking, publications, etc. He has interest in learning about new mobile technologies. Apart from work he likes to take a road trip.
Vijayaragavan is a senior quality analyst at Thoughtworks with deep passion for automation in agile environments. His primary responsibility is to implement the test strategy for the projects that ThoughtWorks is building for their clients. He has worked on a number of web application for the past 8 years.
Nazneen is an Application Developer at ThoughtWorks. She has been into Android development for the last few years and has been involved in a wide variety of Android projects. She has also been an active speaker in the Android community, and has spoken at various conferences including Mobile Developer Summit(MDS) 2013 and MDS 2014
With around 5 years of experience in the software industry Bharath has gained experience in testing various domains like Insurance, Banking, etc. Currently working for a leading airline client. He has keen interest in developing skills around the current trends, mobile being one of them.
Thivya is a Quality Analyst in Thoughtworks who has about 3 years of experience in various domains like converged infrastructure, finance and mobile. Currently working in an IoT based mobile project. She is passionate towards performance testing and mobile technologies.
vodQA, also called Value Oriented Discussion on Quality Analysis is a forum that sports the moto - 'Come Learn Something New'. The forum offers a unique platform within the software testing industry to strengthen the QA community through knowledge sharing.
We love feedback! If you have any suggestions or cribs, feel free to fill out our feedback form. Don't worry, its completely anonymous.
vodQA Volunteers


Give {{glyco_dose}} mcg {{#is_dose_range}} or 4mcg/kg (max 400 mcg) {{/is_dose_range}} IV Glycopyrrolate.
Nebulise {{neb_lig_dose}} mls of {{neb_lig_pct}}% lignocaine.
{{/is_neb}} {{#is_nose_prep}}Spray {{co_phenyl_dose}} metered doses of Co-phenylcaine (5mg per spray) down the best nostril. Draw up {{nasal_lig}}mls of {{nasal_lig_pct}}% lignocaine and spray 0.5ml at a time via the nostril using a Mucosal Atomiser Device (MAD)
{{/is_nose_prep}} {{#is_op_preparation}}Draw up {{op_lig_dose}}ml of {{op_lig_pct}}% lignocaine and spray 0.5ml aliquots via the mouth using a Mucosal Atomiser Device (MAD).
{{/is_op_preparation}}Lignocaine "spray-as-you-go" down the fibreoptic scope suction channel.
| Epiglottis | {{sayg_lig_epiglottis_dose}}ml | {{sayg_lig_epiglottis_pct}}% lignocaine | Left Cord | {{sayg_lig_leftcord_dose}}ml | {{sayg_lig_leftcord_pct}}% lignocaine | Right Cord | {{sayg_lig_rightcord_dose}}ml | {{sayg_lig_rightcord_pct}}% lignocaine |
There are many different ways to topicalise an airway for a{{#is_oral}}n{{/is_oral}} {{route}} AFOI and this is one sample spray as you go formulae which can be applied to the emergency situation with limited specialised equipment. The dosing regime may need to be modified according to the current medical condition and physical status of the patient.
All doses should be verified to be within your national and local guidelines, as well as hospital policy, and modified accordingly. The authors of this app take no responsibility for the actual dose administered. It is the responsibility of the individual clnician to select an appropriate dose and take patient individuality into consideration.


This class will introduce various web techniques and cover the spectrum of skills required to become a full-stack developer. You will not become an expert in ten weeks, but you will leave this course with a better understanding of what skills you may want to continue improving and what areas of web development you may wish to pursue.
In this course, you will learn how to create web applications using a combination of front-end and back-end technologies, you will build both a personal website or a full-stack application. Additionally, you will gain a lot of experience reading documentation, using a code editor, and using version control to submit all the assignments in this class.
Please keep in mind that this class schedule is subject to change.
| Dates | Topics | Assignments |
|---|---|---|
| Week 1 | Course Intro + Git/GitHub | In-class assignment 0 |
| Week 2 | HTML + Accessibility | In-class assignment 1 |
| Week 3 | CSS | In-class assignment 2 |
| Week 4 | CSS Layout, Sass, Bootstrap | In-class assignment 3 |
| Week 5 | JavaScript (ES6) + HTTP Overview | In-class assignment 4, Final Project Proposal Due Wednesday/Thursday at 11:59pm, Portfolio Due on Friday at 11:59pm |
| Week 6 | Quiz #1 + Node + Express + APIs | In-class assignment 5 |
| Week 7 | Veteran’s Day (Monday) + React | In-class assignment 6 |
| Week 8 | React + GraphQL | In-class assignments due on Friday at 11:59pm |
| Week 9 | Angular + Vue.js + Thanksgiving (Thursday) | |
| Week 10 | Review Session + Final Project Presentations | Final Project Due on Friday at 11:59pm |
| Finals Week | Final (Quiz #2) |
A personal website that you work on by yourself or a full-stack application that you work on in teams of two. You will turn in your final project and present the last week of classes.


Christian Critic's Movie Parables - http://www.christiancritic.com
THE GREEN MILE * * * out of * * * * stars ==========================
DIRECTED BY: Frank Darabont STARRING: Tom Hanks, David Morse, Michael Clarke Duncan, James Cromwell, Michael Jeter, Doug Hutchison WRITTEN BY: Frank Darabont RATED: R for violence, language, and some sex-related material SCRIPTURE REFERENCES: 1 Corinthians 12:7-11, Mark 10:51-52, Matthew 15:25-28
"Sometimes the 'green mile' seems sooooo long." Indeed. And any filmmaker with a three hour movie who ends it with that gem of dialogue should expect to see it quoted in a review. On a more positive note, let me add that sometimes THE GREEN MILE is almost good enough to make us forget its length.
The mile in question (green due to its faded lime-colored linoleum) leads from the prison cell to "Old Sparky," the electric chair where executions were carried out at Louisiana's Cold Mountain Penitentiary in 1935. Paul Edgecomb (Tom Hanks, YOU'VE GOT MAIL) is the head guard of E-block, otherwise known as death row. Keeping his prisoners calm as they await the carrying out of their sentence is his primary responsibility. It is a responsibility which he capably delegates to the other guards on his watch by insisting they "talk to" the convicts instead of yelling at them. This practice leads to an unusual camaraderie between the guards and the men behind their bars.
Into his charge comes one John Coffey (Michael Clarke Duncan, ARMAGEDDON), a seven foot tall gentle giant who has been convicted of the rape and murder of two young girls. Immediately, Paul senses something different about this prisoner. Perhaps its the way he asked for a night light because he is frightened of the dark. Or perhaps it is the mystical healing powers he demonstrates as he "takes back" Paul's bladder infection thereby restoring him to health.
Based on Steven King's 1996 serialized novel, THE GREEN MILE does offer other characters who have stories to be told: Eduard Delacroix (Michael Jeter, PATCH ADAMS), is a frail Cajun convict who befriends and trains a mouse to do circus tricks; Percy Wetmore (Doug Hutchison, A TIME TO KILL), is a young and sadistic guard sitting on a transfer to a more lucrative position because he has yet to see a prisoner "fry" up close; and Hal Moores (James Cromwell, BABE: PIG IN THE CITY) is the compassionate warden for whom, despite all the executions he's witnessed, death never loomed as large as when his own wife was diagnosed with a tumor.
While it is Mr. Hanks "everyman" performance at the center of the film which gives it the anchor to hold our interest for 180 minutes, it is the performances of his supporting cast that are most worth noting. All involved do credible work in their respective roles, most especially Mr. Duncan, who turns in an impressive, fully realized characterization.
If only the story were more credible. Writer/director Frank Darabont (THE SHAWSHANK REDEMPTION) has crafted a flawed fantasy/allegory of sorts; one which is more spiritualistic than spiritual, relying on a preternatural mysticism rather than a genuine and godly spiritual power.
Mr. Darabont also overplays his hand considerably in the manipulation of our affection towards and association with his characters. Was it an accidental omission that the first two inmates who walked the green mile were being punished for crimes never disclosed? By not knowing the reason for the condemned convicts' presence on E-block, the audience never gets the sense of the justice which is being carried out, making the death penalty appear cruel and unwarranted. This is especially true during the gruesome depiction of the second execution which was horribly botched.
Much has also been made of Coffey's Christ-like ability to heal but unlike the numerous healings which are recorded in the scriptures, Coffey's powers are shrouded in mystery, taking on the feel of a circus trick, coupled with a voodoo-like "I feel your pain" transference.
In contrast, there is no mystery associated with the healing that is from God. The genuine "gifts of healing" listed in 1 Corinthians 12 is just one of the nine manifestations of holy spirit and can be operated by any spiritually instructed man or woman in accordance with the knowledge and wisdom of God.
True spiritual healing (with few exceptions) requires the committed believing of both the healer as well as the one being healed. Such believing comes not from the shrouded secrets of mysticism, but from the revealed Word of God.
Michael Elliott http://www.christiancritic.com
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


Clues: A. Flight's redirected if heart of Australia has one (8) B. Flight into heart of Canberra's country (6) C. Film maker with creative grip on the camera? (15) D. Director and film's leads holding back layer of fluff and flakey parts (8) E. "Demented Avenger" gets right instrument for groovy recording (8) F. It's pointlessness replacing initial boundaries with upper extremes for an event yet to happen (8) G. Camps ponies around rural setting with no fancy wheels (6) H. Trump on course perhaps - one who rewrites the code? (6) I. English opener included in world cricket team - you finally get to live with O'Shea now making half century (3 4) J. Sri Lankan opener now making half-century is Raja you say? I suspect duck forgotten! (10) K. She might take a punt with extra element (6) L. Labor worked hard, but with no hallowed leader of the left (8) M. My top idyll: no cold stuff... good as wrapping in cotton wool! (13) N. Times bands play improvised sting, getting hot (6) O. Norman's green goblin from the east thus brought into the world (6) P. Create mystery, without first hint of simple clear material left in (7) Q. Local magistrate, some notice, backed intellegence report (4) R. Crime dines out on indulged recollections (10) S. Returning, finally, Australia's real openers (talents with grip of iron) and, making half century, the golden grand slam hero (6 4) T. In turn, greeting replacement for turn at watering hole (6) U. State of haut cuisine? (4) V. Right disappears, Polish disappear (6) W. We hug at having right wrapping... finally quiet as if sealed in wax! (10) X. A film maker ultimately should get one immersed in mysteries (4) Y. Your first body part ... about an eightieth of a life (4) Z. Plant chia mostly in zone under canopy, not in tops (8)


Looking for a good build for the pw I play: Three Towns. Dev crit is disabled and it's a low magic world. I've been told pure fighters don't do well but I'm looking for a powerful build with little or no buffing needed (no monk please). Also been told str based do much better than dex. Thanks for any suggestions.
23paladin/2bard/15rdd should be your best bet at a high AB machine without dev crit. Remember to take 14 wisdom because the paladin spells offer great AB boosting. With all buffs for the paladin and a heavy str from both feats, ability points and rdd bonus, you would wander around with 65-68 AB. getting tumble from bard and AC bonus from rdd lvls as well is a fairly good thing. AC will be better than normal warriors. Be sure to take 20 paladin lvls first and then 1 bard lvl(max tumble here) and then take Rdd all the way to 15. After that use the rest of your paladin lvls and at lvl 40 take bard. the bard lvl can also be taken at lvl 37, because that would max tumble to 40 ranks.
Thanks Kalmar,
Did you have a specific build in mind so I know what feats are best? Very much a noob to NWN. Thanks again.
ps Do you think this Paladin Build would be better than a ftr/rogue/wpn master build?
You can't do paladin/bard since bard has to be unlawful >_<
Cleric bard rdd ends up pretty neat though
-DaMouse
oh
How about paly/sorc/rdd? Have seen that.
Well the difference between a 1*ftr/rogue/WM and a 2*pally/sorc/rdd is that 1* has a better chance of killing if the AC is no higher than 40 AC or something within the range of that. I just think the 2* offers more in terms of "raw" power. I like the high base dmg...i really do


ARTHUR AT THE LAND'S-END.
BOLERIUM, or Bellerium, is the name given by the ancients to the Land's-End. Diodorus writes Belerium; Ptolemy, Bolerium. Milton adopts this name in his "Lycidas," and leads his readers to infer that it was derived from the Giant Bellerus. It is quite possible that in Milton's time the name of one of the numerous giants who appear to have made the Land's-End district their dwelling-place, might have still lived in the memories of men. Certain it is no such giant is remembered now. [a]
In a map of Saxon England we find the Land's-End called Pxxxxxxxxx and in some early English books this promontory is named Penrlien-guard, and Penrlien-gard, said to signify the "Headland of Blood." [b] The old Cornish people called this promontory "Pen-von-las," the "End of the Earth," hence we, derive the name of the Land's-End. May not this sanguinary name have been derived from a fact, and that actually several battles were fought by the Britons under the command of Arthur, with the Saxons or the Danes, in this neighbourhood ? We have not far off the Field of Slaughter, "Bollait," where the ancient people of Cornwall made their final stand against the Saxons. On this field flint arrow-heads have frequently been found. The tradition of Vellan-Druchar, which is but one of several I have heard of a similar character, points to the same idea. Arthur, according to one story, held possession of Trereen Castle for some time. Another castle on the north coast is said to have been occupied by him. An old man living in Pendean once told me that the land at one time "swarmed with giants, until Arthur, the good king, vanished them all with his cross-sword."
[a] Carew says, 'a promontory (by Pomp.. Mela., called Balerium; by Diodorus Valerium ; by Voladerane, Heleaium; by the Cornish, Pedu an laas; and by the English, the Land's-End)."--Survey of Cornwall
[b] Pxxxxxxxxxxxx--The name of the Land's-End in the Saxon map; in the text , Camden xxxxxxxxxxxxxxx


| File | Statements | Branches | Functions | Lines | |||||
|---|---|---|---|---|---|---|---|---|---|
| BaseStep.ts | 69.23% | 9/13 | 0% | 0/2 | 66.67% | 2/3 | 69.23% | 9/13 | |
| ChooseIntegration.ts | 51.2% | 64/125 | 46.74% | 43/92 | 65.22% | 15/23 | 65.88% | 56/85 | |
| ConfigureProject.ts | 19.54% | 17/87 | 18.42% | 14/76 | 22.73% | 5/22 | 35.42% | 17/48 | |
| Initial.ts | 53.61% | 52/97 | 46.05% | 35/76 | 68.18% | 15/22 | 79.31% | 46/58 | |
| OpenSentry.ts | 16.39% | 20/122 | 12.79% | 11/86 | 18.18% | 4/22 | 24.1% | 20/83 | |
| PromptForParameters.ts | 17.57% | 26/148 | 12.96% | 14/108 | 16.13% | 5/31 | 23.85% | 26/109 | |
| Result.ts | 18.48% | 17/92 | 17.95% | 14/78 | 22.73% | 5/22 | 32.08% | 17/53 | |
| SentryProjectSelector.ts | 16.5% | 17/103 | 12.5% | 11/88 | 17.39% | 4/23 | 26.98% | 17/63 | |
| ShouldConfigure.ts | 48.28% | 42/87 | 46.05% | 35/76 | 68.18% | 15/22 | 75% | 36/48 | |
| WaitForSentry.ts | 14.06% | 18/128 | 12.22% | 11/90 | 14.29% | 4/28 | 20.45% | 18/88 | |
| Welcome.ts | 48.94% | 46/94 | 46.25% | 37/80 | 68.18% | 15/22 | 72.73% | 40/55 | |
| index.ts | 100% | 21/21 | 100% | 0/0 | 100% | 0/0 | 100% | 21/21 |


Music Categories
Even more websites all about websites templates on Just Web Templates.
If you're looking for a beautiful and professionally made templates you can find them at Template Beauty.
You can remove any link to our websites from this template you're free to use the template without linking back to us.


The rugby evening headlines as Martyn Williams prepares to travel to New Zealand with Wayne Pivac
Wales' new team manager is jumping straight in
by Matthew SouthcombeYour rugby evening headlines for Friday, November 22.
Nugget off to New Zealand with Pivac
As reported by WalesOnline, the Welsh Rugby Union have today confirmed that former flanker Martyn Williams will be their new senior team manager.
Williams takes over from Alan Phillips, who has been in the job for 18 years and now moves on to a role with the British and Irish Lions.
The ex-flanker will be thrown right in and is set to fly around the world with new head coach Wayne Pivac for a recce in New Zealand ahead of next year's summer tour.
"Martyn will spend a few days with us next week as part of the Barbarians match preparations and will be in New Zealand with me next month as part of the planning recce ahead of next summer’s tour and then will begin the role full-time in January," said Pivac.
"I’m really looking forward to working with him."
Part of the team manager's role is to scope out the hotels and training grounds for the team to use when they arrive. As such, Williams' job will involve plenty of trips abroad to scope out the facilities well in advance.
Dragons play in empty stadium
The Dragons were out in Russia this evening playing the European Challenge Cup against Enisei-STM.
The game was taking place in Krasnodar, just under 5,000km away from where Enisei-STM are based in Krasnoyarsk. This is because the weather in Krasnoyarsk at this time of year makes their pitch unplayable.
As such, the game is moved across the country and Krasnodar is actually closer to Newport than it is Enisei's home.
It's resulted in an empty stadium and virtually no fans turning up to the 35,000-seater Kuban Stadium.
The Welsh region won the match 44-29.
World Cup finalists back to face the Ospreys
The Ospreys are back in European action this weekend and face a daunting trip to defending English and European Champions Saracens.
Mark McCall's side have faced their fair share of turmoil in recent weeks, in light of their punishment for breaching the Gallagher Premiership salary cap.
Last weekend, they sent a weakened side out to Paris to face Racing 92, appearing to place an emphasis on the Premiership this season.
But, for the visit of the Ospreys, they are bolstered by the return of World Cup finalists Elliot Daly, Mako Vunipola and George Kruis.
It makes the Welsh region's task that much more difficult.
England star facing spell on sidelines
Joe Cokanisiga is facing some time out after returning from the Rugby World Cup with a knee injury.
His club side, Bath, have released a statement insisting that their medical department will enlist the help of 'world-leading' specialists.
“Joe is a phenomenal talent and a powerful athlete, and we must manage him very carefully in the coming months to allow for the issues he has come back from Japan with to begin to be resolved," said Director of Rugby Stuart Hooper.


--- layout: default title: CompRess ---
University of Maryland, Baltimore County
∗ denote equal contribution
Self-supervised learning aims to learn good representations with unlabeled data. Recent works have shown that larger models benefit more from self-supervised learning than smaller models. As a result, the gap between supervised and self-supervised learning has been greatly reduced for larger models. In this work, instead of designing a new pseudo task for self-supervised learning, we develop a model compression method to compress an already learned, deep self-supervised model (teacher) to a smaller one (student). We train the student model so that it mimics the relative similarity between the datapoints in the teacher's embedding space. For AlexNet, our method outperforms all previous methods including the fully supervised model on ImageNet linear evaluation (59.0% compared to 56.5%) and on nearest neighbor evaluation (50.7% compared to 41.4%). To the best of our knowledge, this is the first time a self-supervised AlexNet has outperformed supervised one on ImageNet classification.
The goal of self-supervised learning is to learn good representations without annotations. We find that recent improvements in self-supervised learning have significantly reduced the gap between them and supervised learning for higher capacity models. But, the gap is still huge for small and simpler models. Thus, we propose to learn representations by training a high capacity model using an off-the-shelf self supervised method. And then compressing it to a smaller model through a novel compression method. Using our framework(CompRess), we train the student using unlabeled ImageNet which is better than training a self-supervised model from the scratch. Our method reduce the gap between SOTA self-supervised and supervised models and even outperformed supervised model in Alexnet architecture.
We propose to capture the similarity of each data point to the other training data in the teacher’s embedding space and then transfer that knowledge to the student. For each image, we compare it with a random set of anchor points and convert the similarities to a probability distribution over the anchor points. This distribution represents each image in terms of its nearest neighbors. We want to transfer this knowledge to the student so we get the same distribution for the student as well. Finally, we train the student to minimize the KL divergence between the two distributions. Intuitively, we want each data point to have the same neighbors in both teacher and student embeddings.
Looking at the results, we find that our method is better than other compression methods by a large margin across 3 different evaluation benchmarks and 2 different teacher SSL methods. This demonstrates the general applicability of our method. Inaddition, when we compress ResNet-50x4 to AlexNet, we get 59.0% for Linear, 50.7% for Nearest Neighbor (NN), and 27.6% for Cluster Alignment (CA) which outperforms the supervised model. On NN, our ResNet-50 is only 1 point worse than its ResNet-50x4 teacher. Note that models below the teacher row use the student architecture. Since a forward passthrough the teacher is expensive for ResNet50x4, we do not compare with CRD, Reg, and Reg-BN.
To evaluate the effect of the teacher’s SSL method, we use SwAV ResNet-50 as the teacher and compress it to ResNet-18. We still get better accuracy compared to other distillation methods. Note that SwAV (concurrent work) [2] is different from MoCo and SimCLR in that it performs contrastive learning through online clustering.
Comparison with SOTA self-supervised methods. We pick the best layer to report the results that is written in parenthesis: ‘f7’ refers to ‘fc7’layer and ‘c4’ refers to ‘conv4’ layer. R50x4 refers to the teacher that is trained with SimCLR. ∗ refers to 10-crop evaluation. † denotes concurrent methods.
We evaluate AlexNet compressed from ResNet-50x4 on PASCAL-VOC classification and detection tasks. For classification task, we only train a linear classifier on top of frozen backbone which is in contrast to the baselines that finetune all layers. Our model is on par with ImageNet supervised model. For classification, we denote the fine-tuned layers in the parenthesis. For detection, all layers are fine-tuned. ∗ denotes bigger AlexNet [23].
Another advantage of our method is data efficiency. For instance, on 1% ImageNet, our ResNet-50 student is significantly better than other state-of-the-art SSL methods like BYOL and SwAV. Note that we only train a single linear layer on the top of frozen features. While other methods on this table fine-tune the whole network. ∗ denotes concurrent methods.
Our method is not designed specifically to learn good clustering. However, since it achieves good nearest neighbor results, we evaluate our features in clustering ImageNet dataset. The goal is to use k-means to cluster our self-supervised features trained on unlabeled ImageNet with no labels, map each cluster to an ImageNet category, and then evaluate on ImageNet validation set. In order to map clusters to categories, we first calculate the similarity between all (cluster, category) pairs by calculating the number of common images divided by the size of cluster. Then, we find the best mapping between clusters and categories using Hungarian algorithm. In the following, we show randomly selected images (columns) from randomly selected clusters (rows) for our best AlexNet modal. This is done with no manual inspection or cherry-picking. Note that most rows are aligned with semantic categories.


OptFlux is an open-source and modular software to support in silico metabolic engineering tasks aimed at being the reference computational application in the field.
Cameo is a high-level python library developed to aid the strain design process in metabolic engineering projects.
iPath2: interactive Pathways Explorer is a web-based tool for the visualization, analysis and customization of various pathways maps.
The Transport Reactions Annotation and Generation (Triage) tool identifies the metabolites transported by each transmembrane protein and its transporter family.
@Note is a Biomedical Text Mining platform that copes with major Information Retrieval and Information Extraction tasks and promotes multi-disciplinary research.
NGLess is a domain-specific language for NGS (next-generation sequencing data) processing with a focus on metagenomics processing.
The Mass-Action Stoichiometric Simulation (MASS) toolbox is a modeling software package that focuses on the construction and analysis of kinetic and constraint-based models of biochemical reactions systems.
iTOL: interactive Tree Of Life is an online tool for the display, annotation and management of phylogenetic trees. Trees can be annotated with 14 different dataset types, and exported into various graphical formats.
The Metabolic Models Reconstruction Using Genome-Scale Information (merlin) tool is an user-friendly Java application that performs the reconstruction of genome-scale metabolic models for any organism that has its genome sequenced.
Optlang is a Python package implementing a modeling language for solving mathematical optimization problems, i.e. maximizing or minimizing an objective function over a set of variables subject to a number of constraints. Optlang provides a common interface to a series of optimization tools, so different solver backends can be changed in a transparent way.
The GECKO toolbox is a Matlab/Python package for enhancing a Genome-scale model to account for Enzyme Constraints, using Kinetics and Omics.


Overview to Ballerina 0.970.1
This is a patch release which is mainly focused on fixing bugs of previous release 0.970.0 and have improvements in language server and packaging.
Improvements
Packaging
- HTTP proxy support for pulling and pushing packages from Ballerina Central
IDEs & Language Server
- Improvements for Language Server Startup Time
- Add Documentation Support for Endpoints, Records and Objects
Bug Fixes
Please refer Github milestone to view bug fixes


Multigraph provides a way to generate dot, line, bar and pie graphs with one class. Multigraph produces a graph based on parameters given on the url and outputs it directly as a png graphic. Multigraph also provides a mechanism for generating the correct url string with an easy interface to the class, eliminating the need for you to come up with a reliable url generator for the class.
Being a class, Multigraph can be extended. An example is eqn_multigraph, which overrides some of the member functions of multigraph to provide a way to graph a function of x, for instance, "y = x^2". Eqn_multigraph is provided more as a demonstration than anything else -- I'm aware that it's not perfect.
I wanted a mechanism for generating graphs, primarily bar and pie graphs, but also line graphs. The dot graph is merely a step of construction -- getting that right first provided the basis for easy implementation of the other graph types. Check out how short the actual line and bar graph drawing routines are. It's all because of the hard work done before they are called upon -- hard work that was put firmly in place for the dot graph, with extension in mind.
I got a lot of inspiration from Powergraphic by Carlos Reche. The class is held on phpclasses.org. There are a lot of things I think he got right, like the ability to create different graph types with one interface, and the clarity and accuracy of his graphs. Whilst being a very good example of graphic work, the class fell short in a few areas that I tried to address, initially by hacking on his class, and then by just having a go from a fresh start, because sometimes that's just the best way to go. I even sometimes take that approach with my own code.
Functionality I wanted to add in included:
I tend to do just about all of my coding in VIM. Actually, I stick to using the graphical version (GVIM), but sometimes make short trips to the land of the console. My reasons are simple: I need a uniform development environment on win32 and linux (because I'm forced to use the first, and I love to use the second), and I needed something powerful, yet simple and, quite importantly, free. Not just free as in beer -- free as in licensing. I believe that the days of closed-source applications are over. Commercial apps can still be written: a coder has to eat and feed his wife and all that. But your clients deserve disclosure on the source, should you be abducted by aliens or something similar. Or even just so they can also hire a hacker to implement features you didn't think of. But enough of that.
Also, whilst VIM may give an initially steep learning curve, and seem to contain unnecessary keyboard work, you will find that other editors become annoying after you find the true power in vim. Also, very few other editors are as ready to adapt to the coder's wishes.
The point is that you might notice a few commented out <<<'s and corresponding >>>'s. This is not an angle-bracket fetish: it's my choice for fold markers in vim (thanks to a friend) because curly braces cause problems in Tcl (even when commented), and tend to mess up the brace-matching for languages that use braces for code blocks, since vim cannot always tell what is a code brace, and what is a fold brace. You also might notice that I tend to stick to an 80 column line. This can make some sections of deep code a little short on space, but it's something I do as a matter of style (thanks to the same friend). It makes for easier reading on a terminal, and means that the code is more easily available to anyone who has time to waste on it.
Well, first off, you obviously have to have a need for graphing capabilities in a web application or the like. Then you need to decide what type of graph will best represent your data. Bar and line graphs are good for long datasets for one or more series. Pie graphs are good for the case where you just have one "series" or "scenario" and you have components that make up a whole; for instance, if you have a sales team, and you know what the value of each person's sales is, and you want to represent that in a manner that will show at a glance who had the greatest contribution. Dot graphs are generally not super-useful -- like I said above, it was more of a stepping-stone along the path, but you may like it, for relatively small datasets.
Note that the pie graph is limited to one series of data (with the implication that every data point is treated like a series, with it's own coloring and labelling): it just doesn't make sense to try and do multiple layers or something similar with the pie graph. On the other hand, the bar, line and dot graphs can have as many series as you want. Series coloring is fixed with a color table for the first nine series, with random coloring coming in after that. This means that for graphs of less than nine series, you will get predictable coloring, providing familiarity. If you require more fixed coloring, or you just don't like the series colors that I have picked from some random, not-so-icky colors, you can also specify the colors to be used. See the usage below.
Whilst a graph with more than 9 series on it may be a little cluttered to read, I wanted to leave that decision up to the requesting script's writer, not to the library. Library code should do what it does well, and leave the nuances of clarity to the author requesting output from that library.
Usage of the Multigraph class really only consists of a few steps.
The constructor interface to the multigraph class is achieved through an array of arguments. Simply because it allows you to specify whatever arguments you want to specify, in whatever order you want. Kind of like the way Python works. This means that you will see the following kind of object instantiation:
$obj = new Multigraph(array(
"index1" => "value1",
"index2" => "value2",
));
When I refer to arguments by name, you will be specifying them like this. You can, of course, define the array before doing the instantiation, and just give the array as the only argument -- I just think that the code is clearer the first way.
This also means that the _GET array can be treated as an instantiation array for the class -- and in fact, this is what happens when you use multigraph to actually output a graph. The only minor exception comes with the specification of series colors, which are passed as an array in the options array for the class, indexed with "scolors". Of course, you can't just put a php array on the url without some kind of translation to string -- and I chose something simple for anyone who wants to create the url themselves: sc<i> specifies the color (hex notation, like #123456) to use for series i. You can check out the sections on series specification and url input / output to see more about series numbering and related information.
Some settings may be percentages -- in these cases, you may specify the value either as a fraction from 0 to 1 (eg 0.65) or as a number between 1 and 100 -- percentages less than 100 have to be specified as fractions (but you should never need them). Percentages have been used to help make the class able to output images scaled to the size that you would find most useful. Graphs with a lot of datapoints may be a lot clearer if they are larger.
Possible setting values are:
| Setting | Influence | Default | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| title | The title of the graph to be created. | The default is an empty string. If the title is an empty string, space is not allocated for it. | ||||||||||||
| x_title | The title to be placed at the x-axis. Will be placed at the bottom of the graph area, not necessarily on the x-axis line. I found this to look a little clearer, as well as not wasting width space by placing right or left of the x-axis line. | Empty string. If the x title is an empty string, space is not allocated for it. | ||||||||||||
| y_title | The title to be placed at the y-axis. Will be placed to the left of the graph, not necessarily on the y-axis line, for the same reasoning as the x_title. The y_title can be orientated vertically (the default), or horizontally, by specifying the y_title_orient value ("v" for vertical, "h" for horizontal). | v | ||||||||||||
| y_title_orient | Sets the orientation of the y_title text -- vertical ("v") or horizontal ("h"). | v | ||||||||||||
| style | Selects a color style or theme to generate the graph with. Multigraph comes with 5 styles, some of which are inspired by Powergraphic. The available styles are: office, spring, matrix, translite and transdark. The last two are designed for the case where you would like to have the graph background be transparent, so that the base color or graphic of your page may come through. Translite is best used on a light background, and transdark on a dark background. The office theme looks a little like something you might see from an office suite output; the spring theme is in fresh colors; the matrix theme is all dark and green tones, and the translite and transdark themes take their base coloring from the office theme, modified to suit the intended background. | office | ||||||||||||
| type | Type of graph to be rendered. Possible types are bar (draws vertical bars), hbar (draws horizontal bars) (note that there is no flipping of your data: hbar may produce an output that is not what you expect. Check out the test_multigraph.php hbar example: this has the same dataset as the bar example, but doesn't seem anywhere near as clear. Hbar is included more for completeness than for satisfactoin of my own requirement), dot (just draws dots for the points), line (draws lines, and optionally marks the data points with dots), and pie (which has the restriction of only having one dataset, because of the nature of the pie graph). | bar | ||||||||||||
| width | Width of output graphic, in pixels. | 600 -- works quite well. | ||||||||||||
| height | Height of output graphic, in pixels. | 400 | ||||||||||||
| title_hperc | Percentage of the height of the output graphic to use for rendering the graph title. | 0.1 | ||||||||||||
| graph_hperc | Height percentage of the graphical output to use for the actual graphing area. | whatever space is left after the title_hperc is taken into account (which makes the default value 0.9) | ||||||||||||
| graph_wperc | Width percentage of the graphical output to used for the actual graphing area. If the graph has a legend, then this is actually width percentage of the space left after the legend is in place. Basically, this just gives spacing for aesthetic value. | 0.9 | ||||||||||||
| title_wperc | Width percentage of the graphing area that can be used for the graph title. The graph title will be fitted with the largest font (up to 18 px) that can fit in the granted width and height. The title is always centered. | 0.8 | ||||||||||||
| fontpath | The path in which to find the ttf font files. Multigraph expects that fonts will just be named (eg "helvetica"), and the corresponding .ttf file will be found in the fontpath. The ttf file should always have the same name as the name of font that you allocate to an item. You should find tahoma and arial included (Microsoft releases these for free, and you can get them just about anywhere). I use tahoma because it's pleasant, and a nice-to-read font for titles, where arial is good for places where space is at a premium (eg on data point titles) | defaults to current dir of executing script | ||||||||||||
| font_title | The name of the font to be used for the title. Fonts just have to be named, | tahoma | ||||||||||||
| font_axis | The name of the font to use for labelling the axes. | arial | ||||||||||||
| font_label | Font that is used for data point labels. | arial | ||||||||||||
| font_label_size | Size of font to use for data point labels, in px. | 7 | ||||||||||||
| font_axis_size | Size of font to use for axis labels, in px | 8 | ||||||||||||
| font_legend | Font to use for the legend. The size is determined as the largest font that will fit the legend into the space that is allocated to it, for the dataset labels that are required, up to the size specified by legend_max_font_size | arial | ||||||||||||
| legend_wperc | Width of the graphical output that can be used to render a legend for the graph (if one is required (if there are more than one series) or one is requested (with force_legend)) | 0.2 | ||||||||||||
| force_legend | Force the legend to be drawn, even if there is only one series to output. Boolean, values can be 1 or 0, | 0 | ||||||||||||
| padding | Value, in px, to be used as a generic padding value. Note that this is not always the actual padding value to be used for every scenario -- it is a base value that is sometimes multiplied by another value to get more padding. But it does give the caller some kind of control over padding. | 2 | ||||||||||||
| scolors | An array of hex-notation colors (#RRGGBB) to be used for the series drawing. This parameter, being an array, cannot be specified on the url like the other parameters -- instead, you have to use sc>i> to specify each color by index | Series colors are allocated per style | ||||||||||||
| swatch_size | Swatches are the small squares of color used in the legend. You can tweak the size of these squares here. The size is in px. | 11 | ||||||||||||
| legend_max_font_size | Maximum size, in px, of the font to be used on the legend. | defaults to the size of the swatches | ||||||||||||
| dropshadows | Determines whether or not dropshadows for fonts and items are drawn. I only included this for someone who really didn't like the dropshadows, or for the case where someone really thinks that the time taken to render the dropshadows is a waste. Setting this to 0 prevents all dropshadow renders. | 1 | ||||||||||||
| shadow_y_offset | Y offset of dropshadows. Note that labels with small fonts will reduce this value for their fonts, since the shadow will look better closer to the smaller font. | 2 | ||||||||||||
| shadow_x_offset | X offset of dropshadows. Like the Y offset, this value can be reduced automatically for small-fonted labels. | 2 | ||||||||||||
| shadow_color | Actual color to use for the shadows. The color is also alpha-blended with the underlying graphic. I found that the default works well for situations with light and dark backgrounds | #555555 | ||||||||||||
| shadow_trans | Alphablending value to assign to the shadow. 0 means total opacity, and 127 (the max) means total transparency. | 60 | ||||||||||||
| label_xval | Boolean to determin whether or not the x value is labelled against a datapoint. Defaults vary per graph type. When only the x or y value is to be labelled, just the value at that point is written there; when both values are to be labelled, a label like (x,y) is rendered. |
|
||||||||||||
| label_yval | Boolean to determin whether or not the y value is labelled against a datapoint. Defaults vary per graph type. When only the x or y value is to be labelled, just the value at that point is written there; when both values are to be labelled, a label like (x,y) is rendered. |
|
||||||||||||
| dot_diam | Diameter of dots, in px, to be used when drawing a dot graph or a line graph with extra dots are requested with the linedots parameter | 7 | ||||||||||||
| linedots | Boolean to determine whether or not dots are drawn on the datapoints in addition to the lines connecting datapoints for a line graph. | 0 | ||||||||||||
| pie_tperc | Thickness of a pie graph's pie, as a percentage of the pie graph's actual width. | 0.05 | ||||||||||||
| pie_wperc | Width of the pie, as a percentage of the available graphing space. Width and height of the pie can be tweaked to alter the perceived aspect. | 0.95 | ||||||||||||
| pie_hperc | Height of the pie, as a percentage of the available graphing space. Width and height of the pie can be tweaked to alter the perceived aspect. | 0.60 | ||||||||||||
| square | Boolean to determine whether or not the axes should be made square. When the axes are square, the aspect of the bar, line or dot graph is more "correct", for example, the equation y = x will actually produce a 45 degree line. But the graph may have a lot of wasted space in the available graphic area. | 0 | ||||||||||||
| debug | Boolean to set the debug mode of Multigraph. When set to 1, the class outputs its logging instead of the graphic that it would have -- check out the links on the test_multigraph.php page. | 0 | ||||||||||||
| scriptbase | Path to the multigraph.php file, for use in url generation. | multigraph.php | ||||||||||||
| half_marks [updated -- thanks Ulla Küchler for pointing out that I hadn't documented this] | Boolean to set whether markings are added in at 0.5 intervals on the axes -- this is nice if you have axes with enough space between markers for another little line, but you don't want to clutter up the graph with extra labels | 1 |
Check out the test_multigraph.php to see how simple usage of the class really is. Also, it's quite possible to make something more useful for a task with inheritence or composition. I've used inheritence to create a class Eqn_multigraph, which draws the graph of an equation in the form y = f(x). It's not exactly award-winning material, and it's not safe against malicious users -- it's more of a demonstration than anything else. I also plan to create a class that uses composition to graph the output of a sql statement -- in fact, that was the whole point of this endeavour. I may even include that class in this collection, when it is done ^_^
Author: Dave McColl, 2005-05-08


array dio_stat ( resource $fd )
dio_stat() returns information about the given file descriptor.
Returns an associative array with the following keys: "device" - device "inode" - inode "mode" - mode "nlink" - number of hard links "uid" - user id "gid" - group id "device_type" - device type (if inode device) "size" - total size in bytes "blocksize" - blocksize "blocks" - number of blocks allocated "atime" - time of last access "mtime" - time of last modification "ctime" - time of last change On error dio_stat() returns NULL.


|
M480 BSP V3.05.005
The Board Support Package for M480 Series
|
Macros | |
| #define | CLK_SET_WKTMR_INTERVAL(u32Interval) |
| Set Wake-up Timer Time-out Interval. More... | |
| #define | CLK_SET_SPDDEBOUNCETIME(u32CycleSel) |
| Set De-bounce Sampling Cycle Time. More... | |
Functions | |
| __STATIC_INLINE void | CLK_SysTickDelay (uint32_t us) |
| This function execute delay function. More... | |
| __STATIC_INLINE void | CLK_SysTickLongDelay (uint32_t us) |
| This function execute long delay function. More... | |
| void | CLK_DisableCKO (void) |
| Disable clock divider output function. More... | |
| void | CLK_EnableCKO (uint32_t u32ClkSrc, uint32_t u32ClkDiv, uint32_t u32ClkDivBy1En) |
| This function enable clock divider output module clock, enable clock divider output function and set frequency selection. More... | |
| void | CLK_PowerDown (void) |
| Enter to Power-down mode. More... | |
| void | CLK_Idle (void) |
| Enter to Idle mode. More... | |
| uint32_t | CLK_GetHXTFreq (void) |
| Get external high speed crystal clock frequency. More... | |
| uint32_t | CLK_GetLXTFreq (void) |
| Get external low speed crystal clock frequency. More... | |
| uint32_t | CLK_GetHCLKFreq (void) |
| Get HCLK frequency. More... | |
| uint32_t | CLK_GetPCLK0Freq (void) |
| Get PCLK0 frequency. More... | |
| uint32_t | CLK_GetPCLK1Freq (void) |
| Get PCLK1 frequency. More... | |
| uint32_t | CLK_GetCPUFreq (void) |
| Get CPU frequency. More... | |
| uint32_t | CLK_SetCoreClock (uint32_t u32Hclk) |
| Set HCLK frequency. More... | |
| void | CLK_SetHCLK (uint32_t u32ClkSrc, uint32_t u32ClkDiv) |
| This function set HCLK clock source and HCLK clock divider. More... | |
| void | CLK_SetModuleClock (uint32_t u32ModuleIdx, uint32_t u32ClkSrc, uint32_t u32ClkDiv) |
| This function set selected module clock source and module clock divider. More... | |
| void | CLK_SetSysTickClockSrc (uint32_t u32ClkSrc) |
| Set SysTick clock source. More... | |
| void | CLK_EnableXtalRC (uint32_t u32ClkMask) |
| Enable clock source. More... | |
| void | CLK_DisableXtalRC (uint32_t u32ClkMask) |
| Disable clock source. More... | |
| void | CLK_EnableModuleClock (uint32_t u32ModuleIdx) |
| Enable module clock. More... | |
| void | CLK_DisableModuleClock (uint32_t u32ModuleIdx) |
| Disable module clock. More... | |
| uint32_t | CLK_EnablePLL (uint32_t u32PllClkSrc, uint32_t u32PllFreq) |
| Set PLL frequency. More... | |
| void | CLK_DisablePLL (void) |
| Disable PLL. More... | |
| uint32_t | CLK_WaitClockReady (uint32_t u32ClkMask) |
| This function check selected clock source status. More... | |
| void | CLK_EnableSysTick (uint32_t u32ClkSrc, uint32_t u32Count) |
| Enable System Tick counter. More... | |
| void | CLK_DisableSysTick (void) |
| Disable System Tick counter. More... | |
| void | CLK_SetPowerDownMode (uint32_t u32PDMode) |
| Power-down mode selected. More... | |
| void | CLK_EnableDPDWKPin (uint32_t u32TriggerType) |
| Set Wake-up pin trigger type at Deep Power down mode. More... | |
| uint32_t | CLK_GetPMUWKSrc (void) |
| Get power manager wake up source. More... | |
| void | CLK_EnableSPDWKPin (uint32_t u32Port, uint32_t u32Pin, uint32_t u32TriggerType, uint32_t u32DebounceEn) |
| Set specified GPIO as wake up source at Stand-by Power down mode. More... | |
| uint32_t | CLK_GetPLLClockFreq (void) |
| Get PLL clock frequency. More... | |
| uint32_t | CLK_GetModuleClockSource (uint32_t u32ModuleIdx) |
| Get selected module clock source. More... | |
| uint32_t | CLK_GetModuleClockDivider (uint32_t u32ModuleIdx) |
| Get selected module clock divider number. More... | |
| #define CLK_SET_SPDDEBOUNCETIME | ( | u32CycleSel | ) |
Set De-bounce Sampling Cycle Time.
This function set Set De-bounce Sampling Cycle Time.
| #define CLK_SET_WKTMR_INTERVAL | ( | u32Interval | ) |
Set Wake-up Timer Time-out Interval.
| [in] | u32Interval | The Wake-up Timer Time-out Interval selection. It could be |
This function set Wake-up Timer Time-out Interval.
| void CLK_DisableCKO | ( | void | ) |
| void CLK_DisableModuleClock | ( | uint32_t | u32ModuleIdx | ) |
Disable module clock.
This function is used to disable module clock.
| void CLK_DisablePLL | ( | void | ) |
| void CLK_DisableSysTick | ( | void | ) |
| void CLK_DisableXtalRC | ( | uint32_t | u32ClkMask | ) |
Disable clock source.
| [in] | u32ClkMask | is clock source mask. Including : |
This function disable clock source.
The register write-protection function should be disabled before using this function.
| void CLK_EnableCKO | ( | uint32_t | u32ClkSrc, |
| uint32_t | u32ClkDiv, | ||
| uint32_t | u32ClkDivBy1En | ||
| ) |
This function enable clock divider output module clock, enable clock divider output function and set frequency selection.
| [in] | u32ClkSrc | is frequency divider function clock source. Including : |
| [in] | u32ClkDiv | is divider output frequency selection. It could be 0~15. |
| [in] | u32ClkDivBy1En | is clock divided by one enabled. |
Output selected clock to CKO. The output clock frequency is divided by u32ClkDiv.
The formula is:
CKO frequency = (Clock source frequency) / 2^(u32ClkDiv + 1)
This function is just used to set CKO clock. User must enable I/O for CKO clock output pin by themselves.
| void CLK_EnableDPDWKPin | ( | uint32_t | u32TriggerType | ) |
Set Wake-up pin trigger type at Deep Power down mode.
This function is used to enable Wake-up pin trigger type.
| void CLK_EnableModuleClock | ( | uint32_t | u32ModuleIdx | ) |
Enable module clock.
This function is used to enable module clock.
| uint32_t CLK_EnablePLL | ( | uint32_t | u32PllClkSrc, |
| uint32_t | u32PllFreq | ||
| ) |
Set PLL frequency.
| [in] | u32PllClkSrc | is PLL clock source. Including : |
| [in] | u32PllFreq | is PLL frequency. |
This function is used to configure PLLCTL register to set specified PLL frequency.
The register write-protection function should be disabled before using this function.
| void CLK_EnableSPDWKPin | ( | uint32_t | u32Port, |
| uint32_t | u32Pin, | ||
| uint32_t | u32TriggerType, | ||
| uint32_t | u32DebounceEn | ||
| ) |
Set specified GPIO as wake up source at Stand-by Power down mode.
| [in] | u32Port | GPIO port. It could be 0~3. |
| [in] | u32Pin | The pin of specified GPIO port. It could be 0 ~ 15. |
| [in] | u32TriggerType | |
| [in] | u32DebounceEn |
This function is used to set specified GPIO as wake up source at Stand-by Power down mode.
| void CLK_EnableSysTick | ( | uint32_t | u32ClkSrc, |
| uint32_t | u32Count | ||
| ) |
Enable System Tick counter.
| [in] | u32ClkSrc | is System Tick clock source. Including: |
| [in] | u32Count | is System Tick reload value. It could be 0~0xFFFFFF. |
This function set System Tick clock source, reload value, enable System Tick counter and interrupt.
The register write-protection function should be disabled before using this function.
| void CLK_EnableXtalRC | ( | uint32_t | u32ClkMask | ) |
Enable clock source.
| [in] | u32ClkMask | is clock source mask. Including : |
This function enable clock source.
The register write-protection function should be disabled before using this function.
| uint32_t CLK_GetCPUFreq | ( | void | ) |
| uint32_t CLK_GetHCLKFreq | ( | void | ) |
| uint32_t CLK_GetHXTFreq | ( | void | ) |
| uint32_t CLK_GetLXTFreq | ( | void | ) |
| uint32_t CLK_GetModuleClockDivider | ( | uint32_t | u32ModuleIdx | ) |
Get selected module clock divider number.
| [in] | u32ModuleIdx | is module index. |
This function get selected module clock divider number.
| uint32_t CLK_GetModuleClockSource | ( | uint32_t | u32ModuleIdx | ) |
Get selected module clock source.
This function get selected module clock source.
| uint32_t CLK_GetPCLK0Freq | ( | void | ) |
| uint32_t CLK_GetPCLK1Freq | ( | void | ) |
| uint32_t CLK_GetPLLClockFreq | ( | void | ) |
| uint32_t CLK_GetPMUWKSrc | ( | void | ) |
| void CLK_Idle | ( | void | ) |
| void CLK_PowerDown | ( | void | ) |
| uint32_t CLK_SetCoreClock | ( | uint32_t | u32Hclk | ) |
Set HCLK frequency.
| [in] | u32Hclk | is HCLK frequency. The range of u32Hclk is running up to 192MHz. |
This function is used to set HCLK frequency. The frequency unit is Hz.
The register write-protection function should be disabled before using this function.
| void CLK_SetHCLK | ( | uint32_t | u32ClkSrc, |
| uint32_t | u32ClkDiv | ||
| ) |
This function set HCLK clock source and HCLK clock divider.
| [in] | u32ClkSrc | is HCLK clock source. Including : |
| [in] | u32ClkDiv | is HCLK clock divider. Including : |
This function set HCLK clock source and HCLK clock divider.
The register write-protection function should be disabled before using this function.
| void CLK_SetModuleClock | ( | uint32_t | u32ModuleIdx, |
| uint32_t | u32ClkSrc, | ||
| uint32_t | u32ClkDiv | ||
| ) |
This function set selected module clock source and module clock divider.
| [in] | u32ModuleIdx | is module index. |
| [in] | u32ClkSrc | is module clock source. |
| [in] | u32ClkDiv | is module clock divider. |
Valid parameter combinations listed in following table:
| void CLK_SetPowerDownMode | ( | uint32_t | u32PDMode | ) |
Power-down mode selected.
| [in] | u32PDMode | is power down mode index. Including : |
This function is used to set power-down mode.
| void CLK_SetSysTickClockSrc | ( | uint32_t | u32ClkSrc | ) |
Set SysTick clock source.
| [in] | u32ClkSrc | is module clock source. Including: |
This function set SysTick clock source.
The register write-protection function should be disabled before using this function.
| __STATIC_INLINE void CLK_SysTickDelay | ( | uint32_t | us | ) |
This function execute delay function.
| [in] | us | Delay time. The Max value is 2^24 / CPU Clock(MHz). Ex: 72MHz => 233016us, 50MHz => 335544us, 48MHz => 349525us, 28MHz => 699050us ... |
Use the SysTick to generate the delay time and the unit is in us. The SysTick clock source is from HCLK, i.e the same as system core clock.
| __STATIC_INLINE void CLK_SysTickLongDelay | ( | uint32_t | us | ) |
This function execute long delay function.
| [in] | us | Delay time. |
Use the SysTick to generate the long delay time and the UNIT is in us. The SysTick clock source is from HCLK, i.e the same as system core clock. User can use SystemCoreClockUpdate() to calculate CyclesPerUs automatically before using this function.
| uint32_t CLK_WaitClockReady | ( | uint32_t | u32ClkMask | ) |
This function check selected clock source status.
| [in] | u32ClkMask | is selected clock source. Including : |
| 0 | clock is not stable |
| 1 | clock is stable |
To wait for clock ready by specified clock source stable flag or timeout (~500ms)


class: top, left, inverse, title-slide # Education & Globalization ## Session 26 ### Dr. Zhou Yisu 周憶粟 ### 2018/11/19 --- # Learning without boarders ## Aims To identify limitation of traditional learning To articulate why schools are reluctant to change To understand how new forms of learning is transforming education --- ## To recap Last Thursday we talked about university as a global institution with goals of producing and spreading knowledge. -- In order to achieve this goal, as well as nurturing a particular type of young talent: .violet[those who have built-in capacities and interests to understand all aspects of social and natural reality], we also needs a new kind of pedagogy. -- But in reality, only a handful of institutions are teaching in such a way. In many places, teaching & learning remain largely the same as those in secondary schools. ??? I for one, was quite dreadful of the university experience I receive. The professors I encountered seems less interested to connects or even talk to me than finishing up his lectures. --- ## The form of teaching & learning Let us be reminded what classroom teaching is back in 1999  ??? For demonstration, watch through 6:00 mark --- ### Similarity of teaching & learning across the world What does teaching & learning have in common? - Classroom - Lecture - Textbook - Homework -- Assumptions of teaching & learning: - The structure of knowledge is linear 知識結構的線性 - The structure of classroom is conformative 課堂組織結構的一致性 ??? The worst part maybe: to acquire knowledge is simply transmit it from one place (the instructor) to another (the student). As I saw a couple of weeks ago on mid-term exam paper on the desk of this classroom. --- background-image: url(https://i0.wp.com/vrworld.com/wp-content/uploads/2014/08/University.jpg) background-size: contain ??? University of Bolona, founded in AD 1088. Painting done in 14th century --- background-image: url(http://i1.wp.com/inews.gtimg.com/newsapp_match/0/303404218/0) background-size: contain ??? Confucius, about 500 BC I always wonder if this is a glorified version of the actual teaching. No one fell asleep? --- ## Questions yet to be answered .orange[Is this model of teaching & learning effective?] - Does it improve learning efficiency? 提升學習效率嗎？ - Does it improve learning motivation? 是否促進學習的動力？ - Does it improve student ability? 是否促進學生的能力？ -- .orange[Could this model of teaching & learning produce the ideal person we want?] --- ## Modern schooling: bring education to the mass ![](https://s3.amazonaws.com/s3.timetoast.com/public/uploads/photos/9309286/factory_monitorial.jpg) .footnote[Image: Monitorial Schools: Paid one teacher to instruct hundreds using student teacher or monitors. Taught basics of reading writing and arithmetic.] --- background-image: url(https://enoughisenough14.org/wp-content/uploads/2018/03/school.jpg) background-size: contain ??? Education is primary domestic policy. In this regard, I appreciate the impact PISA brought to our current school system because if you wait for the happen from within, it might take a long period of time. University is supposed to be this trailblazer that brings changes. But again, university is largely walled-off from elementary and secondary schools. Such that the change impact could be directly transmitted. --- ## Changing the format: failed attempt (1) ![](https://etcjournal.files.wordpress.com/2013/03/hole-in-the-wall.jpg) .footnote[Source: https://en.wikipedia.org/wiki/Minimally_invasive_education] --- ## Failed attempt (2): replace textbooks with laptop ![](https://gdurl.com/bFsx) --- class: middle ##The format of teaching & learning is stubbornly reluctant to change, because they are: - Cheap to implement - Socially accepted - Results are difficult to measure - Produce predictable token: credential (i.e. degrees) --- ## Changes came from outside of school ![](http://fundacionunam.org.mx/wp-content/uploads/2014/08/salaman_khan_1.jpg) --- ## Salman Khan's idea He worked in a hedge fund in 2004 as an analyst. He was tutoring his cousins at home after work. He found the instruction repetitive and not efficient: - Record his lecture as video and upload to youtube. - Write a computer program to generate test questions. --- ## His approach to the same math class .pull-left[  ] .pull-right[ Features: - Each video 5-15 minutes long - Use colors to highlight key points - Self-paced - Can interact with others in comment section ### Why not expand to other subjects? ] ??? 45 minutes lecture is actually 12 minute long. Stuffed with many different things in school. --- ## Khan's curriculum was used by millions for different purposes ![](https://ka-perseus-images.s3.amazonaws.com/bca25b673bab24789cd48727d01f595aaf64f256.png) --- ## Khan's success brings us to think Traditional learning is ".cyan[one-size-fits-all]" and .cyan[discipline-based]: - Content is not differentiated 教學內容無法因人而異 - Teaching style is not individualized 教學方法無法個性化 - Pace is the same for all students 課堂進度是一致不變的 - Classroom time is limited and fixed 課堂時間有限 -- This standardization in traditional learning also produces: - Compulsory course - Inflexible behavioral regulations - Rigid tracking systems, - Rituals - Public ranking of performance - Humiliation of failure to conform --- ## Traditional learning is created & accepted by the society at a specific time - Technology is limited + Could not deliver high-quality contents to millions at once + No way to give feedbacks or diagnoses learning progress - Amount of people who can receive an education is limited - Type of knowledge we want to teach is limited --- ## Then, Universities were involved One thing university is good at: there is no shortage of pioneers ![](https://images2015.cnblogs.com/news/66372/201701/66372-20170116175525505-1342057254.jpg) ??? Course in 2011. --- ## 100,000 students classroom

 --- ## What is different this time? Combined these programs are called .red[M]assive .red[O]pen .red[O]nline .red[C]ourse (.red[MOOC] or 慕課 in Chinese) __Characteristics:__ - Free (or at least very cheap) 免費或非常廉價 - Wide-range of topics (anything you want to learn) 囊括大量的知識 - Can be taken by large number of students at the same time 允許大量學生同時上課 - Delivered by top professors in the field (high quality) 由最好的教授講解 - Organized content 課程內容有序 --- background-image: url(https://i1.wp.com/educeleb.com/wp-content/uploads/2017/09/online-learning-platforms.png?fit=1392%2C1256&ssl=1) background-size: contain --- ## It enables us to This type of new learning uses some of the latest .orange[learning theory]: - .violet[Active learning] 積極學習 through video and interactive exercise - .violet[Gamification] 遊戲化: the use of game thinking and game mechanisms in non-gaming contexts to engage users in solving problems and increase users' self-contribution. - .violet[Self pacing] 自主掌控學習進度 - .violet[Instant feedback] 實時反饋 - .violet[Peer-learning] 同學互助 .footnote[Source: https://www.ted.com/talks/daphne_koller_what_we_re_learning_from_online_education] --- background-image: url(https://saraslistofedresources.files.wordpress.com/2018/08/da3a4e9a-0738-48ab-8343-b68b2b5c2f61-e1535223928521.png) background-size: contain ## Active learning --- background-image: url(https://gdurl.com/9x6V) background-size: contain ## Active learning --- ## Gamification 遊戲化 ![:wscale 80%](https://cdn01.vulcanpost.com/wp-uploads/2017/07/gamification-infographic-234-e1500439259603.png) --- ## Self-pacing & instant feedback An example from Hong Kong University of Science and Technology: http://vis.cse.ust.hk/vismooc/ ??? Starting from 0:34 --- ## Modular curriculum 模塊化課程 ![](https://gdurl.com/G0pr) --- ## Expand spectrum of learning ![](https://i.pinimg.com/originals/c4/46/21/c44621ce723e7306aecbdb76d570848c.jpg) --- ## MOOC is not the silver bullet, because it... .violet[Could not replace schools & universities]: - It couldn't solve the motivation problem. - It couldn't solve the social problem (i.e. poverty, social class, etc) - It couldn't solve ethical problem (i.e. cheating, etc) - It didn't change the fact that learning is an extremely sophisticated human behavior -- .violet[Not all subjects are suitable]: - Location dependent knowledge (e.g. globalization) - Subjective knowledge (e.g. history) - Knowledge outside of English --- class: reverse, center, middle ## If MOOC has so much limitation, why is it still important? --- ## Reason 1 Because it has .cyan[democratized learning]: - As learners, we can learn almost anything without physically moving to another country - Competition of providing the best content has been leveled to the global level - Has the potential to break the monopoly of .violet[elite schools & universities] + In fact, some elite universities are pioneers in reducing the barriers of people getting an equivalent university education ??? In a way, MOOC forges a global learning community --- ## Reason 2 Higher education has changed ![](https://gdurl.com/t1IH) The token value of a higher education degree is associated with the scarcity of supplies. With more people holding the degree, the exchange value diminishes greatly. --- ### Think Macao is an exception? Net enrollment rate for Macao's youth at higher education? .red[98%]. ![](https://gdurl.com/5gzE) There is increasingly not meaningful or even feasible to stacking up degrees. So online degree/learning stabs at the credentialism with unique use value. --- ## .red[Summary] New forms of learning has brought walled-off 被牆隔開 knowledge to learners. It is still up to the learner to harness the benefit. Schools & universities will not be replace overnight because they are as much a .violet[social institution] as a learning institution. Universities are at the center of this change both because of its mission (.violet[to create and disseminate] 傳播 knowledge) and changing student body. --- ## Resources Read more on why technology fails to deliver promised change in education: https://www.bloomberg.com/news/articles/2013-11-11/the-false-promise-of-classroom-technology