Paging NikLP: Deciding between CCK Fields and Taxonomy
16 Oct 2008I'm trying to decide between using a CCK field or taxonomy to classify content on a new site. We plan to have various node types (video, podcasts, forum topics, news articles, courses, etc.) and want to be able to dynamically pull together all nodes with the same tag in a page. There will be dynamic pages for both universities and topics. The topics will have a hierarchy. For example:
Campus Operations (located at www.mysite.com/topic/campus-operations) — Climate (located at www.mysite.com/topic/campus-operations/climate) ——Greenhouse Gas Inventories (located at www.mysite.com/topic/campus-operations/climate/greenhouse-gas-inventories)
As detailed above, Campus Operations, Climate, and Greenhouse Gas Inventories should each have their own page. I would also be able to see that Greenhouse Gas Inventories has the parent page Climate and that its parent is Campus Operations. Here’s a very rough example topic page and a university one. I would also like to be able to associate one page with multiple parents. For example, Greenhouse Gas Inventories may also have a parent page of Campus Inventories. Additionally, it should be easy to generate a dynamic listing of topics in their hierarchy with links to the topic pages.
If associating topic pages with more than one parent page is too difficult, then changing parent topics should at least be easy to change. For example, I might want to change the tag Greenhouse Gas Inventories to GHG Inventories and then have all of the content with the old tag now be tagged with the new term. Using CCK fields, I’ve had problems with this in the past.
If I use a taxonomy, I'll probably wind up with at least 4 levels.
Topic A —Topic AB ——-Topic ABC ———-Topic ABCD
It needs to be easy for administrators to add new topics sub-topics. We may also want to let users tag content. However, I can imagine that a potential user may take one look at our complex taxonomy and run for the hills. I understand that one option for presenting taxonomy to users may be to use something like Content Taxonomy and make the interface simpler.
To add even more complexity, I need to be able to make some taxonomy terms only visible to specific roles.
In summary, here are my requirements for topics: - Classify many node types in a hierarchical list with a minimum of four levels - Dynamically generate pages for some but not all terms (most likely using Views). The pages should have a specific layout. - It should be easy for users to tag new content - Administrators need to be able to edit the terms without causing problems later on - Some dynamically-generated pages should only be visible to users with specific roles
And there’s more…
In addition to a topic taxonomy, I will need to build a taxonomy (or CCK field) for universities. Ideally, I would be able to easily pull all universities in California with greenhouse gas inventories. I’m thinking that the best approach for this will be to have a either a cck nodereference field for universities where each university has a node or a taxonomy of U.S. universities broken out by location. If I went with a nodereference field, then the university nodes would have to have a location cck field.
The goal would be to easily generate links like this: www.mysite.com/schools/california/campus-operations/climate/greenhouse-gas-inventory
I think that this can be achieved by views, but I don’t want to overlook any ways of structuring the data that will make for easier querying later on.
Here are a few articles that have added to my confusion: http://www.darcynorman.net/2008/04/24/complex-hierarchical-taxonomies-in-drupal/ http://www.johnandcailin.com/blog/cailin/drupal-cck-vs-taxonomy
It seems like I have a few options:
1) Create Multiple CCK fields or CCK fields for each level of my topic hierarchy and also have a cck nodereference field for universities.
Advantages: - CCK fields can be hidden or shown for different node types, which is easier for end users to understand.
Disadvantages: - Even if I use hierarchical select CCK fields, CCK doesn’t have the built in advantages of taxonomy. Displaying breadcrumbs won’t be as easy, there is not a set of API functions ready to be called.
2) Have a taxonomy for topics and also use a taxonomy for universities broken down by location.
Advantages: - Taxonomies can easily handle the 4-level hierarchy
Disadvantages: - Commits to using taxonomy/term link structure (not sure about this) - Taxonomies may seem overly complex to end users - Long-term it might not make sense to classify universities by location. Some schools have multiple location.
3) Have a taxonomy for topics and use a cck nodereference field for universities.
Advantages: - Taxonomies can easily handle the 4-level hierarchy
Disadvantages: - Requires creating a node for each university. Some of these nodes will have very little data. - Taxonomies may seem overly complex to end users
4) Have a taxonomy for topics, a cck field for universities, and a field for school location
Advantages: - Lets me pull information by location that doesn’t necessarily relate to a school
Disadvantages - It could be cumbersome to associate universities and locations later on - Taxonomies may seem overly complex to end users
Conclusion
I think that it makes the most sense to use a taxonomy for the topics and a nodereference field for universities. In the university node, there will be a field for location. This will require creating approximately 4,000 university nodes, which may lead to performance problems later on.


@(params: Map[String, Any]) @uk.gov.hmrc.hmrcemailrenderer.templates.helpers.html.template_main(params, "Report received on") {
@params("received_at")
Dear @params("name")
You can use this digital signature as a receipt for the country-by-country report you've sent.
@params("hash")
We'll check the information in the report and contact you if there are any issues.
From HMRC Country-by-Country Reporting
}


Generated by gist-compile at 2015-02-22 19:29:52
System Events
- Authors: Clay McLeod
- Description: An example of how to send keystrokes to a window
Data Science
- Authors: Clay McLeod
- Description: This script mines JSON data from the Reddit front page and stores it as a CSV file for analysis.
General
- Authors: Clay McLeod
- Description: Shows you how to find all instances of a regular expression in a string
Interesting Problems
- Authors: Clay McLeod
- Description: Python edit distance problem
- Authors: Clay McLeod
- Description: Finds the max subarray of an array of integers, in O(nlogn) time
- Authors: Clay McLeod
- Description: Solving the classic sorting of nuts and bolts problem.
Data Science
- Authors: Clay McLeod
- Description: Mines data every minute concerning how many people are logged into a certain subreddit.
General
- Authors: Clay McLeod
- Description: A brief overview of regular expressions with Swift
UI
- Authors: Clay McLeod
- Description: How to handle tap gestures on a view controller.
- Authors: Clay McLeod
- Description: A brief overview of UIDynamics in iOS 8
Variables
- Authors: Clay McLeod
- Description: An example of how to create a variable using lazy initialization in the Swift programming language.


Test your reactions!
Click on the boxes and circles as quickly as you can!
You have not attempted yet.


Hudson Yards fire draws huge FDNY response on West Side
WEST SIDE, Manhattan -- The FDNY responded to a fire at Hudson Yards early Friday morning.
There was a large response with many units on the scene around 6 a.m.
10th Avenue near 33rd Street was shut down to accommodate the firefighting activity.
The fire was reported on the fourth floor of 20 Hudson Yards.
The FDNY reported that they quickly extinguished the fire and were continuing to check the building.


