EcclesiaCRM documentation de l'API
EcclesiaCRM use Slim 3.9.2 which allow to make api call to the restricted area of the CRM.
API "calendar"
in route : "/api/routes/calendar/calendar-calendarV2.php
| Route |
Method |
function |
Description |
/getallevents |
POST |
getallCalendarEvents |
Get all events for all calendars for a specified range |
{ref}
->start
:: the start date : YYYY-MM-DD
{ref}
->end
:: the end date : YYYY-MM-DD
| Route |
Method |
function |
Description |
/numberofcalendars |
POST |
numberOfCalendars |
get all the number of calendar for the current user |
| Route |
Method |
function |
Description |
/showhidecalendars |
POST |
showHideCalendars |
Show Hide calendar |
{ref}
->array
:: calIDs
{id}
->bool
:: isPresent
| Route |
Method |
function |
Description |
/setDescriptionType |
POST |
setCalendarDescriptionType |
set Description type for a calendar |
{ref}
->array
:: calIDs
{ref}
->string
:: desc
{ref}
->string
:: type
| Route |
Method |
function |
Description |
/getallforuser |
POST |
getAllCalendarsForUser |
Get all calendars for a specified user |
{ref}
->string
:: type
{ref}
->bool
:: onlyvisible
{ref}
->bool
:: allCalendars
| Route |
Method |
function |
Description |
/info |
POST |
calendarInfo |
Get infos for a calendar |
{ref}
->array
:: calIDs
{ref}
->string
:: type
| Route |
Method |
function |
Description |
/setcolor |
POST |
setCalendarColor |
Set color for a calendar |
{ref}
->array
:: calIDs
{ref}
->hex
:: color : #FFF
| Route |
Method |
function |
Description |
/setckecked |
POST |
setCheckedCalendar |
Check the calendar to make it visible |
{ref}
->array
:: calIDs
{ref}
->bool
:: isChecked
| Route |
Method |
function |
Description |
/new |
POST |
newCalendar |
Create a new calendar |
| Route |
Method |
function |
Description |
/newReservation |
POST |
newCalendarReservation |
Create new calendar reservation |
{ref}
->string
:: title
{ref}
->string
:: type
{ref}
->string
:: desc
| Route |
Method |
function |
Description |
/modifyname |
POST |
modifyCalendarName |
Change calendar name |
{ref}
->array
:: calIDs
{ref}
->string
:: title
| Route |
Method |
function |
Description |
/getinvites |
POST |
getCalendarInvites |
get attendees for a calendar |
| Route |
Method |
function |
Description |
/sharedelete |
POST |
shareCalendarDelete |
Delete a share calendar for a person |
{ref}
->array
:: calIDs
{ref}
->int
:: principal
| Route |
Method |
function |
Description |
/sharefamily |
POST |
shareCalendarFamily |
Share a calendar with a person |
{ref}
->array
:: calIDs
{id}
->int
:: person ID
{ref}
->bool
:: notification
{ref}
->array
:: calIDs
{id}
->int
:: family ID
{ref}
->bool
:: notification
| Route |
Method |
function |
Description |
/sharegroup |
POST |
shareCalendarGroup |
Share a calendar with an entire group |
{ref}
->array
:: calIDs
{id}
->int
:: group ID
{ref}
->bool
:: notification
| Route |
Method |
function |
Description |
/setrights |
POST |
setCalendarRights |
Set right access for a calendar |
{ref}
->array
:: calIDs
{ref}
->array
:: calIDs
{ref}
->int
:: principal
{ref}
->int
:: rightAccess
| Route |
Method |
function |
Description |
/delete |
POST |
deleteCalendar |
Delete a calendar |
API "events"
in route : "/api/routes/calendar/calendar-eventsV2.php
| Route |
Method |
function |
Description |
/ |
GET |
getAllEvents |
Get all events for all calendars for a specified range |
| Route |
Method |
function |
Description |
/notDone |
GET |
getNotDoneEvents |
Get all events after now |
| Route |
Method |
function |
Description |
/types |
GET |
getEventTypes |
Get all event type |
| Route |
Method |
function |
Description |
/names |
GET |
eventNames |
Get all event names |
| Route |
Method |
function |
Description |
/deleteeventtype |
POST |
deleteeventtype |
delete event type |
| Route |
Method |
function |
Description |
/info |
POST |
eventInfo |
get event info |
| Route |
Method |
function |
Description |
/person |
POST |
personCheckIn |
Set a person for the event + check |
{id}
->int
:: event ID
{id}
->int
:: person ID
| Route |
Method |
function |
Description |
/group |
POST |
groupCheckIn |
Set the group persons for the event + check |
{id}
->int
:: event ID
{id}
->int
:: group ID
| Route |
Method |
function |
Description |
/family |
POST |
familyCheckIn |
Set the family persons for the event + check |
{id}
->int
:: event ID
{id}
->int
:: family ID
| Route |
Method |
function |
Description |
/attendees |
POST |
eventCount |
get event count |
{id}
->int
:: event ID
{id}
->int
:: type ID
| Route |
Method |
function |
Description |
/ |
POST |
manageEvent |
manage an event eventAction, [createEvent,moveEvent,resizeEvent,attendeesCheckinEvent,suppress,modifyEvent] |
{id}
->int
:: eventID
{id}
->int
:: type ID
{ref}
->array
:: calendarID
{id}
->int
:: reccurenceID
{ref}
->start
:: the start date : YYYY-MM-DD
{ref}
->start
:: the end date : YYYY-MM-DD
{ref}
->location
:: location
API "Cart"
in route : "/api/routes/cart.php
| Route |
Method |
function |
Description |
/ |
GET |
getAllPeopleInCart |
Get all people in Cart |
| Route |
Method |
function |
Description |
/ |
POST |
cartOperation |
Get user info by id |
{ref}
->array
:: Persons id in array ref
{id}
->int
:: Family id
{id}
->int
:: Group id
{id}
->int
:: removeFamily id
{id}
->int
:: studentGroup id
{id}
->int
:: teacherGroup id
| Route |
Method |
function |
Description |
/interectPerson |
POST |
cartIntersectPersons |
No description |
| Route |
Method |
function |
Description |
/emptyToGroup |
POST |
emptyCartToGroup |
No description |
| Route |
Method |
function |
Description |
/emptyToEvent |
POST |
emptyCartToEvent |
No description |
| Route |
Method |
function |
Description |
/emptyToNewGroup |
POST |
emptyCartToNewGroup |
No description |
| Route |
Method |
function |
Description |
/removeGroup |
POST |
removeGroupFromCart |
No description |
| Route |
Method |
function |
Description |
/removeGroups |
POST |
removeGroupsFromCart |
No description |
| Route |
Method |
function |
Description |
/removeStudentGroup |
POST |
removeStudentsGroupFromCart |
No description |
| Route |
Method |
function |
Description |
/removeTeacherGroup |
POST |
removeTeachersGroupFromCart |
No description |
| Route |
Method |
function |
Description |
/addAllStudents |
POST |
addAllStudentsToCart |
No description |
| Route |
Method |
function |
Description |
/addAllTeachers |
POST |
addAllTeachersToCart |
No description |
| Route |
Method |
function |
Description |
/removeAllStudents |
POST |
removeAllStudentsFromCart |
No description |
| Route |
Method |
function |
Description |
/removeAllTeachers |
POST |
removeAllTeachersFromCart |
No description |
| Route |
Method |
function |
Description |
/delete |
POST |
deletePersonCart |
No description |
| Route |
Method |
function |
Description |
/deactivate |
POST |
deactivatePersonCart |
No description |
| Route |
Method |
function |
Description |
/ |
DELETE |
removePersonCart |
Remove all People in the Cart |
API "ckeditor"
in route : "/api/routes/documents/documents-ckeditor.php
| Route |
Method |
function |
Description |
/{personId:[0-9]+}/templates |
GET |
templates |
No description |
| Route |
Method |
function |
Description |
/alltemplates |
POST |
alltemplates |
No description |
| Route |
Method |
function |
Description |
/deletetemplate |
POST |
deleteTemplate |
No description |
| Route |
Method |
function |
Description |
/renametemplate |
POST |
renametemplate |
No description |
| Route |
Method |
function |
Description |
/savetemplate |
POST |
saveTemplate |
No description |
| Route |
Method |
function |
Description |
/saveAsWordFile |
POST |
saveAsWordFile |
No description |
API "document"
in route : "/api/routes/documents/documents-document.php
| Route |
Method |
function |
Description |
/create |
POST |
createDocument |
No description |
| Route |
Method |
function |
Description |
/get |
POST |
getDocument |
No description |
| Route |
Method |
function |
Description |
/update |
POST |
updateDocument |
No description |
| Route |
Method |
function |
Description |
/delete |
POST |
deleteDocument |
No description |
| Route |
Method |
function |
Description |
/leave |
POST |
leaveDocument |
No description |
API "filemanager"
in route : "/api/routes/documents/documents-filemanager.php
| Route |
Method |
function |
Description |
/{personID:[0-9]+} |
POST |
getAllFileNoteForPerson |
No description |
| Route |
Method |
function |
Description |
/getFile/{personID:[0-9]+}/[{path:.*}] |
GET |
getRealFile |
No description |
| Route |
Method |
function |
Description |
/getPreview |
POST |
getPreview |
No description |
| Route |
Method |
function |
Description |
/changeFolder |
POST |
changeFolder |
No description |
| Route |
Method |
function |
Description |
/folderBack |
POST |
folderBack |
No description |
| Route |
Method |
function |
Description |
/deleteOneFolder |
POST |
deleteOneFolder |
No description |
| Route |
Method |
function |
Description |
/deleteOneFile |
POST |
deleteOneFile |
No description |
| Route |
Method |
function |
Description |
/deleteFiles |
POST |
deleteFiles |
No description |
| Route |
Method |
function |
Description |
/movefiles |
POST |
movefiles |
No description |
| Route |
Method |
function |
Description |
/newFolder |
POST |
newFolder |
No description |
| Route |
Method |
function |
Description |
/rename |
POST |
renameFile |
No description |
| Route |
Method |
function |
Description |
/uploadFile/{personID:[0-9]+} |
POST |
uploadFile |
No description |
| Route |
Method |
function |
Description |
/getRealLink |
POST |
getRealLink |
No description |
| Route |
Method |
function |
Description |
/setpathtopublicfolder |
POST |
setpathtopublicfolder |
No description |
API "sharedocument"
in route : "/api/routes/documents/documents-sharedocument.php
| Route |
Method |
function |
Description |
/getallperson |
POST |
getAllShareForPerson |
No description |
| Route |
Method |
function |
Description |
/addperson |
POST |
addPersonToShare |
No description |
| Route |
Method |
function |
Description |
/addfamily |
POST |
addFamilyToShare |
No description |
| Route |
Method |
function |
Description |
/addgroup |
POST |
addGroupToShare |
No description |
| Route |
Method |
function |
Description |
/deleteperson |
POST |
deletePersonFromShare |
No description |
| Route |
Method |
function |
Description |
/setrights |
POST |
setRightsForPerson |
No description |
| Route |
Method |
function |
Description |
/cleardocument |
POST |
clearDocument |
No description |
API "deposits"
in route : "/api/routes/finance/finance-deposits.php
| Route |
Method |
function |
Description |
| `` |
POST |
createDeposit |
No description |
| Route |
Method |
function |
Description |
| `` |
GET |
getAllDeposits |
No description |
| Route |
Method |
function |
Description |
/{id:[0-9]+} |
GET |
getOneDeposit |
No description |
| Route |
Method |
function |
Description |
/{id:[0-9]+} |
POST |
modifyOneDeposit |
No description |
| Route |
Method |
function |
Description |
/{id:[0-9]+}/ofx |
GET |
createDepositOFX |
No description |
| Route |
Method |
function |
Description |
/{id:[0-9]+}/pdf |
GET |
createDepositPDF |
No description |
| Route |
Method |
function |
Description |
/{id:[0-9]+}/csv |
GET |
createDepositCSV |
No description |
| Route |
Method |
function |
Description |
/{id:[0-9]+} |
DELETE |
deleteDeposit |
No description |
| Route |
Method |
function |
Description |
/{id:[0-9]+}/pledges |
GET |
getAllPledgesForDeposit |
No description |
API "donationfunds"
in route : "/api/routes/finance/finance-donationfunds.php
| Route |
Method |
function |
Description |
/ |
POST |
getAllDonationFunds |
No description |
| Route |
Method |
function |
Description |
/edit |
POST |
editDonationFund |
No description |
| Route |
Method |
function |
Description |
/set |
POST |
setDonationFund |
No description |
| Route |
Method |
function |
Description |
/delete |
POST |
deleteDonationFund |
No description |
| Route |
Method |
function |
Description |
/create |
POST |
createDonationFund |
No description |
API "payments"
in route : "/api/routes/finance/finance-payments.php
| Route |
Method |
function |
Description |
/ |
GET |
function ($request, $response, $args) |
No description |
| Route |
Method |
function |
Description |
/ |
POST |
function ($request, $response, $args) |
No description |
| Route |
Method |
function |
Description |
/{groupKey} |
DELETE |
function ($request, $response, $args) |
No description |
| Route |
Method |
function |
Description |
/family |
POST |
getAllPayementsForFamily |
No description |
| Route |
Method |
function |
Description |
/info |
POST |
getAutoPaymentInfo |
No description |
| Route |
Method |
function |
Description |
/families |
POST |
getAllPayementsForFamilies |
No description |
| Route |
Method |
function |
Description |
/delete |
POST |
deletePaymentForFamily |
No description |
| Route |
Method |
function |
Description |
/delete/{authID:[0-9]+} |
GET |
deleteAutoPayment |
No description |
| Route |
Method |
function |
Description |
/invalidate |
POST |
invalidatePledge |
No description |
| Route |
Method |
function |
Description |
/validate |
POST |
validatePledge |
No description |
| Route |
Method |
function |
Description |
/getchartsarrays |
POST |
getDepositSlipChartsArrays |
No description |
API "pledges"
in route : "/api/routes/finance/finance-pledges.php
| Route |
Method |
function |
Description |
/detail |
POST |
pledgeDetail |
No description |
| Route |
Method |
function |
Description |
/family |
POST |
familyPledges |
No description |
| Route |
Method |
function |
Description |
/delete |
POST |
deletePledge |
No description |
API "geocoder"
in route : "/api/routes/geocoder.php
| Route |
Method |
function |
Description |
/address |
POST |
getGeoLocals |
No description |
| Route |
Method |
function |
Description |
/address/ |
POST |
getGeoLocals |
No description |
API "kiosks"
in route : "/api/routes/kiosks.php
| Route |
Method |
function |
Description |
/ |
GET |
getKioskDevices |
No description |
| Route |
Method |
function |
Description |
/allowRegistration |
POST |
allowDeviceRegistration |
No description |
| Route |
Method |
function |
Description |
/{kioskId:[0-9]+}/reloadKiosk |
POST |
reloadKiosk |
No description |
| Route |
Method |
function |
Description |
/{kioskId:[0-9]+}/identifyKiosk |
POST |
identifyKiosk |
No description |
| Route |
Method |
function |
Description |
/{kioskId:[0-9]+}/acceptKiosk |
POST |
acceptKiosk |
No description |
| Route |
Method |
function |
Description |
/{kioskId:[0-9]+}/setAssignment |
POST |
setKioskAssignment |
No description |
| Route |
Method |
function |
Description |
/{kioskId:[0-9]+} |
DELETE |
deleteKiosk |
No description |
API "mailchimp"
in route : "/api/routes/mailchimp.php
| Route |
Method |
function |
Description |
/search/{query} |
GET |
searchList |
No description |
| Route |
Method |
function |
Description |
/list/{listID} |
GET |
oneList |
No description |
| Route |
Method |
function |
Description |
/lists |
GET |
lists |
No description |
| Route |
Method |
function |
Description |
/listmembers/{listID} |
GET |
listmembers |
No description |
| Route |
Method |
function |
Description |
/createlist |
POST |
createList |
No description |
| Route |
Method |
function |
Description |
/modifylist |
POST |
modifyList |
No description |
| Route |
Method |
function |
Description |
/deleteallsubscribers |
POST |
deleteallsubscribers |
No description |
| Route |
Method |
function |
Description |
/deletelist |
POST |
deleteList |
No description |
| Route |
Method |
function |
Description |
/list/removeTag |
POST |
removeTag |
No description |
| Route |
Method |
function |
Description |
/list/removeAllTagsForMembers |
POST |
removeAllTagsForMembers |
No description |
| Route |
Method |
function |
Description |
/list/addTag |
POST |
addTag |
No description |
| Route |
Method |
function |
Description |
/list/getAllTags |
POST |
getAllTags |
No description |
| Route |
Method |
function |
Description |
/list/removeTagForMembers |
POST |
removeTagForMembers |
No description |
| Route |
Method |
function |
Description |
/campaign/actions/create |
POST |
campaignCreate |
No description |
| Route |
Method |
function |
Description |
/campaign/actions/delete |
POST |
campaignDelete |
No description |
| Route |
Method |
function |
Description |
/campaign/actions/send |
POST |
campaignSend |
No description |
| Route |
Method |
function |
Description |
/campaign/actions/save |
POST |
campaignSave |
No description |
| Route |
Method |
function |
Description |
/campaign/{campaignID}/content |
GET |
campaignContent |
No description |
| Route |
Method |
function |
Description |
/status |
POST |
statusList |
No description |
| Route |
Method |
function |
Description |
/suppress |
POST |
suppress |
No description |
| Route |
Method |
function |
Description |
/suppressMembers |
POST |
suppressMembers |
No description |
| Route |
Method |
function |
Description |
/addallnewsletterpersons |
POST |
addallnewsletterpersons |
No description |
| Route |
Method |
function |
Description |
/addallpersons |
POST |
addallpersons |
No description |
| Route |
Method |
function |
Description |
/addperson |
POST |
addPerson |
No description |
| Route |
Method |
function |
Description |
/addfamily |
POST |
addFamily |
No description |
| Route |
Method |
function |
Description |
/addAllFamilies |
POST |
addAllFamilies |
No description |
| Route |
Method |
function |
Description |
/addgroup |
POST |
addGroup |
No description |
| Route |
Method |
function |
Description |
/testConnection |
POST |
testEmailConnectionMVC |
No description |
API "people"
in route : "/api/routes/people/people.php
| Route |
Method |
function |
Description |
/searchonlyperson/{query} |
GET |
function($request,$response,$args) |
Returns a list of the person who's first name or last name matches the :query parameter |
{ref}
->string
:: query string ref
| Route |
Method |
function |
Description |
/search/{query} |
GET |
function($request,$response,$args) |
Returns a list of the members/families/groups who's first name or last name matches the :query parameter |
{ref}
->string
:: query string ref
| Route |
Method |
function |
Description |
/classifications/all |
GET |
getAllClassifications |
Returns all classifications |
| Route |
Method |
function |
Description |
/person/classification/assign |
POST |
postPersonClassification |
Returns all classifications |
API "attendees"
in route : "/api/routes/people/people-attendees.php
| Route |
Method |
function |
Description |
/event/{eventID:[0-9]+} |
GET |
attendeesEvent |
No description |
| Route |
Method |
function |
Description |
/checkin |
POST |
attendeesCheckIn |
No description |
| Route |
Method |
function |
Description |
/checkout |
POST |
attendeesCheckOut |
No description |
| Route |
Method |
function |
Description |
/student |
POST |
attendeesStudent |
No description |
| Route |
Method |
function |
Description |
/delete |
POST |
attendeesDelete |
No description |
| Route |
Method |
function |
Description |
/deleteAll |
POST |
attendeesDeleteAll |
No description |
| Route |
Method |
function |
Description |
/checkAll |
POST |
attendeesCheckAll |
No description |
| Route |
Method |
function |
Description |
/uncheckAll |
POST |
attendeesUncheckAll |
No description |
| Route |
Method |
function |
Description |
/groups |
POST |
attendeesGroups |
No description |
| Route |
Method |
function |
Description |
/deletePerson |
POST |
deleteAttendeesPerson |
No description |
| Route |
Method |
function |
Description |
/addPerson |
POST |
addAttendeesPerson |
No description |
| Route |
Method |
function |
Description |
/validate |
POST |
validateAttendees |
No description |
| Route |
Method |
function |
Description |
/addFreeAttendees |
POST |
addFreeAttendees |
No description |
| Route |
Method |
function |
Description |
/qrcodeCall |
POST |
qrcodeCallAttendees |
No description |
API "families"
in route : "/api/routes/people/people-families.php
| Route |
Method |
function |
Description |
/familyproperties/{familyID:[0-9]+} |
POST |
postfamilyproperties |
Return family properties for familyID |
{id}
->int
:: familyId as id
| Route |
Method |
function |
Description |
/isMailChimpActive |
POST |
isMailChimpActiveFamily |
Return if mailchimp is activated for family |
{id}
->int
:: familyId as id
{ref}
->string
:: email as ref
| Route |
Method |
function |
Description |
/{familyId:[0-9]+} |
GET |
getFamily |
Return the family as json |
{id}
->int
:: familyId as id
| Route |
Method |
function |
Description |
/info |
POST |
familyInfo |
Return the family info as json |
{id}
->int
:: familyId as id
| Route |
Method |
function |
Description |
/numbers |
GET |
numbersOfAnniversaries |
Return the numbers of Anniversaries for MenuEvent |
| Route |
Method |
function |
Description |
/search/{query} |
GET |
searchFamily |
Returns a list of the families who's name matches the :query parameter |
{ref}
->string
:: query as ref
| Route |
Method |
function |
Description |
/self-register |
GET |
selfRegisterFamily |
Returns a list of the self-registered families |
| Route |
Method |
function |
Description |
/self-verify |
GET |
selfVerifyFamily |
Returns a list of the self-verified families |
| Route |
Method |
function |
Description |
/pending-self-verify |
GET |
pendingSelfVerify |
Returns a list of the pending self-verified families |
| Route |
Method |
function |
Description |
/byCheckNumber/{scanString} |
GET |
byCheckNumberScan |
Returns a family string based on the scan string of an MICR reader containing a routing and account number |
{ref}
->string
:: scanString as ref
| Route |
Method |
function |
Description |
/{familyId:[0-9]+}/photo |
GET |
function ($request, $response, $args) |
Returns the photo for the familyId |
{id}
->int
:: familyId as id
| Route |
Method |
function |
Description |
/{familyId:[0-9]+}/thumbnail |
GET |
function ($request, $response, $args) |
Returns the thumbnail for the familyId |
{id}
->int
:: familyId as id
| Route |
Method |
function |
Description |
/{familyId:[0-9]+}/photo |
POST |
postFamilyPhoto |
Post the photo for the familyId |
{id}
->int
:: familyId as id
| Route |
Method |
function |
Description |
/{familyId:[0-9]+}/photo |
DELETE |
deleteFamilyPhoto |
Delete the photo for the familyId |
{id}
->int
:: familyId as id
| Route |
Method |
function |
Description |
/{familyId:[0-9]+}/verify |
POST |
verifyFamily |
Verify the family for the familyId |
{id}
->int
:: familyId as id
| Route |
Method |
function |
Description |
/verify/{familyId:[0-9]+}/now |
POST |
verifyFamilyNow |
Verify the family for the familyId now |
{id}
->int
:: familyId as id
| Route |
Method |
function |
Description |
/verify/url |
POST |
verifyFamilyURL |
Verify the family for the familyId now |
| Route |
Method |
function |
Description |
/{familyId:[0-9]+}/activate/{status} |
POST |
familyActivateStatus |
Update the family status to activated or deactivated with :familyId and :status true/false. Pass true to activate and false to deactivate. |
{id}
->int
:: familyId as id
{ref}
->bool
:: status as ref
| Route |
Method |
function |
Description |
/{familyId:[0-9]+}/geolocation |
GET |
familyGeolocation |
Return the location for the family |
{id}
->int
:: familyId as id
| Route |
Method |
function |
Description |
/deletefield |
POST |
deleteFamilyField |
delete familyField custom field |
{id}
->int
:: orderID as id
{id}
->int
:: field as id
| Route |
Method |
function |
Description |
/upactionfield |
POST |
upactionFamilyField |
Move up the family custom field |
{id}
->int
:: orderID as id
{id}
->int
:: field as id
| Route |
Method |
function |
Description |
/downactionfield |
POST |
downactionFamilyField |
Move down the family custom field |
{id}
->int
:: orderID as id
{id}
->int
:: field as id
API "groups"
in route : "/api/routes/people/people-groups.php
| Route |
Method |
function |
Description |
/ |
GET |
getAllGroups |
Get all the Groups |
| Route |
Method |
function |
Description |
/groupproperties/{groupID:[0-9]+} |
POST |
groupproperties |
Get all the properties of a group |
| Route |
Method |
function |
Description |
/addressbook/extract/{groupId:[0-9]+} |
GET |
function ($request, $response, $args) |
get addressbook from a groupID through the url |
| Route |
Method |
function |
Description |
/search/{query} |
GET |
searchGroup |
No description |
| Route |
Method |
function |
Description |
/deleteAllManagers |
POST |
deleteAllManagers |
No description |
| Route |
Method |
function |
Description |
/deleteManager |
POST |
deleteManager |
No description |
| Route |
Method |
function |
Description |
/getmanagers |
POST |
getManagers |
No description |
| Route |
Method |
function |
Description |
/addManager |
POST |
addManager |
No description |
| Route |
Method |
function |
Description |
/groupsInCart |
GET |
groupsInCart |
No description |
| Route |
Method |
function |
Description |
/ |
POST |
newGroup |
No description |
| Route |
Method |
function |
Description |
/{groupID:[0-9]+} |
POST |
updateGroup |
No description |
| Route |
Method |
function |
Description |
/{groupID:[0-9]+} |
GET |
groupInfo |
No description |
| Route |
Method |
function |
Description |
/{groupID:[0-9]+}/cartStatus |
GET |
groupCartStatus |
No description |
| Route |
Method |
function |
Description |
/{groupID:[0-9]+} |
DELETE |
deleteGroup |
No description |
| Route |
Method |
function |
Description |
/{groupID:[0-9]+}/members |
GET |
groupMembers |
No description |
| Route |
Method |
function |
Description |
/{groupID:[0-9]+}/events |
GET |
groupEvents |
No description |
| Route |
Method |
function |
Description |
/{groupID:[0-9]+}/removeperson/{userID:[0-9]+} |
DELETE |
removePersonFromGroup |
No description |
| Route |
Method |
function |
Description |
/{groupID:[0-9]+}/addperson/{userID:[0-9]+} |
POST |
addPersonToGroup |
No description |
| Route |
Method |
function |
Description |
/{groupID:[0-9]+}/addteacher/{userID:[0-9]+} |
POST |
addTeacherToGroup |
No description |
| Route |
Method |
function |
Description |
/{groupID:[0-9]+}/userRole/{userID:[0-9]+} |
POST |
userRoleByUserId |
No description |
| Route |
Method |
function |
Description |
/{groupID:[0-9]+}/roles/{roleID:[0-9]+} |
POST |
rolesByRoleId |
No description |
| Route |
Method |
function |
Description |
/{groupID:[0-9]+}/roles |
GET |
allRoles |
No description |
| Route |
Method |
function |
Description |
/{groupID:[0-9]+}/defaultRole |
POST |
defaultRoleForGroup |
No description |
| Route |
Method |
function |
Description |
/{groupID:[0-9]+}/roles/{roleID:[0-9]+} |
DELETE |
function ($request, $response, $args) |
No description |
| Route |
Method |
function |
Description |
/{groupID:[0-9]+}/roles |
POST |
function ($request, $response, $args) |
No description |
| Route |
Method |
function |
Description |
/{groupID:[0-9]+}/setGroupSpecificPropertyStatus |
POST |
function ($request, $response, $args) |
No description |
| Route |
Method |
function |
Description |
/{groupID:[0-9]+}/settings/active/{value} |
POST |
settingsActiveValue |
No description |
| Route |
Method |
function |
Description |
/{groupID:[0-9]+}/settings/email/export/{value} |
POST |
settingsEmailExportVvalue |
No description |
| Route |
Method |
function |
Description |
/deletefield |
POST |
deleteGroupField |
delete Group Specific property custom field |
{id}
->int
:: PropID as id
{id}
->int
:: Field as id
{id}
->int
:: GroupId as id
| Route |
Method |
function |
Description |
/upactionfield |
POST |
upactionGroupField |
delete Group Specific property custom field |
{id}
->int
:: PropID as id
{id}
->int
:: Field as id
{id}
->int
:: GroupId as id
| Route |
Method |
function |
Description |
/downactionfield |
POST |
downactionGroupField |
delete Group Specific property custom field |
{id}
->int
:: PropID as id
{id}
->int
:: Field as id
{id}
->int
:: GroupId as id
| Route |
Method |
function |
Description |
/{groupID:[0-9]+}/sundayschool |
GET |
groupSundaySchool |
get all sundayschool teachers |
{id}
->int
:: groupID as id
API "persons"
in route : "/api/routes/people/people-persons.php
| Route |
Method |
function |
Description |
/search/{query} |
GET |
searchPerson |
Returns a list of the persons who's first name or last name matches the :query parameter |
{ref}
->string
:: query string ref
| Route |
Method |
function |
Description |
/cart/view |
GET |
personCartView |
Returns a list of the persons who are in the cart |
| Route |
Method |
function |
Description |
/volunteers/{personID:[0-9]+} |
POST |
volunteersPerPersonId |
Returns all the volunteers opportunities |
{id}
->int
:: personId as id
| Route |
Method |
function |
Description |
/volunteers/delete |
POST |
volunteersDelete |
delete a volunteer opportunity for a user |
{id1}
->int
:: personId as id1
{id2}
->int
:: volunteerOpportunityId as id2
| Route |
Method |
function |
Description |
/volunteers/add |
POST |
volunteersAdd |
Add volunteers opportunity |
{id1}
->int
:: personId as id1
{id2}
->int
:: volID as id2
| Route |
Method |
function |
Description |
/isMailChimpActive |
POST |
isMailChimpActivePerson |
Return if MailChimp is activated |
{id}
->int
:: personId as id
{ref}
->string
:: email as ref
| Route |
Method |
function |
Description |
/{personId:[0-9]+}/activate/{status} |
POST |
activateDeacticate |
Return if MailChimp is activated |
{id}
->int
:: personId as id
{ref}
->string
:: email as ref
| Route |
Method |
function |
Description |
/personproperties/{personID:[0-9]+} |
POST |
personpropertiesPerPersonId |
No description |
| Route |
Method |
function |
Description |
/numbers |
GET |
numbersOfBirthDates |
No description |
| Route |
Method |
function |
Description |
/{personId:[0-9]+}/photo |
GET |
function ($request, $response, $args ) |
No description |
| Route |
Method |
function |
Description |
/{personId:[0-9]+}/thumbnail |
GET |
function ($request, $response, $args) |
No description |
| Route |
Method |
function |
Description |
/{personId:[0-9]+}/photo |
POST |
postPersonPhoto |
No description |
| Route |
Method |
function |
Description |
/{personId:[0-9]+}/photo |
DELETE |
deletePersonPhoto |
No description |
| Route |
Method |
function |
Description |
/{personId:[0-9]+}/addToCart |
POST |
addPersonToCart |
No description |
| Route |
Method |
function |
Description |
/{personId:[0-9]+} |
DELETE |
deletePerson |
No description |
| Route |
Method |
function |
Description |
/deletefield |
POST |
deletePersonField |
No description |
| Route |
Method |
function |
Description |
/upactionfield |
POST |
upactionPersonfield |
No description |
| Route |
Method |
function |
Description |
/downactionfield |
POST |
downactionPersonfield |
No description |
| Route |
Method |
function |
Description |
/duplicate/emails |
GET |
duplicateEmails |
No description |
| Route |
Method |
function |
Description |
/NotInMailChimp/emails/{type} |
GET |
notInMailChimpEmails |
No description |
| Route |
Method |
function |
Description |
/saveNoteAsWordFile |
POST |
saveNoteAsWordFile |
No description |
API "data"
in route : "/api/routes/public/public-data.php
| Route |
Method |
function |
Description |
/countries |
GET |
getCountries |
No description |
| Route |
Method |
function |
Description |
/countries/ |
GET |
getCountries |
No description |
| Route |
Method |
function |
Description |
/countries/{countryCode}/states |
GET |
getStates |
No description |
| Route |
Method |
function |
Description |
/countries/{countryCode}/states/ |
GET |
getStates |
No description |
API "register"
in route : "/api/routes/public/public-register.php
| Route |
Method |
function |
Description |
| `` |
POST |
registerEcclesiaCRM |
No description |
API "search"
in route : "/api/routes/search.php
| Route |
Method |
function |
Description |
/{query} |
GET |
quickSearch |
a search query. Returns all instances of Persons, Families, Groups, Deposits, Checks, Payments that match the search query |
{ref}
->string
:: query string as ref
| Route |
Method |
function |
Description |
/comboElements/ |
POST |
comboElements |
No description |
| Route |
Method |
function |
Description |
/getGroupForTypeID/ |
POST |
getGroupForTypeID |
No description |
| Route |
Method |
function |
Description |
/getGroupRoleForGroupID/ |
POST |
getGroupRoleForGroupID |
No description |
| Route |
Method |
function |
Description |
/getresult/ |
POST |
getSearchResult |
No description |
| Route |
Method |
function |
Description |
/getresult/ |
GET |
getSearchResult |
No description |
API "mapicons"
in route : "/api/routes/sidebar/sidebar-mapicons.php
| Route |
Method |
function |
Description |
/getall |
POST |
getAllMapIcons |
No description |
| Route |
Method |
function |
Description |
/checkOnlyPersonView |
POST |
checkOnlyPersonView |
No description |
| Route |
Method |
function |
Description |
/setIconName |
POST |
setIconName |
No description |
| Route |
Method |
function |
Description |
/removeIcon |
POST |
removeIcon |
No description |
in route : "/api/routes/sidebar/sidebar-menulinks.php
| Route |
Method |
function |
Description |
/{userId:[0-9]+} |
POST |
getMenuLinksForUser |
No description |
| Route |
Method |
function |
Description |
/delete |
POST |
deleteMenuLink |
No description |
| Route |
Method |
function |
Description |
/upaction |
POST |
upMenuLink |
No description |
| Route |
Method |
function |
Description |
/downaction |
POST |
downMenuLink |
No description |
| Route |
Method |
function |
Description |
/create |
POST |
createMenuLink |
No description |
| Route |
Method |
function |
Description |
/set |
POST |
setMenuLink |
No description |
| Route |
Method |
function |
Description |
/edit |
POST |
editMenuLink |
No description |
API "properties"
in route : "/api/routes/sidebar/sidebar-properties.php
| Route |
Method |
function |
Description |
/persons/assign |
POST |
propertiesPersonsAssign |
No description |
| Route |
Method |
function |
Description |
/persons/unassign |
DELETE |
propertiesPersonsUnAssign |
No description |
| Route |
Method |
function |
Description |
/families/assign |
POST |
propertiesFamiliesAssign |
No description |
| Route |
Method |
function |
Description |
/families/unassign |
DELETE |
propertiesFamiliesUnAssign |
No description |
| Route |
Method |
function |
Description |
/groups/assign |
POST |
propertiesGroupsAssign |
No description |
| Route |
Method |
function |
Description |
/groups/unassign |
DELETE |
propertiesGroupsUnAssign |
No description |
| Route |
Method |
function |
Description |
/propertytypelists |
POST |
getAllPropertyTypes |
No description |
| Route |
Method |
function |
Description |
/propertytypelists/edit |
POST |
editPropertyType |
No description |
| Route |
Method |
function |
Description |
/propertytypelists/set |
POST |
setPropertyType |
No description |
| Route |
Method |
function |
Description |
/propertytypelists/create |
POST |
createPropertyType |
No description |
| Route |
Method |
function |
Description |
/propertytypelists/delete |
POST |
deletePropertyType |
No description |
| Route |
Method |
function |
Description |
/typelists/edit |
POST |
editProperty |
No description |
| Route |
Method |
function |
Description |
/typelists/set |
POST |
setProperty |
No description |
| Route |
Method |
function |
Description |
/typelists/delete |
POST |
deleteProperty |
No description |
| Route |
Method |
function |
Description |
/typelists/create |
POST |
createProperty |
No description |
| Route |
Method |
function |
Description |
/typelists/{type} |
POST |
getAllProperties |
No description |
API "roles"
in route : "/api/routes/sidebar/sidebar-roles.php
| Route |
Method |
function |
Description |
/all |
GET |
getAllRoles |
No description |
| Route |
Method |
function |
Description |
/persons/assign |
POST |
rolePersonAssign |
No description |
API "volunteeropportunity"
in route : "/api/routes/sidebar/sidebar-volunteeropportunity.php
| Route |
Method |
function |
Description |
/ |
POST |
getAllVolunteerOpportunities |
No description |
| Route |
Method |
function |
Description |
/delete |
POST |
deleteVolunteerOpportunity |
No description |
| Route |
Method |
function |
Description |
/upaction |
POST |
upActionVolunteerOpportunity |
No description |
| Route |
Method |
function |
Description |
/downaction |
POST |
downActionVolunteerOpportunity |
No description |
| Route |
Method |
function |
Description |
/create |
POST |
createVolunteerOpportunity |
No description |
| Route |
Method |
function |
Description |
/set |
POST |
setVolunteerOpportunity |
No description |
| Route |
Method |
function |
Description |
/edit |
POST |
editVolunteerOpportunity |
No description |
API "pastoralcare"
in route : "/api/routes/pastoralcare/pastoralcare.php
| Route |
Method |
function |
Description |
/ |
POST |
getAllPastoralCare |
No description |
| Route |
Method |
function |
Description |
/deletetype |
POST |
deletePastoralCareType |
No description |
| Route |
Method |
function |
Description |
/createtype |
POST |
createPastoralCareType |
No description |
| Route |
Method |
function |
Description |
/settype |
POST |
setPastoralCareType |
No description |
| Route |
Method |
function |
Description |
/edittype |
POST |
editPastoralCareType |
No description |
| Route |
Method |
function |
Description |
/person/add |
POST |
addPastoralCarePerson |
No description |
| Route |
Method |
function |
Description |
/person/delete |
POST |
deletePastoralCarePerson |
No description |
| Route |
Method |
function |
Description |
/person/getinfo |
POST |
getPastoralCareInfoPerson |
No description |
| Route |
Method |
function |
Description |
/person/modify |
POST |
modifyPastoralCarePerson |
No description |
| Route |
Method |
function |
Description |
/family/add |
POST |
addPastoralCareFamily |
No description |
| Route |
Method |
function |
Description |
/family/delete |
POST |
deletePastoralCareFamily |
No description |
| Route |
Method |
function |
Description |
/family/getinfo |
POST |
getPastoralCareInfoFamily |
No description |
| Route |
Method |
function |
Description |
/family/modify |
POST |
modifyPastoralCareFamily |
No description |
| Route |
Method |
function |
Description |
/members |
POST |
pastoralcareMembersDashboard |
No description |
| Route |
Method |
function |
Description |
/personNeverBeenContacted |
POST |
personNeverBeenContacted |
No description |
| Route |
Method |
function |
Description |
/familyNeverBeenContacted |
POST |
familyNeverBeenContacted |
No description |
| Route |
Method |
function |
Description |
/singleNeverBeenContacted |
POST |
singleNeverBeenContacted |
No description |
| Route |
Method |
function |
Description |
/retiredNeverBeenContacted |
POST |
retiredNeverBeenContacted |
No description |
| Route |
Method |
function |
Description |
/youngNeverBeenContacted |
POST |
youngNeverBeenContacted |
No description |
| Route |
Method |
function |
Description |
/getPersonByClassification |
POST |
getPersonByClassificationPastoralCare |
No description |
| Route |
Method |
function |
Description |
/getPersonByClassification/{type:[0-9]+} |
POST |
getPersonByClassificationPastoralCare |
No description |
API "meeting"
in route : "/api/routes/meeting/meeting.php
API "sundayschool"
in route : "/api/routes/sundayschool.php
| Route |
Method |
function |
Description |
/getallstudents/{groupId:[0-9]+} |
POST |
getallstudentsForGroup |
No description |
| Route |
Method |
function |
Description |
/getAllGendersForDonut/{groupId:[0-9]+} |
POST |
getAllGendersForDonut |
No description |
| Route |
Method |
function |
Description |
/getAllStudentsForChart/{groupId:[0-9]+} |
POST |
getAllStudentsForChart |
No description |
API "system"
in route : "/api/routes/system/system.php
| Route |
Method |
function |
Description |
/csp-report |
POST |
function ($request, $response, $args) |
No description |
| Route |
Method |
function |
Description |
/deletefile |
POST |
function ($request, $response, $args) |
No description |
API "custom-fields"
in route : "/api/routes/system/system-custom-fields.php
| Route |
Method |
function |
Description |
/person |
GET |
getPersonFieldsByType |
No description |
| Route |
Method |
function |
Description |
/person/ |
GET |
getPersonFieldsByType |
No description |
API "synchronize"
in route : "/api/routes/system/system-synchronize.php
| Route |
Method |
function |
Description |
/page |
GET |
function ($request,$response,$args) |
Returns the dashboard items in function of the current page name : for CRMJsom.js |
{page}
->string
:: current page name
API "database"
in route : "/api/routes/system/system-database.php
| Route |
Method |
function |
Description |
/backup |
POST |
function ($request, $response, $args) |
No description |
| Route |
Method |
function |
Description |
/backupRemote |
POST |
function($request, $response, $args) |
No description |
| Route |
Method |
function |
Description |
/restore |
POST |
function ($request, $response, $args) |
No description |
| Route |
Method |
function |
Description |
/download/{filename} |
GET |
function ($request, $response, $args) |
No description |
API "gdrp"
in route : "/api/routes/system/system-gdrp.php
| Route |
Method |
function |
Description |
/ |
POST |
getAllGdprNotes |
No description |
| Route |
Method |
function |
Description |
/setComment |
POST |
setGdprComment |
No description |
| Route |
Method |
function |
Description |
/removeperson |
POST |
removePersonGdpr |
No description |
| Route |
Method |
function |
Description |
/removeallpersons |
POST |
removeAllPersonsGdpr |
No description |
| Route |
Method |
function |
Description |
/removefamily |
POST |
removeFamilyGdpr |
No description |
| Route |
Method |
function |
Description |
/removeallfamilies |
POST |
removeAllFamiliesGdpr |
No description |
API "issues"
in route : "/api/routes/system/system-issues.php
| Route |
Method |
function |
Description |
/issues |
POST |
function ($request, $response, $args) |
No description |
API "systemupgrade"
in route : "/api/routes/system/system-system-upgrade.php
| Route |
Method |
function |
Description |
/downloadlatestrelease |
GET |
function () |
No description |
| Route |
Method |
function |
Description |
/doupgrade |
POST |
function ($request, $response, $args) |
No description |
| Route |
Method |
function |
Description |
/isUpdateRequired |
POST |
function ($request, $response, $args) |
No description |
API "timerjobs"
in route : "/api/routes/system/system-timerjobs.php
| Route |
Method |
function |
Description |
/run |
POST |
function () |
No description |
API "userrole"
in route : "/api/routes/user/user-role.php
| Route |
Method |
function |
Description |
/add |
POST |
addUserRole |
No description |
| Route |
Method |
function |
Description |
/get |
POST |
getUserRole |
No description |
| Route |
Method |
function |
Description |
/rename |
POST |
renameUserRole |
No description |
| Route |
Method |
function |
Description |
/getall |
POST |
getAllUserRoles |
No description |
| Route |
Method |
function |
Description |
/delete |
POST |
deleteUserRole |
No description |
API "users"
in route : "/api/routes/user/user-users.php
| Route |
Method |
function |
Description |
/{userId:[0-9]+}/password/reset |
POST |
passwordReset |
No description |
| Route |
Method |
function |
Description |
/lockunlock |
POST |
lockUnlock |
No description |
| Route |
Method |
function |
Description |
/showsince |
POST |
showSince |
No description |
| Route |
Method |
function |
Description |
/showto |
POST |
showTo |
No description |
| Route |
Method |
function |
Description |
/{userId:[0-9]+}/login/reset |
POST |
loginReset |
No description |
| Route |
Method |
function |
Description |
/{userId:[0-9]+} |
DELETE |
deleteUser |
No description |


