|
CppNoddy
0.92
|
A matrix class that constructs a DENSE matrix as a row major std::vector of DenseVectors. More...
#include <DenseMatrix.h>
Public Types | |
| typedef std::vector< DenseVector< _Type > >::iterator | row_iter |
| Typedef iterator types. More... | |
| typedef std::vector< DenseVector< _Type > >::const_iterator | row_citer |
| typedef std::vector< DenseVector< _Type > >::reverse_iterator | row_riter |
| typedef std::vector< DenseVector< _Type > >::const_reverse_iterator | row_criter |
| typedef DenseVector< _Type >::elt_iter | elt_iter |
| typedef DenseVector< _Type >::elt_citer | elt_citer |
| typedef DenseVector< _Type >::elt_riter | elt_riter |
| typedef DenseVector< _Type >::elt_criter | elt_criter |
Public Member Functions | |
| DenseMatrix () | |
| Allow empty construction. More... | |
| DenseMatrix (const std::size_t &rows, const std::size_t &cols, const _Type &fill) | |
| Noddy Matrix constructor with a specified fill data. More... | |
| DenseMatrix (const std::size_t &rows, const std::size_t &cols, const _Type *p) | |
| Construct a Noddy Matrix from a contiguous set of data. More... | |
| DenseMatrix (const BandedMatrix< _Type > &source) | |
| Construct a dense matrix from its banded counterpart. More... | |
| DenseMatrix (const DenseMatrix &source) | |
| Copy constructor. More... | |
| DenseMatrix & | operator= (const DenseMatrix &source) |
| Assignment operator. More... | |
| ~DenseMatrix () | |
| const _Type & | operator() (const std::size_t &row, const std::size_t &col) const |
| Access operator. More... | |
| _Type & | operator() (const std::size_t &row, const std::size_t &col) |
| Access operator. More... | |
| const _Type & | get (const std::size_t &row, const std::size_t &col) const |
| Access operator. More... | |
| _Type & | set (const std::size_t &row, const std::size_t &col) |
| Access operator. More... | |
| DenseMatrix< _Type > | operator* (const double &m) const |
| SIMD operator sugar. More... | |
| DenseMatrix< _Type > | operator+ (const DenseMatrix< _Type > &A) const |
| DenseMatrix< _Type > | operator- (const DenseMatrix< _Type > &A) const |
| std::size_t | nrows () const |
| std::size_t | ncols () const |
| std::size_t | nelts () const |
| void | scale (const _Type &mult) |
| Scale all matrix elements by a scalar. More... | |
| void | transpose () |
| Transpose the matrix. More... | |
| double | one_norm () const |
| Return the maximum one_norm of all rows. More... | |
| double | two_norm () const |
| Rreturn the maximum two_norm of all rows. More... | |
| double | inf_norm () const |
| Return the maximum inf_norm of all rows. More... | |
| double | frob_norm () const |
| Return the sum of the two_norm of all rows. More... | |
| DenseVector< _Type > | multiply (const DenseVector< _Type > &x) const |
| Right multiply the matrix by a DENSE vector. More... | |
| void | dump () const |
| Output the matrix to std::cout. More... | |
| void | assign (_Type elt) |
| Assign a value to the matrix but keep the same geometry. More... | |
| row_iter | begin () |
| Pass through of iterator calls. More... | |
| row_iter | end () |
| Pass through of iterator calls. More... | |
| row_riter | rbegin () |
| Pass through of iterator calls. More... | |
| row_riter | rend () |
| Pass through of iterator calls. More... | |
| row_citer | begin () const |
| Pass through of iterator calls. More... | |
| row_citer | end () const |
| Pass through of iterator calls. More... | |
| row_criter | rbegin () const |
| Pass through of iterator calls. More... | |
| row_criter | rend () const |
| Pass through of iterator calls. More... | |
| DenseVector< _Type > & | operator[] (const std::size_t &row) |
| Operator overloading for ROW access. More... | |
| const DenseVector< _Type > & | operator[] (const std::size_t &row) const |
| Operator overloading for ROW access. More... | |
| void | add (const DenseMatrix< _Type > &b) |
| Add a DENSE matrix to this object. More... | |
| void | sub (const DenseMatrix< _Type > &b) |
| Subtract a DENSE matrix from this object. More... | |
| DenseMatrix< _Type > | multiply (const DenseMatrix< _Type > &b) const |
| Right-multiply by a DENSE matrix and return the result. More... | |
| void | set_col (const std::size_t &col, const DenseVector< _Type > &x) |
| Set a column of the matrix. More... | |
| DenseVector< _Type > | get_col (const std::size_t &col) const |
| Get a column of the matrix. More... | |
| DenseVector< double > | matrix_to_vector (const std::size_t &padding=0) const |
| Conversion to contiguous data in row major format Inefficient ... the void method is preferred. More... | |
| void | matrix_to_vector (DenseVector< double > &p, const std::size_t &padding=0) const |
| Conversion to contiguous data in row major format. More... | |
| row_iter | max_in_col (const std::size_t &col, row_iter row_min, row_iter row_max) const |
| Find the maximum abs value in a column. More... | |
| void | matrix_to_vector (DenseVector< double > &p, const std::size_t &padding) const |
| void | matrix_to_vector (DenseVector< double > &p, const std::size_t &padding) const |
| DenseVector< double > | matrix_to_vector (const std::size_t &padding) const |
| DenseVector< double > | matrix_to_vector (const std::size_t &padding) const |
| Public Member Functions inherited from CppNoddy::Sequential_Matrix_base< _Type > | |
| Sequential_Matrix_base () | |
| An empty constructor. More... | |
| virtual | ~Sequential_Matrix_base () |
| virtual const _Type & | operator() (const std::size_t &row, const std::size_t &col) const =0 |
| virtual _Type & | operator() (const std::size_t &row, const std::size_t &col)=0 |
| virtual const _Type & | get (const std::size_t &row, const std::size_t &col) const =0 |
| virtual _Type & | set (const std::size_t &row, const std::size_t &col)=0 |
| virtual std::size_t | nrows () const =0 |
| virtual std::size_t | ncols () const =0 |
| virtual std::size_t | nelts () const =0 |
| virtual void | scale (const _Type &mult)=0 |
| virtual void | dump () const =0 |
A matrix class that constructs a DENSE matrix as a row major std::vector of DenseVectors.
This is generally a nice way to implement the matrix, but the data elements [i][j] are not necessarily in contiguous row_major format in memory because there is a system dependent padding at the end of each row vector. Thus, in general, &[i][j+1] - &[i][j] != &[i][0] - &[i-1][Nc] .. ie. the step may be larger from the end of row i-1 to the start of row i. Typically, the data must be copied into contiguous memory for use in external libraries that take base pointers & assume uniform steps between elements.
Definition at line 25 of file DenseMatrix.h.
| typedef DenseVector<_Type>::elt_citer CppNoddy::DenseMatrix< _Type >::elt_citer |
Definition at line 34 of file DenseMatrix.h.
| typedef DenseVector<_Type>::elt_criter CppNoddy::DenseMatrix< _Type >::elt_criter |
Definition at line 36 of file DenseMatrix.h.
| typedef DenseVector<_Type>::elt_iter CppNoddy::DenseMatrix< _Type >::elt_iter |
Definition at line 33 of file DenseMatrix.h.
| typedef DenseVector<_Type>::elt_riter CppNoddy::DenseMatrix< _Type >::elt_riter |
Definition at line 35 of file DenseMatrix.h.
| typedef std::vector<DenseVector<_Type>>::const_iterator CppNoddy::DenseMatrix< _Type >::row_citer |
Definition at line 30 of file DenseMatrix.h.
| typedef std::vector<DenseVector<_Type>>::const_reverse_iterator CppNoddy::DenseMatrix< _Type >::row_criter |
Definition at line 32 of file DenseMatrix.h.
| typedef std::vector<DenseVector<_Type>>::iterator CppNoddy::DenseMatrix< _Type >::row_iter |
Typedef iterator types.
Definition at line 29 of file DenseMatrix.h.
| typedef std::vector<DenseVector<_Type>>::reverse_iterator CppNoddy::DenseMatrix< _Type >::row_riter |
Definition at line 31 of file DenseMatrix.h.
| CppNoddy::DenseMatrix< _Type >::DenseMatrix |
Allow empty construction.
Definition at line 17 of file DenseMatrix.cpp.
| CppNoddy::DenseMatrix< _Type >::DenseMatrix | ( | const std::size_t & | rows, |
| const std::size_t & | cols, | ||
| const _Type & | fill | ||
| ) |
Noddy Matrix constructor with a specified fill data.
| rows | The number of rows in the matrix. |
| cols | The number of columns in the matrix. |
| fill | The entry to be placed in all elements. |
Definition at line 21 of file DenseMatrix.cpp.
| CppNoddy::DenseMatrix< _Type >::DenseMatrix | ( | const std::size_t & | rows, |
| const std::size_t & | cols, | ||
| const _Type * | p | ||
| ) |
Construct a Noddy Matrix from a contiguous set of data.
This will be nasty if you pass the wrong pointer, but is useful in interfacing with external libraries. This assumes the contiguous data is in row_major format.
| rows | The number of rows in the matrix. |
| cols | The number of columns in the matrix. |
| p | A pointer to the start of the data. |
Definition at line 38 of file DenseMatrix.cpp.
|
inline |
Construct a dense matrix from its banded counterpart.
| source | The banded matrix to be used in the construction. |
Definition at line 62 of file DenseMatrix.h.
| CppNoddy::DenseMatrix< _Type >::DenseMatrix | ( | const DenseMatrix< _Type > & | source | ) |
Copy constructor.
| source | The source object to be copied |
Definition at line 51 of file DenseMatrix.cpp.
| CppNoddy::DenseMatrix< _Type >::~DenseMatrix |
Definition at line 57 of file DenseMatrix.cpp.
| void CppNoddy::DenseMatrix< _Type >::add | ( | const DenseMatrix< _Type > & | b | ) |
Add a DENSE matrix to this object.
| b | The DENSE matrix to add to 'this' |
Definition at line 76 of file DenseMatrix.cpp.
References CppNoddy::DenseMatrix< _Type >::ncols(), and CppNoddy::DenseMatrix< _Type >::nrows().
Referenced by main().
|
inline |
Assign a value to the matrix but keep the same geometry.
| elt | The value to be assigned to all entries |
Definition at line 167 of file DenseMatrix.h.
|
inline |
Pass through of iterator calls.
Definition at line 173 of file DenseMatrix.h.
|
inline |
Pass through of iterator calls.
Definition at line 197 of file DenseMatrix.h.
|
virtual |
Output the matrix to std::cout.
Implements CppNoddy::Sequential_Matrix_base< _Type >.
Definition at line 223 of file DenseMatrix.cpp.
|
inline |
Pass through of iterator calls.
Definition at line 179 of file DenseMatrix.h.
|
inline |
Pass through of iterator calls.
Definition at line 203 of file DenseMatrix.h.
| double CppNoddy::DenseMatrix< _Type >::frob_norm |
Return the sum of the two_norm of all rows.
Definition at line 213 of file DenseMatrix.cpp.
|
inlinevirtual |
Access operator.
Implements CppNoddy::Sequential_Matrix_base< _Type >.
Definition at line 319 of file DenseMatrix.h.
| DenseVector< _Type > CppNoddy::DenseMatrix< _Type >::get_col | ( | const std::size_t & | col | ) | const |
Get a column of the matrix.
| col | The column to get |
Definition at line 249 of file DenseMatrix.cpp.
| double CppNoddy::DenseMatrix< _Type >::inf_norm |
Return the maximum inf_norm of all rows.
Definition at line 204 of file DenseMatrix.cpp.
Referenced by main().
| DenseVector< double > CppNoddy::DenseMatrix< double >::matrix_to_vector | ( | const std::size_t & | padding | ) | const |
Definition at line 287 of file DenseMatrix.cpp.
References V.
| DenseVector< double > CppNoddy::DenseMatrix< std::complex< double > >::matrix_to_vector | ( | const std::size_t & | padding | ) | const |
Definition at line 302 of file DenseMatrix.cpp.
References V.
| DenseVector< double > CppNoddy::DenseMatrix< _Type >::matrix_to_vector | ( | const std::size_t & | padding = 0 | ) | const |
Conversion to contiguous data in row major format Inefficient ... the void method is preferred.
| padding | An integer padding hack |
Referenced by CppNoddy::FortranData::FortranData().
| void CppNoddy::DenseMatrix< std::complex< double > >::matrix_to_vector | ( | DenseVector< double > & | p, |
| const std::size_t & | padding | ||
| ) | const |
Definition at line 258 of file DenseMatrix.cpp.
References p.
| void CppNoddy::DenseMatrix< double >::matrix_to_vector | ( | DenseVector< double > & | p, |
| const std::size_t & | padding | ||
| ) | const |
Definition at line 274 of file DenseMatrix.cpp.
References p.
| void CppNoddy::DenseMatrix< _Type >::matrix_to_vector | ( | DenseVector< double > & | p, |
| const std::size_t & | padding = 0 |
||
| ) | const |
Conversion to contiguous data in row major format.
| padding | An integer padding hack |
| p | A DENSE vector containing the matrix |
| std::vector< DenseVector< _Type > >::iterator CppNoddy::DenseMatrix< _Type >::max_in_col | ( | const std::size_t & | col, |
| row_iter | row_min, | ||
| row_iter | row_max | ||
| ) | const |
Find the maximum abs value in a column.
| col | The column offset to search through |
| row_min | Iterator to the begin row |
| row_max | Iterator to final row (NOT INCLUSIVE) |
Definition at line 171 of file DenseMatrix.cpp.
| DenseMatrix< _Type > CppNoddy::DenseMatrix< _Type >::multiply | ( | const DenseMatrix< _Type > & | b | ) | const |
Right-multiply by a DENSE matrix and return the result.
| b | The matrix to right-multiply by |
Definition at line 149 of file DenseMatrix.cpp.
| DenseVector< _Type > CppNoddy::DenseMatrix< _Type >::multiply | ( | const DenseVector< _Type > & | x | ) | const |
Right multiply the matrix by a DENSE vector.
| x | The DENSE vector to be multiplied |
Definition at line 132 of file DenseMatrix.cpp.
Referenced by CppNoddy::OneD_TVDLF_Elt::contributed_flux_in_left(), CppNoddy::OneD_TVDLF_Elt::contributed_flux_out_right(), CppNoddy::TwoD_TVDLF_Elt::get_Q_Taylor_series(), and main().
|
inlinevirtual |
Implements CppNoddy::Sequential_Matrix_base< _Type >.
Definition at line 380 of file DenseMatrix.h.
Referenced by CppNoddy::DenseMatrix< _Type >::add(), CppNoddy::DenseMatrix< double >::frob_norm(), CppNoddy::Utility::multiply(), and CppNoddy::DenseMatrix< double >::~DenseMatrix().
|
virtual |
Implements CppNoddy::Sequential_Matrix_base< _Type >.
Definition at line 71 of file DenseMatrix.cpp.
|
inlinevirtual |
Implements CppNoddy::Sequential_Matrix_base< _Type >.
Definition at line 375 of file DenseMatrix.h.
Referenced by CppNoddy::DenseMatrix< _Type >::add(), CppNoddy::DenseMatrix< double >::frob_norm(), CppNoddy::Utility::multiply(), and CppNoddy::DenseMatrix< double >::~DenseMatrix().
| double CppNoddy::DenseMatrix< _Type >::one_norm |
Return the maximum one_norm of all rows.
Definition at line 186 of file DenseMatrix.cpp.
|
inlinevirtual |
Access operator.
Implements CppNoddy::Sequential_Matrix_base< _Type >.
Definition at line 303 of file DenseMatrix.h.
|
inlinevirtual |
Access operator.
Implements CppNoddy::Sequential_Matrix_base< _Type >.
Definition at line 287 of file DenseMatrix.h.
|
inline |
SIMD operator sugar.
Definition at line 101 of file DenseMatrix.h.
References m, and CppNoddy::DenseMatrix< _Type >::scale().
|
inline |
Definition at line 106 of file DenseMatrix.h.
|
inline |
Definition at line 115 of file DenseMatrix.h.
|
inline |
Assignment operator.
| source | The source object for the assignment |
Definition at line 61 of file DenseMatrix.cpp.
|
inline |
Operator overloading for ROW access.
| row | The row to access |
Definition at line 353 of file DenseMatrix.h.
|
inline |
Operator overloading for ROW access.
| row | The row to access |
Definition at line 364 of file DenseMatrix.h.
|
inline |
Pass through of iterator calls.
Definition at line 185 of file DenseMatrix.h.
|
inline |
Pass through of iterator calls.
Definition at line 209 of file DenseMatrix.h.
|
inline |
Pass through of iterator calls.
Definition at line 191 of file DenseMatrix.h.
|
inline |
Pass through of iterator calls.
Definition at line 215 of file DenseMatrix.h.
|
virtual |
Scale all matrix elements by a scalar.
| mult | The scalar multiplier |
Implements CppNoddy::Sequential_Matrix_base< _Type >.
Definition at line 100 of file DenseMatrix.cpp.
Referenced by main(), and CppNoddy::DenseMatrix< _Type >::operator*().
|
inlinevirtual |
Access operator.
Implements CppNoddy::Sequential_Matrix_base< _Type >.
Definition at line 336 of file DenseMatrix.h.
| void CppNoddy::DenseMatrix< _Type >::set_col | ( | const std::size_t & | col, |
| const DenseVector< _Type > & | x | ||
| ) |
Set a column of the matrix.
| col | The column to be set |
| x | The DENSE vector of column information |
Definition at line 242 of file DenseMatrix.cpp.
Referenced by CppNoddy::OneD_Hyperbolic_System::Jac_flux_fn(), CppNoddy::TwoD_Hyperbolic_System::Jac_flux_fn_x(), CppNoddy::TwoD_Hyperbolic_System::Jac_flux_fn_y(), and CppNoddy::Residual< _Type >::jacobian().
| void CppNoddy::DenseMatrix< _Type >::sub | ( | const DenseMatrix< _Type > & | b | ) |
Subtract a DENSE matrix from this object.
| b | The DENSE matrix to subtract from 'this' |
Definition at line 88 of file DenseMatrix.cpp.
Referenced by main().
| void CppNoddy::DenseMatrix< _Type >::transpose |
Transpose the matrix.
Definition at line 105 of file DenseMatrix.cpp.
Referenced by CppNoddy::FortranData::FortranData().
| double CppNoddy::DenseMatrix< _Type >::two_norm |
Rreturn the maximum two_norm of all rows.
Definition at line 195 of file DenseMatrix.cpp.
© 2012
R.E. Hewitt