Toggle navigation
nativejson-benchmark
Benchmark
Section
Developed by
Milo Yip
<EMAIL_ADDRESS>Source CSV
Type,Library,Filename,Time (ms),Memory (byte),MemoryPeak (byte),AllocCount,FileSize (byte) 1. Parse,ArduinoJson (C++),canada.json,695.314000,7032896,7032896,19,0 1. Parse,ArduinoJson (C++),citm_catalog.json,7.418000,3641408,3641408,17,0 1. Parse,ArduinoJson (C++),twitter.json,3.973000,1540160,1540160,16,0 2. Stringify,ArduinoJson (C++),canada.json,206.021000,2252816,6447120,20,0 2. Stringify,ArduinoJson (C++),citm_catalog.json,22.405000,499728,1024016,17,0 2. Stringify,ArduinoJson (C++),twitter.json,19.574000,499728,1024016,17,0 3. Prettify,ArduinoJson (C++),canada.json,377.361000,5599248,13987856,21,0 3. Prettify,ArduinoJson (C++),citm_catalog.json,54.987000,2101264,4198416,19,0 3. Prettify,ArduinoJson (C++),twitter.json,31.106000,647184,1695760,18,0 4. Statistics,ArduinoJson (C++),canada.json,0.775000,0,0,0,0 4. Statistics,ArduinoJson (C++),citm_catalog.json,0.520000,0,0,0,0 4. Statistics,ArduinoJson (C++),twitter.json,0.375000,0,0,0,0 7. Code size,ArduinoJson (C++),jsonstat,0,0,0,0,40944 1. Parse,CAJUN (C++),canada.json,1980.723000,234160112,495050688,3837856,0 1. Parse,CAJUN (C++),citm_catalog.json,282.983000,8918208,29031504,641280,0 1. Parse,CAJUN (C++),twitter.json,102.622000,2309616,8642048,249868,0 2. Stringify,CAJUN (C++),canada.json,226.173000,4272144,12660752,22,0 2. Stringify,CAJUN (C++),citm_catalog.json,30.041000,892944,1941520,3784,0 2. Stringify,CAJUN (C++),twitter.json,31.564000,892944,1941520,7244,0 4. Statistics,CAJUN (C++),canada.json,5.998000,0,0,0,0 4. Statistics,CAJUN (C++),citm_catalog.json,0.694000,0,0,0,0 4. Statistics,CAJUN (C++),twitter.json,0.262000,0,0,0,0 7. Code size,CAJUN (C++),jsonstat,0,0,0,0,85352 1. Parse,C++ REST SDK (C++11),canada.json,219.190000,3894176,3894208,392464,0 1. Parse,C++ REST SDK (C++11),citm_catalog.json,29.011000,1466064,1466080,73089,0 1. Parse,C++ REST SDK (C++11),twitter.json,13.603000,1135936,1136064,31411,0 2. Stringify,C++ REST SDK (C++11),canada.json,135.226000,2252816,10489872,38,0 2. Stringify,C++ REST SDK (C++11),citm_catalog.json,7.986000,892944,1806352,743,0 2. Stringify,C++ REST SDK (C++11),twitter.json,6.455000,647184,1806352,2620,0 4. Statistics,C++ REST SDK (C++11),canada.json,3.016000,0,32,1,0 4. Statistics,C++ REST SDK (C++11),citm_catalog.json,0.754000,0,64,719,0 4. Statistics,C++ REST SDK (C++11),twitter.json,1.016000,0,464,2594,0 7. Code size,C++ REST SDK (C++11),jsonstat,0,0,0,0,142828 1. Parse,cJSON (C),canada.json,29.384000,8024816,8024816,167192,0 1. Parse,cJSON (C),citm_catalog.json,10.458000,2265312,2265312,64383,0 1. Parse,cJSON (C),twitter.json,6.456000,1193440,1193440,32014,0 2. Stringify,cJSON (C),canada.json,97.122000,2101264,4354384,223241,0 2. Stringify,cJSON (C),citm_catalog.json,27.449000,892944,1589568,87274,0 2. Stringify,cJSON (C),twitter.json,12.707000,892944,1540512,30092,0 3. Prettify,cJSON (C),canada.json,92.982000,2101264,4354400,223241,0 3. Prettify,cJSON (C),citm_catalog.json,29.919000,790544,1742720,87274,0 3. Prettify,cJSON (C),twitter.json,12.924000,790544,1438160,30092,0 4. Statistics,cJSON (C),canada.json,0.971000,0,0,0,0 4. Statistics,cJSON (C),citm_catalog.json,0.410000,0,0,0,0 4. Statistics,cJSON (C),twitter.json,0.311000,0,0,0,0 7. Code size,cJSON (C),jsonstat,0,0,0,0,26684 1. Parse,dropbox/json11 (C++11),canada.json,132.447000,6707056,9025232,337437,0 1. Parse,dropbox/json11 (C++11),citm_catalog.json,28.529000,2620240,4722208,105189,0 1. Parse,dropbox/json11 (C++11),twitter.json,19.569000,1388512,2036224,56661,0 2. Stringify,dropbox/json11 (C++11),canada.json,138.491000,4194320,6295568,19,0 2. Stringify,dropbox/json11 (C++11),citm_catalog.json,8.592000,1048592,1695760,17,0 2. Stringify,dropbox/json11 (C++11),twitter.json,6.256000,647184,913424,16,0 4. Statistics,dropbox/json11 (C++11),canada.json,1.513000,0,0,0,0 4. Statistics,dropbox/json11 (C++11),citm_catalog.json,0.637000,0,0,0,0 4. Statistics,dropbox/json11 (C++11),twitter.json,0.354000,0,0,0,0 7. Code size,dropbox/json11 (C++11),jsonstat,0,0,0,0,75248 1. Parse,mikeando/FastJson (C++),canada.json,24.730000,5448096,7701248,22,0 1. Parse,mikeando/FastJson (C++),citm_catalog.json,9.658000,1962112,4063712,22,0 1. Parse,mikeando/FastJson (C++),twitter.json,4.294000,1183360,1831168,24,0 2. Stringify,mikeando/FastJson (C++),canada.json,131.654000,2252816,2252816,2,0 2. Stringify,mikeando/FastJson (C++),citm_catalog.json,9.562000,647184,647184,2,0 2. Stringify,mikeando/FastJson (C++),twitter.json,3.350000,647184,647184,2,0 4. Statistics,mikeando/FastJson (C++),canada.json,0.884000,0,0,0,0 4. Statistics,mikeando/FastJson (C++),citm_catalog.json,0.362000,0,0,0,0 4. Statistics,mikeando/FastJson (C++),twitter.json,0.215000,0,0,0,0 7. Code size,mikeando/FastJson (C++),jsonstat,0,0,0,0,58292 1. Parse,gason (C++11),canada.json,10.288000,4939808,4939808,658,0 1. Parse,gason (C++11),citm_catalog.json,3.979000,2711584,2711584,151,0 1. Parse,gason (C++11),twitter.json,1.934000,872480,872480,57,0 2. Stringify,gason (C++11),canada.json,59.035000,1298448,3399696,19,0 2. Stringify,gason (C++11),citm_catalog.json,17.490000,647184,1695760,18,0 2. Stringify,gason (C++11),twitter.json,10.364000,483344,1273872,17,0 3. Prettify,gason (C++11),canada.json,136.268000,7319568,15708176,223242,0 3. Prettify,gason (C++11),citm_catalog.json,32.229000,1802256,4055056,49498,0 3. Prettify,gason (C++11),twitter.json,14.565000,770064,1818640,15285,0 4. Statistics,gason (C++11),canada.json,1.039000,0,0,0,0 4. Statistics,gason (C++11),citm_catalog.json,0.489000,0,0,0,0 4. Statistics,gason (C++11),twitter.json,0.338000,0,0,0,0 7. Code size,gason (C++11),jsonstat,0,0,0,0,20272 1. Parse,Jansson (C),canada.json,169.725000,5680288,5680336,224392,0 1. Parse,Jansson (C),citm_catalog.json,48.444000,3077136,3077216,111230,0 1. Parse,Jansson (C),twitter.json,23.297000,1219648,1220192,43822,0 2. Stringify,Jansson (C),canada.json,139.671000,2363408,6557712,21,0 2. Stringify,Jansson (C),citm_catalog.json,9.520000,647184,1695760,19,0 2. Stringify,Jansson (C),twitter.json,5.649000,647184,1171472,18,0 3. Prettify,Jansson (C),canada.json,179.568000,8273936,16924688,22,0 3. Prettify,Jansson (C),citm_catalog.json,15.500000,2252816,4354064,20,0 3. Prettify,Jansson (C),twitter.json,6.940000,770064,1818640,19,0 4. Statistics,Jansson (C),canada.json,1.675000,0,0,0,0 4. Statistics,Jansson (C),citm_catalog.json,1.446000,0,0,0,0 4. Statistics,Jansson (C),twitter.json,0.529000,0,0,0,0 7. Code size,Jansson (C),jsonstat,0,0,0,0,60232 1. Parse,JeayeSON (C++14),canada.json,240.437000,4406688,15112352,499017,0 1. Parse,JeayeSON (C++14),citm_catalog.json,85.775000,2047792,8396112,253298,0 1. Parse,JeayeSON (C++14),twitter.json,44.962000,1262112,4433440,129268,0 2. Stringify,JeayeSON (C++14),canada.json,68.099000,1044496,2093072,20,0 2. Stringify,JeayeSON (C++14),citm_catalog.json,14.973000,647184,1171472,4502,0 2. Stringify,JeayeSON (C++14),twitter.json,11.054000,647184,1171472,10409,0 4. Statistics,JeayeSON (C++14),canada.json,1.189000,0,0,0,0 4. Statistics,JeayeSON (C++14),citm_catalog.json,0.454000,0,0,0,0 4. Statistics,JeayeSON (C++14),twitter.json,0.300000,0,0,0,0 7. Code size,JeayeSON (C++14),jsonstat,0,0,0,0,75764 1. Parse,JsonBox (C++),canada.json,592.513000,4334304,9059312,974652,0 1. Parse,JsonBox (C++),citm_catalog.json,130.706000,2032976,6538624,261150,0 1. Parse,JsonBox (C++),twitter.json,62.815000,1231040,2895808,102061,0 2. Stringify,JsonBox (C++),canada.json,401.399000,2252816,6447136,24,0 2. Stringify,JsonBox (C++),citm_catalog.json,77.680000,499728,1134608,9264,0 2. Stringify,JsonBox (C++),twitter.json,56.555000,499728,1134608,22632,0 3. Prettify,JsonBox (C++),canada.json,304.789000,3923984,8118288,24,0 3. Prettify,JsonBox (C++),citm_catalog.json,56.228000,1728528,2777104,9265,0 3. Prettify,JsonBox (C++),twitter.json,42.175000,634896,1683472,22633,0 4. Statistics,JsonBox (C++),canada.json,0.926000,0,0,0,0 4. Statistics,JsonBox (C++),citm_catalog.json,0.350000,0,0,0,0 4. Statistics,JsonBox (C++),twitter.json,0.226000,0,0,0,0 7. Code size,JsonBox (C++),jsonstat,0,0,0,0,136068 1. Parse,jsoncons (C++),canada.json,1208.958000,3378688,23526960,3835292,0 1. Parse,jsoncons (C++),citm_catalog.json,948.891000,1231088,7518784,3574418,0 1. Parse,jsoncons (C++),twitter.json,230.708000,918816,4057952,741190,0 2. Stringify,jsoncons (C++),canada.json,287.330000,3923984,6176880,222183,0 2. Stringify,jsoncons (C++),citm_catalog.json,18.141000,503824,1138800,21,0 2. Stringify,jsoncons (C++),twitter.json,17.358000,503824,1138896,24,0 3. Prettify,jsoncons (C++),canada.json,273.724000,3923984,6176880,222183,0 3. Prettify,jsoncons (C++),citm_catalog.json,18.211000,503824,1028208,21,0 3. Prettify,jsoncons (C++),twitter.json,17.421000,503824,1028304,24,0 4. Statistics,jsoncons (C++),canada.json,1.862000,0,32,1,0 4. Statistics,jsoncons (C++),citm_catalog.json,1.839000,0,64,719,0 4. Statistics,jsoncons (C++),twitter.json,1.111000,0,464,2594,0 7. Code size,jsoncons (C++),jsonstat,0,0,0,0,88548 1. Parse,JsonCpp (C++),canada.json,187.953000,8921568,13431296,223254,0 1. Parse,JsonCpp (C++),citm_catalog.json,28.245000,2611984,7121728,115700,0 1. Parse,JsonCpp (C++),twitter.json,16.697000,1245120,2519024,54411,0 2. Stringify,JsonCpp (C++),canada.json,176.923000,2252816,6447280,110290,0 2. Stringify,JsonCpp (C++),citm_catalog.json,15.699000,634896,1269776,19990,0 2. Stringify,JsonCpp (C++),twitter.json,12.628000,634896,1269776,20794,0 4. Statistics,JsonCpp (C++),canada.json,2.921000,0,32,1,0 4. Statistics,JsonCpp (C++),citm_catalog.json,0.857000,0,64,719,0 4. Statistics,JsonCpp (C++),twitter.json,1.000000,0,464,2594,0 7. Code size,JsonCpp (C++),jsonstat,0,0,0,0,242528 1. Parse,json-c (C),canada.json,210.483000,19890720,19891856,390651,0 1. Parse,json-c (C),citm_catalog.json,37.998000,7220608,7221776,131793,0 1. Parse,json-c (C),twitter.json,15.784000,1923120,1924736,49446,0 2. Stringify,json-c (C),canada.json,33.363000,6447136,6447136,21,0 2. Stringify,json-c (C),citm_catalog.json,19.487000,1269792,1269792,18,0 2. Stringify,json-c (C),twitter.json,9.349000,1269792,1269792,18,0 3. Prettify,json-c (C),canada.json,68.255000,13762592,13762592,22,0 3. Prettify,json-c (C),citm_catalog.json,27.936000,4349984,4349984,20,0 3. Prettify,json-c (C),twitter.json,11.660000,1683488,1683488,19,0 4. Statistics,json-c (C),canada.json,4.663000,0,0,0,0 4. Statistics,json-c (C),citm_catalog.json,0.998000,0,0,0,0 4. Statistics,json-c (C),twitter.json,0.312000,0,0,0,0 7. Code size,json-c (C),jsonstat,0,0,0,0,52316 1. Parse,JSON Spirit (C++),canada.json,186.401000,5817440,8355776,435435,0 1. Parse,JSON Spirit (C++),citm_catalog.json,146.954000,1780048,5730592,312738,0 1. Parse,JSON Spirit (C++),twitter.json,50.582000,1075712,2820992,108189,0 2. Stringify,JSON Spirit (C++),canada.json,163.411000,2252816,6447120,22,0 2. Stringify,JSON Spirit (C++),citm_catalog.json,16.761000,634896,1159184,4779,0 2. Stringify,JSON Spirit (C++),twitter.json,17.931000,692240,1740816,14003,0 3. Prettify,JSON Spirit (C++),canada.json,243.748000,8273936,16662544,23,0 3. Prettify,JSON Spirit (C++),citm_catalog.json,35.873000,2007056,4104208,4781,0 3. Prettify,JSON Spirit (C++),twitter.json,21.859000,2007056,3055632,14003,0 4. Statistics,JSON Spirit (C++),canada.json,1.659000,0,0,0,0 4. Statistics,JSON Spirit (C++),citm_catalog.json,0.555000,0,0,0,0 4. Statistics,JSON Spirit (C++),twitter.json,0.341000,0,0,0,0 7. Code size,JSON Spirit (C++),jsonstat,0,0,0,0,258552 1. Parse,hjiang/JSON++ (C++),canada.json,390.069000,7465904,11971504,448011,0 1. Parse,hjiang/JSON++ (C++),citm_catalog.json,86.322000,2737504,6997344,101193,0 1. Parse,hjiang/JSON++ (C++),twitter.json,35.578000,1459360,3142848,55239,0 2. Stringify,hjiang/JSON++ (C++),canada.json,556.928000,3981328,12157008,504127,0 2. Stringify,hjiang/JSON++ (C++),citm_catalog.json,106.837000,1048592,4571152,161388,0 2. Stringify,hjiang/JSON++ (C++),twitter.json,47.447000,589840,2273808,59268,0 4. Statistics,hjiang/JSON++ (C++),canada.json,1.404000,0,0,0,0 4. Statistics,hjiang/JSON++ (C++),citm_catalog.json,0.650000,0,0,0,0 4. Statistics,hjiang/JSON++ (C++),twitter.json,0.322000,0,0,0,0 7. Code size,hjiang/JSON++ (C++),jsonstat,0,0,0,0,92372 1. Parse,Jzon (C++),canada.json,290.326000,11976032,18236624,612962,0 1. Parse,Jzon (C++),citm_catalog.json,80.996000,2034064,6041024,86205,0 1. Parse,Jzon (C++),twitter.json,43.224000,1219488,2924608,62222,0 2. Stringify,Jzon (C++),canada.json,63.874000,2252816,6447152,110284,0 2. Stringify,Jzon (C++),citm_catalog.json,16.943000,503824,1138704,1698,0 2. Stringify,Jzon (C++),twitter.json,12.734000,503824,1138704,5974,0 3. Prettify,Jzon (C++),canada.json,134.612000,8273936,16662544,333506,0 3. Prettify,Jzon (C++),citm_catalog.json,33.393000,1990672,4243472,59874,0 3. Prettify,Jzon (C++),twitter.json,17.873000,790544,1839120,21988,0 4. Statistics,Jzon (C++),canada.json,1.776000,0,32,1,0 4. Statistics,Jzon (C++),citm_catalog.json,0.968000,0,64,719,0 4. Statistics,Jzon (C++),twitter.json,1.259000,0,464,2594,0 7. Code size,Jzon (C++),jsonstat,0,0,0,0,109112 1. Parse,Nlohmann (C++11),canada.json,133.162000,3813312,8318928,170260,0 1. Parse,Nlohmann (C++11),citm_catalog.json,23.193000,1884592,6390224,63615,0 1. Parse,Nlohmann (C++11),twitter.json,17.956000,1155776,2581216,40532,0 2. Stringify,Nlohmann (C++11),canada.json,428.175000,1581072,7897168,399891,0 2. Stringify,Nlohmann (C++11),citm_catalog.json,44.986000,688144,1687584,86383,0 2. Stringify,Nlohmann (C++11),twitter.json,25.203000,499728,1655136,35133,0 3. Prettify,Nlohmann (C++11),canada.json,615.228000,7602192,22806624,746819,0 3. Prettify,Nlohmann (C++11),citm_catalog.json,67.232000,1728528,6049312,138885,0 3. Prettify,Nlohmann (C++11),twitter.json,30.562000,1728528,3268624,50688,0 4. Statistics,Nlohmann (C++11),canada.json,1.782000,0,32,2,0 4. Statistics,Nlohmann (C++11),citm_catalog.json,1.942000,0,64,4485,0 4. Statistics,Nlohmann (C++11),twitter.json,3.016000,0,464,9820,0 7. Code size,Nlohmann (C++11),jsonstat,0,0,0,0,41432 1. Parse,Parson (C),canada.json,161.409000,4777696,4778016,336060,0 1. Parse,Parson (C),citm_catalog.json,37.263000,1846400,1846512,185585,0 1. Parse,Parson (C),twitter.json,16.177000,952192,952304,72477,0 4. Statistics,Parson (C),canada.json,5.106000,0,0,0,0 4. Statistics,Parson (C),citm_catalog.json,2.523000,0,0,0,0 4. Statistics,Parson (C),twitter.json,2.273000,0,0,0,0 7. Code size,Parson (C),jsonstat,0,0,0,0,37996 1. Parse,PicoJSON (C++),canada.json,259.400000,3787984,3977136,545672,0 1. Parse,PicoJSON (C++),citm_catalog.json,68.839000,1862944,1862976,226421,0 1. Parse,PicoJSON (C++),twitter.json,30.184000,1174656,1533568,87648,0 2. Stringify,PicoJSON (C++),canada.json,201.711000,4194320,6447152,110281,0 2. Stringify,PicoJSON (C++),citm_catalog.json,12.367000,770064,1032208,259,0 2. Stringify,PicoJSON (C++),twitter.json,7.249000,770064,1032208,214,0 4. Statistics,PicoJSON (C++),canada.json,1.065000,0,0,0,0 4. Statistics,PicoJSON (C++),citm_catalog.json,0.442000,0,0,0,0 4. Statistics,PicoJSON (C++),twitter.json,0.298000,0,0,0,0 7. Code size,PicoJSON (C++),jsonstat,0,0,0,0,34472 1. Parse,RapidJSON_AutoUTF (C++),canada.json,24.398000,2995344,3339408,59,0 1. Parse,RapidJSON_AutoUTF (C++),citm_catalog.json,16.389000,1122960,1131152,27,0 1. Parse,RapidJSON_AutoUTF (C++),twitter.json,10.435000,792720,798352,21,0 2. Stringify,RapidJSON_AutoUTF (C++),canada.json,51.391000,2875440,2875712,28,0 2. Stringify,RapidJSON_AutoUTF (C++),citm_catalog.json,6.984000,569392,569664,24,0 2. Stringify,RapidJSON_AutoUTF (C++),twitter.json,5.866000,569392,569664,24,0 3. Prettify,RapidJSON_AutoUTF (C++),canada.json,122.220000,9699376,9699648,31,0 3. Prettify,RapidJSON_AutoUTF (C++),citm_catalog.json,22.314000,1916976,1917248,27,0 3. Prettify,RapidJSON_AutoUTF (C++),twitter.json,10.228000,852016,852288,25,0 4. Statistics,RapidJSON_AutoUTF (C++),canada.json,1.043000,0,0,0,0 4. Statistics,RapidJSON_AutoUTF (C++),citm_catalog.json,0.371000,0,0,0,0 4. Statistics,RapidJSON_AutoUTF (C++),twitter.json,0.237000,0,0,0,0 5. Sax Round-trip,RapidJSON_AutoUTF (C++),canada.json,73.076000,32,2875984,30,0 5. Sax Round-trip,RapidJSON_AutoUTF (C++),citm_catalog.json,21.372000,32,569936,26,0 5. Sax Round-trip,RapidJSON_AutoUTF (C++),twitter.json,15.439000,32,570704,28,0 6. SaxStatistics,RapidJSON_AutoUTF (C++),canada.json,21.203000,0,272,2,0 6. SaxStatistics,RapidJSON_AutoUTF (C++),citm_catalog.json,13.481000,0,272,2,0 6. SaxStatistics,RapidJSON_AutoUTF (C++),twitter.json,8.757000,0,1040,4,0 7. Code size,RapidJSON_AutoUTF (C++),jsonstat,0,0,0,0,33892 1. Parse,RapidJSON_FullPrec (C++),canada.json,32.710000,2962560,3261568,59,0 1. Parse,RapidJSON_FullPrec (C++),citm_catalog.json,5.687000,1122944,1131136,27,0 1. Parse,RapidJSON_FullPrec (C++),twitter.json,4.552000,792704,798336,21,0 2. Stringify,RapidJSON_FullPrec (C++),canada.json,30.060000,2875440,2875712,28,0 2. Stringify,RapidJSON_FullPrec (C++),citm_catalog.json,2.430000,569392,569664,24,0 2. Stringify,RapidJSON_FullPrec (C++),twitter.json,2.098000,569392,569664,24,0 3. Prettify,RapidJSON_FullPrec (C++),canada.json,37.969000,9699376,9699648,31,0 3. Prettify,RapidJSON_FullPrec (C++),citm_catalog.json,3.901000,1916976,1917248,27,0 3. Prettify,RapidJSON_FullPrec (C++),twitter.json,2.665000,852016,852288,25,0 4. Statistics,RapidJSON_FullPrec (C++),canada.json,0.873000,0,0,0,0 4. Statistics,RapidJSON_FullPrec (C++),citm_catalog.json,0.337000,0,0,0,0 4. Statistics,RapidJSON_FullPrec (C++),twitter.json,0.225000,0,0,0,0 5. Sax Round-trip,RapidJSON_FullPrec (C++),canada.json,58.254000,2875440,2875984,30,0 5. Sax Round-trip,RapidJSON_FullPrec (C++),citm_catalog.json,7.172000,569392,569936,26,0 5. Sax Round-trip,RapidJSON_FullPrec (C++),twitter.json,5.955000,569392,570704,28,0 6. SaxStatistics,RapidJSON_FullPrec (C++),canada.json,29.295000,0,272,2,0 6. SaxStatistics,RapidJSON_FullPrec (C++),citm_catalog.json,4.823000,0,272,2,0 6. SaxStatistics,RapidJSON_FullPrec (C++),twitter.json,3.889000,0,1040,4,0 7. Code size,RapidJSON_FullPrec (C++),jsonstat,0,0,0,0,31232 1. Parse,RapidJSON_Insitu (C++),canada.json,12.154000,5215360,5514368,60,0 1. Parse,RapidJSON_Insitu (C++),citm_catalog.json,4.285000,3309696,3317888,27,0 1. Parse,RapidJSON_Insitu (C++),twitter.json,2.483000,1314432,1320064,17,0 2. Stringify,RapidJSON_Insitu (C++),canada.json,29.769000,2875440,2875712,28,0 2. Stringify,RapidJSON_Insitu (C++),citm_catalog.json,2.525000,569392,569664,24,0 2. Stringify,RapidJSON_Insitu (C++),twitter.json,2.104000,569392,569664,24,0 3. Prettify,RapidJSON_Insitu (C++),canada.json,37.257000,9699376,9699648,31,0 3. Prettify,RapidJSON_Insitu (C++),citm_catalog.json,4.163000,1916976,1917248,27,0 3. Prettify,RapidJSON_Insitu (C++),twitter.json,2.646000,852016,852288,25,0 4. Statistics,RapidJSON_Insitu (C++),canada.json,0.876000,0,0,0,0 4. Statistics,RapidJSON_Insitu (C++),citm_catalog.json,0.320000,0,0,0,0 4. Statistics,RapidJSON_Insitu (C++),twitter.json,0.176000,0,0,0,0 5. Sax Round-trip,RapidJSON_Insitu (C++),canada.json,39.166000,2875440,5128544,30,0 5. Sax Round-trip,RapidJSON_Insitu (C++),citm_catalog.json,6.150000,569392,2822496,26,0 5. Sax Round-trip,RapidJSON_Insitu (C++),twitter.json,4.350000,569392,1204576,26,0 6. SaxStatistics,RapidJSON_Insitu (C++),canada.json,9.954000,0,2252832,2,0 6. SaxStatistics,RapidJSON_Insitu (C++),citm_catalog.json,3.538000,0,2252832,2,0 6. SaxStatistics,RapidJSON_Insitu (C++),twitter.json,2.388000,0,634912,2,0 7. Code size,RapidJSON_Insitu (C++),jsonstat,0,0,0,0,31232 1. Parse,RapidJSON (C++),canada.json,12.623000,2962560,3261568,59,0 1. Parse,RapidJSON (C++),citm_catalog.json,5.917000,1122944,1131136,27,0 1. Parse,RapidJSON (C++),twitter.json,4.861000,792704,798336,21,0 2. Stringify,RapidJSON (C++),canada.json,29.840000,2875440,2875712,28,0 2. Stringify,RapidJSON (C++),citm_catalog.json,2.433000,569392,569664,24,0 2. Stringify,RapidJSON (C++),twitter.json,2.091000,569392,569664,24,0 3. Prettify,RapidJSON (C++),canada.json,40.525000,9699376,9699648,31,0 3. Prettify,RapidJSON (C++),citm_catalog.json,4.053000,1916976,1917248,27,0 3. Prettify,RapidJSON (C++),twitter.json,2.706000,852016,852288,25,0 4. Statistics,RapidJSON (C++),canada.json,0.878000,0,0,0,0 4. Statistics,RapidJSON (C++),citm_catalog.json,0.323000,0,0,0,0 4. Statistics,RapidJSON (C++),twitter.json,0.191000,0,0,0,0 5. Sax Round-trip,RapidJSON (C++),canada.json,38.540000,2875440,2875984,30,0 5. Sax Round-trip,RapidJSON (C++),citm_catalog.json,7.045000,569392,569936,26,0 5. Sax Round-trip,RapidJSON (C++),twitter.json,6.147000,569392,570704,28,0 6. SaxStatistics,RapidJSON (C++),canada.json,8.881000,0,272,2,0 6. SaxStatistics,RapidJSON (C++),citm_catalog.json,4.402000,0,272,2,0 6. SaxStatistics,RapidJSON (C++),twitter.json,3.801000,0,1040,4,0 7. Code size,RapidJSON (C++),jsonstat,0,0,0,0,31232 1. Parse,sajson (C++),canada.json,12.420000,11882560,11882560,4,0 1. Parse,sajson (C++),citm_catalog.json,5.158000,9785408,9785408,4,0 1. Parse,sajson (C++),twitter.json,1.959000,3727424,3727424,4,0 4. Statistics,sajson (C++),canada.json,1.064000,0,0,0,0 4. Statistics,sajson (C++),citm_catalog.json,0.357000,0,0,0,0 4. Statistics,sajson (C++),twitter.json,0.214000,0,0,0,0 7. Code size,sajson (C++),jsonstat,0,0,0,0,34656 1. Parse,SimpleJSON (C++),canada.json,69.741000,11824864,20864304,337489,0 1. Parse,SimpleJSON (C++),citm_catalog.json,56.850000,4493696,11404720,230280,0 1. Parse,SimpleJSON (C++),twitter.json,39.339000,2782400,5658480,137659,0 2. Stringify,SimpleJSON (C++),canada.json,434.241000,3223568,18936048,615151,0 2. Stringify,SimpleJSON (C++),citm_catalog.json,75.561000,1835024,7209104,189864,0 2. Stringify,SimpleJSON (C++),twitter.json,33.403000,1835024,6102032,78359,0 4. Statistics,SimpleJSON (C++),canada.json,1.324000,0,0,0,0 4. Statistics,SimpleJSON (C++),citm_catalog.json,0.780000,0,0,0,0 4. Statistics,SimpleJSON (C++),twitter.json,0.482000,0,0,0,0 7. Code size,SimpleJSON (C++),jsonstat,0,0,0,0,54192 1. Parse,strdup (C),canada.json,0.583000,2875408,2875408,2,0 1. Parse,strdup (C),citm_catalog.json,0.240000,1835024,1835024,2,0 1. Parse,strdup (C),twitter.json,0.049000,851984,851984,2,0 2. Stringify,strdup (C),canada.json,0.547000,3223568,3223568,2,0 2. Stringify,strdup (C),citm_catalog.json,0.475000,2875408,2875408,2,0 2. Stringify,strdup (C),twitter.json,0.060000,634896,634896,2,0 7. Code size,strdup (C),jsonstat,0,0,0,0,15632 1. Parse,udp/json-parser (C),canada.json,58.146000,6474656,6474656,223233,0 1. Parse,udp/json-parser (C),citm_catalog.json,29.577000,1910400,1910400,51205,0 1. Parse,udp/json-parser (C),twitter.json,9.972000,1196256,1196256,20237,0 2. Stringify,udp/json-parser (C),canada.json,80.567000,1835024,1835024,2,0 2. Stringify,udp/json-parser (C),citm_catalog.json,11.044000,634896,634896,2,0 2. Stringify,udp/json-parser (C),twitter.json,2.770000,634896,634896,2,0 3. Prettify,udp/json-parser (C),canada.json,87.118000,7958544,7958544,2,0 3. Prettify,udp/json-parser (C),citm_catalog.json,11.932000,2875408,2875408,2,0 3. Prettify,udp/json-parser (C),twitter.json,2.924000,851984,851984,2,0 4. Statistics,udp/json-parser (C),canada.json,0.971000,0,0,0,0 4. Statistics,udp/json-parser (C),citm_catalog.json,0.340000,0,0,0,0 4. Statistics,udp/json-parser (C),twitter.json,0.228000,0,0,0,0 7. Code size,udp/json-parser (C),jsonstat,0,0,0,0,34668 1. Parse,ujson4c (C),canada.json,11.750000,5935120,14942224,10,0 1. Parse,ujson4c (C),citm_catalog.json,5.003000,5935120,12845072,10,0 1. Parse,ujson4c (C),twitter.json,2.807000,3059728,5935120,9,0 4. Statistics,ujson4c (C),canada.json,4.478000,0,0,0,0 4. Statistics,ujson4c (C),citm_catalog.json,0.904000,0,0,0,0 4. Statistics,ujson4c (C),twitter.json,0.409000,0,0,0,0 7. Code size,ujson4c (C),jsonstat,0,0,0,0,26448 1. Parse,Vinenthz/libjson (C),canada.json,149.449000,3801696,3818352,334389,0 1. Parse,Vinenthz/libjson (C),citm_catalog.json,42.732000,1724528,1741184,153901,0 1. Parse,Vinenthz/libjson (C),twitter.json,16.441000,1035408,1052064,72620,0 2. Stringify,Vinenthz/libjson (C),canada.json,127.272000,4194320,4194320,13,0 2. Stringify,Vinenthz/libjson (C),citm_catalog.json,9.069000,524304,524304,10,0 2. Stringify,Vinenthz/libjson (C),twitter.json,6.962000,524304,524304,10,0 3. Prettify,Vinenthz/libjson (C),canada.json,134.400000,4194320,4194320,13,0 3. Prettify,Vinenthz/libjson (C),citm_catalog.json,9.190000,524304,524304,10,0 3. Prettify,Vinenthz/libjson (C),twitter.json,6.942000,524304,524304,10,0 4. Statistics,Vinenthz/libjson (C),canada.json,0.916000,0,0,0,0 4. Statistics,Vinenthz/libjson (C),citm_catalog.json,0.482000,0,0,0,0 4. Statistics,Vinenthz/libjson (C),twitter.json,0.253000,0,0,0,0 5. Sax Round-trip,Vinenthz/libjson (C),canada.json,31.608000,4194320,4198672,15,0 5. Sax Round-trip,Vinenthz/libjson (C),citm_catalog.json,22.617000,524304,528656,12,0 5. Sax Round-trip,Vinenthz/libjson (C),twitter.json,12.150000,524304,528656,12,0 6. SaxStatistics,Vinenthz/libjson (C),canada.json,24.283000,0,4352,2,0 6. SaxStatistics,Vinenthz/libjson (C),citm_catalog.json,16.932000,0,4352,2,0 6. SaxStatistics,Vinenthz/libjson (C),twitter.json,6.443000,0,4352,2,0 7. Code size,Vinenthz/libjson (C),jsonstat,0,0,0,0,25656 1. Parse,YAJL (C),canada.json,161.522000,9994784,9997104,501567,0 1. Parse,YAJL (C),citm_catalog.json,34.421000,2324288,2328656,189685,0 1. Parse,YAJL (C),twitter.json,14.030000,1135104,1139472,77047,0 2. Stringify,YAJL (C),canada.json,148.650000,4198944,4198944,15,0 2. Stringify,YAJL (C),citm_catalog.json,8.013000,528928,528928,12,0 2. Stringify,YAJL (C),twitter.json,3.769000,528928,528928,12,0 3. Prettify,YAJL (C),canada.json,191.473000,16781856,16781856,17,0 3. Prettify,YAJL (C),citm_catalog.json,16.846000,2101792,2101792,14,0 3. Prettify,YAJL (C),twitter.json,5.815000,1053216,1053216,13,0 4. Statistics,YAJL (C),canada.json,1.373000,0,0,0,0 4. Statistics,YAJL (C),citm_catalog.json,0.474000,0,0,0,0 4. Statistics,YAJL (C),twitter.json,0.300000,0,0,0,0 5. Sax Round-trip,YAJL (C),canada.json,243.321000,4198944,4203312,22,0 5. Sax Round-trip,YAJL (C),citm_catalog.json,16.722000,528928,533296,19,0 5. Sax Round-trip,YAJL (C),twitter.json,6.922000,528928,533296,19,0 6. SaxStatistics,YAJL (C),canada.json,93.083000,0,4368,7,0 6. SaxStatistics,YAJL (C),citm_catalog.json,9.691000,0,4368,7,0 6. SaxStatistics,YAJL (C),twitter.json,3.452000,0,4368,7,0
JPEG
PNG
PDF
SVG