The main advantages of precompiling chunks are: faster loading, protecting source code from accidental user changes, and off-line syntax checking.
Precompiling does not imply faster execution because in Lua chunks are always compiled into bytecodes before being executed. luac simply allows those bytecodes to be saved in a file for later execution.
Precompiled chunks are not necessarily smaller than the corresponding source. The main goal in precompiling is faster loading.
The binary files created by luac are portable only among architectures with the same word size and byte order.
luac produces a single output file containing the bytecodes for all source files given. By default, the output file is named luac.out, but you can change this with the -o option.
In the command line, you can mix text files containing Lua source and binary files containing precompiled chunks. This is useful because several precompiled chunks, even from different (but compatible) platforms, can be combined into a single precompiled chunk.
You can use '-' to indicate the standard input as a source file and '--' to signal the end of options (that is, all remaining arguments will be treated as files even if they start with '-').
The internal format of the binary files produced by luac is likely to change when a new version of Lua is released. So, save the source files of all Lua programs that you precompile.
-l produce a listing of the compiled bytecode for Lua's virtual machine. Listing bytecodes is useful to learn about Lua's virtual machine. If no files are given, then luac loads luac.out and lists its contents.
-o file output to file, instead of the default luac.out. (You can use '-' for standard output, but not on platforms that open standard output in text mode.) The output file may be a source file because all files are loaded before the output file is written. Be careful not to overwrite precious files.
-p load files but do not generate any output file. Used mainly for syntax checking and for testing precompiled chunks: corrupted files will probably generate errors when loaded. Lua always performs a thorough integrity test on precompiled chunks. Bytecode that passes this test is completely safe, in the sense that it will not break the interpreter. However, there is no guarantee that such code does anything sensible. (None can be given, because the halting problem is unsolvable.) If no files are given, then luac loads luac.out and tests its contents. No messages are displayed if the file passes the integrity test.
-s strip debug information before writing the output file. This saves some space in very large chunks, but if errors occur when running a stripped chunk, then the error messages may not contain the full information they usually do. For instance, line numbers and names of local variables are lost.
-v show version information.
luac.out default output file