--- layout: default title: Kabanero Developer Experience for CLI css: developer permalink: /developer/cli/ ---
Kabanero Developer Experience for CLI
The Kabanero Development Experience for CLI is simply the Appsody CLI. Appsody provides Kabanero with simplicity in the creation of cloud-native applications in containers. Appsody provides pre-configured container images (stacks) and project templates for a growing set of popular open source runtimes and frameworks, providing a foundation on which to build applications for Kubernetes and Knative deployments.
Check out this video that shows the developer experience for a Node.js app.
Appsody points to a growing community of Stacks (Container images prebuilt with runtimes and frameworks). Kabanero takes a subset of these stacks and augments them with build and deploy technology to create a Stack. Stacks enable Kabanero to build an application in a controlled manner. This controlled flow ensures that the application meets security requirements and deploys into a RHOCP (Red Hat OpenShift Container Platform) project. When using Appsody with Kabanero, you point Appsody at your Stack Hub.
Kabanero uses Appsody as its CLI experience to access stacks. These instructions will get you starting using the CLI.
kabanero<VERSION>
as the name
appsody repo add kabanero <YOUR_STACK_HUB_URL>
https://github.com/kabanero-io/collections/releases/latest/download/kabanero-index.yaml
appsody list kabanero
cd
into it
appsody init kabanero/STACK_ID
(STACK_ID can be seen from the appsody list command above)
Need more help using Appsody? Learn More


Welcome to this IT Ticket System to keep track of all your tickets and talk to your team!
View Active Tickets Create New Ticket
Sign In to access all features!
Create tickets so you can keep track of them!
Delete tickets when they're completed to get them out the way!
Talk with your team about your tickets! Ask your team for help or confer about tickets in realtime!


SAVE THE
RHINOS
Rhinoceros are killed by some humans for their horns, which are bought and sold on the black market, and used by some cultures for ornaments or traditional medicine. East Asia, specifically Vietnam, is the largest market for rhino horns. By weight, rhino horns cost as much as gold on the black market. People grind up the horns and consume them, believing the dust has therapeutic properties. The horns are made of keratin, the same type of protein that makes up hair and fingernails. Both African species and the Sumatran rhinoceros have two horns, while the Indian and Javan rhinoceros have a single horn. The IUCN Red List identifies the Black, Javan, and Sumatran rhinoceros as critically endangered.
Rhino Sounds
Male rhinos grunt and growl at their rivals when they attempt to show dominance. It can sound like they are fed up with life, almost like an annoyed teenager huffing when they get frustrated. These grunts can continue for a long time and may be heard in the night when you're on a safari.
RHINOS IN NATURE
Come Visit
Location: Nakasongola District, Uganda
Nearest city: Nakasongola
Coordinates: 01°28′N 32°5′E


Namespace: Terminal.Gui.Elmish
Program type captures various aspects of program behavior
init
onError
setState
subscribe
syncDispatch
update
view