| |
ActiveTcl User Guide
|
|
|
- NAME
- lsearch - See if a list contains a particular element
- SYNOPSIS
- lsearch ?options? list pattern
- DESCRIPTION
- -all
- -ascii
- -decreasing
- -dictionary
- -exact
- -glob
- -increasing
- -inline
- -integer
- -not
- -real
- -regexp
- -sorted
- -start
index
- EXAMPLES
- SEE ALSO
- KEYWORDS
lsearch - See if a list contains a particular element
lsearch ?options? list pattern
This command searches the elements of list to see if one
of them matches pattern. If so, the command returns the
index of the first matching element (unless the options -all
or -inline are specified.) If not, the command returns
-1. The option arguments indicates how the elements
of the list are to be matched against pattern and it must
have one of the following values:
- -all
- Changes the result to be the list of all matching indices (or
all matching values if -inline is specified as well.)
- -ascii
- The list elements are to be examined as ASCII strings. This
option is only meaningful when used with -exact or
-sorted.
- -decreasing
- The list elements are sorted in decreasing order. This option
is only meaningful when used with -sorted.
- -dictionary
- The list elements are to be compared using dictionary-style
comparisons. This option is only meaningful when used with
-exact or -sorted.
- -exact
- The list element must contain exactly the same string as
pattern.
- -glob
- Pattern is a glob-style pattern which is matched against
each list element using the same rules as the string match command.
- -increasing
- The list elements are sorted in increasing order. This option
is only meaningful when used with -sorted.
- -inline
- The matching value is returned instead of its index (or an
empty string if no value matches.) If -all is also
specified, then the result of the command is the list of all values
that matched.
- -integer
- The list elements are to be compared as integers. This option
is only meaningful when used with -exact or
-sorted.
- -not
- This negates the sense of the match, returning the index of the
first non-matching value in the list.
- -real
- The list elements are to be compared as floating-point values.
This option is only meaningful when used with -exact or
-sorted.
- -regexp
- Pattern is treated as a regular expression and matched
against each list element using the rules described in the re_syntax reference
page.
- -sorted
- The list elements are in sorted order. If this option is
specified, lsearch will use a more efficient searching
algorithm to search list. If no other options are specified,
list is assumed to be sorted in increasing order, and to
contain ASCII strings. This option is mutually exclusive with
-glob and -regexp, and is treated exactly like
-exact when either -all, or -not is
specified.
- -start index
- The list is searched starting at position index. If
index has the value end, it refers to the last
element in the list, and end-integer refers to the
last element in the list minus the specified integer offset.
If option is omitted then it defaults to -glob. If
more than one of -exact, -glob, -regexp, and
-sorted is specified, whichever option is specified last
takes precedence. If more than one of -ascii,
-dictionary, -integer and -real is specified,
the option specified last takes precedence. If more than one of
-increasing and -decreasing is specified, the option
specified last takes precedence.
lsearch {a b c d e} c => 2
lsearch -all {a b c a b c} c => 2 5
lsearch -inline {a20 b35 c47} b* => b35
lsearch -inline -not {a20 b35 c47} b* => a20
lsearch -all -inline -not {a20 b35 c47} b* => a20 c47
lsearch -all -not {a20 b35 c47} b* => 0 2
lsearch -start 3 {a b c a b c} c => 5
foreach, list, lappend, lindex, linsert, llength, lset, lsort, lrange, lreplace
list, match, pattern, regular expression, search, string
Copyright © 1993 The Regents of the University of California.
Copyright © 1994-1996 Sun Microsystems, Inc.
Copyright © 2001 Kevin B. Kenny. All rights reserved.
Copyright © 1995-1997 Roger E. Critchlow Jr.