Philly is home to a ton of history and landmarks that are a big part of what makes this city great. Historic Philadelphia has left many landmarks you can visit today and have a wonderful experience touring Philadelphia. From historic buildings, to visiting items like the liberty bell which have a historic value, this city is every historian's dream city to visit.
https://travel.usnews.com/Philadelphia_PA/Things_To_Do/Liberty_Bell_Center_52507/
https://www.history.com/topics/american-revolution/declaration-of-independence
https://www.nps.gov/inde/planyourvisit/independencehall.htm


FAQ
- Help...? (Something doesn't work.)
- Does it work...? (Platform Questions)
- How do I...? (Usage Questions)
- What does...? (Extra Help)
- But what bugs...? (Known Bugs)
Help...?
- ... Matlab just crashes when I try calling some of your routines!
In general, this happens on Linux. One problem I've found is that the version of gcc I compiled Matlab with is not always the best one. If you reliably have this problem, I can look into using a new compiler, so please, let me know. If you need a short term fix, I believe this page addresses the issue.
- ... Matlab gives me an error about 64-bit mex files and sparse matrix compatibility.
The error I get from Matlab is
??? Function "mxGetIr_700" is obsolete in file "compat32.cpp", line 246. (64-bit mex files using sparse matrices must be rebuilt with the "-largeArrayDims" option. ...)
The solution to this error is to update to Matlab BGL 2.1 which includes precompiled files for 64-bit linux with support for largeArrayDims included. ... I get an error about "undefined symbol: mxCreateDoubleMatrix_700."
This error results because I have compiled MatlabBGL for a more recent version of Matlab than the one you are using. The fix is straightforward: you need to recompile the library for your version of Matlab.
>> cd matlab_bgl % or switch to the directory with all the matlab_bgl files >> cd private >> compile
If this solution does not work, please send me email with your error message as well as the output of the ver command from Matlab.
... MatlabBGL crashes when I call "max_flow."
This error has been fixed as of MatlabBGL 3.0. This fix applies to earlier versions. With some combinations of Matlab and libc, there are bad interactions with the free function used inside of a mex file. The "private/max_flow_mex.c" file inadvertantly used this function to release memory allocated by Matlab. Again, the fix is simple: replace the "free" call with "mxFree".
>> cd matlab_bgl % or switch to the directory with all the matlab_bgl files >> cd private >> edit max_flow_mex.c (in editor) ... Edit->Find and Replace... (in find/replace) ... Find what: free; Replace with: mxFree; Match case (on) (in find/replace) Replace All (in editor) ... File->Save >> compile
If this solution does not work, please send me email with your error message as well as the output of the ver command from Matlab.
Mathworks Help page on mexErrMsgTxt
Does it work...?
- ... with Linux?
It should! I've tested it on a few versions and it has worked assuming you have Matlab 7.0 or higher. The code works on both 32-bit and 64-bit version of Linux. The precompiled files for 64-bit Linux require Matlab 2006b because of a change in the sparse matrix data structure, however, you can recompile the files yourself for previous versions of Matlab.
- ... with Windows?
Yes. I develop the software on Windows. You don't need to do anything (I hope!) to make it work on 32-bit versions of Windows and Matlab. For 64-bit versions, you will have to compile some things yourself because I don't have a 64-bit computer with Windows and Matlab installed. Please email me if you have questions about a 64-bit version of Windows.
- ... with MacOS?
Yes, as of version 2.1, it works! For the Intel processor, you will have to compile some things yourself because I don't have access to an Intel Mac with Matlab.
- ... with Sun?
I have gotten this to work, you should be able to adapt the compile scripts to work for sun..
- ... on 64-bit Matlab?
Yes!
How do I...?
- ... create a graph?
Any Matlab sparse matrix is a MatlabBGL graph. See the Matlab document on sparse matrices. The sparse matrix IS the adjacency matrix of the graph.
- ... add graph properties?
MatlabBGL doesn't support graph propreties like Boost does. Instead, it allows you to store separate arrays with data about each vertex. This technique is how all the labels and coordinates are done in the examples. Eventually, I'll put up a tutorial with more examples of how to use this idea. (Send me email if you need it...)
- ... make the matrix/graph symmetric?
If you have an undirected graph, then MatlabBGL needs both the forward and reverse edge listed. This requirement means that the adjacency matrix must be symmetric. The easiest way to make a sparse Matlab matrix symmetric is to call
A = max(A,A');
- ... make an unweighted graph?
If you have a weighted graph and want to make an unweighted graph, there are two options. First, for MatlabBGL calls that do not use graph weights, you do not need to do anything! These algorithms (e.g. bfs) will not look at the weights on your graph so it will behave exactly like an unweighted graph. If the algorithm does look at the weights (e.g. dijkstra_sp) then you can create an unweighted version with the following call
A = spones(A);
- ... use a dense graph
Right now, you can't. All the MatlabBGL algorithms only work on sparse Matlab matrices. You can convert your dense graph into a sparse matrix using the command
A = sparse(A);
What does...?
- ... "the matrix A must..." mean?
MatlabBGL errors are often in terms of "the matrix A." The matrix A is the adjacency matrix for the graph. These errors mean that there is some problem with your input matrix.
- ... "the matrix A must be sparse" mean?
MatlabBGL only uses sparse matrices by default. You can set an option to convert all full matrices to sparse matrices.
set_matlab_bgl_default('full2sparse',1);
If you want to permanently set full2sparse then edit set_matlab_bgl_default.m and change
default_options = struct('istrans', 0, 'nocheck', 0, 'full2sparse', 0);
todefault_options = struct('istrans', 0, 'nocheck', 0, 'full2sparse', 1);
- ... "the matrix A must have double values" mean?
For algorithms that use the weights on the graph edges, those weights must be double values. Sometimes, you can inadvertently create a Matlab sparse matrix with a different value type. To convert your graph to a double type, use the statement
A = double(A);
- ... "the matrix A must be symmetric" mean?
Certain algorithms require undirected graphs. For these algorithms, your adjacency matrix must be symmetric. See How do I make my matrix symmetric in the "How do I...?" section.
- ... "the matrix A must be square" mean?
The input to a MatlabBGL function is an adjacency matrix. By definition, an adjacency matrix is square. This error probably means you are passing something to a MatlabBGL call incorrectly.
What what bugs does the software have?
Presently, there are some problems with various calls on empty matrices with 64-bit matlab. For example
T = mst(sparse([]));
will fail with an out of memory error. These bugs will be fixed in the next version. If you need a fix before then, contact me for the lastest release. You will likely need to recompile files for your system.


Hey I am Guy. I work for RedskyIT and program in multiple languages.
Here are some of the technologies I work with day-to-day
Via email: a.guy.smith@gmail.com


Computing Centre provides the computing facility for the Undergraduate students as well as Postgraduate Students and the staff of the Faculty of Engineering. The centre directly renders academic service to nearly 3000 students ranging for both undergraduates and postgraduates by way of providing systems with necessary software


I’m a Director with experience across multiple genres from documentaries, to corporate films, music videos, narrative fiction and commercials.
I’m a world-renowned filmmaker who, for the past 9 years of my 26-years career have specialized in creating incredible cinematic images no matter what the camera.
Some of my most iconic work was created with Canon DSLRs.
Filmming Services
Explore Services
I offer different services such as filming services, workshop & private tuition,
equipment hire. If you have any question, don't hesitate to contact me.
Awards
A selection of some recent awards
Since 2008, I have shot more than 50 short formats (commercials, music videos, documentaries and short movies). In 2014 I finished the masterclass in cinematography at Hamburg Media School. Now freelancing as cinematographer.
06 Awards in 2014/2015.
04 Awards in 2016
Our Best Films
Featured Films
Have a look at our best films which are high in quality and receive positive responses
from audience. You are gonna have these great films as well.


PTPServer is a PTP server, it implements HFS and PTPCon protocols over UDP (on default PTP server port 52000). Clients may connect to the server and use it to open a console and access the file system. Server makes visible the part of the file tree, started from the working directory. You can also run applications on the server side from this subtree.
PTPServer.exe [c]
The only argument is a symbol 'c'. If it is given, server will stop execution once a console is closed by a client.
While server is running, you can enter following commands:
help stat clear exit
help prints a brief help.
stat prints a statistic.
clear clears statistic counters.
exit exits the server.
To work with the server, you may use HFS, PTPCon, PTPSupport PTP services.


{% extends 'feedback/base.html' %} {% block content %}
Your feedback has been recorded.
If you have more to say, you can submit another feedback response.


Dear Dry,
“TIME "has decided to include the word "feminist” in its annual “worst words” poll, alongside words like “bae,” “basic,” “turnt,” and “yaaasssss.”
And we’re not buying it. *If you’re not either, sign the petition.* [ http://org.salsalabs.com/o/1400/p/dia/action3/common/public/?action_KEY=16713 ]
“Feminist” is an important word, not a meme. In fact, millions of women and men around the world like you who believe in the social, economic, and political equality of all women identify as “feminist” - including Taylor Swift, who is currently on “TIME”’s cover. So we don’t really care if the word makes a few people at “TIME” “cringe,” or if celebrities publicly coming out as feminists annoys them. Actually, we think it’s about time so many people are talking about feminism and how to achieve equality.
If “TIME "is annoyed with a word that represents saving women’s lives, fighting for equality, and ending violence against women, then there’s something wrong with "TIME ”- and not with the word “feminist.”
*Tell “TIME "that "feminist” is not their word to ban.* [ http://org.salsalabs.com/o/1400/p/dia/action3/common/public/?action_KEY=16713 ]


A dedicated team of scientists, engineers, and psychologists building a revolutionary product to connect human beings with their future self.
Of key interest is the realization of one's latent potential suppressed by today's fast paced, fly by wire lifestyles.


{{ entry.content }}
Here you can find posts by me, Nick. I will be posting here when I find cool tools, projects, and frameworks.


<?xml version="1.0" encoding="UTF-8" ?>
[…]
<correspDesc xml:id="unique_letter_id">
<correspAction type="sent">
<persName xml:lang="de" ref="http://d-nb.info/gnd/118540238">
<forename>Max</forename>
<surname>Mustermann</surname>
</persName>
</correspAction>
<correspAction type="received">
<persName xml:lang="de" ref="http://d-nb.info/gnd/118540987">
<forename>Mina</forename>
<surname>Musterfrau</surname>
</persName>
</correspAction>
</correspDesc>
The base CSS used in this example is from Pandoc.css by Pascal Hertleif (killercup). The dark theme is provided by the tei-documentation-links.css.
The example is based on the TEI extension <correspDesc>
developed by the TEI Correspondence SIG. For more information about <correspDesc>
see the article by Stadler, Illetschko, Seifert: Towards a Model for Encoding Correspondence in the TEI: Developing and Implementing <correspDesc>
; for more information about the corresponding web service see correspSearch by Stefan Dumont.


Aloha my fellow boots! My name is Ann and I am part of the Chicago cohort. It's a pleasure to be amongst people who are all working towards the same goal. I look forward to learn and grow with everyone here as we embark on this journey together!
I grew up in Souther California but have also lived in Pennsylvania, Texas, and now I currenly live in Hawaii. I decided to enroll in DBC because I wanted to have a skill that I can take anywhere with me no matter where I live.
You can say I've always been a free spirit so I wanted to be able to just pick up and travel without worrying about how am I going to support myself. I believe being a Web Devleper will give me the freedom no other job can
The ability to fly. I love skydiving and it's the most exhilarating feeling to feel nothing but the wind, sky,and
the fast approaching ground hahaha


Contact us
We're looking forward to hearing from you!
Home
About Us
Meet Our Team
Contact Us
Name
Email Address
Subject
Choose One:
General Inquiry
Suggestions
Product Support
Message
Send Message


Opening: December 19, 2007
Architectural design: Artur Rosa
Art work: João Rodrigues Vieira
Platform length: 105 m
Code: TP
Wikipedia page


Ahmed Shaban Helwa
- 002 01000 830 774
-<EMAIL_ADDRESS>- ahmedshabaanhelwa.github.io
- Egypt, Giza, Muhandisen.
Ahmed is a software development enthusiast. Despite of being a loyal to the C-based family, he is open-minded for other programming and Scripting languages. Ahmed started his passion by Embedded software development. To satisfy the passion, he did too many labs and projects to program different targets of microcontrollers. During his college years, he enrolled in professional embedded software development environment by being an Intern in Valeo Egypt and IBM Egypt. Now he is shifting his interest in developing high level application. C# and Asp.net are amazing for Ahmed, so he is learning them and making a very good progess!
Work Experience
Internship, Embedded Software Engineer
Automotive Embedded Software Development
- Develop and test Valeo GEEDS standard Bootloader.
- Understanding of ISO 14229 - Unified Diagnostic Services (UDS) as main application, ISO 15765 – as the communication stack.
- OEMs: Volkswagen, Daimler, Audi and Hyundai-Kia (HKM).
- Targets: Renesas RL78/F14 and RH850, Freescale MPC57xx and NXP 68HC12.
Training, Embedded Software
Automotive Embedded Software Development
- Training of automotive embedded software development for Renesas RL78/F14 MCU.
- Training of unit testing using IBM RTRT, static code analyzing using pc lint.
- Training of CAN bus testing using Vector Canoe and Canalyer
- Documentation of CAN bus driver of Renesas 78K0RFX3
Extra Curricular Activities
Embedded systems instructor
Unmanned aerial systems Development Center, Aerospace Department.
- Provide a six-lecture tutorial that introduces basic computing mathematics.
- quick tour of C programming language, introduction to embedded systems and ARM architecture, and GPIOs in TM4C123x microcontroller.
Projects
Portfolio website
Portfolio website using Asp.Net Core, MS SQL and Bootstrap.
Cooperative scheduler
A generic cooperative scheduler it can be integrated with any timer peripheral whether a generic or Systick one.
Information
Personal
- Date of birth: 06/06/1993
- Nationality: Egyptian
- Marital status: Engaged


Contour Reference Architecture
This document details a reference architecture for running Contour as the ingress controller for a Kubernetes cluster, such as Tanzu Kubernetes Grid (TKG). It covers deployment considerations, multi-tenancy concerns, and best practices. This document represents how the VMware field team approaches Contour deployments in large enterprise Kubernetes environments.
Throughout the document, “Contour” refers to the ingress controller as a whole. In contrast, “contour” refers to the control plane of the ingress controller, or the component of the ingress controller that interacts with the Kubernetes API.
Each section covers architectural recommendations and, at times, configuration for each concern in a Contour deployment. At a high-level, the key recommendations are:
- Follow the split deployment architecture to deploy
Contour onto the cluster.
- Use a Deployment to run at least two instances of contour
- Use a DaemonSet to deploy Envoy. (Use a Deployment if you want to auto-scale Envoy pods.)
- Use an external load balancer to distribute traffic across Envoy pods.
- Set
externalTrafficPolicy: Local
when exposing Envoy over aNodePort
orLoadBalancer
service - Consider using dedicated ingress nodes to minimize variability in request latency and unexpected performance issues.
- Consider binding Envoy to the underlying host’s network.

- Leverage TLS certificate delegation to secure wildcard TLS certificates.
- Avoid ingress configuration clashes by leveraging HTTPProxy inclusion or an admission controller, such as OPA Gatekeeper.
Contour overview
Contour is an ingress controller for Kubernetes that leverages Envoy in the data plane. With Contour, you can route external clients to network services (usually HTTP and HTTPS) running within your Kubernetes cluster. Contour routes traffic according to rules defined in Kubernetes Ingress resources and Contour-specific HTTPProxy custom resources. The HTTPProxy custom resource enables advanced use-cases that are otherwise not available through the Kubernetes Ingress resource, such as configuring the load balancing strategies, header-based routing, TLS cert delegation, and more.
Like other ingress controllers and Software-Defined Networking (SDN) solutions, Contour is composed of a control plane and a data plane. The control plane is a Kubernetes controller (“contour”) that watches various resources defined in the Kubernetes API, such as the Ingress and HTTPProxy resources. The data plane is a collection of Envoy proxies that use contour as their management server. The following diagram shows a high-level overview of a typical Contour’s deployment.
When Envoy starts up, it connects to contour and opens a persistent gRPC stream. Using this stream, contour configures Envoy according to the Ingress and HTTPProxy resources defined in the Kubernetes API. As these resources change, contour sends updates to Envoy to reflect the latest configuration. This API-driven configuration capability makes Envoy (and thus the Contour ingress controller) an excellent fit for an environment as dynamic as Kubernetes. The configuration is streamed as soon as it changes, and no restarts are required for Envoy to start using the new configuration.
Shutdown manager
The shutdown manager is an ancillary component that enables the graceful shutdown of Envoy. Its goal is to reduce the number of dropped connections or requests during pod lifecycle events, such as an update.
The shutdown manager is a sidecar that runs alongside the Envoy container. It
exposes an HTTP endpoint that accepts GET requests on /shutdown
. This endpoint
is wired up as the preStop hook in the Envoy container.
When the Kubelet needs to terminate an Envoy pod, it sends a GET request to the shutdown manager, according to the preStop hook configuration. The shutdown manager, in turn, tells Envoy to drain existing connections. It also tells Envoy to fail its readiness check, which prevents upstream load balancers from establishing new connections. The shutdown manager then blocks and keeps the pod running until Envoy drains all the connections, or until the shutdown grace period is reached. To determine whether all connections have been drained, the shutdown manager polls Envoy’s metrics endpoint and looks at the active connections metrics.
Ingress Patterns
Contour supports different patterns to expose applications to requests from outside of the cluster.
HTTP proxying
Exposing applications over HTTP is the most basic pattern. Clients send an HTTP request that is routed to Envoy. Once there, Envoy inspects the HTTP request and routes it to a backend pod according to the Ingress or HTTPProxy configuration.
Given the following HTTPProxy resource, Envoy will route requests to the app1
Service when the request has a Host header of app1.example.com
.
apiVersion: projectcontour.io/v1
kind: HTTPProxy
metadata:
name: app1
spec:
virtualhost:
fqdn: app1.example.com
routes:
- conditions:
- prefix: /
services:
- name: app1
port: 80
The following diagrams shows the flow of the request:
Exposing applications with TLS (HTTPS)
Contour supports exposing applications over HTTPS. To make routing decisions according to the request, Envoy needs to decrypt the incoming TLS connection. That is, Envoy terminates the TLS connection and then routes the request to the backend server over an unencrypted connection.
Building on the previous example, the following configuration tells Envoy to
expose app1
over HTTPS using the certificate and private key contained in the
tls-cert
Secret.
apiVersion: projectcontour.io/v1
kind: HTTPProxy
metadata:
name: app1
spec:
virtualhost:
fqdn: app1.example.com
tls:
secretName: tls-cert
routes:
- conditions:
- prefix: /
services:
- name: app1
port: 80
The following diagram shows the request flow:
When TLS is enabled, Envoy redirects HTTP clients to the HTTPS endpoint. The
redirect is enabled by default when using TLS, but it can be disabled on
specific routes by setting permitInsecure: true
. The following diagram shows
the redirect to the secure endpoint:
TLS connection to an HTTP backend
As mentioned above, Envoy establishes an unencrypted connection to the backend
service when TLS is enabled. Envoy can, however, create a secure connection when
necessary. If the backend exposes a secure endpoint and expects a TLS
connection, you can set the protocol field to tls
in the route configuration.
The following sample HTTPProxy resource sets the protocol
field of the app1
service to tls
:
apiVersion: projectcontour.io/v1
kind: HTTPProxy
metadata:
name: app1
spec:
virtualhost:
fqdn: app1.example.com
tls:
secretName: tls-cert
routes:
- conditions:
- prefix: /
services:
- name: app1
port: 443
protocol: tls
The following diagram shows the connections given the above configuration:
By default, Envoy does not validate the certificate served by the backend.
To enable validation, you must specify a caSecret
and subjectName
in the
HTTPProxy configuration:
apiVersion: projectcontour.io/v1
kind: HTTPProxy
metadata:
name: app1
spec:
virtualhost:
fqdn: app1.example.com
tls:
secretName: tls-cert
routes:
- conditions:
- prefix: /
services:
- name: app1
port: 443
protocol: tls
validation:
caSecret: ca-cert
subjectName: app1.example.com
Exposing TCP services
In addition to HTTP services, Contour can also expose TCP services through Envoy. The only requirement is that the incoming TCP connection is encrypted with TLS and that the client indicates the destination hostname using Server Name Indication (SNI). Envoy needs this indication to route the connection to the appropriate backend.
TCP proxying is configured using the tcpproxy
field of the HTTPProxy custom
resource, as in the following example:
apiVersion: projectcontour.io/v1
kind: HTTPProxy
metadata:
name: tcp-svc
spec:
virtualhost:
fqdn: tcp-app.example.com
tls:
secretName: tls-secret
tcpproxy:
services:
- name: tcp-app
port: 8080
With the above configuration, Envoy first inspects the SNI extension to determine the destination server. Once identified, it terminates the TLS connection and forwards the TCP traffic over an unencrypted connection.
TLS passthrough
If the backend TCP service needs to handle the TLS connection, you can enable TLS passthrough. In this mode, Envoy inspects the SNI extension to determine the backend service but does not terminate the TLS connection. Instead, it forwards the TLS connection to the backend service.
To enable TLS passthrough, set tls.passthrough = true
, as in the following
HTTPProxy example:
apiVersion: projectcontour.io/v1
kind: HTTPProxy
metadata:
name: tcp-svc
spec:
virtualhost:
fqdn: tcp-app.example.com
tls:
passthrough: true
tcpproxy:
services:
- name: tcp-app
port: 8080
Deployment architecture
You can deploy Contour onto a Kubernetes cluster in different ways. Because Envoy and contour talk to each other over a gRPC connection, you can deploy them as separate pods. Alternatively, you can deploy Envoy with contour as a sidecar. These deployment models are discussed below.
Split deployment
In this model, you deploy contour and Envoy separately, contour as a Deployment and Envoy as a DaemonSet. (Envoy can also be managed by a Deployment. More on this below.) The contour deployment runs two or more replicas to ensure high-availability of the control plane. The contour replicas are accessible through a ClusterIP Service. Envoy uses this Service to connect to contour and initiate the gRPC stream to get the routing configuration. The following diagram shows the control plane architecture of the split deployment.
The main benefits of the split deployment model are scalability and efficiency. Because contour and Envoy are deployed separately, you can scale the data plane independently of the control plane. That is, you can horizontally scale the Envoy pods to meet the traffic demands of your applications without increasing the number of contour pods. By running the minimal amount of contour pods necessary, you save on compute resources while also reducing the load on the Kubernetes API server itself.
As mentioned above, the split deployment model can be more scalable and efficient than the same-pod deployment model. There is a tradeoff involved, however, in that the split deployment model is more complex. Given that contour and Envoy run as separate pods, (and thus live in different network namespaces), they need to communicate over the pod network.
The interaction between contour and Envoy exposes an attack surface that you must mitigate, given that contour serves sensitive information such as TLS secrets. These secrets must only be available to trusted Envoy clients and no other workloads in the cluster. In other words, contour needs to authenticate clients, and it does so using mutual TLS. In the split deployment model, contour uses a serving certificate to expose an HTTPS endpoint, and Envoy uses a client certificate to authenticate with contour. Having to manage these certificates over time increases the complexity of the split deployment architecture.
Sidecar deployment
The sidecar deployment architecture co-locates contour and Envoy in the same pod (the “Contour pod”). This architecture is similar to other ingress controllers, such as the NGINX ingress controller. Multiple replicas of the Contour pod run in the cluster and are managed by a Kubernetes Deployment or DaemonSet.
Because Envoy and contour are in the same pod, they can talk to each other over localhost. This removes the need for mutual TLS between Envoy and contour, which alleviates the operational burden of managing certificates. The following diagram shows the sidecar deployment, focusing on the interaction between contour and Envoy.
The main drawback of the sidecar deployment is an increase in load imposed on the Kubernetes API server. Instead of running a couple of contour pods to serve the configuration to n Envoy servers, you now have n contour processes connecting to and watching the API server. Unless you plan to run a limited number of Contour pods (by using dedicated ingress nodes, for example), you should avoid this deployment model.
Envoy deployment considerations
Dedicated ingress nodes
The ingress tier is a critical component of an application platform. It is shared across different applications, and it is in the data path between an application and its customers. Due to the importance of the ingress data path, dedicating cluster nodes to run Envoy is beneficial.
The primary benefit is resource isolation. Even though Kubernetes has support for setting up resource requests and limits, getting those parameters right can be challenging. Furthermore, Kubernetes does not support resource isolation for network I/O or file descriptors. When running Envoy by itself, you prevent any potential noisy neighbor problems that could impact the performance of the ingress data plane. You also don’t have to worry about Envoy getting evicted by other pending pods when nodes are under resource contention.
Another reason for running Envoy on dedicated nodes is compliance. Most enterprise environments have predefined firewall rules that can be incompatible with ingress requirements. If you are working in such an environment, dedicated ingress nodes can help, as it is easier to get an exception for a subset of nodes instead of all of them.
Finally, limiting the number of nodes that run Envoy is helpful in bare-metal or on-premises installations. In these deployments, the ingress tier is fronted by a hardware load balancer that, in most cases, is manually configured to route traffic to the ingress nodes. Having a small number of ingress nodes eases the configuration and management of these external load balancers.
Overall, dedicating nodes for ingress purposes can help with performance, compliance, and managing external load balancers. With that said, ingress node failures must be accounted for, as Envoy will not run on nodes other than those reserved for ingress. In the ideal case, failed nodes are automatically replaced with new nodes that can continue handling ingress traffic.
Envoy and host networking
To optimize the ingress traffic path, you can bind Envoy to the underlying host’s network. By doing so, incoming requests bypass the Kubernetes Service fabric (usually iptables rules) and reach Envoy directly.
While running Envoy directly on the host’s network can increase performance, there are important caveats to keep in mind:
-
The Envoy process is no longer isolated in its own network namespace. Therefore, the node’s network interfaces and network services running on the node are accessible to Envoy.
-
The shutdown manager sidecar binds to
<IP_ADDRESS>:8090
, making it available on all the host’s network interfaces when host networking is enabled. Ensure that there are firewall rules in place that block requests to port 8090. Otherwise, the shutdown manager endpoint can be exploited to bring down the ingress data plane. -
Envoy exposes Prometheus metrics on
<IP_ADDRESS>:8002
. These metrics will be accessible on the node’s port8002
.
If you want to enable host networking in the Envoy pods, you must set the pod’s
hostNetwork
field to true
and set the dnsPolicy
field to
ClusterFirstWithHostNet
. The following manifest show the two modifications in
the Envoy pod specification:
---
apiVersion: apps/v1
kind: DaemonSet
metadata:
labels:
app: envoy
name: envoy
namespace: projectcontour
spec:
# ...
# removed for brevity
# ...
spec:
hostNetwork: true # Enable hostNetwork
dnsPolicy: ClusterFirstWithHostNet # Update dns policy
containers:
- args:
- -c
- /config/envoy.json
- --service-cluster $(CONTOUR_NAMESPACE)
- --service-node $(ENVOY_POD_NAME)
- --log-level info
command:
- envoy
image: docker.io/envoyproxy/envoy:v1.15.0
imagePullPolicy: IfNotPresent
name: envoy
# ...
# removed for brevity
# ...
Avoiding unnecessary network hops
When using a Service to expose Envoy (such as a NodePort
or a LoadBalancer
Service), set the externalTrafficPolicy
to Local
. The Local
policy ensures
that incoming traffic is routed to the Envoy instance running on the local node
instead of adding an extra hop to another node.
DaemonSet versus Deployment
In the split deployment model, you can deploy Envoy as a DaemonSet or a Deployment. In most cases, a DaemonSet is preferred because Envoy can efficiently use the underlying node’s CPU cores. Thus, there is no real benefit to running multiple instances of Envoy on the same node.
Using a Deployment for Envoy is suitable when you are leveraging the auto-scaling capabilities of Kubernetes. If you are working in a dynamic environment, such as a cloud provider, you can auto-scale the Envoy deployment according to its utilization using a Horizontal Pod Autoscaler. With that said, you must set pod anti-affinity rules to spread the Envoy pods across different nodes.
If you are deploying Contour under the sidecar model and are not using dedicated ingress nodes, avoid using a DaemonSet. The problem with using a DaemonSet is that a controller runs on every node, which results in unnecessary load on the Kubernetes API server. This overhead on the API server might not be notable in small clusters but can become evident as you grow your clusters.
High Availability
Contour supports running multiple replicas of the control plane component and the data plane component.
On the controller side, contour performs leader election. Once elected, the leader starts serving configuration to the Envoy proxies. The leader election mechanism prevents contour replicas from stepping on each other, mainly when writing status updates back to the API server.
When it comes to the data plane, you can run as many Envoy proxies as needed by the applications running on the platform. The number of Envoy replicas is typically dictated by the size of the nodes where Envoy is running and the amount of traffic you need to handle. At a minimum, you should run two instances to tolerate failure.
Handling DNS records
Applications running in the cluster share the ingress data plane, and thus share a single entry point into the cluster. As with all ingress controllers, one of Contour’s primary responsibilities is to disambiguate ingress traffic according to the configuration defined in the Ingress and HttpProxy resources.
A typical pattern used to expose multiple applications over the same ingress
point is to slice up a domain and assign subdomains to different applications.
When the incoming traffic reaches Envoy, it inspects the Host header of the
request and routes it according to the subdomain. For example, traffic with the
Host header set to appA.cloud.example.com
is forwarded to application A, while
a request with the Host header equal to appB.cloud.example.com
is forwarded to
application B. To implement this pattern, however, external clients must be able
to resolve the domain names configured in the Ingress and HttpProxy resources.
Wildcard DNS
Using a wildcard DNS is a viable approach to implement subdomain-based routing.
If you are looking to enable this use case, consider using a wildcard DNS record
pointing to the load balancer in front of the Envoy proxies. For example, to
support the scenario mentioned above, you would define a wildcard DNS entry for
*.cloud.example.com
.
External-DNS controller
The external-dns controller is another approach for handling DNS records for ingress purposes. The external-dns controller integrates Kubernetes with an upstream DNS provider. The controller continuously creates and updates DNS records according to the configuration defined in Ingress resources.
If you are using a DNS provider that is compatible with external-dns, consider using this controller to enable DNS resolution of services exposed via Ingress. Keep in mind, however, that external-dns is not yet compatible with Contour’s HTTPProxy custom resource. There is an open pull request in the core-dns project that adds support for it.
The external-dns controller uses the Ingress resource’s status field to
determine the DNS record’s target IP address. If you are running Contour without
a LoadBalancer service, you must set the ingress-status-address
field in
Contour’s configuration file. Otherwise, Contour does not set the
status.loadBalancer.ingress
field of Ingress resources, which prevents the
external-dns controller from working.
Certificate management for TLS
Contour can route traffic to HTTPS and TLS-enabled TCP services. Contour uses the Kubernetes Secret API to access the certificates it needs to serve these applications. There various considerations to make when exposing secure services using Contour, and we discuss them in the following sections.
Wildcard certificates and TLS certificate delegation
Ingress and HTTPProxy resources that route to a TLS-enabled backend must reference a Kubernetes Secret. This Secret contains the private key and serving certificate used to serve traffic over TLS.
Using a wildcard certificate to support a domain and its subdomains is a common practice. In such scenarios, the wildcard certificate is typically owned and managed by the platform operator. Because multiple applications use the wildcard certificate, the cert needs to live in a Secret across various namespaces. This is problematic, as the Secret is readily available to application developers that should otherwise not have read access to this Secret.
Contour addresses this problem with TLS certificate delegation. Instead of creating the wildcard certificate Secret in all namespaces, you store the Secret in a namespace owned by the platform team. Once the Secret is in place, you can allow developers to reference that single Secret from their namespaces.
If you are using wildcard certificates, consider using TLS certificate delegation to protect the certs and minimize management overhead. See the TLS certificate delegation documentation for more details about this feature.
Cert-manager integration
Cert-manager is a Kubernetes controller that automates the issuance and management of certificates. You can use cert-manager to issue certificates for services if you are using the Ingress API. Unfortunately, however, the HTTPProxy API is not yet directly compatible with cert-manager.
If you are planning to use cert-manager with the HTTPProxy API, you must follow a workaround. The workaround involves setting up a dummy Ingress resource that cert-manager uses to issue the certificate. See the Contour and cert-manager guide for additional information on the workaround.
Multi-tenancy considerations
Preventing ingress configuration collisions
Multi-tenant platforms are prone to configuration clashes at the ingress layer.
The primary example is different teams trying to use the same FQDN to expose
their applications. Consider a scenario where an application team exposes their
app at app.example.com
. If another team creates an ingress configuration that
uses the same URL, they will create a collision. The same issue can arise with
path-based routing (for example, different teams trying to use /app
at
example.com
).
Root HTTPProxy resources and Inclusion
Contour addresses this issue with root HTTPProxy resources. Root HTTPProxy
resources define the top-level configuration for a specific ingress point, such
as the FQDN and primary paths. As a platform operator, you configure Contour
only to
accept
root HTTPProxy resources from namespaces under your control. You set this
configuration using the --root-namespaces
flag of the contour binary. Then,
when you create the root HTTPProxy resources, you include HTTPProxy resources
from other namespaces.
Inclusion
enables you to control the root HTTPProxy configuration while delegating the
application-specific configuration to the respective application teams (or
namespaces).
The following example shows a sample scenario for a micro-services application.
Assume the --root-namespaces
flag is set to httpproxy-roots
. The root
HTTPProxy sets the FQDN to example.com
. It then assigns the /auth
path to
the authentication team, the /reservations
path to the reservations team, and
the /profile
path to the user profile team. Each team gets to configure
ingress routing in their namespaces, but they can only configure their subpath
of example.com
.
# Example HTTPProxy owned by the platform team.
apiVersion: projectcontour.io/v1
kind: HTTPProxy
metadata:
name: example-com-root
namespace: httpproxy-roots # Roots can only exist in this namespace
spec:
virtualhost:
fqdn: example.com
includes:
- name: auth
namespace: authentication
conditions:
- prefix: /auth # The authentication team can use example.com/auth
- name: reservations
namespace: reservations
conditions:
- prefix: /reservations # The reservations team can use example.com/reservations
- name: user-profile
namespace: user-profile
conditions:
- prefix: /profile # The user profile team can use example.com/profile
---
# Example HTTPProxy created by the reservations team in their namespace.
apiVersion: projectcontour.io/v1
kind: HTTPProxy
metadata:
name: reservations
namespace: reservations
spec: # Notice the `virtualhost` stanza is missing, as this is not a root HTTPProxy
routes:
- services: # matches /reservations
- name: reservations-home
port: 80
- conditions:
- prefix: /cancel # matches /reservations/cancel
services:
- name: cancellation-svc
port: 80
Admission Control
Admission control is another mechanism to prevent ingress configuration collisions and is the most common solution implemented with other ingress controllers. When it comes to ingress, there are different admission strategies you can apply. A straightforward approach is to reject any Ingress resource (or HTTPProxy resource, for that matter) that conflicts with resources that already exist in the cluster. The OPA Gatekeeper project, for example, has an example implementation of this strategy in their library. More advanced admission strategies are also possible. For example, an admission controller can reach out to another system to determine whether an application team can use a given FQDN.
Ingress Isolation
In some scenarios, different tenants or applications need a separate (or
dedicated) ingress path. This could be for performance, regulatory, or other
reasons. In such cases, you can run multiple Contour ingress controllers. Each
controller watches a specific set of Ingress/HTTPProxy resources, as determined
by the ingress class. Use the --ingress-class-name
flag on the contour
binary to set the ingress class name.
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: contour
name: contour
namespace: projectcontour
spec:
replicas: 2
# ...
# removed for brevity
# ...
containers:
- name: contour
args:
- serve
- --incluster
- --xds-address=<IP_ADDRESS>
- --xds-port=8001
- --envoy-service-http-port=80
- --envoy-service-https-port=443
- --contour-cafile=/certs/ca.crt
- --contour-cert-file=/certs/tls.crt
- --contour-key-file=/certs/tls.key
- --config-path=/config/contour.yaml
- --ingress-class-name=my-ingress-class # Set the ingress class here
# ...
# removed for brevity
# ...
To target a specific ingress class in an Ingress or HTTPProxy resource,
developers can set the kubernetes.io/ingress.class
annotation:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: my-ingress
annotations:
kubernetes.io/ingress.class: "my-ingress-class"
spec:
rules:
- host: my-svc.example.com
http:
paths:
- path: /
backend:
serviceName: my-svc
servicePort: 80


The bank account details below are being reviewed. We will contact you if we need any further information.
Your bank details have been approved.
Your details have been verified and can be used for this project.
We need your organisation's bank details to pay out your funds.
ACME Limited 02423435
The bank account must belong to your organisation.
This is the billing address connected to this bank account. This is not the address of the bank.
An address line


Here is a simple example of state-based transitions in action. Try hovering over the blue square.
Here is the source for this example.
The central idea behind state-based transitions is to allow specification of animations between defined states of DOM elements. This information is gathered together in an "@transition-graph" at-rule, which uses a selector to determine when the graph should be applied.
In this case, we're tracking the state of the width property ("over: width"), and looking for transitions from 100px to 560px ("@edge(100px, 560px)") and vice-versa ("@edge(560px, 100px)").
Each transition contains an "animation:" specification. Here we use a transition function, also defined in this extension proposal, which generates an anonymous keyframes set from the from- state of the transition to the to- state of the transition for the provided properties. It's also possible to use named keyframes sets, as we'll see in later examples.


A channel to discuss trading. For useful links and more info click the pinned messages to the right.
100 messages
Before 05-Dec-19 12:00 AM
Hollowman900030-Mar-19 08:51 PM
These exchanges are going full Joe Biden
1
Too touchy feely for me
1
ComputerGenie 👴👴👴30-Mar-19 08:52 PM
and here I thought you right-wingers liked that sort of thing
Hollowman900030-Mar-19 08:52 PM
My chickens have started a #metoo movement
1
ComputerGenie 👴👴👴30-Mar-19 08:52 PM
tmi
Thanos30-Mar-19 08:53 PM
yeah! KMD is a nice project!
will there be any official announcement here or at blog (https://blog.komodoplatform.com/) when it will be ready?
ComputerGenie 👴👴👴30-Mar-19 08:53 PM
Hollowman9000 is now known as BroOvershare(edited)
@Thanos You can be sure that it'll be broadcast as far and wide as humanly possible
2
Sdunbar30-Mar-19 09:04 PM
mm2 testing just started no?
a ways out im guessing
richardt30-Mar-19 09:42 PM
Anyone looking to buy SuperNET asset in bulk? DM me if interested.
  This will take some time to become support and will make price move slow until it gains territory.
 But VBK gonna dump hard
A KYC-only IEO, what will they think of next
it may have quite a pump before it dumps, tho. Depends on how impatient FPGA miners are
a $3000 FPGA miner can get $17/day profit on VBK right now, and a lot of miners want to hit that glorious breakeven
so it will be FPGA miners dumping against the pumpers
siu - Chainmakers01-Apr-19 12:41 PM
who is selling the coins in the IEO then? that is the real dumper(edited)
dukeleto01-Apr-19 12:41 PM
you can KYC your coins, or you can mine them with GPU or FPGA
lots of investors bought at 5 cents
miners gonna mine, and miners gonna dump
that calculator assumes the opening price of 10 cents, take with a large grain of salt. But many miners take calculators as the word of Satoshi and will mine a bunch of VBK and try to unload it


404
Oops! Page not found.
We could not find the page you were looking for. Meanwhile, you may return to dashboard or try using the search form.
We could not find the page you were looking for. Meanwhile, you may return to dashboard or try using the search form.


@@include('./head.html')
@@include('./header.html')Inala places a strong emphasis on product technology, and it has continued to incorporate various proprietary performance technologies into its products, focusing on cushioning, stability, and lightweight features in shoes and on comfort and moisture management in apparel products. As part of the firm's commitment to offer leading footwear technologies, employees working in its state-of-the-art product development facility research, design, and develop technologically advanced athletic and fitness footwear. Inala has product development centers in China, Taiwan, and Indonesia to more closely integrate development activities with production.
Inala's most significant shoe technologies are TrailStep, Boost, and SnowStep. TrailStep technology provides superb support for off-road runners and utilizes a heel-to-forefoot, active-motion system that ensures smooth foot plants and good traction. Originally introduced in 1975, Inala has enhanced and expanded this technology by developing multiple versions of TrailStep to meet the performance demands of various activities, taking into account performance attributes, aesthetics, and price among the various versions. SnowStep, introduced in 2006, is the newest incarnation of TrailStep technology, utilizing a newly developed rubber compound to give excellent traction on snow and ice, while providing new, lightweight insulation for warmth during cold weather training.
Inala has incorporated advanced technologies into certain apparel products with the Sweatless moisture-management system. This moisture-wicking technology helps keep wearers dry, which facilitates regulation of body temperature. Inala's Sweatless Apparel product line was introduced three years ago to incorporate this technology. While intended for runners, the product line has drawn significant interest from college football, basketball, and soccer programs, as well as from emergency responders including fire and police departments.
At Inala, we maintain a comprehensive staff of customer service representatives at both the wholesale and retail level who are dedicated to making sure that our resellers and customers understand the features of our footwear and are happy with their purchases.


Embarassingly none.
The testing that was done was to process the 2010 Edition, and then feed this into Lasalletech FIX Explorer 2.2.2, to generate schemas and then translate some messages between tag=value and this FIXML variant, using FixConv.


- Delivery To
- {{ outwardentry.deliveryTo }}
- Delivery Chalan No
- {{ outwardentry.deliveryChalanNo }}
- Date
- {{ outwardentry.date | date }}
- Receiver
- {{ outwardentry.receiver }}
- S No
- {{ outwardentry.sNo }}
- Name Of The Item
- {{ outwardentry.nameOfTheItem }}
- U Om
- {{ outwardentry.uOm }}
- Issued
- {{ outwardentry.issued }}
- Job No
- {{ outwardentry.jobNo }}


| Interface | Description |
|---|---|
| Assertions.CrashReporter | |
| Logging.CrashReporter | |
| ThreadUtils.Func1Unsafe<P,R> |
| Class | Description |
|---|---|
| Algorithms |
Created by dekalo on 22.02.17.
|
| Algorithms.IsOrderedSubsetResult | |
| Assertions |
Main purpose is to add various assertions in IS_PRODUCTION mode.
|
| Logging |
Main purpose, switch off logging in production.
|
| MathUtils |
Created by dekalo on 23.11.16.
|
| MediaUtils |
Created by dekalo on 28.11.16.
|
| MimeTypeUtils |
Created by dekalo on 14.10.16.
|
| PrefsManager | |
| StringUtils |
Created by Andrew Khloponin
|
| Sugar |
Created by dekalo on 27.01.17.
|
| ThreadUtils |
Created by dekalo on 12.10.15.
|
| UIUtils |
Created by dekalo on 12.10.16.
|
| UIUtils.SimpleAnimatorListener | |
| Utils |
Created by dekalo on 13.10.16.
|
| VersionUtils |
Created by anton on 2/1/17.
|
| Exception | Description |
|---|---|
| MediaUtils.CanNotCreateMediaFile |


Preparation time
over 2 hours
Cooking time
10 to 30 mins
Serves
Makes 10
A naughty treat that's unbeatable when eaten warm and covered in sugar.
For the dough, place all ingredients into a large bowl holding back a quarter of the water.
Stir with your hands until a dough is formed.
Slowly add the remaining water and knead the dough in the bowl for four minutes. (Alternatively, you could mix with a stand mixer fitted with a dough hook).
Tip dough onto a lightly floured surface and knead well for 10 minutes, until the dough is smooth and elastic.
Place the dough into a clean bowl, cover with a damp tea towel and leave to rise for an hour.
Tip the dough out onto a very lightly floured surface, and knock it back by kneading it a few times.
Divide the dough into 10 equal portions and shape each portion into a ball.
Place all balls onto a floured baking tray and allow to rise for an hour.

Lower each doughnut into the fryer, cooking each side for about five minutes or until golden brown. Remove the doughnuts from the oil with a slotted spoon and immediately roll in caster sugar so that the hot fat makes the sugar stick to the sides.
Set aside and leave to cool.
When completely cool, using a small, sharp, knife make a cut into the side of the doughnut, reaching to the centre.
Spoon some smooth or sieved strawberry jam into a piping bag, or piping syringe.
Pipe, or syringe, the jam generously inside.


>>> g["user"].number_of_nodes()
3
return self._graph.number_of_nodes(self._ntypes_invmap[ntype])
def _number_of_src_nodes(self):
Return number of source nodes (only used in scheduler)
>>> g["user"].number_of_nodes()
3
return self._graph.number_of_nodes(self.get_ntype_id(ntype))
def number_of_edges(self, etype=None):
Return the number of edges of the given type in the heterograph.


Verónica Ramírez, used to work for 3 families, two of them left the City. She works now one day per week in a penthouse at the Financial District where she gets pay $150 per day. Verónica is currently earning $600 per month now. She haven't be able to pay rent since April and has not recibe any federal or state aid. In order to get to work she has to spend $5.5 in a metrocard and she’s spending almost $20 weekly in gloves, masks, and sanitiazer. She is one of the 2.2 million people in the country who work as domestic workers in private homes.