SMConfiguration Class Reference
| Inherits from | NSObject |
|---|---|
| Declared in | SMConfiguration.h |
userName
Name value of the user.
@property (nonatomic, strong) NSString *userName
Availability
2.0.0
Discussion
Name value of the user.
Declared In
SMConfiguration.h
authorizationName
“Authorization Name” value of the user. It must be set when username and authorizationName are different Default value is nil
@property (nonatomic, strong) NSString *authorizationName
Availability
4.5.6
Discussion
“Authorization Name” value of the user. It must be set when username and authorizationName are different Default value is nil
Declared In
SMConfiguration.h
password
Password value of the user.
@property (nonatomic, strong) NSString *password
Availability
2.0.0
Discussion
Password value of the user.
Declared In
SMConfiguration.h
restServerPort
server port information of the baseUrl used for REST request.
@property (nonatomic, strong) NSString *restServerPort
Availability
2.0.0
Discussion
server port information of the baseUrl used for REST request.
Declared In
SMConfiguration.h
restServerIP
server ip information of the baseUrl used for REST request.
@property (nonatomic, strong) NSString *restServerIP
Availability
2.0.0
Discussion
server ip information of the baseUrl used for REST request.
Declared In
SMConfiguration.h
pushServerURL
Sets the push server URL.
@property (nonatomic, strong) NSURL *pushServerURL
Availability
4.6.0
Discussion
Sets the push server URL.
Declared In
SMConfiguration.h
webSocketServerPort
port information used in web socket connection creation.
@property (nonatomic, strong) NSString *webSocketServerPort
Availability
2.0.0
Discussion
port information used in web socket connection creation.
Declared In
SMConfiguration.h
webSocketServerIP
ip information used in web socket connection creation.
@property (nonatomic, strong) NSString *webSocketServerIP
Availability
2.0.0
Discussion
ip information used in web socket connection creation.
Declared In
SMConfiguration.h
securedWSProtocol
Web socket protocol selection. Default value is TRUE.
@property (nonatomic) BOOL securedWSProtocol
Availability
3.0.3
Discussion
Web socket protocol selection. Default value is TRUE.
Declared In
SMConfiguration.h
webSocketCertificate
Web socket Self signed certificate file data. Can be fetched from a file or string @code NSString *cerPath = [[NSBundle mainBundle\ pathForResource:@“myOwnCertificate” ofType:@“der”\; [[Configuration getInstance] setWebSocketCertificate:[[NSData alloc\ initWithContentsOfFile:cerPath\\; @endcode
@property (nonatomic, strong) NSData *webSocketCertificate
Availability
3.0.3
Discussion
Web socket Self signed certificate file data. Can be fetched from a file or string @code NSString *cerPath = [[NSBundle mainBundle\ pathForResource:@“myOwnCertificate” ofType:@“der”\; [[Configuration getInstance] setWebSocketCertificate:[[NSData alloc\ initWithContentsOfFile:cerPath\\; @endcode
Declared In
SMConfiguration.h
logger
LoggingDelegate reference used by LogManager.
@property (nonatomic, strong) id<SMLoggingDelegate> _Nonnull logger
Availability
2.0.0
Discussion
LoggingDelegate reference used by LogManager.
Declared In
SMConfiguration.h
requestProtocolHttp
Is Request Protocol http. Default return value is FALSE (meaning use HTTPS)
@property (nonatomic) BOOL requestProtocolHttp
Availability
2.0.0
Discussion
Is Request Protocol http. Default return value is FALSE (meaning use HTTPS)
Declared In
SMConfiguration.h
dtls
Is DTLS enabled. Default value is FALSE
@property (nonatomic) BOOL dtls
Availability
2.0.0
Discussion
Is DTLS enabled. Default value is FALSE
Declared In
SMConfiguration.h
iceOption
Sets the ice options as ICE_VANILLA or ICE_TRICKLE. Default value is ICE_VANILLA MobileSDK will have same behavior in older versions, if “iceOption” is selected as Vanilla ICE or used default value.
@property (nonatomic) SMICEOptions iceOption
Availability
4.1.0
Discussion
Sets the ice options as ICE_VANILLA or ICE_TRICKLE. Default value is ICE_VANILLA MobileSDK will have same behavior in older versions, if “iceOption” is selected as Vanilla ICE or used default value.
Declared In
SMConfiguration.h
ICEServers
ICEServers stores ICE servers array (including stun & turn).
@property (nonatomic, strong) SMICEServers *ICEServers
Availability
3.0.3
Discussion
ICEServers stores ICE servers array (including stun & turn).
Declared In
SMConfiguration.h
defaultICEUsername
Default username of ICEServers.
@property (nonatomic, strong) NSString *defaultICEUsername
Availability
3.0.3
Discussion
Default username of ICEServers.
Declared In
SMConfiguration.h
defaultICEPassword
Default password of ICEServers.
@property (nonatomic, strong) NSString *defaultICEPassword
Availability
3.0.3
Discussion
Default password of ICEServers.
Declared In
SMConfiguration.h
kandyVersion
Version number of Kandy. Default value is “none” or nil
@property (nonatomic, strong) NSString *kandyVersion
Availability
3.0.4
Discussion
Version number of Kandy. Default value is “none” or nil
Declared In
SMConfiguration.h
kandyToken
Identifier of authenticated session for Kandy.
@property (nonatomic, strong) NSString *kandyToken
Availability
3.0.4
Discussion
Identifier of authenticated session for Kandy.
Declared In
SMConfiguration.h
deviceId
Identifier of device ID for Kandy.
@property (nonatomic, strong) NSString *deviceId
Availability
<IP_ADDRESS>
Discussion
Identifier of device ID for Kandy.
Declared In
SMConfiguration.h
deviceNativeId
Identifier of device Native Id for Kandy.
@property (nonatomic, strong) NSString *deviceNativeId
Availability
<IP_ADDRESS>
Discussion
Identifier of device Native Id for Kandy.
Declared In
SMConfiguration.h
sendKandyTokenInRestHeader
Configuration to send kandyToken in rest request header or not.
@property (nonatomic) BOOL sendKandyTokenInRestHeader
Availability
<IP_ADDRESS>
Discussion
Configuration to send kandyToken in rest request header or not.
Declared In
SMConfiguration.h
videoResolution
Sets initial video resolution for video Value should be one of the AVCaptureSessionPreset strings.
If camera does not support the specified value or videoResolution value is to nil medium resolution will be used
@property (nonatomic, strong) NSString *videoResolution
Availability
2.0.0 @modified 4.0.2
Declared In
SMConfiguration.h
subscriptionExpires
Subscription expire time
@property (nonatomic, strong) NSNumber *subscriptionExpires
Availability
2.0.0
Discussion
Subscription expire time
Declared In
SMConfiguration.h
subscriptionLocalization
Subscription localization parameter
@property (nonatomic, strong, readonly) NSString *subscriptionLocalization
Availability
2.0.0
Discussion
Subscription localization parameter
Declared In
SMConfiguration.h
connectionType
Type of connection to be used for notification mechanism.
@property (nonatomic) TypeOfConnection connectionType
Availability
2.0.0
Discussion
Type of connection to be used for notification mechanism.
Declared In
SMConfiguration.h
stateChangesHandler
Manages app state changes (ex: entering background or foreground) This is an instance of ApplicationStateChangesHandler
@property (nonatomic, strong) id _Nullable stateChangesHandler
Availability
2.0.0
Discussion
Manages app state changes (ex: entering background or foreground) This is an instance of ApplicationStateChangesHandler
Declared In
SMConfiguration.h
serverCertificate
Server certificate to be used in HTTPS connection.Certificate must be .DER format @code NSString *cerPath = [[NSBundle mainBundle\ pathForResource:@“myOwnCertificate” ofType:@“der”\; [[Configuration getInstance] setWebSocketCertificate:[[NSData alloc\ initWithContentsOfFile:cerPath\\; @endcode
@property (nonatomic, strong) NSData *serverCertificate
Availability
2.0.0
Discussion
Server certificate to be used in HTTPS connection.Certificate must be .DER format @code NSString *cerPath = [[NSBundle mainBundle\ pathForResource:@“myOwnCertificate” ofType:@“der”\; [[Configuration getInstance] setWebSocketCertificate:[[NSData alloc\ initWithContentsOfFile:cerPath\\; @endcode
Declared In
SMConfiguration.h
auditEnable
Sends audit message to call control.
@property (nonatomic) BOOL auditEnable
Availability
2.0.0
Discussion
Sends audit message to call control.
Declared In
SMConfiguration.h
auditFrequency
Sending audit message frequency (seconds)
@property (nonatomic) NSInteger auditFrequency
Availability
2.0.0
Discussion
Sending audit message frequency (seconds)
Declared In
SMConfiguration.h
forceDisableMediaOnHold
Forces to disable media transfer when media on hold is active. It helps to fix some MOH issues on PSTN calls
@property (nonatomic) BOOL forceDisableMediaOnHold
Availability
4.5.5
Discussion
Forces to disable media transfer when media on hold is active. It helps to fix some MOH issues on PSTN calls
Declared In
SMConfiguration.h
preferredCodecSet
codecSet stores available codecs for audio and video.
@property (nonatomic, strong) SMCodecSet *preferredCodecSet
Availability
3.0.5
Discussion
codecSet stores available codecs for audio and video.
Declared In
SMConfiguration.h
replaceCodecSet
Sets ReplaceCodecSet to modify payload numbers of audio and video codecs
@property (nonatomic, strong) NSArray<SMCodecToReplace*> *replaceCodecSet
Availability
4.5.8
Discussion
Sets ReplaceCodecSet to modify payload numbers of audio and video codecs
Declared In
SMConfiguration.h
orientationMode
Sets the camera orientation type of video capturer. Video orientation can be changed according to application status bar orientation or device orientation. Camera can be bind to this notifications or not to be bind anything.
@property (nonatomic) SMCameraOrientationMode orientationMode
Availability
2.0.0
Discussion
Sets the camera orientation type of video capturer. Video orientation can be changed according to application status bar orientation or device orientation. Camera can be bind to this notifications or not to be bind anything.
Declared In
SMConfiguration.h
cameraPosition
Sets the default camera position mode
@property (nonatomic) AVCaptureDevicePosition cameraPosition
Availability
3.0.1
Discussion
Sets the default camera position mode
Declared In
SMConfiguration.h
fps
Sets fps value of the video source If invalid value is set, it will cause no video on call
@property (nonatomic) NSUInteger fps
Availability
<IP_ADDRESS>
Discussion
Sets fps value of the video source If invalid value is set, it will cause no video on call
Declared In
SMConfiguration.h
dtmfToneDuration
Sets duration value of DTMF tones im ms Default value is 600 and can be between 40 and 6000
@property (nonatomic) NSUInteger dtmfToneDuration
Availability
5.0.0
Discussion
Sets duration value of DTMF tones im ms Default value is 600 and can be between 40 and 6000
Declared In
SMConfiguration.h
logLevel
Sets log level of Mobile SDK
@property (nonatomic) SMLogLevel logLevel
Availability
3.0.2
Discussion
Sets log level of Mobile SDK
See Also
Declared In
SMConfiguration.h
supportedCallFeatures
Includes supported features for call
@property (nonatomic, strong) NSArray *supportedCallFeatures
Availability
3.1.2
Discussion
Includes supported features for call
Declared In
SMConfiguration.h
ICECollectionTimeout
Specifies timeout value of ICE Collection Default value is 0 and it means that waits until ice gathering completion.
@property (nonatomic) NSTimeInterval ICECollectionTimeout
Availability
3.1.3
Discussion
Specifies timeout value of ICE Collection Default value is 0 and it means that waits until ice gathering completion.
Declared In
SMConfiguration.h
audioSessionConfiguration
Sets audio session configuration
@property (nonatomic, strong) SMAudioSessionConfiguration *audioSessionConfiguration
Availability
4.2.0
Discussion
Sets audio session configuration
Declared In
SMConfiguration.h
audioCodecConfigurations
Sets the audio codec configurations. If parameter is null WebRTC defaults will be use. Warning: This is advance usage if you don’t have expertise on audio codecs, especially opus, don’t use it.
@property (nonatomic, strong) SMAudioCodecConfiguration *audioCodecConfigurations
Parameters
audioCodecConfigurations |
SMAudioCodecConfiguration object which will contains all audio codec configurations. |
|---|
Availability
4.2.0
Discussion
Sets the audio codec configurations. If parameter is null WebRTC defaults will be use. Warning: This is advance usage if you don’t have expertise on audio codecs, especially opus, don’t use it.
Declared In
SMConfiguration.h
slowStartCallPolicy
Specifies accept type for Slow Start Incoming Calls. Default value will be AudioSupported that means Slow Start Incoming Calls will be initiated by supporting only audio.
@property (nonatomic) SMSlowStartCallPolicy slowStartCallPolicy
Availability
4.5.4
Discussion
Specifies accept type for Slow Start Incoming Calls. Default value will be AudioSupported that means Slow Start Incoming Calls will be initiated by supporting only audio.
Declared In
SMConfiguration.h
receiveBandwidthLimit
Bandwidth limit of receiving media
@property (nonatomic, strong) SMCallReceiveBandwidthLimit *receiveBandwidthLimit
Availability
4.6.1
Discussion
Bandwidth limit of receiving media
Declared In
SMConfiguration.h
+ getInstance
This method returns (creates if necessary) singleton instance of Configuration class
+ (nonnull SMConfiguration *)getInstance
Return Value
shared Configuration instance
Availability
2.0.0
Discussion
This method returns (creates if necessary) singleton instance of Configuration class
Declared In
SMConfiguration.h


Neelam hospital is just opposite to chitkara university . There specialities are eye,blood bank,dental,ENT and many more.Healthcare has become one of India’s largest sectors - both in terms of revenue and employment. Indian healthcare delivery system is categorised into two major components - public and private. The Indian healthcare sector is growing at a brisk pace due to its strengthening coverage, services and increasing expenditure by public as well private players.
Jhansla is the nearest place to buy daily needs,Jhansla village is located in Rajpura Tehsil of Patiala district in Punjab, India. It is situated 12km away from sub-district headquarter Rajpura and 33km away from district headquarter Patiala. As per 2009 stats, Jhansla is the gram panchayat of Jansla village. The total geographical area of village is 313 hectares. Jansla has a total population of 1,935 peoples. There are about 365 houses in Jansla village. Rajpura is nearest town to Jansla.
The nearest railway station from chitkara university is Rajpura railway station , which is approximate 10.3 km away from chitkara university via NH7 . It takes around 13 mins by car.
Eagle motel is the nearest and the best food junction . There are number of franchises like pizza hut,subway,CCD,burger king,baskin robins . Eagle motel has a petrol pump also.
prime hub is the nearest multiplex to chitkara . It has a PVR cinema ,shopping outlets like united colors of bennetton,levis excetra and food outlets like dominos etc.


--- title: Tutorial - Migrating from pure PyTorch keywords: fastai sidebar: home_sidebar summary: "Incrementally adding fastai goodness to your PyTorch models" description: "Incrementally adding fastai goodness to your PyTorch models" nb_path: "nbs/examples/migrating_pytorch.ipynb" ---
from fastai.vision.all import *
We're going to use the MNIST training code from the official PyTorch examples, slightly reformatted for space, updated from AdaDelta to AdamW, and converted from a script to a module. There's a lot of code, so we've put it into migrating_pytorch.py!
{% include note.html content='The source script for migrating_pytorch
is in the examples
subdirectory of this folder if you checked out the fastai
repo from git, or can be downloaded from here if you’re using an online viewer such as Colab. ' %}
from migrating_pytorch import *
We can entirely replace the custom training loop with fastai's. That means you can get rid of train()
, test()
, and the epoch loop in the original code, and replace it all with just this:
data = DataLoaders(train_loader, test_loader)
learn = Learner(data, Net(), loss_func=F.nll_loss, opt_func=Adam, metrics=accuracy)
Data is automatically moved to the GPU or CPU depending on what's available, without the need of extra Callbacks or overhead.
fastai supports many schedulers. We recommend fitting with one cycle training:
learn.fit_one_cycle(epochs, lr)
As you can see, migrating from pure PyTorch allows you to remove a lot of code, and doesn't require you to change any of your existing data pipelines, optimizers, loss functions, models, etc.
Once you've made this change, you can then benefit from fastai's rich set of callbacks, transforms, visualizations, and so forth.
Note that fastai is much more than just a training loop (although we're only using the training loop in this example) - it is a complete framework including GPU-accelerated transformations, end-to-end inference, integrated applications for vision, text, tabular, and collaborative filtering, and so forth. You can use any part of the framework on its own, or combine them together, as described in the fastai paper.


usercertinmem.c
Download usercertinmem.c raw
/***************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
* / __| | | | |_) | |
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* Copyright (C) 2013 - 2017, Daniel Stenberg<EMAIL_ADDRESS>et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
* are also available at https://curl.haxx.se/docs/copyright.html.
*
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
* copies of the Software, and permit persons to whom the Software is
* furnished to do so, under the terms of the COPYING file.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
***************************************************************************/
/* <DESC>
* Use an in-memory user certificate and RSA key and retrieve an https page.
* </DESC>
*/
/* Written by Ishan SinghLevett, based on Theo Borm's cacertinmem.c.
* Note that to maintain simplicity this example does not use a CA certificate
* for peer verification. However, some form of peer verification
* must be used in real circumstances when a secure connection is required.
*/
#include <openssl/ssl.h>
#include <openssl/x509.h>
#include <openssl/pem.h>
#include <curl/curl.h>
#include <stdio.h>
static size_t writefunction(void *ptr, size_t size, size_t nmemb, void *stream)
{
fwrite(ptr, size, nmemb, stream);
return (nmemb*size);
}
static CURLcode sslctx_function(CURL *curl, void *sslctx, void *parm)
{
X509 *cert = NULL;
BIO *bio = NULL;
BIO *kbio = NULL;
RSA *rsa = NULL;
int ret;
const char *mypem = /* www.cacert.org */
"-----BEGIN CERTIFICATE-----\n"\
"MIIHPTCCBSWgAwIBAgIBADANBgkqhkiG9w0BAQQFADB5MRAwDgYDVQQKEwdSb290\n"\
"IENBMR4wHAYDVQQLExVodHRwOi8vd3d3LmNhY2VydC5vcmcxIjAgBgNVBAMTGUNB\n"\
"IENlcnQgU2lnbmluZyBBdXRob3JpdHkxITAfBgkqhkiG9w0BCQEWEnN1cHBvcnRA\n"\
"Y2FjZXJ0Lm9yZzAeFw0wMzAzMzAxMjI5NDlaFw0zMzAzMjkxMjI5NDlaMHkxEDAO\n"\
"BgNVBAoTB1Jvb3QgQ0ExHjAcBgNVBAsTFWh0dHA6Ly93d3cuY2FjZXJ0Lm9yZzEi\n"\
"MCAGA1UEAxMZQ0EgQ2VydCBTaWduaW5nIEF1dGhvcml0eTEhMB8GCSqGSIb3DQEJ\n"\
"ARYSc3VwcG9ydEBjYWNlcnQub3JnMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC\n"\
"CgKCAgEAziLA4kZ97DYoB1CW8qAzQIxL8TtmPzHlawI229Z89vGIj053NgVBlfkJ\n"\
"8BLPRoZzYLdufujAWGSuzbCtRRcMY/pnCujW0r8+55jE8Ez64AO7NV1sId6eINm6\n"\
"zWYyN3L69wj1x81YyY7nDl7qPv4coRQKFWyGhFtkZip6qUtTefWIonvuLwphK42y\n"\
"fk1WpRPs6tqSnqxEQR5YYGUFZvjARL3LlPdCfgv3ZWiYUQXw8wWRBB0bF4LsyFe7\n"\
"w2t6iPGwcswlWyCR7BYCEo8y6RcYSNDHBS4CMEK4JZwFaz+qOqfrU0j36NK2B5jc\n"\
"G8Y0f3/JHIJ6BVgrCFvzOKKrF11myZjXnhCLotLddJr3cQxyYN/Nb5gznZY0dj4k\n"\
"epKwDpUeb+agRThHqtdB7Uq3EvbXG4OKDy7YCbZZ16oE/9KTfWgu3YtLq1i6L43q\n"\
"laegw1SJpfvbi1EinbLDvhG+LJGGi5Z4rSDTii8aP8bQUWWHIbEZAWV/RRyH9XzQ\n"\
"QUxPKZgh/TMfdQwEUfoZd9vUFBzugcMd9Zi3aQaRIt0AUMyBMawSB3s42mhb5ivU\n"\
"fslfrejrckzzAeVLIL+aplfKkQABi6F1ITe1Yw1nPkZPcCBnzsXWWdsC4PDSy826\n"\
"YreQQejdIOQpvGQpQsgi3Hia/0PsmBsJUUtaWsJx8cTLc6nloQsCAwEAAaOCAc4w\n"\
"ggHKMB0GA1UdDgQWBBQWtTIb1Mfz4OaO873SsDrusjkY0TCBowYDVR0jBIGbMIGY\n"\
"gBQWtTIb1Mfz4OaO873SsDrusjkY0aF9pHsweTEQMA4GA1UEChMHUm9vdCBDQTEe\n"\
"MBwGA1UECxMVaHR0cDovL3d3dy5jYWNlcnQub3JnMSIwIAYDVQQDExlDQSBDZXJ0\n"\
"IFNpZ25pbmcgQXV0aG9yaXR5MSEwHwYJKoZIhvcNAQkBFhJzdXBwb3J0QGNhY2Vy\n"\
"dC5vcmeCAQAwDwYDVR0TAQH/BAUwAwEB/zAyBgNVHR8EKzApMCegJaAjhiFodHRw\n"\
"czovL3d3dy5jYWNlcnQub3JnL3Jldm9rZS5jcmwwMAYJYIZIAYb4QgEEBCMWIWh0\n"\
"dHBzOi8vd3d3LmNhY2VydC5vcmcvcmV2b2tlLmNybDA0BglghkgBhvhCAQgEJxYl\n"\
"aHR0cDovL3d3dy5jYWNlcnQub3JnL2luZGV4LnBocD9pZD0xMDBWBglghkgBhvhC\n"\
"AQ0ESRZHVG8gZ2V0IHlvdXIgb3duIGNlcnRpZmljYXRlIGZvciBGUkVFIGhlYWQg\n"\
"b3ZlciB0byBodHRwOi8vd3d3LmNhY2VydC5vcmcwDQYJKoZIhvcNAQEEBQADggIB\n"\
"ACjH7pyCArpcgBLKNQodgW+JapnM8mgPf6fhjViVPr3yBsOQWqy1YPaZQwGjiHCc\n"\
"nWKdpIevZ1gNMDY75q1I08t0AoZxPuIrA2jxNGJARjtT6ij0rPtmlVOKTV39O9lg\n"\
"18p5aTuxZZKmxoGCXJzN600BiqXfEVWqFcofN8CCmHBh22p8lqOOLlQ+TyGpkO/c\n"\
"gr/c6EWtTZBzCDyUZbAEmXZ/4rzCahWqlwQ3JNgelE5tDlG+1sSPypZt90Pf6DBl\n"\
"Jzt7u0NDY8RD97LsaMzhGY4i+5jhe1o+ATc7iwiwovOVThrLm82asduycPAtStvY\n"\
"sONvRUgzEv/+PDIqVPfE94rwiCPCR/5kenHA0R6mY7AHfqQv0wGP3J8rtsYIqQ+T\n"\
"SCX8Ev2fQtzzxD72V7DX3WnRBnc0CkvSyqD/HMaMyRa+xMwyN2hzXwj7UfdJUzYF\n"\
"CpUCTPJ5GhD22Dp1nPMd8aINcGeGG7MW9S/lpOt5hvk9C8JzC6WZrG/8Z7jlLwum\n"\
"GCSNe9FINSkYQKyTYOGWhlC0elnYjyELn8+CkcY7v2vcB5G5l1YjqrZslMZIBjzk\n"\
"zk6q5PYvCdxTby78dOs6Y5nCpqyJvKeyRKANihDjbPIky/qbn3BHLt4Ui9SyIAmW\n"\
"omTxJBzcoTWcFbLUvFUufQb1nA5V9FrWk9p2rSVzTMVD\n"\
"-----END CERTIFICATE-----\n";
/*replace the XXX with the actual RSA key*/
const char *mykey =
"-----BEGIN RSA PRIVATE KEY-----\n"\
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n"\
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n"\
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n"\
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n"\
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n"\
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n"\
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n"\
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n"\
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n"\
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n"\
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n"\
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n"\
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n"\
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n"\
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n"\
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n"\
"-----END RSA PRIVATE KEY-----\n";
(void)curl; /* avoid warnings */
(void)parm; /* avoid warnings */
/* get a BIO */
bio = BIO_new_mem_buf((char *)mypem, -1);
if(bio == NULL) {
printf("BIO_new_mem_buf failed\n");
}
/* use it to read the PEM formatted certificate from memory into an X509
* structure that SSL can use
*/
cert = PEM_read_bio_X509(bio, NULL, 0, NULL);
if(cert == NULL) {
printf("PEM_read_bio_X509 failed...\n");
}
/*tell SSL to use the X509 certificate*/
ret = SSL_CTX_use_certificate((SSL_CTX*)sslctx, cert);
if(ret != 1) {
printf("Use certificate failed\n");
}
/*create a bio for the RSA key*/
kbio = BIO_new_mem_buf((char *)mykey, -1);
if(kbio == NULL) {
printf("BIO_new_mem_buf failed\n");
}
/*read the key bio into an RSA object*/
rsa = PEM_read_bio_RSAPrivateKey(kbio, NULL, 0, NULL);
if(rsa == NULL) {
printf("Failed to create key bio\n");
}
/*tell SSL to use the RSA key from memory*/
ret = SSL_CTX_use_RSAPrivateKey((SSL_CTX*)sslctx, rsa);
if(ret != 1) {
printf("Use Key failed\n");
}
/* free resources that have been allocated by openssl functions */
if(bio)
BIO_free(bio);
if(kbio)
BIO_free(kbio);
if(rsa)
RSA_free(rsa);
if(cert)
X509_free(cert);
/* all set to go */
return CURLE_OK;
}
int main(void)
{
CURL *ch;
CURLcode rv;
rv = curl_global_init(CURL_GLOBAL_ALL);
ch = curl_easy_init();
rv = curl_easy_setopt(ch, CURLOPT_VERBOSE, 0L);
rv = curl_easy_setopt(ch, CURLOPT_HEADER, 0L);
rv = curl_easy_setopt(ch, CURLOPT_NOPROGRESS, 1L);
rv = curl_easy_setopt(ch, CURLOPT_NOSIGNAL, 1L);
rv = curl_easy_setopt(ch, CURLOPT_WRITEFUNCTION, writefunction);
rv = curl_easy_setopt(ch, CURLOPT_WRITEDATA, stdout);
rv = curl_easy_setopt(ch, CURLOPT_HEADERFUNCTION, writefunction);
rv = curl_easy_setopt(ch, CURLOPT_HEADERDATA, stderr);
rv = curl_easy_setopt(ch, CURLOPT_SSLCERTTYPE, "PEM");
/* both VERIFYPEER and VERIFYHOST are set to 0 in this case because there is
no CA certificate*/
rv = curl_easy_setopt(ch, CURLOPT_SSL_VERIFYPEER, 0L);
rv = curl_easy_setopt(ch, CURLOPT_SSL_VERIFYHOST, 0L);
rv = curl_easy_setopt(ch, CURLOPT_URL, "https://www.example.com/");
rv = curl_easy_setopt(ch, CURLOPT_SSLKEYTYPE, "PEM");
/* first try: retrieve page without user certificate and key -> will fail
*/
rv = curl_easy_perform(ch);
if(rv == CURLE_OK) {
printf("*** transfer succeeded ***\n");
}
else {
printf("*** transfer failed ***\n");
}
/* second try: retrieve page using user certificate and key -> will succeed
* load the certificate and key by installing a function doing the necessary
* "modifications" to the SSL CONTEXT just before link init
*/
rv = curl_easy_setopt(ch, CURLOPT_SSL_CTX_FUNCTION, *sslctx_function);
rv = curl_easy_perform(ch);
if(rv == CURLE_OK) {
printf("*** transfer succeeded ***\n");
}
else {
printf("*** transfer failed ***\n");
}
curl_easy_cleanup(ch);
curl_global_cleanup();
return rv;
}


Job Hunter Toolkit
CLI Tutorial
GitHub
Search
Total Results
{{total}}
Matching Results
{{totalMatching}}
Filter
{{filter}}
{{item.company}}
{{item.title}}
{{item.location}}
Loading
View More


| cartilage | Cartilage data described in the package vignette. |
| confint.krippendorffsalpha | Compute a confidence interval for Krippendorffs Alpha. |
| influence.krippendorffsalpha | Compute DFBETAs for units and/or coders. |
| interval.dist | Compute the squared difference between two scores. |
| krippendorffs.alpha | Apply Krippendorff's Alpha. |
| nominal.dist | Apply the discrete metric to two scores. |
| ratio.dist | Apply a ratio distance function to two scores. |
| summary.krippendorffsalpha | Print a summary of a Krippendorff's Alpha fit. |


| PostgreSQL 9.5.19 Documentation | |||
|---|---|---|---|
| Prev | Up | Appendix E. Release Notes | Next |
Release date: 2016-03-31
This release contains a variety of fixes from 9.5.1. For information about new features in the 9.5 major release, see Section E.20.
A dump/restore is not required for those running 9.5.X.
However, you may need to REINDEX some indexes after applying the update, as per the first changelog entry below.
Disable abbreviated keys for string sorting in non-C locales (Robert Haas)
PostgreSQL 9.5 introduced logic for speeding up
comparisons of string data types by using the standard C library
function strxfrm()
as a substitute
for strcoll()
. It now emerges that most versions of
glibc (Linux's implementation of the C library) have buggy
implementations of strxfrm()
that, in some locales,
can produce string comparison results that do not
match strcoll()
. Until this problem can be better
characterized, disable the optimization in all non-C
locales. (C locale is safe since it uses
neither strcoll()
nor strxfrm()
.)
Unfortunately, this problem affects not only sorting but also entry ordering in B-tree indexes, which means that B-tree indexes on text, varchar, or char columns may now be corrupt if they sort according to an affected locale and were built or modified under PostgreSQL 9.5.0 or 9.5.1. Users should REINDEX indexes that might be affected.
It is not possible at this time to give an exhaustive list of known-affected locales. C locale is known safe, and there is no evidence of trouble in English-based locales such as en_US, but some other popular locales such as de_DE are affected in most glibc versions.
Maintain row-security status properly in cached plans (Stephen Frost)
In a session that performs queries as more than one role, the plan cache might incorrectly re-use a plan that was generated for another role ID, thus possibly applying the wrong set of policies when row-level security (RLS) is in use. (CVE-2016-2193)
Add must-be-superuser checks to some new contrib/pageinspect functions (Andreas Seltenreich)
Most functions in the pageinspect extension that
inspect bytea values disallow calls by non-superusers,
but brin_page_type()
and brin_metapage_info()
failed to do so. Passing contrived bytea values to them might
crash the server or disclose a few bytes of server memory. Add the
missing permissions checks to prevent misuse.
(CVE-2016-3065)
Fix incorrect handling of indexed ROW() comparisons (Simon Riggs)
Flaws in a minor optimization introduced in 9.5 caused incorrect results if the ROW() comparison matches the index ordering partially but not exactly (for example, differing column order, or the index contains both ASC and DESC columns). Pending a better solution, the optimization has been removed.
Fix incorrect handling of NULL index entries in indexed ROW() comparisons (Tom Lane)
An index search using a row comparison such as ROW(a, b) > ROW('x', 'y') would stop upon reaching a NULL entry in the b column, ignoring the fact that there might be non-NULL b values associated with later values of a.
Avoid unlikely data-loss scenarios due to renaming files without
adequate fsync()
calls before and after (Michael Paquier,
Tomas Vondra, Andres Freund)
Fix incorrect behavior when rechecking a just-modified row in a query that does SELECT FOR UPDATE/SHARE and contains some relations that need not be locked (Tom Lane)
Rows from non-locked relations were incorrectly treated as containing all NULLs during the recheck, which could result in incorrectly deciding that the updated row no longer passes the WHERE condition, or in incorrectly outputting NULLs.
Fix bug in json_to_record()
when a field of its input
object contains a sub-object with a field name matching one of the
requested output column names (Tom Lane)
Fix nonsense result from two-argument form
of jsonb_object()
when called with empty arrays
(Michael Paquier, Andrew Dunstan)
Fix misbehavior in jsonb_set()
when converting a path
array element into an integer for use as an array subscript
(Michael Paquier)
Fix misformatting of negative time zone offsets
by to_char()
's OF format code
(Thomas Munro, Tom Lane)
Fix possible incorrect logging of waits done by INSERT ... ON CONFLICT (Peter Geoghegan)
Log messages would sometimes claim that the wait was due to an exclusion constraint although no such constraint was responsible.
Ignore recovery_min_apply_delay parameter until recovery has reached a consistent state (Michael Paquier)
Previously, standby servers would delay application of WAL records in response to recovery_min_apply_delay even while replaying the initial portion of WAL needed to make their database state valid. Since the standby is useless until it's reached a consistent database state, this was deemed unhelpful.
Correctly handle cases where pg_subtrans is close to XID wraparound during server startup (Jeff Janes)
Fix assorted bugs in logical decoding (Andres Freund)
Trouble cases included tuples larger than one page when replica identity is FULL, UPDATEs that change a primary key within a transaction large enough to be spooled to disk, incorrect reports of "subxact logged without previous toplevel record", and incorrect reporting of a transaction's commit time.
Fix planner error with nested security barrier views when the outer view has a WHERE clause containing a correlated subquery (Dean Rasheed)
Fix memory leak in GIN index searches (Tom Lane)
Fix corner-case crash due to trying to free localeconv()
output strings more than once (Tom Lane)
Fix parsing of affix files for ispell dictionaries (Tom Lane)
The code could go wrong if the affix file contained any characters whose byte length changes during case-folding, for example I in Turkish UTF8 locales.
Avoid use of sscanf()
to parse ispell
dictionary files (Artur Zakirov)
This dodges a portability problem on FreeBSD-derived platforms (including macOS).
Fix atomic-operations code used on PPC with IBM's xlc compiler (Noah Misch)
This error led to rare failures of concurrent operations on that platform.
Avoid a crash on old Windows versions (before 7SP1/2008R2SP1) with an AVX2-capable CPU and a Postgres build done with Visual Studio 2013 (Christian Ullrich)
This is a workaround for a bug in Visual Studio 2013's runtime library, which Microsoft have stated they will not fix in that version.
Fix psql's tab completion logic to handle multibyte characters properly (Kyotaro Horiguchi, Robert Haas)
Fix psql's tab completion for SECURITY LABEL (Tom Lane)
Pressing TAB after SECURITY LABEL might cause a crash or offering of inappropriate keywords.
Make pg_ctl accept a wait timeout from the PGCTLTIMEOUT environment variable, if none is specified on the command line (Noah Misch)
This eases testing of slower buildfarm members by allowing them to globally specify a longer-than-normal timeout for postmaster startup and shutdown.
Fix incorrect test for Windows service status in pg_ctl (Manuel Mathar)
The previous set of minor releases attempted to fix pg_ctl to properly determine whether to send log messages to Window's Event Log, but got the test backwards.
Fix pgbench to correctly handle the combination of -C and -M prepared options (Tom Lane)
In pg_upgrade, skip creating a deletion script when the new data directory is inside the old data directory (Bruce Momjian)
Blind application of the script in such cases would result in loss of the new data directory.
In PL/Perl, properly translate empty Postgres arrays into empty Perl arrays (Alex Hunsaker)
Make PL/Python cope with function names that aren't valid Python identifiers (Jim Nasby)
Fix multiple mistakes in the statistics returned
by contrib/pgstattuple's pgstatindex()
function (Tom Lane)
Remove dependency on psed in MSVC builds, since it's no longer provided by core Perl (Michael Paquier, Andrew Dunstan)
Update time zone data files to tzdata release 2016c for DST law changes in Azerbaijan, Chile, Haiti, Palestine, and Russia (Altai, Astrakhan, Kirov, Sakhalin, Ulyanovsk regions), plus historical corrections for Lithuania, Moldova, and Russia (Kaliningrad, Samara, Volgograd).


#include <Stat.hpp>
Public Member Functions | |
| void | incOpCount (const std::string &operation) |
| Incrase call count for a selected operation by one. | |
| void | incOpCount (const std::string &operation, const int &count) |
| Incrase call count for a selected operation by an arbitrary number. | |
| void | outputStat () |
| Output statistics. | |
Private Attributes | |
| std::map< std::string, int > | opCount_ |
| Counter for keeping the number of times a certain operation was called. |
Definition at line 31 of file Stat.hpp.
| void ears::Stat::incOpCount | ( | const std::string & | operation | ) |
| void ears::Stat::incOpCount | ( | const std::string & | operation, | |
| const int & | count | |||
| ) |


Relocation of Plymouth Argyle season ticket holders to £8m-plus Mayflower Grandstand gets under way
It will be open for the first time when Derek Adams brings Morecambe to Home Park next month
by Chris ErringtonPlymouth Argyle season ticket holders are being invited to relocate to the Mayflower Grandstand, which reopens next month.
After an £8 million-plus, 18-month renovation, it will be open to 50 per cent of its 5,403-seat capacity for the League Two game against Morecambe on Saturday, December 14.
That match will mark the first return to Home Park of former Pilgrims’ boss Derek Adams, who was appointed as Morecambe manager last week.
Letters from Argyle chief executive Andrew Parkinson were sent out on Tuesday to supporters who held a 2017/18 season ticket.
They are being offered the chance to relocate to the grandstand to a seat as close as possible to the one that they vacated.
Supporters are unlikely to be given an identical seat number to the one that they previously held.
That is because the seat numbering runs the opposite way to before, so seat one is at the Devonport End of the grandstand, for example.
Argyle have a team of staff members ready to assist supporters with their relocation inquiries.
The club has also set up a dedicated email address<EMAIL_ADDRESS>to help make the process as smooth as possible.
Supporters can also call 01752 907700 or visit the Home Park Ticket Office to discuss their seat migration.
The grandstand will be open to 75 per cent of its capacity – 4,050 seats – for the league game against Stevenage on Sunday, December 29.
It will then be fully open, taking the Home Park capacity up to 18,200, when Swindon Town are Argyle’s opponents on New Year’s Day.


PreReqs
I’ll assume you already know a little about React, but if you don’t you can head over to their website React Home Page, and refer to the diagrams in this article as you go through the examples.
Conventions
I mainly use two diagrams schemes I use to think about React component architecture.
Nested boxes diagram
In the first scheme, componenets are represented by boxes, and are nested within eachother in roughly how they will appear on the screen. Image and explanation of nested boxes diagram, verbose and not verbose
Component tree diagram
The second scheme shows the component architecture as a tree.
Image and explanation of component tree diagram, verbose and not verbose
Front Page Examples
Find the examples in this section here,
A simple component
* Example Code * Example * Nested boxes diagrams * Component tree diagrams * Summary * Strategy Details
A Stateful Component (Elapsed Time Counter)
An Application
A component Using External Pluggins (MarkDown Converter)
Comment Box Example
Some Thoughts
My next case study will be about the Filterable Table Example, and combining some the examples so far to make something new.


Enable push notifications to receive messages. Go to your device's Settings and enable Push Notifications for this app.


--- layout: page title: About header-img: "img/about-bg.png" ---
Hi, I'm Wills. Im from Tampa, Fl. The weather is beautiful this time of year.


{% extends 'base.html' %} {% block content %}
This username and password are for conveneince and not security. Please do not use a password you have used on another website.


Kamikaze Cookery Blog
So, when I agreed to write this article for Kamikaze Cookery, I was told that I should use “British English”.
Cor blimey, guv’nor, apples and pears. Coffee.
Okay, so I am not British. I will not try to fake it. However, there is no denying that we Americans also love coffee, and the faster we can get our hands on it the better. In fact, we may or may not think the direct entrance to Heaven lies in one of our (insert embarrassingly high number) Starbucks locations.
Naturally, all these new machines that use little single-serve pods and cups and such are ultra tempting. The pods, however, seem to be generally expensive per cup compared to the trusty old-fashioned brewing method. Not to mention that they tend to produce only a decent quality cup at best. So, why not make your own coffee pods?
Pods are great for those satisfied with just one cup for the day, as well as for environments like offices and entertaining guests where varying tastes and preferences may be difficult, if not impossible, to meet in a single pot. Sure, it may sound like taking the easy way out, but making your own single-serve pods is not only potentially cheaper than buying them, but it also allows you to stick with your favorite brands, flavors, brew strengths, etc. as opposed to being limited to only those offered by pod manufacturers.
So, here’s an easy way to make your own coffee pods.
Find a measuring cup that fits as close to perfect as possible down into the pod compartment of your machine.
Take a small, 4-cup basket-style coffee filter and press the bottom down into the measuring cup. Put however much ground coffee you like for one cup; probably about 2 teaspoons give or take, but this part may take a little experimenting to get it just right. (My personal Mr. Coffee/Keurig machine tends to take a walk on the mild side this way, so I have to use a little more than I would have in my old pot and filter style maker.)
(You’re looking for 5 to 7 grams of coffee per 100ml. Volumetric measures are unreliable, so use weight if possible. - Hugh)
Once you have filled the filter, fold the sides down to cover the grinds completely. Feel free to cut some off if there is too much material; just make sure the grinds are well covered. Now take a small bottle of some sort, or anything hard that will fit into the measuring cup, and press down firmly to help securely fasten the composition into a pod. Pop the packet out of the measuring cup, place it smooth side down into the pod compartment, and you are good to go.
Just as a side note, something to look into before you purchase one of these machines is that some of them have reusable filter attachments that can be purchased separately so you can use your regular grinds right in the machine, no pod necessary.
(There are also machines that you can buy to make your coffee pod making easier, but that’s the subject of another article.
Read more →
If, like lots of people, you have decided to “go organic”, you’re probably wondering what effect organic food prices will have on your grocery bills.
Well, brace yourself because they are going to go up. But don’t worry - read on.
Organic food prices are definitely higher than “normal” food prices. You might be asking why this is the case, when organic produce doesn’t have any of the added extras–insecticides, herbicides, fungicides, fertilizers , etc. We don’t want you to nod off in the middle of reading this, so we’ll leave the complicated facts about exactly why organic produce is pricier than conventional produce for another time (when you have insomnia, perhaps). In a nutshell, organic is more expensive because the systems used by organic farmers are laborious and time-intensive. In addition, organic farmers don’t get the government subsidies that a lot of conventional farmers do.
(If you care about farmers at all, incidentally, you should also be thinking Fair Trade or similar. Read our article about fair trade chocolate facts to find out why. )
Anyway, you’re thinking about going organic and that deserves a pat on the back!  Fancy some good news? You won’t need to take a second mortgage out on your home to afford those organic apples (unless they’re diamond-encrusted as well). Obviously prices vary depending on where you shop, but generally you should only expect to pay around 5c more for an organic apple. For a week’s supply of fruit–apples, bananas, oranges and strawberries–there should only be around $1.50 increase in your bill. (About the same for savvily-shopped UK organic produce, in pounds - Hugh)
The best tip when it comes to organic food shopping is to be a more savvy customer. Look for discounted organic produce (fruit and vegetables often get reduced, which may bring their cost down to even less than their non-organic counterparts). Get rummaging in those bargain bins, and buy in bulk wherever you can. Not when it comes to those apples, unless you have a serious fruit addiction, in which case organic food prices is the least of your worries! It makes sense to bulk-buy pasta, rice, beans and other produce that has a long shelf life, if it means taking advantage of decent discounts.
Follow these other tips to save money on your organic grocery bill:
Join a CSA (Community Supported Agriculture) to get your hands on food that is both fresher and cheaper than supermarket ranges. Food co-ops are another good bet.
Stay away from convenience food, which is far pricier than making meals from scratch. Who knows, you might unearth some hidden culinary skills and become the next Gordon Ramsay–and then you won’t need to worry so much about your weekly food budget.
Make meals in large quantities and freeze them in individual portions.
Cut down on waste. Eat every part of your organic vegetables. Cauliflower stalks, potato skins and lemon zest can all be used in a ton of recipes (peach stones are not so tasty, however…)
Plan your weekly meals in advance and buy only the ingredients you need. Make a list before each grocery store trip and don’t be distracted–do not pass go; DO pass those tempting snack foods!
Look for cheaper cuts of organic meat, such as stew beef. You can also cut down on the amount of meat you eat by using more of other high-protein ingredients, like lentils and beans, which are far cheaper. (And of course you can use sous vide cooking with a lot of tougher meats if you’ve got the kit - Hugh)
Grow your own fruit and vegetables at home. Even if you only have room for a window box of herbs or tomatoes, that’s something you don’t need to buy at the store!
Visit your local farmers’ market.  If you’re lucky, some of the farmers might even let you haggle with them. Prices vary between farms, so you might want to go a bit further afield to find the best prices.
Go foraging for wild food. Yes, even you city dwellers–get hunting for fresh herbs and fruit trees.
Read more →
I have just noticed that if you fail a ReCaptcha challenge, it removes your comment text from the comment box.
That’s extremely unacceptable, and sorry it’s been going on this long. I’ll look into fixing it.
Read more →
Morning all.
So, today I’ve got a couple of quick but awesome links for you.
First up, the Hacker’s Guide To Tea . Not quite as complete as it would suggest, but nonetheless a darn good read, which a couple of useful titbits that I hadn’t thought of.
For example, did you realise that, basically, the temperature you need to steep tea at goes up linearly the more oxidised it is? Black tea’s more oxidised than green tea, so needs a higher temperature. Interesting.
(I wonder if the same applies to coffee?)
Secondly, courtesy of KKCs’ new backend and linkbuilding writer, Hope Jael Perez (say hi, everyone!) comes a gallery of quite the most bizarre kettles I have ever seen or heard of. Marmite kettles. Typewriter kettles. Kitchen kettles - as in a kettle shaped like a kitchen. Sadly there’s no way to track down where these kettles came from, on the site, but nonetheless, there’s your morning/early afternoon dose of wierd right there.
 )
Read more →
I ran across an interesting question yesterday, and I figured that if any people in the world knew the answer, the assembled KKC collective probably did.
Is there an easier way to eat noodles?
My girlfriend has some problems with her wrists, and hence finds eating noodles with a fork rather hard work.

I’ve suggested chopsticks, which I personally much prefer for anything noodley, but does anyone have any other/wierder suggestions?
Read more →
SO you want to buy your coffee cheaply? Who doesn’t? And certainly, buying K-Cups (the Kuerig coffee pod system’s coffee pods, for those not in the know) can be horrendously expensive, particularly if you’re buying straight from the manufacturer. After being ripped off for $1 or more per pod, buying the cheapest k cups you can seems like a good idea.
However, it’s all too easy to end up buying horrible discount pods from no-name suppliers, too, as many online guides will recommend. We didn’t want to go that way.
Overall, the cheapest price for any K-Cup on the ‘net is about $.37 a cup - however, the quality you’ll get for that price is nothing short of shocking, and not in a good way.
So, here’s a quick guide to the best K-Cups money can buy, collated from the hundreds and hundreds of reviews on http://www.singleservecoffeeforums.com (which is a fantastic resource, by the way):
(If you’re considering a K-Cup machine, you might be interested in our article on whether single-serve coffee machines are worth it at all before you buy)
Van Houtte Eclipse Extra Bold: Virtually no-one dislikes this dark, strong, smooth coffee, although if you like your coffee very mild it may not be to your taste. It’s scarcely cheaper to buy on Ebay than it is from the official site, which does indeed offer pretty excellent value: $.65 per cup for 24 cups, a very good price for a small order. If you wanted to get a bigger order, Amazon’s your best bet, offering 108 of the same K-Cups for $.55 each - worth it if you’re sold on this coffee in the long term.
Coffee People Treehugger Smooth, balanced medium roast that goes well with cream as well as black. A very simple recommendation for buying here - go straight to Amazon and get the 2-pack of 24 K-Cups each for $.48 per cup. It’s more expensive on the official site and anywhere else I looked.
Tully’s French Roast A bit of a controversial cup - a lot of people love it but a few really don’t. It’s a very high roast with a smoky taste and a long aftertaste. If you’re a member, it’s actually cheapest to buy this from the main Keurig site in the 80-cup size, coming in at $.49 per cup. Otherwise, Amazon sells a 2-pack of 24-cups for $25, coming in at just above $.50 per cup.
Any other recommendations on great K-Cups or good places to buy them?
Read more →
OK, I’ve been meaning to find some time to do more thorough tests of the very, very cool vacuum-like extraction with an ISI creamer technique. However, Life being what it is, haven’t so much gotten time yet. So here’s a quick summary of my preliminary tests.
h2. What is it and why should we care?

The technique uses an ISI cream whipper, which normally generates high pressures inside it using nitrogen dioxide capsules to force cream or other substances (like, say, a Xanthan-based solution of orange juice) out through the nozzle as a foam. They’re extremely ace, and I had one already for molecular gastronomy stuff.
Instead of foaming, though, this technique just requires you mix the liquid you want to extract flavours into and the thing you want to extract flavours from, pressurise with a gas canister, leave for two minutes or so (no longer - that’s the mistake I made), then release the pressure as fast as possible. For a variety of not-totally-understood reasons (cavitation of the cells in the thing you’re extracting from plus a bunch of other stuff), this forces the flavours out fast and efficiently.
You can also use the same technique in reverse, kinda, to rapidly marinade meat. Haven’t tried that yet.
So why do you care? Well, previously when I’ve wanted to make garlic-infused oil, say, it’s been a matter of sitting at a stove for an hour with garlic immersed in warm oil. Now I can do it in 2 minutes. That opens up a lot of possibilities for those of us who don’t want to spend all day watching rosemary simmer.
h2. The Tests
I tried 3 tests initially.
First up, I tried rosemary in water. Using dried rosemary, I mixed about a teaspoon with about 100ml of water, charged up the pressure, shook, and left it for two minutes. Annoyingly, my creamer hadn’t been used for a while, and the valve was stuck slightly open making a high-pitched whistling sound, which probably reduced the pressure in the vessel, and definitely made me fear I was about to be rushed to the hospital with bits of exploded creamer stuck in me.
In a shocking turn of events, that didn’t happen. After two minutes, I offgassed (not to be confused with OFGASsing, which is where you refuse to do anything about energy companies blatantly taking the piss until you have no other choice) and sieved the liquid.
Not. Terribly. Impressed. The water had a very, very faint rosemary smell, but that was about it. No colour, and I’m far from sure the smell wasn’t from some tiny bits of rosemary I missed.
Second test: Garlic in oil. A bit of reading had pointed out that water is less than 100% WIN for extractions, so I had higher hopes of this one. Crushed garlic, vegetable oil, and I left this one for about 5 minutes.
The results here were pretty darn impressive, actually. The oil smelt and tasted distinctly garlicky, replicating the hour-long garlic confit effect nicely. I’ll definitely be using this one the next time I do salmon confit in garlic oil.
(Try it, it’s gorgeous).
Finally, I tried something a bit bizarre. I’d read that vodka was the perfect fluid to extract into, but didn’t have any around. However, I did have a nearly-finished bottle of Glenmorangie sitting on the countertop, and let’s face it, if there was ever a single malt you wanted to use for cooking, Blandmorangie’s probably it. (Unless you have some 10-year Glenfiddich around, obviously. It’s like FAIL in a bottle.).
I ground up some of the Continental (read: “over-roasted”) coffee beans I had lying around to about a cafetiere grind, mixed ‘em up, pressurised, and left it for 20 minutes.
(Yes, that’s far too long, I know. I was using the tried-and-tested KKCook technique of “read fast, understand about half, try it, Do It Wrong, then read up and go “D’oh!”.“)
The results were… well, they were definitely coffee-flavoured. However, it was very hard to say if that was because the whiskey had come out tasting of coffee, or just because repeated filterings still couldn’t get the ultra-fine coffee grinds that had somehow gotten in there out again.
(Note to self - next time, get rid of the fines before extraction)
It was bitter and pretty horrible, but it has to be said, it definitely tasted of coffee.
h2. More?
Well, it’s definitely got promise. It’s a major pain that you have to use fat or alcohol rather than water for the extraction, since I don’t really want to eat every meal with vodka. However, with some experimentation I suspect that milk, cream or even melted butter would work well as a medium for capturing the flavours.
I’m very interested in the marinading technique, and I’ll be trying that next - tomorrow, hopefully. And I want to do some more testing to see what other flavours I can extract into my oils - maybe even try some of the more “out there” flavour ideas from vacuum filtration, like charcoal, wood, or forest soil.
Also, I’ve been hearing some very interesting things about cold-brewed coffee made this way.
Have you tried these new extraction techniques out, and do they work for you?
Read more →
Salmon’s one of the best-known things to sous-vide, with low-temperature cooked salmon having attracted a lot of attention from people like Heston Blumenthal (or Dr B, as we like to call him.) And for good reason - ultra-low-temperature sous-vide salmon is pretty stunning stuff.
There appear to be two seperate approaches in sous-vide cooking toward fish - Thomas Keller’s, who advocates cooking fish at (comparatively) high temperatures for very short times, and the more conventional approach where the fish is taken slowly to its target temperature. From experience, I’m a fan of Keller’s approach, particularly on oily fish.
h2. The conventional approach to salmon
Douglas Baldwin’s got a full recipe for salmon Mi-Cuit in his sous-vide guide
, but here are the highlights:
Remove the salmon’s skin
Leave it in very salty water for 10 minutes ( to avoid albumen leaching out)
Season with salt and pepper
Cook it between 101Â°F (38.5 C) and 126Â°F(52 C), depending on how rare you want your fish, according to his chart of times against thickness.
This produces a very rare, tender salmon. You need to cook very good, very fresh salmon for this recipe - like all sous-vide fish, sous-vide salmon tends to intensify any fishy smells present, which can be really quite unpleasant if the fish is going off.
h2. A La Thomas Keller
This is an experimental approach I haven’t played with too much, but you might find it interesting.
To get a salmon cut sous-vide that feels a fair bit firmer, and possibly a bit fresher, try this approach. You’ll also get more variation in cooking throughout the fish, which is certainly extremely nice in Keller’s mackerel recipes. Since salmon is a similar fish in many ways, I’d expect this to work well. Let me know if you try it! (And I promise to try it myself soon).
Prepare the salmon as with Douglas’s guide, but alter the cooking times - assuming a piece of salmon about an inch thick, cook it for 13 minutes (yes, that’s a VERY short time) at 61 degrees C. Note that like Douglas’s Mi Cuit, this will NOT be pasturised, so don’t serve it to anyone who will keel over if they contract food poisoning!
h2. The Safe Approach
There’s nothing wrong with well-cooked salmon.
If you’re serving to the elderly, children, or people who are otherwise immune-compromised, cook your salmon at 60 degrees C for the times listed in Douglas’s guide.
It won’t be as meltingly tender, but it’ll still be tasty!
Again - let me know your experiences with salmon!
Read more →
Sous-vide is absolutely the best way to cook steak. After a couple of years of using it, I’m 100% convinced that the perfect steak is a sous-vide steak, no question. It’s tender, it’s juicy, it’s cooked all the way through to a completely even colour and texture, there are no worries with undercooking or overcooking. And to add to all that, it’s about as complex to cook as a Pot Noodle.
Kamikaze Cookery’s first ever episode was about improvising a sous-vide setup to cook perfect steak . But assuming you want to go a bit beyond that - perhaps you’ve got your own sous-vide machine, even - how do you make your steak really kick ass?
h2. Cut isn’t that important, but quality is.
I think that fillet steak is overrated, particularly for sous-vide cooking. It’s very nice and very tender, but so is rump steak cooked sous-vide. And wheras other cuts will tend to stiffen up a bit if cooked on a grill or fried, you don’t have to worry about that problem when you’re using a sous-vide water bath.
 If it’s not aged properly, or the cow was stressed when it died, or had an uninteresting diet, that’s going to stay with you.
So, for preference, I’d always select a really good rump steak from a farm I know (easier to do than you’d think - just hit the local farmer’s market) over a supermarket fillet steak. And if I’ve got to shop in the supermarket, I’ll take their top-end rump over a medium-quality fillet every time.
h2. Temperature
Under 60 degrees, every time. You may well like beef well done, but if you do, I’m afraid I can’t assist you, because that just seems wierd to me.
Thomas Keller recommends 59.5 degrees Centigrade (139 F) , which will give you a pinkish bit of meat, rather than one with any bloody juices. Personally I’ll tend to drop a few degrees from that into the 56 to 57 range (130 to 135), which produces a slightly bloody but very, very tender and juicy piece of meat.
Remember, to speed up your setup time, use your shiny electric yellow kettle - or other kettle, as you prefer - to boil about half the volume of water your bath takes. It’ll reduce your setup time from an hour’s heating to close to nil.
Cooking times? As always, follow Douglas Baldwin’s charts
- he’s got a section on beef.
h2. Seasoning
I’m not a fan of fancy seasoning on steak, unless it’s being cooked by someone a lot more competent than me. If Grant Achatz wants to serve me prime sirloin with a hint of tarmac, I’ll trust his judgement. But when I’m cooking the darn thing, the best seasoning I’ve ever found for a sous-vide steak is salt and pepper.
Fresh-grind your rock salt and pepper on both sides, stick it into the vacuum sealer, and Bob’s your uncle.
Don’t skip the pepper - you need both for a perfect steak.
Do you have any sous-vide steak tips we should know about? Post them below!
UPDATE: We’re starting a newsletter for people who are interested in sous-vide: news, tips, places to get cheap equipment, that sort of thing.
If you’re interested, sign up below:
join the Sous-Vide mailing list
Email Address
Close
Read more →
I see BoingBoing’s picked up on the exciting stuff you can do with pressure, extraction, marinades and so on.
(For a summary, check the Khymos post of a few weeks ago).
Of course, KKC ain’t far behind! I’ve been doing some tests with extraction, and will be doing some marinade tests as soon as I have some chicken or other marinadable meat to hand. Expect a post soon.
(Initial results: garlic-infused oil WIN. Coffee-infused Glenmorangie FAIL. Other results in need of more testing.)
Read more →


---
title: Colors
layout: default
htmlclasses: bg-white-warm-2
bodyclasses: sans-5 lh-body m0 pt0 pb8 bg-white
---
Violet
{% include
swatch.html
color="Violet 1"
hsl="hsl(213, 58%, 93%)"
hex='e1ebf7'
%}
{% include
swatch.html
color="Violet 10"
hsl="hsl(215, 67%, 87%)"
hex='c8daf4'
%}
{% include
swatch.html
color="Violet 20"
hsl="hsl(221, 76%, 81%)"
hex='a8c0f3'
%}
{% include
swatch.html
color="Violet 30"
hsl="hsl(218, 87%, 72%)"
hex='79a6f6'
%}
{% include
swatch.html
color="Violet 40"
hsl="hsl(218, 100%, 66%)"
hex='5392ff'
%}
{% include
swatch.html
color="Violet 50"
hsl="hsl(215, 70%, 52%)"
hex='2d74da'
%}
{% include
swatch.html
color="Violet 60"
hsl="hsl(215, 68%, 38%)"
hex='1f57a4'
%}
{% include
swatch.html
color="Violet 70"
hsl="hsl(217, 53%, 31%)"
hex='25467a'
%}
{% include
swatch.html
color="Violet 80"
hsl="hsl(217, 50%, 23%)"
hex='1d3458'
%}
{% include
swatch.html
color="Violet 90"
hsl="hsl(216, 41%, 17%)"
hex='19273c'
%}
{% include
swatch.html
color="Violet 30v"
hsl="hsl(218, 87%, 72%)"
hex='79a6f6'
%}
{% include
swatch.html
color="Violet 40v"
hsl="hsl(218, 100%, 66%)"
hex='5392ff'
%}
{% include
swatch.html
color="Violet 50v"
hsl="hsl(215, 70%, 52%)"
hex='2d74da'
%}
{% include
swatch.html
color="Violet 60v"
hsl="hsl(215, 68%, 38%)"
hex='1f57a4'
%}
Indigo
{% include
swatch.html
color="Indigo 1"
hsl="hsl(213, 58%, 93%)"
hex='e1ebf7'
%}
{% include
swatch.html
color="Indigo 10"
hsl="hsl(215, 67%, 87%)"
hex='c8daf4'
%}
{% include
swatch.html
color="Indigo 20"
hsl="hsl(221, 76%, 81%)"
hex='a8c0f3'
%}
{% include
swatch.html
color="Indigo 30"
hsl="hsl(218, 87%, 72%)"
hex='79a6f6'
%}
{% include
swatch.html
color="Indigo 40"
hsl="hsl(218, 100%, 66%)"
hex='5392ff'
%}
{% include
swatch.html
color="Indigo 50"
hsl="hsl(215, 70%, 52%)"
hex='2d74da'
%}
{% include
swatch.html
color="Indigo 60"
hsl="hsl(215, 68%, 38%)"
hex='1f57a4'
%}
{% include
swatch.html
color="Indigo 70"
hsl="hsl(217, 53%, 31%)"
hex='25467a'
%}
{% include
swatch.html
color="Indigo 80"
hsl="hsl(217, 50%, 23%)"
hex='1d3458'
%}
{% include
swatch.html
color="Indigo 90"
hsl="hsl(216, 41%, 17%)"
hex='19273c'
%}
{% include
swatch.html
color="Indigo 30v"
%}
{% include
swatch.html
color="Indigo 40v"
%}
{% include
swatch.html
color="Indigo 50v"
%}
{% include
swatch.html
color="Indigo 60v"
%}
Coastal
{% include
swatch.html
color="Coastal 1"
%}
{% include
swatch.html
color="Coastal 10"
%}
{% include
swatch.html
color="Coastal 20"
%}
{% include
swatch.html
color="Coastal 30"
%}
{% include
swatch.html
color="Coastal 40"
%}
{% include
swatch.html
color="Coastal 50"
%}
{% include
swatch.html
color="Coastal 60"
%}
{% include
swatch.html
color="Coastal 70"
%}
{% include
swatch.html
color="Coastal 80"
%}
{% include
swatch.html
color="Coastal 90"
%}
{% include
swatch.html
color="Coastal 20v"
%}
{% include
swatch.html
color="Coastal 30v"
%}
{% include
swatch.html
color="Coastal 50v"
%}
{% include
swatch.html
color="Coastal 60v"
%}
Marine
{% include
swatch.html
color="Marine 1"
%}
{% include
swatch.html
color="Marine 10"
%}
{% include
swatch.html
color="Marine 20"
%}
{% include
swatch.html
color="Marine 30"
%}
{% include
swatch.html
color="Marine 40"
%}
{% include
swatch.html
color="Marine 50"
%}
{% include
swatch.html
color="Marine 60"
%}
{% include
swatch.html
color="Marine 70"
%}
{% include
swatch.html
color="Marine 80"
%}
{% include
swatch.html
color="Marine 90"
%}
{% include
swatch.html
color="Marine 40v"
%}
Blue
{% include
swatch.html
color="Blue 1"
%}
{% include
swatch.html
color="Blue 10"
%}
{% include
swatch.html
color="Blue 20"
%}
{% include
swatch.html
color="Blue 30"
%}
{% include
swatch.html
color="Blue 40"
%}
{% include
swatch.html
color="Blue 50"
%}
{% include
swatch.html
color="Blue 60"
%}
{% include
swatch.html
color="Blue 70"
%}
{% include
swatch.html
color="Blue 80"
%}
{% include
swatch.html
color="Blue 90"
%}
{% include
swatch.html
color="Blue 40v"
%}
{% include
swatch.html
color="Blue 50v"
%}
{% include
swatch.html
color="Blue 60v"
%}
Sky
{% include
swatch.html
color="Sky 1"
%}
{% include
swatch.html
color="Sky 10"
%}
{% include
swatch.html
color="Sky 20"
%}
{% include
swatch.html
color="Sky 30"
%}
{% include
swatch.html
color="Sky 40"
%}
{% include
swatch.html
color="Sky 50"
%}
{% include
swatch.html
color="Sky 60"
%}
{% include
swatch.html
color="Sky 70"
%}
{% include
swatch.html
color="Sky 80"
%}
{% include
swatch.html
color="Sky 90"
%}
{% include
swatch.html
color="Sky 30v"
%}
{% include
swatch.html
color="Sky 40v"
%}
{% include
swatch.html
color="Sky 50v"
%}
{% include
swatch.html
color="Sky 60v"
%}
Cyan
{% include
swatch.html
color="Cyan 1"
%}
{% include
swatch.html
color="Cyan 10"
%}
{% include
swatch.html
color="Cyan 20"
%}
{% include
swatch.html
color="Cyan 30"
%}
{% include
swatch.html
color="Cyan 40"
%}
{% include
swatch.html
color="Cyan 50"
%}
{% include
swatch.html
color="Cyan 60"
%}
{% include
swatch.html
color="Cyan 70"
%}
{% include
swatch.html
color="Cyan 80"
%}
{% include
swatch.html
color="Cyan 90"
%}
{% include
swatch.html
color="Cyan 10v"
%}
{% include
swatch.html
color="Cyan 20v"
%}
{% include
swatch.html
color="Cyan 30v"
%}
Teal
{% include
swatch.html
color="Teal 1"
%}
{% include
swatch.html
color="Teal 10"
%}
{% include
swatch.html
color="Teal 20"
%}
{% include
swatch.html
color="Teal 30"
%}
{% include
swatch.html
color="Teal 40"
%}
{% include
swatch.html
color="Teal 50"
%}
{% include
swatch.html
color="Teal 60"
%}
{% include
swatch.html
color="Teal 70"
%}
{% include
swatch.html
color="Teal 80"
%}
{% include
swatch.html
color="Teal 90"
%}
{% include
swatch.html
color="Teal 10v"
%}
{% include
swatch.html
color="Teal 20v"
%}
{% include
swatch.html
color="Teal 30v"
%}
Mint
{% include
swatch.html
color="Mint 1"
%}
{% include
swatch.html
color="Mint 10"
%}
{% include
swatch.html
color="Mint 20"
%}
{% include
swatch.html
color="Mint 30"
%}
{% include
swatch.html
color="Mint 40"
%}
{% include
swatch.html
color="Mint 50"
%}
{% include
swatch.html
color="Mint 60"
%}
{% include
swatch.html
color="Mint 70"
%}
{% include
swatch.html
color="Mint 80"
%}
{% include
swatch.html
color="Mint 90"
%}
{% include
swatch.html
color="Mint 1v"
%}
{% include
swatch.html
color="Mint 10v"
%}
{% include
swatch.html
color="Mint 20v"
%}
{% include
swatch.html
color="Mint 30v"
%}
{% include
swatch.html
color="Mint 60v"
%}
Green
{% include
swatch.html
color="Green 1"
%}
{% include
swatch.html
color="Green 10"
%}
{% include
swatch.html
color="Green 20"
%}
{% include
swatch.html
color="Green 30"
%}
{% include
swatch.html
color="Green 40"
%}
{% include
swatch.html
color="Green 50"
%}
{% include
swatch.html
color="Green 60"
%}
{% include
swatch.html
color="Green 70"
%}
{% include
swatch.html
color="Green 80"
%}
{% include
swatch.html
color="Green 90"
%}
{% include
swatch.html
color="Green 1v"
%}
{% include
swatch.html
color="Green 10v"
%}
{% include
swatch.html
color="Green 20v"
%}
{% include
swatch.html
color="Green 30v"
%}
{% include
swatch.html
color="Green 40v"
%}
Lime
{% include
swatch.html
color="Lime 1"
%}
{% include
swatch.html
color="Lime 10"
%}
{% include
swatch.html
color="Lime 20"
%}
{% include
swatch.html
color="Lime 30"
%}
{% include
swatch.html
color="Lime 40"
%}
{% include
swatch.html
color="Lime 50"
%}
{% include
swatch.html
color="Lime 60"
%}
{% include
swatch.html
color="Lime 70"
%}
{% include
swatch.html
color="Lime 80"
%}
{% include
swatch.html
color="Lime 90"
%}
{% include
swatch.html
color="Lime 1v"
%}
{% include
swatch.html
color="Lime 10v"
%}
{% include
swatch.html
color="Lime 20v"
%}
{% include
swatch.html
color="Lime 30v"
%}
{% include
swatch.html
color="Lime 40v"
%}
Citron
{% include
swatch.html
color="Citron 1"
%}
{% include
swatch.html
color="Citron 10"
%}
{% include
swatch.html
color="Citron 20"
%}
{% include
swatch.html
color="Citron 30"
%}
{% include
swatch.html
color="Citron 40"
%}
{% include
swatch.html
color="Citron 50"
%}
{% include
swatch.html
color="Citron 60"
%}
{% include
swatch.html
color="Citron 70"
%}
{% include
swatch.html
color="Citron 80"
%}
{% include
swatch.html
color="Citron 90"
%}
{% include
swatch.html
color="Citron 1v"
%}
{% include
swatch.html
color="Citron 10v"
%}
{% include
swatch.html
color="Citron 20v"
%}
{% include
swatch.html
color="Citron 30v"
%}
{% include
swatch.html
color="Citron 40v"
%}
Yellow
{% include
swatch.html
color="Yellow 1"
%}
{% include
swatch.html
color="Yellow 10"
%}
{% include
swatch.html
color="Yellow 20"
%}
{% include
swatch.html
color="Yellow 30"
%}
{% include
swatch.html
color="Yellow 40"
%}
{% include
swatch.html
color="Yellow 50"
%}
{% include
swatch.html
color="Yellow 60"
%}
{% include
swatch.html
color="Yellow 70"
%}
{% include
swatch.html
color="Yellow 80"
%}
{% include
swatch.html
color="Yellow 90"
%}
{% include
swatch.html
color="Yellow 10v"
%}
{% include
swatch.html
color="Yellow 20v"
%}
Gold
{% include
swatch.html
color="Gold 1"
%}
{% include
swatch.html
color="Gold 10"
%}
{% include
swatch.html
color="Gold 20"
%}
{% include
swatch.html
color="Gold 30"
%}
{% include
swatch.html
color="Gold 40"
%}
{% include
swatch.html
color="Gold 50"
%}
{% include
swatch.html
color="Gold 60"
%}
{% include
swatch.html
color="Gold 70"
%}
{% include
swatch.html
color="Gold 80"
%}
{% include
swatch.html
color="Gold 90"
%}
{% include
swatch.html
color="Gold 10v"
%}
{% include
swatch.html
color="Gold 20v"
%}
{% include
swatch.html
color="Gold 30v"
%}
{% include
swatch.html
color="Gold 40v"
%}
{% include
swatch.html
color="Gold 50v"
%}
Orange
{% include
swatch.html
color="Orange 1"
%}
{% include
swatch.html
color="Orange 10"
%}
{% include
swatch.html
color="Orange 20"
%}
{% include
swatch.html
color="Orange 30"
%}
{% include
swatch.html
color="Orange 40"
%}
{% include
swatch.html
color="Orange 50"
%}
{% include
swatch.html
color="Orange 60"
%}
{% include
swatch.html
color="Orange 70"
%}
{% include
swatch.html
color="Orange 80"
%}
{% include
swatch.html
color="Orange 90"
%}
{% include
swatch.html
color="Orange 1v"
%}
{% include
swatch.html
color="Orange 10v"
%}
{% include
swatch.html
color="Orange 20v"
%}
{% include
swatch.html
color="Orange 30v"
%}
Peach
{% include
swatch.html
color="Peach 1"
%}
{% include
swatch.html
color="Peach 10"
%}
{% include
swatch.html
color="Peach 20"
%}
{% include
swatch.html
color="Peach 30"
%}
{% include
swatch.html
color="Peach 40"
%}
{% include
swatch.html
color="Peach 50"
%}
{% include
swatch.html
color="Peach 60"
%}
{% include
swatch.html
color="Peach 70"
%}
{% include
swatch.html
color="Peach 80"
%}
{% include
swatch.html
color="Peach 90"
%}
{% include
swatch.html
color="Peach 20v"
%}
{% include
swatch.html
color="Peach 30v"
%}
{% include
swatch.html
color="Peach 40v"
%}
Terra
{% include
swatch.html
color="Terra 1"
%}
{% include
swatch.html
color="Terra 10"
%}
{% include
swatch.html
color="Terra 20"
%}
{% include
swatch.html
color="Terra 30"
%}
{% include
swatch.html
color="Terra 40"
%}
{% include
swatch.html
color="Terra 50"
%}
{% include
swatch.html
color="Terra 60"
%}
{% include
swatch.html
color="Terra 70"
%}
{% include
swatch.html
color="Terra 80"
%}
{% include
swatch.html
color="Terra 90"
%}
{% include
swatch.html
color="Terra 20v"
%}
{% include
swatch.html
color="Terra 30v"
%}
{% include
swatch.html
color="Terra 40v"
%}
{% include
swatch.html
color="Terra 50v"
%}
Red
{% include
swatch.html
color="Red 1"
%}
{% include
swatch.html
color="Red 10"
%}
{% include
swatch.html
color="Red 20"
%}
{% include
swatch.html
color="Red 30"
%}
{% include
swatch.html
color="Red 40"
%}
{% include
swatch.html
color="Red 50"
%}
{% include
swatch.html
color="Red 60"
%}
{% include
swatch.html
color="Red 70"
%}
{% include
swatch.html
color="Red 80"
%}
{% include
swatch.html
color="Red 90"
%}
{% include
swatch.html
color="Red 10v"
%}
{% include
swatch.html
color="Red 20v"
%}
{% include
swatch.html
color="Red 30v"
%}
{% include
swatch.html
color="Red 40v"
%}
{% include
swatch.html
color="Red 50v"
%}
{% include
swatch.html
color="Red 60v"
%}
Magenta
{% include
swatch.html
color="Magenta 1"
%}
{% include
swatch.html
color="Magenta 10"
%}
{% include
swatch.html
color="Magenta 20"
%}
{% include
swatch.html
color="Magenta 30"
%}
{% include
swatch.html
color="Magenta 40"
%}
{% include
swatch.html
color="Magenta 50"
%}
{% include
swatch.html
color="Magenta 60"
%}
{% include
swatch.html
color="Magenta 70"
%}
{% include
swatch.html
color="Magenta 80"
%}
{% include
swatch.html
color="Magenta 90"
%}
{% include
swatch.html
color="Magenta 10v"
%}
{% include
swatch.html
color="Magenta 20v"
%}
{% include
swatch.html
color="Magenta 30v"
%}
{% include
swatch.html
color="Magenta 40v"
%}
{% include
swatch.html
color="Magenta 50v"
%}
{% include
swatch.html
color="Magenta 60v"
%}
Purple
{% include
swatch.html
color="Purple 1"
%}
{% include
swatch.html
color="Purple 10"
%}
{% include
swatch.html
color="Purple 20"
%}
{% include
swatch.html
color="Purple 30"
%}
{% include
swatch.html
color="Purple 40"
%}
{% include
swatch.html
color="Purple 50"
%}
{% include
swatch.html
color="Purple 60"
%}
{% include
swatch.html
color="Purple 70"
%}
{% include
swatch.html
color="Purple 80"
%}
{% include
swatch.html
color="Purple 90"
%}
{% include
swatch.html
color="Purple 1v"
%}
{% include
swatch.html
color="Purple 10v"
%}
{% include
swatch.html
color="Purple 20v"
%}
{% include
swatch.html
color="Purple 30v"
%}
{% include
swatch.html
color="Purple 40v"
%}
{% include
swatch.html
color="Purple 50v"
%}
Black cool
{% include
swatch.html
color="Black cool 1"
%}
{% include
swatch.html
color="Black cool 10"
%}
{% include
swatch.html
color="Black cool 20"
%}
{% include
swatch.html
color="Black cool 30"
%}
{% include
swatch.html
color="Black cool 40"
%}
{% include
swatch.html
color="Black cool 50"
%}
{% include
swatch.html
color="Black cool 60"
%}
{% include
swatch.html
color="Black cool 70"
%}
{% include
swatch.html
color="Black cool 80"
%}
{% include
swatch.html
color="Black cool 90"
%}
Black
{% include
swatch.html
color="Black 1"
%}
{% include
swatch.html
color="Black 10"
%}
{% include
swatch.html
color="Black 20"
%}
{% include
swatch.html
color="Black 30"
%}
{% include
swatch.html
color="Black 40"
%}
{% include
swatch.html
color="Black 50"
%}
{% include
swatch.html
color="Black 60"
%}
{% include
swatch.html
color="Black 70"
%}
{% include
swatch.html
color="Black 80"
%}
{% include
swatch.html
color="Black 90"
%}
Black warm
{% include
swatch.html
color="Black warm 1"
%}
{% include
swatch.html
color="Black warm 10"
%}
{% include
swatch.html
color="Black warm 20"
%}
{% include
swatch.html
color="Black warm 30"
%}
{% include
swatch.html
color="Black warm 40"
%}
{% include
swatch.html
color="Black warm 50"
%}
{% include
swatch.html
color="Black warm 60"
%}
{% include
swatch.html
color="Black warm 70"
%}
{% include
swatch.html
color="Black warm 80"
%}
{% include
swatch.html
color="Black warm 90"
%}
Black trans
{% include
swatch.html
color="Black trans 1"
%}
{% include
swatch.html
color="Black trans 10"
%}
{% include
swatch.html
color="Black trans 20"
%}
{% include
swatch.html
color="Black trans 30"
%}
{% include
swatch.html
color="Black trans 40"
%}
{% include
swatch.html
color="Black trans 50"
%}
{% include
swatch.html
color="Black trans 60"
%}
{% include
swatch.html
color="Black trans 70"
%}
{% include
swatch.html
color="Black trans 80"
%}
{% include
swatch.html
color="Black trans 90"
%}
White cool
{% include
swatch.html
color="White cool 1"
%}
{% include
swatch.html
color="White cool 2"
%}
{% include
swatch.html
color="White cool 3"
%}
{% include
swatch.html
color="White cool 4"
%}
White
{% include
swatch.html
color="White"
%}
{% include
swatch.html
color="White 1"
%}
{% include
swatch.html
color="White 2"
%}
{% include
swatch.html
color="White 3"
%}
{% include
swatch.html
color="White 4"
%}
White warm
{% include
swatch.html
color="White warm 1"
%}
{% include
swatch.html
color="White warm 2"
%}
{% include
swatch.html
color="White warm 3"
%}
{% include
swatch.html
color="White warm 4"
%}
Black
{% include
swatch.html
color="Black"
%}


NA ENGINEERING CONSTRUCTION & CONTRACTS
We have doing various development projects in Residential and Manufacturing Industries. We have separate teams who are expertise in their area of work. We analyse Client's requirements, evaluate the project and give them the competitive quote, uncompromised quality and prompt delivery.
About Us
We Are
Construction and contract professionals
Our Vision
We NAECC company, pursuing excellence through dedication, experience and disciplined employees with an ongoing passion to deliver quality, timely and profitable projects and to attain excellence through unique, elegant and quality creations for customer satisfaction.
Our Mission
To safely deliver any project, any time, in any environment for the benefit of our customers, employees and the communities we serve.To be a dynamic team, providing the highest quality construction services available.
Listed below are some of the work we do.
Civil and Structural work
Fabrication,Erection and Steel Structural works
Architectural roofing and Galvalume roofing & Cladding
Structural Glazing & ACP Cladding work
Structural Glazing Cleaning work ( Spider / Lifting Concept )
Stainless Steel Fabrication Work
Painting Work
Flooring
Glass & Toughened Glass work
Road work - WBM, Concrete, Bitumen
Paver Blocks
Water Proofing work
Demolishing / Repairing Works