Dog Runs
Services
Pest Control
Termite Control
Pest Index
Ants
Bed Bugs
Cockroaches
Fleas
Flies
Mosquitoes
Rodents
Hornets
Termites
Spiders
Animal Index
Mammals
Reptiles
Why Calvert?
About Us
Clients
Veteran Owned
FAQ
Contact Us
Contact
Feedback
Home
Feedback
YOUR INPUT MATTERS
Here at Calvert Exterminators, we value every bit of feedback we can gather from our clients and community. This page allows our clients and community to directly voice their opinions, from a simple 5 star rating to a detailed explanation. We are glad to hear how our service has helped you or how it could be improved further, whether it be our pest control or website.
Send us your feedback
Please include your email if you would like us to contact you.
Email Address (optional):
How would you rate your experience?
Additional notes:
Yes, Calvert Exterminators may contact me
By submitting this request, I validate that I am 18 years of age or older. Additionally, I give Calvert Exterminators permission to call or text me at the number provided regarding Calvert Exterminators services using automated technology. I understand my consent is not a condition of purchase. Commercial customer? Call<PHONE_NUMBER>
Submit


- sat_subset() (minisolvers.MinicardSubsetSolver method)
- (minisolvers.MinisatSubsetSolver method)
- set_phase_saving() (minisolvers.MinicardSolver method)
- (minisolvers.MinicardSubsetSolver method)
- (minisolvers.MinisatSolver method)
- (minisolvers.MinisatSubsetSolver method)
- set_rnd_pol() (minisolvers.MinicardSolver method)
- (minisolvers.MinicardSubsetSolver method)
- (minisolvers.MinisatSolver method)
- (minisolvers.MinisatSubsetSolver method)
- set_varcounts() (minisolvers.MinicardSubsetSolver method)
- (minisolvers.MinisatSubsetSolver method)
|
- simplify() (minisolvers.MinicardSolver method)
- (minisolvers.MinicardSubsetSolver method)
- (minisolvers.MinisatSolver method)
- (minisolvers.MinisatSubsetSolver method)
- solve() (minisolvers.MinicardSolver method)
- (minisolvers.MinicardSubsetSolver method)
- (minisolvers.MinisatSolver method)
- (minisolvers.MinisatSubsetSolver method)
- solve_subset() (minisolvers.MinicardSubsetSolver method)
- (minisolvers.MinisatSubsetSolver method)
|


|
array_name - array name
index1 - index number of last variable to be created within that particular index-range index2 (optional) - index number of last variable to be created within that particular index-range index3 (optional) - index number of last variable to be created within that particular index-range ... (optional) - and so on |
|
Creates an array of the specified type. For example, Dim tiles(10) creates an integer array, Dim tiles#(10) creates a float array and Dim tile$(10) creates a string array.
The contents of an array can be accessed using the index notation: 0 - indexn, giving indexn+1 number of elements for that particular index range. You should not attempt to access a non-existent element of the array. In debug mode this will cause an error stating 'index out of bounds'. With debug off however, you may get 'illegal memory access' errors, or worse no immediate errors at all. Arrays are global, and must be defined in the main program. Arrays can be re-dimmed by using the Dim statement again with the same array name, but the contents of the array will be lost. ----------------------------------------------------------- *NEW* BLITZ ARRAYS *NEW* Since a recent Blitz update you can now do what are called 'blitz arrays'. These are very different to a Dim'd array, in the following ways: They use square brackets [] instead of the normal round ones (). You declare them like you do Local or Global variables, example: Local myArray[10] They cannot be multi-dimensional, and cannot be resized. They can be stored in Type objects. They can be passed to functions. ----------------------------------------------------------- See also: Global, Local. |
|
; Dim Example
; Create a collection of 100 random numbers ; Create array Dim nums(99) ; Fill each element with a random number For i = 0 to 99 nums(i) = Rand(1,1000) Next |


Storage Explorer
Explore localStorage, sessionStorage and cookie. Other types of storage may be implemented in future versions.
Works on mobile and in offline.
Use this bookmarklet to explore storages on other domains. Storage Explorer
Bookmarklet is automatically updated to refer to the location of the project.
| Key | Value | × |
|---|---|---|
| ✚ |


--- layout: markdown hero-message: Forms hero-image: url(/assets/images/botwork.jpg) ---
We're glad to have you join Pioneers in Engineering! To get you up and running, we'll need
you to fill out a few forms.
You can find them all in the link below as part of a Cognito Forms document.
Once you complete those, contact<EMAIL_ADDRESS>so we can process your paperwork.


 Stop
Send this code to the person you want to share your screen with. They can use ScreenCat.app or http://maxogden.github.io/screencat/remote in Chrome/Firefox. Please wait here until they connect.
Enter a code to connect to a remote screen


ERC20 Asset Generator
You do not appear to be connected to any Ethereum network. To use this service and deploy your contract, we recommend using the MetaMask plugin for Google Chrome, which allows your web browser to connect to an Ethereum network.
Name is simply what you want to call your token, such as Bitcoin or Ethereum.
Symbol will be the ticker of your token, such as BTC or ETC (normally tokens have a 3 letter uppercase symbol).
Decimals is how many decimal places your token can have, which determines how divisible it is. Generally tokens will have 18 decimals, which allows 1 token to be divided into trillions of pieces (eg. with 18 decimals you could have as little as 0.000000000000000001 of a token).
Total Supply will be number of tokens available. Token Total Supply VALUE will be total number of tokens to the power of decimal places. (eg. if total supply is 1000 and decimals is 18 then give<PHONE_NUMBER>000000000000 as a value.)
In its simplest form, burning a token means making the token permanently unspendable. There are a few ways of doing this, such as sending the tokens to a bogus address.
A token is literally just a representation of value which can change owners. A mineable coin, or mineable token, is a token which is created by computers solving hard mathematical riddles or doing many guesses.
Optional comments for the token, string stored in token contract as public data forever on the blockchain. Maximum length (140 characters)
© Xord 2018. All Rights Reserved.
...


Project Icarus
Projects
Sponsors
About Us
Contact
Subscale Summary -
PDF
Technical Summary -
PDF
Finances -
PDF


Plato on Github
Report Home
index.js
Maintainability
72.86
Lines of code
398
Difficulty
38.77
Estimated Errors
2.21
Function weight
By Complexity
By SLOC
/*! * * Copyright (c) 2013 Sebastian Golasch * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included * in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. * */ 'use strict'; // Ext. libs var _ = require('lodash'); var Q = require('q'); // Int. libs var actions = require('dalek-internal-actions'); var assertions = require('dalek-internal-assertions'); /** * Prepares the test instance values * * @param {object} opts Options like the tests name, etc. * @constructor */ var Test = function (opts) { // prepare meta queue data this.actionPromiseQueue = []; // prepare assertion data this.expactation = null; this.runnedExpactations = 0; this.failedAssertions = 0; // prepare test specific data this.name = opts.name; this.lastChain = []; this.uuids = {}; this.contextVars = {}; if (this.name) { this.timeoutForDone = setTimeout(function () { this.done(); this.reporter.emit('warning', 'done not called!'); }.bind(this), 2000); } }; /** * Generates an test instance * * @module DalekJS * @class Test * @namespace Dalek * @part test * @api */ Test.prototype = { /** * Specify how many assertions are expected to run within a test. * Very useful for ensuring that all your callbacks and assertions are run. * * @method expect * @param {Integer} expecatation Number of assertions that should be run * @chainable */ expect: function (expectation) { this.expectation = parseInt(expectation, 10); return this; }, /** * Global data store (works between the node & browser envs) * * @method expect * @param {string|number} key Key to store or fetch data * @param {mixed} value *optional* Data that should be stored * @return {mixed} Data that has been stored * @chainable */ data: function (key, value) { if (value) { this.contextVars[key] = value; return this; } return this.contextVars[key]; }, /** * Increment the number of executed assertions * * @method incrementExpectations * @chainable */ incrementExpectations: function () { this.runnedExpactations++; return this; }, /** * Increment the number of failed assertions * * @method incrementFailedAssertions * @chainable */ incrementFailedAssertions: function () { this.failedAssertions++; return this; }, /** * Checks if the runned tests fullfill the set expectations * or if no expectations were raised * * @method checkExpectations * @return {bool} checkedExpectations Expectations match */ checkExpectations: function () { return (this.expectation === null || !this.expectation || (this.runnedExpactations === this.expectation)); }, /** * Checks if all runned assertions passed * * @method checkAssertions * @return {bool} assertiosnFailed Any expectation failed */ checkAssertions: function () { return this.failedAssertions === 0; }, /** * Sets up all the bindings needed for a test to run * * @method done * @return {object} result A promise * @private */ done: function () { var result = Q.resolve(); // clear the done error timeout clearTimeout(this.timeoutForDone); // remove all previously attached event listeners to clear the message queue this.driver.events.removeAllListeners('driver:message'); // resolve the deferred when the test is finished Test.testStarted.fin(this._testFinished.bind(this, result)); return result; }, /** * Emits the test finished events & resolves all promises * when its done * * @method _testFinished * @param {object} result Promised result var * @return {object} result Promised result var * @private */ _testFinished: function (result) { // add a last deferred function on the end of the action queue, // to tell that this test is finished this.actionPromiseQueue.push(this._testFin.bind(this)); // initialize all of the event receiver functions, // that later take the driver result this.actionPromiseQueue.forEach(function (f) { result = result.then(f).fail(function () { console.error(arguments); process.exit(0); }); }.bind(this)); // run the driver when all actions are stored in the queue Q.allSettled(this.actionPromiseQueue) .then(this.driver.run.bind(this.driver)); return result; }, /** * Emits the test started event * * @method _reportTestStarted * @param {string} name Name of the test * @chainable * @private */ _reportTestStarted: function (name) { this.reporter.emit('report:test:started', {name: name}); return this; }, /** * Checks if the test run is complete & emits/resolves * all the needed events/promises when the run is complete * * @method _onDriverMessage * @param {object} data Data that is returned by the driver:message event * @chainable * @private */ _onDriverMessage: function (data) { // check if the test run is complete if (data && data.key === 'run.complete') { // emit the test finish events & resolve the deferred this._emitConcreteTestFinished(); this._emitAssertionStatus(); this._emitTestFinished(); this.deferred.resolve(); } return this; }, /** * Emits an event, that the current test run has been finished * * @method _emitConcreteTestFinished * @chainable * @private */ _emitConcreteTestFinished: function () { this.events.emit('test:' + this._uid + ':finished', 'test:finished', this); return this; }, /** * Emits an event that describes the current state of all assertions * * @method _emitAssertionStatus * @chainable * @private */ _emitAssertionStatus: function () { this.reporter.emit('report:assertion:status', { expected: (this.expectation ? this.expectation : this.runnedExpactations), run: this.runnedExpactations, status: this._testStatus() }); return this; }, /** * Get the overall test status (assertions & expectation) * * @method _testStatus * @return {bool} status The test status * @chainable * @private */ _testStatus: function () { return this.checkExpectations() && this.checkAssertions(); }, /** * Emits an event that describes the current state of all assertions. * The event should be fired when a test is finished * * @method _emitTestFinished * @chainable * @private */ _emitTestFinished: function () { this.reporter.emit('report:test:finished', { name: this.name, id: this._uid, passedAssertions: this.runnedExpactations - this.failedAssertions, failedAssertions: this.failedAssertions, runnedExpactations: this.runnedExpactations, status: this._testStatus(), nl: true }); return this; }, /** * Kicks off the test & binds all promises/events * * @method _testFin * @return {object} promise A promise * @private */ _testFin: function () { this.deferred = Q.defer(); if (_.isFunction(this.driver.end)) { this.driver.end(); } // emit report startet event this._reportTestStarted(this.name); // listen to all the messages from the driver this.driver.events.on('driver:message', this._onDriverMessage.bind(this)); return this.deferred.promise; }, /** * Copies assertion methods * * @method _inheritAssertions * @param {Test} test Instacne of test * @chainable * @private */ _inheritAssertions: function (test) { ['is'].forEach(function (method) { test[method] = test.assert[method].bind(test.assert); }); return test; }, /** * Copies assertion helper methods * * @method _inheritAssertions * @param {Test} test Instacne of test * @chainable * @private */ _inheritAssertionHelpers: function (test) { ['not', 'between', 'gt', 'gte', 'lt', 'lte'].forEach(function (method) { test.is[method] = test.assert[method].bind(test.assert); test.assert.is[method] = test.assert[method].bind(test.assert); }); ['contain', 'match'].forEach(function (method) { test.to = test.to || {}; test.assert.to = test.assert.to || {}; test.to[method] = test.assert[method].bind(test.assert); test.assert.to[method] = test.assert[method].bind(test.assert); }); return test; }, /** * Set up the instance * * @method _inheritAssertions * @param {Test} test Instacne of test * @param {object} opts Options * @chainable * @private */ _initialize: function (test, opts) { test._uid = _.uniqueId('test'); test.events = opts.events; test.driver = opts.driver; test.reporter = opts.reporter; return test; } }; // export a function that generates a new test instance module.exports = function (opts) { // mixin assertions, actions & getters Test.prototype = _.extend(Test.prototype, actions({reporter: opts.reporter}).prototype); var test = new Test(opts); test.assert = new (assertions())({test: test}); test.assert.done = test.done.bind(this); test.assert.query = test.query.bind(test.assert); test.assert.$ = test.query.bind(test.assert); test.end = test.assert.end.bind(test.assert); // copy log methods test.log = {}; test.log.dom = test.logger.dom.bind(test); test.log.message = test.logger.message.bind(test); // copy assertions methods test = test._inheritAssertions(test); // copy assertion helper methods test = test._inheritAssertionHelpers(test); // initialize the instance test = test._initialize(test, opts); // TODO: Promise driver start // so that we can reexecute them and clean the env between tests Test.testStarted = test.driver.start(Q); return test; };


page_util_flow - page dataflow/treewalker utility
This package provides a single utility command for easy dataflow based manipulation of arbitrary data structures, especially abstract syntax trees.
This command contains the core logic to drive the walking of an arbitrary data structure which can partitioned into separate parts. Examples of such structures are trees and graphs.
The command makes no assumptions at all about the API of the structure to be walked, except that that its parts, here called nodes, are identified by strings. These strings are taken as is, from the arguments, and the body, and handed back to the body, without modification.
Access to the actual data structure, and all decisions regarding which nodes to visit in what order are delegated to the body of the loop, i.e. the script.
The body is invoked first for the nodes in the start-set specified via start), and from then on for the nodes the body has requested to be visited. The command stops when the set of nodes to visit becomes empty. Note that a node can be visited more than once. The body has complete control about this.
The body is invoked in the context of the caller. The variable named by nodevar will be set to the current node, and the variable named by flowvar will be set to the command of the flow object through which the body can request the nodes to visit next. The API provided by this object is described in the next section, FLOW API.
Note that the command makes no promises regarding the order in which nodes are visited, excpt that the nodes requested to be visited by the current iteration will be visited afterward, in some order.
This section describes the API provided by the flow object made accessible to the body script of ::page::util::flow.
Invoking this method requests that the node n is visited after the current iteration.
Invoking this method requests that all the nodes found in the list nodelist are visited after the current iteration.
This is the variadic arguments form of the method visitl, see above.
This document, and the package it describes, will undoubtedly contain bugs and other problems. Please report such in the category page of the Tcllib Trackers. Please also report any ideas for enhancements you may have for either package and/or documentation.
When proposing code changes, please provide unified diffs, i.e the output of diff -u.
Note further that attachments are strongly preferred over inlined patches. Attachments can be made by going to the Edit form of the ticket immediately after its creation, and then using the left-most button in the secondary navigation bar.
Page Parser Generator
Copyright © 2007 Andreas Kupries <andreas_kupries@users.sourceforge.net>


Drake v0.18.0¶
Announcements¶
Warning
On macOS, Drake only supports Python 3.8. Users must read #13097 for upgrade instructions.
When paths are set incorrectly, you will see an error such as this:
ImportError: Python version mismatch: module was compiled for Python 3.8, but the interpreter version is incompatible: 3.7.7
Breaking changes since v0.17.0¶
These are breaking changes that did not undergo a deprecation period:
- All pydrake.solvers SolverDetails classes are now read-only. (#13152)
Changes since v0.17.0:¶
Dynamical Systems¶
New features
- Trajectories
- Add Trajectory::has_derivative and EvalDerivative (#13144)
- Add DiscreteTimeTrajectory (#13157)
- Improve BsplineBasis and BsplineTrajectory (#13149, #13057, #13158)
- Add PiecewisePolynomial unary minus (#13109)
- Add Subsitute(var, Polynomial) with support for multivariate polynomials (#13108)
- Add Lagrange Interpolating Polynomial and Block(i,j,p,q) (#13269)
- System
- Controllers
Fixes
- None
Multibody Dynamics¶
New features
- Add universal joint and mobilizer (#13055, #13054)
- Add propeller model (#13135)
- Add planar four bar linkage example (#13036)
- Add custom <drake:linear_bushing_rpy/> tag in SDF/URDF (#13255)
- Add get_body_poses_output_port (#13137)
- Make joint store default value (#13105)
- New hydroelastic contact model in progress (#13114, #13138, #13140)
- Still only experimental
Fixes
- Allow CollectRegisteredGeometries to be called pre-finalize (#13281)
Miscellaneous features and fixes¶
pydrake bindings¶
Newly bound
- pydrake.common.kDrakeAssertIsArmed (#13183, #13195)
- pydrake.geometry.QueryObject.__init__ (#13156)
- pydrake.multibody.plant.MultibodyPlant.get_body_poses_output_port (#13229)
- pydrake.multibody.plant.MultibodyPlant.get_contact_penalty_method_time_scale (#13294)
- pydrake.multibody.plant.MultibodyPlant.set_stiction_tolerance (#13294)
- pydrake.solvers.gurobi.GurobiSolverDetails (#13152)
- pydrake.solvers.mosek.MosekSolverDetails (#13151)
- pydrake.systems.framework.DiagramBuilder.GetMutableSystems (#13270)
- pydrake.systems.framework.DiagramBuilder.empty (#13270)
- pydrake.systems.framework.OutputPort.Allocate (#13270)
New features
- Move the Value and AbstractValue classes from the pydrake.systems.framework module to the pydrake.common.value module (#13217, #13225)
Fixes
Build system and dependencies¶
- Use clang-format version 9, not version 6 (#13259, #13260, #13286, #13287)
- Upgrade buildifier to latest release 3.0.0 (#13198)
- Upgrade dreal to latest commit (#13133)
- Upgrade fcl to latest commit (#13274)
- Upgrade fmt to latest release 6.2.0 (#13200)
- Upgrade gurobi to 9.0.2 and use GUROBI_HOME instead of GUROBI_PATH (#13049)
- Upgrade lcm to latest commit (#13199)
- Upgrade meshcat to latest commit (#13141)
- Upgrade meshcat_python to latest commit (#13155)
- Upgrade pycodestyle to latest release 2.5.0 (#13197, #13204)
- Upgrade semantic_version to latest release 2.8.5 (#13197)
- Only compile the parts of FCL that we need (#13230)
- Remove use of octomap (#13230)
- Remove use of ruby (#13262)
- Remove use of tinydir (#13180)
- Disable python imports from ~/.local during build on Ubuntu (#13190)
- Fetch sdformat and ignition_math from GitHub, not Bitbucket (#13188)
- Don’t install unused sdformat data (#13268)
- Fix bazel third_party include path complaints (#13189)
- Begin Ubuntu 20.04 (Focal Fossa) accomodations (#13142, #13235, #13303)
Newly-deprecated APIs¶
Removal of deprecated items¶
- DRAKE_NODISCARD in common/drake_nodiscard.h (#13170)
- drake::examples::kuka_iiwa_arm::ComputeLumpedGripperInertiaInEndEffectorFrame (#13169)
- drake::examples::kuka_iiwa_arm::CreateTreedFromFixedModelAtPose (#13169)
- drake::examples::kuka_iiwa_arm::IiwaAndWsgPlantWithStateEstimator (#13169)
- drake::examples::kuka_iiwa_arm::KukaTorqueController for RigidBodyTree (#13169)
- drake::examples::kuka_iiwa_arm::OracularStateEstimation (#13169)
- drake::geometry::Identifier (#13170)
- drake::geometry::SceneGraphInspector::GetNumAnchoredGeometries (#13170)
- drake::geometry::SceneGraphInspector::GetNumDynamicGeometries (#13170)
- drake::multibody::AddMultibodyPlantSceneGraph(builder) (#13170)
- drake::multibody::MultibodyPlant default constructor (#13170)
- drake::systems::Simulator::reset_integrator (#13172)
- drake::systems::System::CheckValidContextT (#13172)
- drake::systems::SystemBase::CheckValidContext (#13172)
- drake::systems::SystemBase::DoCheckValidContext (#13172)
- drake::systems::SystemBase::ThrowIfContextNotCompatible (#13172)
- pydrake.examples.manipulation_station.ManipulationStation.SetIiwaPosition(q, context) (#13233)
- pydrake.examples.manipulation_station.ManipulationStation.SetIiwaVelocity(v, context) (#13233)
- pydrake.examples.manipulation_station.ManipulationStation.SetWsgPosition(q, context) (#13233)
- pydrake.examples.manipulation_station.ManipulationStation.SetWsgVelocity(v, context) (#13233)
- pydrake.geometry.FrameId constructor (#13233)
- pydrake.geometry.GeometryId constructor (#13233)
- pydrake.geometry.SceneGraph.AddRenderer(renderer_name=) (#13233)
- pydrake.geometry.SourceId constructor (#13233)
- pydrake.multibody.AddMultibodyPlantSceneGraph(builder) (#13170)
- pydrake.multibody.MultibodyPlant zero-argument constructor (#13170)
- Legacy (“attic”) manipulation/util (#13169)
- The json external (#13171)
- The –config=snopt_fortran bazel option (#13171)
- drake/examples/kuka_iiwa/iiwa_wsg_simulation (#13169)
Notes¶
This release provides pre-compiled binaries named
drake-20200514-{bionic|mac}.tar.gz
. See Nightly Releases for instructions on how to use them.
Drake binary releases incorporate a pre-compiled version of SNOPT as part of the Mathematical Program toolbox. Thanks to Philip E. Gill and Elizabeth Wong for their kind support.


The Estimates of National Expenditure (ENE) publications describe in detail the planned spending in all national government votes over the three-year medium-term expenditure framework (MTEF) period, government’s expenditure planning window. An abridged publication is available together with more detailed e-publications.
The ENE abridged publication is tabled in Parliament by the Minister of Finance alongside the main budget. The publication is the explanatory memorandum to the Appropriation Bill. The executive tables the bill and accompanying publication seeking Parliament’s approval and adoption of government’s spending plans for the first year of the MTEF period.
Generally, a vote specifies the total amount of money appropriated to a national government department. A national government vote is generally synonymous with a national government department. However, in certain instances, a vote may contain more than one national government department. For instance, the Cooperative Governance and Traditional Affairs vote contains two departments, the Department of Cooperative Governance and the Department of Traditional Affairs.
The ENE publications include information on how government institutions have spent their budgets in previous years, and how they intend to use their allocations over the medium term to achieve their goals, including the outputs and outcomes spending is expected to lead to.
The publications include tables depicting non-financial performance indicators and targets, departmental receipts, and detailed expenditure trends and estimates.
A more in-depth narrative analyses the institution’s expected expenditure over the MTEF period. A summary table is included at the end of the chapter for votes in which there is significant spending on infrastructure. In addition, the e-publications contain programme personnel data tables, a brief summary for all entities, as well as additional summary data tables on provincial and municipal conditional grants, public-private partnerships, donor funding, and expenditure at the level of service delivery, where applicable.
The dataset emanates from the yearly national government budget process. At the beginning of each budget process, the National Treasury publishes guidelines depicting the information that governmental institutions are expected to submit to the National Treasury in their budget submissions. A vital part of this process involves the large number of public institutions planning, negotiating and deciding collectively how to spend public resources.
As the budget process is focused on institutional performance in relation to government outcomes, it is organised by function of government. The trade-offs of financing different policy objectives within the constraints of the expenditure ceiling are examined, culminating in recommendations on how institutional policies and practices, and arrangements, can be adapted to best achieve the function’s outcomes.
These function group discussions shape the allocations to specific government institutions. The recommendations from each function group are then presented to the ministers’ committee on the budget technical committee (MTEC), a committee comprising the directors-general of central national government departments. Once this part of the process has been finalised, the recommendations endorsed by MTEC are taken to the ministers’ committee on the budget. This committee then reviews the recommendations put forward in respect of the different function groups and ultimately considers the trade-offs and priorities for government as a whole. The recommendations of the ministers’ committee on the budget are then tabled in Cabinet.
Once Cabinet has approved the recommendations, all institutions are informed of their budget allocations. Institutions then finalise their budgets accordingly and prepare and submit their data and narrative inputs for the ENE publications to the National Treasury. National Treasury then verifies and edits these inputs to produce the ENE publications. The ENE is published in a number of formats (including in print and as an Excel pivot table). The ENE is tabled in Parliament annually as part of the national budget.
The ENE is released as part of the national budget information releases, at the end of February, before the start of the national/provincial budget cycle. The data and supporting documents are useful for:
Vulekamali has annual ENE information for all national departments. The following are available for each department:
The detail pages for a department can be found under the Department Budgets link at the top of the website. You can also search vulekamali to find a department.
Note: The 2018 Budget vote for Basic Education (Vote 14) is used as an illustrative example for this section. It can be found by visiting the Basic Education budget page for 2018.
All the ENE documents (PDF, Excel, and CSV) include expenditure data using the following classifications:
Expenditure over time: The budget data is presented over a seven-year period: three years of past expenditure, the current financial year and three years of projected expenditure. The three-year future budget refers to the next three years and is known as the medium-term expenditure framework (MTEF).
For example, the 2018 ENE documents include the audited budget outcomes for the 2014/15, 2015/16, and 2016/17 financial years, the revised estimates for the 2017/18 financial year, and initial estimates for the 2018/19, 2019/20, and 2020/21 financial years.
Expenditure by economic classification: This refers to the economic characteristics of the expenditure, including whether the expenditure happens directly in a national department, transferred to another sphere of government or to another party.
There are up to four levels of economic classification for each expenditure item (i.e. Levels 1 to 4), with higher levels representing greater degrees of granularity. The Excel and CSV documents include all four levels while the PDF documents display the first two levels.
The level 1 economic classification divides all expenditure into four main economic sections: current payments (payments made for operational requirements such as those for compensation of employees and goods and services); transfers and subsidies; payments for capital assets (assets that can be used for more than one year); and payments for financial assets (loans or equity investments in public corporations).
Expenditure by programme and sub-programme: This refers to expenditure by department programmes, which align spending to activities, performance indicators and outcomes. Each programme has a particular purpose and spending objectives. Spending can be tracked to the programme and sub-programme level.
Expenditure by government function: This aligns expenditure to one of seven government function groups. These groups can include spending across many government institutions, departments, and spheres. The function groups are also allocated to sections of the National Development Plan and medium-term strategic framework (MTSF) outcomes.
For example, expenditure on Basic Education falls within the Learning and Culture function group, Chapters 3 and 9 of the NDP, and Outcome 5 of the MTSF. The Learning and Culture function group includes the Departments of Higher Education and Training, Sport and Recreation, and Art and Culture. It also includes the SETAs, NSFAS, and the National Skills Fund.
Each department’s PDF chapter can be found on Vulekamali on the department detail page. The PDF contains narrative information and summary tables of key expenditure items over the MTEF in the following sections:
Excel versions of the tables included in the ENE PDF document can be found in Vulekamali’s department page for each department.
The Excel spreadsheets are not machine-readable as the columns have not been formatted for building pivot tables. They do however allow the user to further edit the data and to perform simple calculations. They also provide some additional detailed information that is not included in either the PDF documents or the CSV data file.
The spreadsheets include the following tables from the PDF documents:
In addition, they include tables for the following:
The CSV data file contains the raw data used to produce the ENE and expenditure tables and the Appropriation Bill. This file can imported into Excel or other analysis programmes for further analysis. The file contains the following fields


Shenzhen
Shenzhen is a major city in Guangdong Province, China. Shenzhen is located immediately north of Hong Kong Special Administrative Region. It currently also holds sub-provincial administrative status, with powers slightly less than a province.
Shenzhen was a market town called Sham Chun Hui (Shenzhen Market) of 30 000 people on the route of the Kowloon–Canton Railway. That changed momentously in 1980 when Shenzhen was designated China’s first Special Economic Zone (SEZ). According to the Government report for 2015, Shenzhen had transformed to a city with population of 10,778,900 and a metropolitan area population of over 18 million. Shenzhen was one of the fastest-growing cities in the world during the 1990s and the 2000s. Shenzhen's population boom slowed down to less than one percent per year by 2013 as the manufacturing boom ebbed in favor of other industries.
Shenzhen's modern cityscape is the result of its vibrant economy made possible by rapid foreign investment since the institution of the policy of "reform and opening" establishment of the SEZ in late 1979. Significant sums of finance have been invested into the SEZ by both Chinese citizens and foreign nationals. More than US$30 billion in foreign investment has gone into both foreign-owned and joint ventures, at first mainly in manufacturing but more recently in the service industries as well.
Shenzhen is a major financial center in southern China. The city is home to the Shenzhen Stock Exchange as well as the headquarters of numerous high-tech companies. Shenzhen ranks 19th in the 2016 edition of the Global Financial Centres Index published by the Z/Yen Group and Qatar Financial Centre Authority. It also has one of the busiest container ports in the world.
Shenzhen is a major financial center in southern China. The city is home to the Shenzhen Stock Exchange as well as the headquarters of numerous high-tech companies. Shenzhen ranks 19th in the 2016 edition of the Global Financial Centres Index published by the Z/Yen Group and Qatar Financial Centre Authority. It also has one of the busiest container ports in the world.


Welcome to Paper
Paper is a minimal note-taking application.
No Permission is need for Paper
Paper
is a free for all application and does not use your data for any purpose


"Say goodbye to those gnarly Bash scripts!" -- @arturadib, ShellJS README
Like it? Check out the project on Github
Hint:


Ruby is all about object oriented programming. With that being said, classes are a first-class objects. Ruby classes allow you to bundle up Ruby methods, so you can create many objects that operate the same way. Classes also allow you to add methods to individual objects. Classes work like an overarching object with multiple attributes. For example a person would be are overarching object and the attributes can be hair color, height, ethnicity, shoe size, eye color, etc.
First, lets talk about how classes are made. Classes are defined by the word "class". The word class will come before the class name. The first letter of the class name must always be capitalized. In our example below we have the class "Biography". First we must initialize our arguments. This will let our program know that we are focusing on these arguments. This is done with an instance method within our class. In our example we have four arguments: name, age, favorite color, and hometown. Notice that within our initialized method we set our arguments equal to the same thing, but with an @ sign in front of it. This will allow are arguments to become instance variables. Instance variables allow us to use these variables in multiple methods within a class. Instance variables differ from local variables, as local variables can can only be used within the method they are defined. Within our other instance method we are printing out the information gathered into strings for our bio.
Rather than writing out methods for each argument, we are using "attr_accessor" with will let our users read and write the arguments. This will keep our code concise and clear. I hope our little lesson was helpful in learning about classes, instance variables, and instance methods!


Toolbar test
${label}:
Toolbar from markup
Icon for "Cut":
Icon for "Copy":
Label for "Copy":
Change the state for "Bold" (but this check box is free from change in the tool bar):
"Italic" should be unselected (directly bound to the tool bar item widget):


In the classroom I answered to the name of Jessica, but as soon as we hit the playground for recess I had an alter ego, a code name. I was Crystal.
The playground was a place of transformation. We each took on new identities in our pretend games, telling our friends to call us by new names we imagined to be more adventurous-sounding than our own. As Crystal I was beautiful and super strong. I had long, flowing hair (in reality I sported a bowl cut for most of elementary school) and a pretend karate chop that was fierce. I could entertain at the most elegant tea party or run after bad guys and beat them up, just like in Charlie’s Angels.
The picture of whom I wanted so badly to be was vastly different from the little girl who always sat in the front row with the other short kids in class pictures. But calling myself by a different name produced a picture in my head that made me feel as strong and beautiful as I imagined.
The identity I created was an imaginary one. But what if there really is a new name, a new identity, for each of us—one that has been dreamed up in the mind of God? What if your future isn’t determined just by your best dream for yourself? What if you are becoming God’s best dream for you—a dream that, according to Ephesians 3:20, is far better than all we can ask or even imagine? My imaginings and dreams for my life have changed and grown with the years beyond my playground dreams, and I’ll bet yours have too. If we can dream big dreams for our-selves, imagine how great God’s dreams for us must be!
The time we’ll spend together in this study will help you learn more about God’s dreams for your life and how He wants to make them reality.
Namesake is intended to help you discover the transformational power of God through the stories of biblical characters who came to know God and whose lives and names were never the same. Over the next six weeks, you will explore the stories of Abraham and Sarah, Jacob, Naomi, Daniel, Peter, and an unnamed woman.


--- layout: post title: Rails & Spine.JS - Jasmine Testing Part 2 categories: - ruby-rails - javascript ---
So this is the third part to my mini series on Rails and Spine.JS. Part one covers an initial setup and how to include Spine.JS into your Rails project while part two is actually the first of a tome on how to test your Spine.JS application. Assuming you have covered the bases there, lets get right down to business and review some of the elegant hacks ™ yours truly came up with while testing my own Spine.jS application using Guard and Jasminerice.
So did I mention that Jasminerice is a Rails engine and that you can run your tests by accessing the /jasmine
URL in your development environment's browser? Good. As uncool as browser testing is, sometimes that it useful. For instance console.log
statements will not show up in your Guard's test output. But hopefully that is an edge case and you are really using guard-jasmine and watching your specs run in the terminal window. The question now becomes how can I leverage Jasminerice and its associated engine to really test my Spine.JS application with a full-fledged DOM? The answer is simple, let's hack the Jasminerice engine to load up our application while running the Jasmine specs.
This might be a bit contraversial (or maybe just wrong) but I would like to examine why we might hack the Jasminerice engine for a few minutes. Jasmine bills itself as behavior-driven development for JavaScript, to which I disagree. I think Jasmine first and foremost is an all-purpose testing framework. Depending on how you use it determines what it becomes. In my case, I have been doing a lot of unit testing of my Spine.JS models and supporting libs as I learn the framework and build my system. So my usage now could be called TDD at both a unit and functional level. Later on, I plan on doing higher level integration testing with Jasmine, at this time it will be my BDD tool. Normally I do not get caught up in symantics but I think it is important to understand a few lexical terms before I start showing off how I use Jasmine to test my Spine.JS application.
Now that I have set my higher order bit for Jasmine as my unit, functional and itegration testing framework for Spine.JS – I would like to show how my solution below might differ from other practices. Experienced Jasmine users rave about extensions that allow you to load HTML fixtures to functionally test units of code. In fact, the Jasminerice gem includes a custom version of the jasmine-jquery library which among other things allows you to do just that. Let me be clear on this, there is nothing wrong with that! As with all things software, proper solutions depends on what you are doing and need. In my case, I believe that testing your Spine.JS application with Rails only needs to hook into your existing application without the need for fixtures and excessive mocking and stubbing.
My basis for this argument is founded on a few principas that I believe all rich client side JavaScript applications should follow. Most important, the application is a single page load and all other calls to the server happen from that one page via AJAX. Every other part of your Rails application then becomes an API client to the JavaScript application. All views are client side only, most likely in a JST
namespace.
Turns out this is really easy since Jasminerice is just a simple Rails engine with few moving parts. It has a SpecController
that renders a basic layout which requires your application's JavaScript assets along with Jasmine. The goal is to tell it to render your single application page that loads up your Spine.JS app with a few additional hacks. When done, we are going to have Jasminerice in your full control. This means we get the same CSS and JavaScript as our real application along with a solid foundation to extend Jasminerice at our whim. This leaves us with a clean canvas suitable for Jasmine unit, functional and integraiton testing all wrapped up into one.
There we go, a simple example pulled from my current project. What we are doing here is freedom-patching that spec controller's index action to render both a template and layout from your application. I also have a MyApplication
module which I include in the Jasminerice::ApplicationHelper
for a few methods that my application view code would expect. In this case a current_user
method and some delegation of URL helpers to the root Rails application. Do not get hung up on what user is returned there too. It is mostly moot as all AJAX calls will be stubbed. Lastly, I made a jasminerice?
view helper and a matching one that I have in my own ApplicationHelper
which returns false. I will show why and how this all fits together later on.
Now that we have full control and some reflection for Jasminerice, let's reviw our appliation's main layout. Here is an example of my app/views/layouts/application.html.haml
file.
It is really that simple! It has a single condition that says if Jasminerice is loading this page, use the top level spec
CSS and JavaScript asset manifest. If not, render my main application's CSS and JavaScript manifests. You will also notice that I decouple my Spine's application initialization from the main JS files and only initialize the app on page load when not running in Jasminerce. This allows us to stub AJAX calls in specs then initialization the Spine.JS app when we are fully ready. So now, let us take a look at what both the spec/javascripts/spec.css
and spec/javascripts/spec.js
manifests may look like.
These should be self explanatory. The spec.css
manifest requires the jasmine styles, then our application's styles. It then hides the Jasmine reporter element. The spec.js
manifest does something similiar, It first requires the jasminerice manifest, a Jasmine helper called jasmine-ajax but poorly named mock-ajax, then your application's JavaScript followed by a personal Jasmine helper that we will discuss later. The last lines include all the spec files in each of the lib, models, controller and views directories located in the parent spec/javascripts
directory.
Congratulations! You are now in full control of both Spine.JS and Jasmine(rice) and how your specs are executed. You have a fully styled DOM that you can happily ignore as you test your unit code. And when the time comes, you can leverage that and you full Spine.JS application from a high level integration perspective. Tune in for my last part which will give some working examples of how to test your Spine.JS application with Jasmine.


Click here to see the number of accesses to this library.
# Polyhedron Database: # There is a file for each solid with an index number given below. # The format is nearly obvious; the details are given in poly.man # (troff/nroff input). A lot of solids have symbolic data as well as numeric data. # The numeric data is normally accurate to about 1e-11. # The solids include the regular polyhedra (0-8), Archimedean (9-21), # some prisms and anti-prisms (22-31), Archimdean duals (32-44), the Johnson # solids (all convex polyhedra with regular faces, 45-136) and some weird # solids (137-141). # Please send errors, omissions and suggestions to research!andrew. file poly.man for database manual page file poly.src for sample C code file 0 for tetrahedron file 1 for cube file 2 for octahedron file 3 for dodecahedron file 4 for icosahedron file 5 for small stellated dodecahedron file 6 for great dodecahedron file 7 for great stellated dodecahedron file 8 for great icosahedron file 9 for truncated tetrahedron file 10 for cuboctahedron file 11 for truncated cube file 12 for truncated octahedron file 13 for rhombicuboctahedron file 14 for great rhombicuboctahedron file 15 for snub cube (laevo) file 16 for icosidodecahedron file 17 for truncated dodecahedron file 18 for truncated icosahedron file 19 for rhombicosidodecahedron file 20 for great rhombicosidodecahedron file 21 for snub dodecahedron (laevo) file 22 for triangular prism file 23 for pentagonal prism file 24 for hexagonal prism file 25 for octagonal prism file 26 for decagonal prism file 27 for square antiprism file 28 for pentagonal antiprism file 29 for hexagonal antiprism file 30 for octagonal antiprism file 31 for decagonal antiprism file 32 for triakis tetrahedron file 33 for rhombic dodecahedron file 34 for triakis octahedron file 35 for tetrakis hexahedron file 36 for trapezoidal icositetrahedron file 37 for hexakis octahedron file 38 for pentagonal icositetrahedron (dextro) file 39 for rhombic triacontahedron file 40 for triakis icosahedron file 41 for pentakis dodecahedron file 42 for trapezoidal hexecontahedron file 43 for hexakis icosahedron file 44 for pentagonal hexecontahedron (dextro) file 45 for square pyramid (J1) file 46 for pentagonal pyramid (J2) file 47 for triangular cupola (J3) file 48 for square cupola (J4) file 49 for pentagonal cupola (J5) file 50 for pentagonal rotunda (J6) file 51 for elongated triangular pyramid (J7) file 52 for elongated square pyramid (J8) file 53 for elongated pentagonal pyramid (J9) file 54 for gyroelongated square pyramid (J10) file 55 for gyroelongated pentagonal pyramid (J11) file 56 for triangular dipyramid (J12) file 57 for pentagonal dipyramid (J13) file 58 for elongated triangular dipyramid (J14) file 59 for elongated square dipyramid (J15) file 60 for elongated pentagonal dipyramid (J16) file 61 for gyroelongated square dipyramid (J17) file 62 for elongated triangular cupola (J18) file 63 for elongated square cupola (J19) file 64 for elongated pentagonal cupola (J20) file 65 for elongated pentagonal rotunds (J21) file 66 for gyroelongated triangular cupola (J22) file 67 for gyroelongated square cupola (J23) file 68 for gyroelongated pentagonal cupola (J24) file 69 for gyroelongated pentagonal rotunda (J25) file 70 for gyrobifastigium (J26) file 71 for triangular orthobicupola (J27) file 72 for square orthobicupola (J28) file 73 for square gyrobicupola (J29) file 74 for pentagonal orthobicupola (J30) file 75 for pentagonal gyrobicupola (J31) file 76 for pentagonal orthocupolarontunda (J32) file 77 for pentagonal gyrocupolarotunda (J33) file 78 for pentagonal orthobirotunda (J34) file 79 for elongated triangular orthobicupola (J35) file 80 for elongated triangular gyrobicupola (J36) file 81 for elongated square gyrobicupola (J37) file 82 for elongated pentagonal orthobicupola (J38) file 83 for elongated pentagonal gyrobicupola (J39) file 84 for elongated pentagonal orthocupolarotunda (J40) file 85 for elongated pentagonal gyrocupolarotunda (J41) file 86 for elongated pentagonal orthobirotunda (J42) file 87 for elongated pentagonal gyrobirotunda (J43) file 88 for gyroelongated triangular bicupola (J44) file 89 for gyroelongated square bicupola (J45) file 90 for gyroelongated pentagonal bicupola (J46) file 91 for gyroelongated pentagonal cupolarotunda (J47) file 92 for gyroelongated pentagonal birotunda (J48) file 93 for augmented triangular prism (J49) file 94 for biaugmented triangular prism (J50) file 95 for triaugmented triangular prism (J51) file 96 for augmented pentagonal prism (J52) file 97 for biaugmented pentagonal prism (J53) file 98 for augmented hexagonal prism (J54) file 99 for parabiaugmented hexagonal prism (J55) file 100 for metabiaugmented hexagonal prism (J56) file 101 for triaugmented hexagonal prism (J57) file 102 for augmented dodecahedron (J58) file 103 for parabiaugmented dodecahedron (J59) file 104 for metabiaugmented dodecahedron (J60) file 105 for triaugmented dodecahedron (J61) file 106 for metabidiminished icosahedron (J62) file 107 for tridiminished icosahedron (J63) file 108 for augmented tridiminished icosahedron (J64) file 109 for augmented truncated tetrahedron (J65) file 110 for augmented truncated cube (J66) file 111 for biaugmented truncated cube (J67) file 112 for augmented truncated dodecahedron (J68) file 113 for parabiaugmented truncated dodecahedron (J69) file 114 for metabiaugmented truncated dodecahedron (J70) file 115 for triaugmented truncated dodecahedron (J71) file 116 for gyrate rhombicosidodecahedron (J72) file 117 for parabigyrate rhombicosidodecahedron (J73) file 118 for metabigyrate rhombicosidodecahedron (J74) file 119 for trigyrate rhombicosidodecahedron (J75) file 120 for diminished rhombicosidodecahedron (J76) file 121 for paragyrate diminished rhombicosidodecahedron (J77) file 122 for metagyrate diminished rhombicosidodecahedron (J78) file 123 for bigyrate diminished rhombicosidodecahedron (J79) file 124 for parabidiminished rhombicosidodecahedron (J80) file 125 for metabidiminished rhombicosidodecahedron (J81) file 126 for gyrate bidiminished rhombicosidodecahedron (J82) file 127 for tridiminished rhombicosidodecahedron (J83) file 128 for snub disphenoid (J84) file 129 for snub square antiprism (J85) file 130 for sphenocorona (J86) file 131 for augmented sphenocorona (J87) file 132 for sphenomegacorona (J88) file 133 for hebesphenomegacorona (J89) file 134 for disphenocingulum (J90) file 135 for bilunabirotunda (J91) file 136 for triangular hebesphenorotunda (J92) file 137 for tetrahemihexahedron file 138 for octahemioctahedron file 139 for small ditrigonal icosidodecahedron file 140 for dodecadodecahedron file 141 for echidnahedron file poly.n