Created: 5 December 2015
Last update: 16 September 2020
By: Ansonika
Thank you for purchasing my theme. If you are happy with the theme, please TAKE A MOMENT TO RATE IT from your DOWNLOADS PAGE. Thanks so much!
This theme has a fixed centered layout 1170px. It's based on Boostrap framework grid 3.3.5. It 's ULTRA RESPONSIVE!!
The css files are inside the css folder (minified versions included) .To modify colors, typografy, button style ecc....find the realtive comment line in style.css. Below how the file is organized:
1. SITE STRUCTURE and TYPOGRAPHY
- 1.1 Typography
- 1.2 Buttons
- 1.3 Structure
2. CONTENT
- 2.1 Home all versions
- 2.2 List page
- 2.3 Restaurant menu
- 2.4 Order process
- 2.5 Restaurant detail page
- 2.6 About
- 2.7 Contacts
3. COMMON
3.1 Preloader
3.2 Parallax bg
3.4 Login/Register modals
3.5 Spacing
3.6 Map
3.7 Password strength
3.8 Input form style
3.9 Collapse
3.10 Tabs
3.11 Tooltips
3.12 Blockquote
Change the logo
To change the logo, simply use your PNG24 file a or start with the psd provided. The items by defualt comes with 2 logo versions: one normal and the other one for mobiles Below how is coded. We suggest to use logo with max height 25/30px.

Set up site launch page located in coming_soon folder
Open functions.js and find this line of code:
SET THE DATE
Open site_launch/js/functions.js and find this line.
var target = new Date("July 15 2014 13:30:00 GMT+0100"); //replace with YOUR DATE SET NEWSLETTER EMAIL
Open site_launch/assets/newsletter.php and find this commented code.
//$address = "your email address";
$address =<EMAIL_ADDRESS>How MAPS works
Open js/map.js and find this line of code:
Let's take as example the map used in list_page.html. Open js/map.js. 'American': [COMMON ISSUE ON GOOGLE MAP (if the Google map works locally but does not works once the site will be online)
{
name: 'Angus Steak House',
location_latitude: 48.873792,
location_longitude: 2.295028,
map_image_url: 'img/thumb_restaurant_map.png',
name_point: 'Angus Steak House',
type_point: 'American/Mexican',
description_point:'135 Newtownards Road, Belfast, BT4
Opening time: 09am-10pm.',
url_point: 'detail_page.html'
}, American= restaurant category location_latitude= the latitude of Arc de Triomphe
location_longitude= the longitude of Arc de Triomphe
name_point= the title in info box, map_image_url: the thumbnail inside the infobox
description_point= description
type_point= restaurant type
url_point= the link in the button The marker/pins are located in img/pins folder (psd included). Each pin name have to match with the restaurant category name. In this case for example is Historic.png...so automatically every point in the same category has the same pin/marker.
In some cases Google requires an api key for the Google map.
You can create your own "Standard api key" here
by clicking on "GET KEY" BUTTON (on Authentication for the standard API—API keys section),
and follow the steps. https://developers.google.com/maps/documentation/javascript/get-api-key#key Here some additionale info on how to create an API KEY http://thegrue.org/google-map-javascript-api-key/
Then replace at the bottom of every page that use Google map, this line
 OR
with your api key included, like the example below
 Note: if you apply the api key, on your local computer the map does not load.
You shoul upload on your host. So we suggest to apply this changes after your
complete to edit the template.
Home with video header (fallback with a background image in tablets and mobile)
1)Save you mp4 and ogv video in the video folder.The name of the files must match the datasource tag:
Example
data-teaser-source="video/intro" (folder/name_files)=
intro.mp4
intro.ogv
2) To change the fallback background image (on tablets and mobiles the video bg is not supported)
open responsive.css an find this class
.hero_video { background: #333 url(../img/sub_header_home.jpg); background-size:cover; background-position: center center }
Home with text rotator
Taking as reference index_4.html, simply add your rotate words separated by commas like the example below:
Order Takeaway,Delivery,Quick Food

Home with Cookie bar
1) At the top of your page add the relative css

<link href="css/jquery.cookiebar.css" rel="stylesheet">
2) At the bottom of the page add these scripts

 3)In js/jquery.cookiebar.js you can change the default settings:
to set the link to the "Pricavy policy" page, set your link path here: policyURL: '#',
message: 'We use cookies to track usage and preferences.', //Message displayed on bar
How to use the icon font libraries
1) Choose the icon from these pages icon-pack-1.html icon-pack-2.html 2) Copy an paste the class name…for example from here icon-pack-2.html  3) You can change the size via style inline
How to change the default color scheme
The item come with a css/color_scheme.css as an example of other color scheme. You can edit this file with your color scheme, then 1) or you add this file in the head of the page as last css file 2) copy and paste the styles present in css/color_scheme.css into css/custom.css in order to avoid to edit every page (quicker solution)
THE GRID
Please refer to this documentation Boostrap
All the files you need are located in assets folder(for the coming soon is coming_soon/assets). Below an example taken from newsletter.php; all the files are well commented.
Common issues
f you doesn't recieve the email please first check:
1) Your spam folder
2) If you hosting requires special settings
3) If your email has to be managed from the same hosting provider
4) Set the permission of the asset folder on your host to 755 your FTP client
5) SMTP authentication is not supported
This theme use These Javascript (minified versions included). i've included the common theme scripts in a single file for a fast edit and load.
common_scripts.js content:
I've used the following images, icons or other files as listed.
Images are not included.
V.2.2 (16 September 2020)
HOW TO UPDATE FROM PREVIOUS VERSION 1) Updated Bootstrap Library from BS3 to BS4 a) Update the following files: css/bootstrap.css, css/bootstrap.min.css, js/bootstrap.js, js/bootstrap.min.js, js/common_scripts.js,js/common_scripts_min.js, js/functions.js. b) Update some classes in the html and the "meta" in the head of the page. Unfortunately there's no easy way to update the theme to BS4 other than doing it manually. The differences, are explained in this link or here in the left column . Mainly are in the grid classes, responsive images, visibility classes, accordions. We suggest to use this tool https://www.diffchecker.com/ and compare the html files with the new ones. c) Update css/style.css, css/admin.css, css/blog.css or compare using this tool https://www.diffchecker.com/ (we applied very minor changes) 2) Update the script on footer page to  + js/functions.js + js/pop_up_func.js (some events has changed. for example $(window).scroll(function () > $(window).on('scroll', function ()... etc) 3) Update the following files: js/common_scripts.js,js/common_scripts_min.js, js/functions.js. 4) Update the following files: js/common_scripts.js, js/common_scripts_min.js 5) Update the link in the head of the pages 6) Update the following files: js/functions.js, in particular the section /* Button show/hide map */ 7) Copy and paste the "editor" folder locate in js folder and in admin.html footer change the script
V.2.1 (5 May 2020)
V.2.0 (11 December 2018)
V.1.9 (19 September 2018)
V.1.8 (26 June 2017)
V.1.8 (26 June 2017)
V.1.7 (28 Feb 2017)
V.1.6 (5 December 2016)
V.1.5 (22 November 2016)
V.1.4 (26 July 2016)
V.2.2 (09 June 2016)
V.1.3 (07 June 2016)
V.1.2 (26 Feb 2016)
V.1.1 (7 January 2016)
Updated documentation
1) Removed @import (from March/April 2019 will no longer supported by Google Chrome Browser) How to update from previous version: in the head of every page please replace this line:
<link href="css/base.css" rel="stylesheet"> with
<link href="css/animate.min.css" rel="stylesheet">
<link href="css/bootstrap.min.css" rel="stylesheet">
<link href="css/menu.css" rel="stylesheet">
<link href="css/style.css" rel="stylesheet">
<link href="css/responsive.css" rel="stylesheet">
<link href="css/elegant_font/elegant_font.min.css" rel="stylesheet">
<link href="css/fontello/css/fontello.min.css" rel="stylesheet">
<link href="css/magnific-popup.css" rel="stylesheet">
<link href="css/pop_up.css" rel="stylesheet"> Same changes for the RTL version; for any doubt takes as reference the head of the updated pages. 2) Fixed an issue related to the page scroll on faq.html Please replace the script  on footer page 3) Fixed and issue related to the parallax header in RTL version Please update js/common_scripts_min.js
- Updated the Parallax script
- Updated the Sticky Sidebar Script How to update from previous version: 1) Update common_scripts.js 2) Update footer scripts for the following pages: - cart.html - cart_2.html - cart_detapicker.html - detail_page.html - faq.html Example of the new footer scripts

 3) Update the js files in js folder: theia-sticky-sidebar.min.js,
theia-sticky-sidebar.js, (new) ResizeSensor.min.js, (new)ResizeSensor.js Of course same for the RTL version
How to update from previous version: 1) In style.css update this class .dropdown-options .dropdown-menu
aprox line 2366 + add the new styles under the comment
/*Drop-down menu options position */ 2) In js/functions.js update the script under the comment

ADMIN SECTION: copy the following files
1) admin.html 2) fonts folder in main root folder
3) css/admin.css
4) css/dropzone.css
5) css/bootstrap3-wysihtml5.min.css 6) js/bootstrap3-wysihtml5.min.js 7) js/tabs.js
8) js/dropzone.js UPDATE JQUERY VERSION 1) change the script name in the pages 2) copy js/jquery-2.2.4.min.js UPDATE BOOTSTRAP VERSION 1) update js/common_scripts.js 2) update css/bootsrap.min.css SEARCH MODAL 1) copy the html from the pages 2) copy the css in style.css/responsive.css section "4.5 Search modal" 3) update js/common_scripts.js MENU ORDER OPTIONS DROP DOWN AND THUMBS 1) update js/functions.js (at the end there is a new script) 2) copy the css in style.css/responsive.css section "4.6 Restaurant menu" 3) copy the images SET THE OPACITY of the header images via css (homepages excluded) 1) from style.css update the id selector #subheader THE 2 NEW PAGES (submit drivers or restaurant) 1) copy the images 2) copy the css in style.css/responsive.css section "4.7 Work with us section"
1) Update the parallax script
Update the js/common_script_min.js file 2) Udpate the fixed sidebar
2.1 Copy and paste into your js folder the new script theia-sticky-sidebar.js
2.2 At the bottom of the html pages(detail_page, cart, cart_2, faq) remove the old code

 and add the new one

3.1 Wrapp the pinned element with
...
 + add to the parent top #sidebar.
Example:

 .....

1) Grid version + general updates + load more button Copy all new css form style.css/resposnive.css under the comment UPDATES or v.1.1 2) Blog section Copy the new pages + images + css/blog.css 3) Gallery in restaurant detail page 3.1 Copy the html from the page (the css in the head of the page + script call on bottom 3.2 Copy the images from img folder (slider_single_restaurant folder) 3.3 Copy the css slider-pro.min.css/slider-pro.css + images folder in css folder
+ js/jquery.sliderPro.min.js js/jquery.sliderPro.js 4) Fix the issue in leave a review form (the name of the restaurant does not come in the email)
Open assets/validate.js and add this line restaurant_name: $('#restaurant_name').val(), like ex. below $.post(action, {
restaurant_name: $('#restaurant_name').val(),
name_review: $('#name_review').val(),
email_review: $('#email_review').val(),
...
}, and in the html page change this line
<input name="restaurant_name" id="restaurant_name" type="text" value="Mexican Taco Mex" hidden=""> into <input name="restaurant_name" id="restaurant_name" type="hidden" value="Mexican Taco Mex">
Once again, thank you so much for purchasing this theme. Please take a moment to rate it from your Downloads page.
Ansonika


Successfully sent!
Thanks for your feedback (or spam?), to us! We will read it and try to respond as soon as possible


|
File Name
|
|
Size |
{{record.source.fileSize | fileSize}}
|
Uploaded |
{{record.source.lastUpdated | date:"dd/MM/yyyy h:mm a" }}
|
|
|---|
There are no attachments in this table. You can add attachments by clicking the button above.


Incresed by 60%
Decreased by 0%
Progress has finished. This is your final shift count.
Project Completed
Project "Project Name" has been completed! Some important things to note: Your transaction is due Feburary 13th, 3018. If this account dosen't have any more projects after 7 days of recieving payment, this account will be suspended until further notice. Thanks for choosing Simplex.
| Ticket No. | Subject | Assignee | Status | Last Update | Tracking ID | Priority |
|---|---|---|---|---|---|---|
| 5669 | Server maintenance | Server | Dec 5, 2017 | WD-12345 | High | |
| 5670 | High loading time | m3ntal | Dec 12, 2017 | WD-12346 | High | |
| 5671 | Website down for one week | Th3Vu1tur3 | Dec 16, 2017 | WD-12347 | Low | |
| 5672 | Project started | Simplex | Dec 3, 2017 | WD-12348 | Medium |


On July 13/14 2018 more than 40 National Geographic Explorers set out to build underwaters robots and venture into the dark and ominous waters of the Boston harbor. Here is what they did. And what they found. Click on the tiles to see the work of each team.
Teams:
Collaborators


By accessing this web site, you are agreeing to be bound by these
web site Terms and Conditions of Use, all applicable laws and regulations,
and agree that you are responsible for compliance with any applicable local
laws. If you do not agree with any of these terms, you are prohibited from
using or accessing this site. The materials contained in this web site are
protected by applicable copyright and trade mark law.
2. Use License
a. Permission is granted to temporarily download one copy of the materials
(information or software) on this web site for personal,
non-commercial transitory viewing only. This is the grant of a license,
not a transfer of title, and under this license you may not:
i. modify or copy the materials;
ii. use the materials for any commercial purpose, or for any public
display;
iii. attempt to decompile or reverse engineer any software contained
on this web site;
remove any copyright or other proprietary notations from the materials;
or
transfer the materials to another person or "mirror" the materials on
any other server.
b. This license shall automatically terminate if you violate any of these
restrictions and may be terminated by our at any time. Upon terminating
your viewing of these materials or upon the termination of this license,
you must destroy any downloaded materials in your possession whether in
electronic or printed format.
3. Disclaimer
The materials on this web site are provided "as is". our makes no warranties,
expressed or implied, and hereby disclaims and negates all other warranties,
including without limitation, implied warranties or conditions of merchantability,
fitness for a particular purpose, or non-infringement of intellectual property
or other violation of rights. Further, our does not warrant or make any
representations concerning the accuracy, likely results, or reliability of the
use of the materials on its Internet web site or otherwise relating to such
materials or on any sites linked to this site.
4. Limitations
In no event shall our or its suppliers be liable for any damages (including,
without limitation, damages for loss of data or profit, or due to business
interruption,) arising out of the use or inability to use the materials on
our's Internet site, even if our or a our authorized representative has been
notified orally or in writing of the possibility of such damage. Because some
jurisdictions do not allow limitations on implied warranties, or limitations
of liability for consequential or incidental damages, these limitations may
not apply to you.
5. Revisions and Errata
The materials appearing on this web site could include technical, typographical,
or photographic errors. our does not warrant that any of the materials on its
web site are accurate, complete, or current. our may make changes to the materials
contained on its web site at any time without notice. our does not, however,
make any commitment to update the materials.
6. Links
We are not reviewed all of the sites linked to its Internet web site and is not
responsible for the contents of any such linked site. The inclusion of any link
does not imply endorsement by our of the site. Use of any such linked web site
is at the user's own risk.
7. Site Terms of Use Modifications
We may revise these terms of use for its web site at any time without notice.
By using this web site you are agreeing to be bound by the then current version
of these Terms and Conditions of Use.
8. Governing Law
Any claim relating to this web site shall be governed by the laws of the
State of Arkansas without regard to its conflict of law provisions.
General Terms and Conditions applicable to Use of a Web Site.


The soap star was picked by the public to do the day's Bushtucker Trial but in a twist she was allowed to choose one camp member to join her.
She chose Myles Stephenson and they set off for Ol' Dingo Town where they were tasked by Ant McPartlin and Declan Donnelly to complete the Snake Hotel challenge.

Former TOWIE star Dan said: “It is horrible seeing Jac upset, she is missing the girls but she will be fine.
"Talking about them probably helped and she will share some nice memories. Before you know it they will be out in Australia waiting for Jac when she comes out.”
He added that he was “pleased she has got one of his idols Ian Wright in there” for support saying he was looking forward to having beer with him.
In last night’s trial called Snake Hotel, Jacqueline was joined by Myles Stephenson who she chose to help win meals for camp.
Myles ended up locked in a chest with snakes while a screaming Jacqueline searched a snake-filled hotel to find stars.
They managed to win all six and were then told they were joining Andy Whyment, Cliff Parisi, Kate Garraway and Andrew Maxwell in the Jungle Jailhouse, meaning the jail and camp both had six people in them.
They could decide which camp got the meals and, after playing a game of rock, paper, scissors, the food went to the Jailhouse.
Meanwhile, campmates including Ian Wright and James Haskell weren't exactly thrilled when they got to rescue new arrival Cliff Parisi from jungle jail.
Ahead of his arrival, those waiting for him at Main Camp couldn't hide their slight disappointment as they'd hoped for chocolate.
It was a little while before they got over it, with Cliff soon arriving and receiving a warm welcome.
Nadine Coyle later confessed in the Bush Telegraph: "I felt sorry for Cliff as there was high hopes for a phone call and come chocolate and then Cliff came which was great but I think there was a ‘oh, they’re back and they’ve not got any chocolate’."


| module ti.sysbios.utils.Load |
|
The Load module reports execution times and load information for threads
in a system
SYS/BIOS manages four distinct levels of execution threads: hardware
interrupt service routines, software interrupt routines, tasks, and
background idle functions. This module reports execution time and load on a
per-task basis, and also provides information globally for hardware
interrupt service routines, software interrupt routines and idle functions
(in the form of the idle task). It can also report an estimate of the
global CPU load.
[
more ... ]
#include <ti/sysbios/utils/Load.h>
Functions |
UInt32 | |
UInt32 | |
Bool | |
Bool | |
Bool | |
Void | |
UInt32 | |
Void | |
Functions common to all target modules |
|
|
Typedefs |
typedef Void | |
typedef struct | |
Constants |
extern const Bool | |
| |
| |
| |
| |
| |
extern const Bool | |
extern const Bool | |
extern const Bool | |
extern const UInt | |
DETAILS
SYS/BIOS manages four distinct levels of execution threads: hardware
interrupt service routines, software interrupt routines, tasks, and
background idle functions. This module reports execution time and load on a
per-task basis, and also provides information globally for hardware
interrupt service routines, software interrupt routines and idle functions
(in the form of the idle task). It can also report an estimate of the
global CPU load.
Execution time is reported in units of
Timestamp counts, and load is reported
in percentages.
By default, load data is gathered for Task threads.
hwiEnabled,
swiEnabled
and
taskEnabled can be used to select which
type(s) of threads are monitored. These statistics are automatically
recorded to the load module's logger instance. Users can also choose
to call
getTaskLoad,
getGlobalSwiLoad,
getGlobalHwiLoad and
getCPULoad at any time to obtain the
statistics at runtime.
The module relies on
update to be called to compute load and
execution times from the time when
update was last called. This
is automatically done for every period specified by
windowInMs in an
Idle
function when
updateInIdle is
set to true. The time between two calls to
update is called the
benchmark time window.
By passing in a function pointer of type
Void(*
postUpdate)(Void) through the
postUpdate config parameter, one can specify a
postUpdate function that is
automatically called by
update immediately after the statistics
have been computed at the end of a benchmark time window. Setting this
function allows the user to optionally post-process the thread statistics
once and only once per benchmark window.
Advanced users could optionally omit calling
update in the idle
loop by setting
updateInIdle to false. They can
then call
update somewhere else (e.g. in a periodic higher
priority Task) instead to ensure statistics are computed even when the
system is never idle.
CPU LOAD CALCULATION METHODS
The CPU load is computed in three different ways,
depending on what threads are monitored, and whether or not Power
management is used to idle the CPU when no threads are running.
Task Load Disabled and No Power Management
The first method of calculating CPU load is used when
Task load logging is disabled, ie,
taskEnabled
is false, and Power management is not used. The CPU load is computed as
the percentage of time in the benchmark window which was NOT spent in the
idle loop. More specifically, the load is computed as follows:
global CPU load = 100 * (1 - (min. time for a trip around idle loop *
# times in idle loop)/(benchmark time window))
Any work done in the idle loop is included in the CPU load - in other
words, any time spent in the loop beyond the shortest trip around the idle
loop is counted as non-idle time.
This method works fairly well if the timestamp frequency is
sufficiently high (for example, if it's equal to the CPU frequency).
The CPU load accuracy can also be affected by caching and user idle functions.
Task Load Enabled and No Power Management
The second method of calculating CPU load is used when Task load logging
is enabled (
taskEnabled = true) and Power management is not used.
In this case the CPU load is calculted as
global CPU load = 100 - (Idle task load)
This prevents any discrepancy between the calculated CPU load had we
used the first method, and 100 - the Idle task load. If Swi and
Hwi load logging are not enabled, however, time spent in a Swi
or Hwi will be charged to the task in which it ran. This will
affect the accuracy of the CPU (and Task) load, but the trade off
is more overhead to do the Hwi and Swi load logging.
Power Management Enabled
This method applies to targets that have a SYS/BIOS Power
module. It does not apply to targets
where Power management is part of TI-RTOS (e.g., CC3200).
The third method of calculating CPU load is used when Power
management is enabled. In this case, the idle loop has a
function brought in by the Power module that idles the CPU.
The timestamp timer must continue to run during idle, in order
to measure idle and non-idle time, however. This method of
calculating CPU load plugs a Hwi hook function which is run
at the beginning of every Hwi. An idle function will call
Timestamp_get32() to mark the beginning of idle time, and
when the first Hwi causes the CPU to come out of idle, the
Hwi hook function will call Timestamp_get32() to mark the end
of idle time. The idle function accumulates the idle time
and total time elapsed, and the CPU load is calculated as:
global CPU load = 100 * (1 - idle time / time elapsed)
With this method of CPU load calculation, all idle functions are
included in the CPU load. When Power is enabled, Task, Swi, and
Hwi load logging can be enabled, but you may find that the
CPU load does not equal (100 - idle task load), since the CPU load
is calculated as the percentage of time that the processor is not
powered down, while the idle task load includes powered down time
plus time executing idle functions.
Power Management Enabled outside of SYS/BIOS
Some targets have Power management support outside of SYS/BIOS. For
example, CC3200 and CC26XX devices have Power management in TI-RTOS.
In these cases, the best way to get CPU load is to make sure that
taskEnabled is set to true. Then the CPU load will be
calculated as 100 - the idle task load. However, for BIOS in ROM builds,
this method will not work, as Task hooks are not allowed. So to
use Load for any devices that support BIOS in ROM builds, make
sure the ROM build is disabled.
EXAMPLES
Configuration example: The following statements configure the Load module
to obtain output in the CCS output window. This is useful for early
development without RTA tools support in SYS/BIOS:
var System = xdc.useModule('xdc.runtime.System');
var SysStd = xdc.useModule('xdc.runtime.SysStd');
System.SupportProxy = SysStd;
var Load = xdc.useModule('ti.sysbios.utils.Load');
var LoggerSys = xdc.useModule('xdc.runtime.LoggerSys');
var Defaults = xdc.useModule('xdc.runtime.Defaults');
var Diags = xdc.useModule('xdc.runtime.Diags');
// Turn on statistics log messages for Load module
Load.common$.diags_USER4 = Diags.ALWAYS_ON;
// Define a program-wide logger to be the System Logger
Defaults.common$.logger = LoggerSys.create();
Notes on above example:
- When using the System Logger,
System_printf calls are made to produce
the output in the output window. These calls are highly intrusive
and are only suited for early development.
- Also make sure your task stack sizes are large enough when using the
System Logger - particularly the idle task
stack size since logging is done in the idle task by default.
CAVEATS
- For the module to return accurate load values, the update
function must be run at least once before the Timestamp count gets to
wrap around. This means on a platform with a 32-bit
Timestamp frequency that runs at 200 MHz,
the function must be called at least once every 21 sec. With faster
Timestamp frequencies it would have to be
called even more frequently.
- If the updateInIdle option is enabled, the
module will call update periodically according to
windowInMs. The latter must be set to a time
interval that is below
(2^32) * 1000 / (Timestamp Frequency)
milliseconds
- If the updateInIdle option is disabled, the user is
then responsible for calling update more often than the above
time interval.
- Load values might not add up to 100%. Because the module minimizes
its interrupt latency and avoids locking up the system to compute all
thread loads at once, each thread's execution time is evaluated separately
over its own time window, which could be slightly different to that of
another thread.
- When disabling monitoring of a thread type of higher priority, the
time spent in that thread type will be counted towards time spent in
threads of lower priority. E.g. if hwiEnabled and
swiEnabled are both false, then time spent in Hwi's and
Swi's will be counted towards the Tasks in which the interrupts happened.
Thus, for better accuracy, it is best to leave monitoring on for threads of
a higher priority relative to the thread type of interest.
- When Task load logging is not enabled and Power management is not used,
the implementation of getCPULoad() self-calibrates the shortest
path through the idle loop. It does this by keeping track of the shortest
time between invocations of an idle function automatically inserted by the
Load module, and assumes that to be the time it takes for one iteration
through the idle loop. Because of this, the CPU load value is only an
estimate since the idle loop might occasionally take longer to run
(e.g. due to caching effects, stalls). The reported CPU load tends to be
slightly higher than reality, especially when the load is low.
- If taskEnabled is set to true,
task name support will be automatically turned on so that the Load module
can print out the task names in its log output.
- Currently does not support Timestamp
frequencies over 4 GHz.
Calling Context
| Function | Hwi | Swi |
Task | Main | Startup |
| getCPULoad | Y | Y |
Y | N | N |
| getGlobalHwiLoad | Y | Y |
Y | N | N |
| getGlobalSwiLoad | Y | Y |
Y | N | N |
| getTaskLoad | Y | Y |
Y | N | N |
| reset | Y* | Y* |
Y | Y | N |
| update | Y* | Y* |
Y | N | N |
Definitions:
- Hwi: API is callable from a Hwi thread.
- Swi: API is callable from a Swi thread.
- Task: API is callable from a Task thread.
- Main: API is callable during any of these phases:
- In your module startup after this module is started
(e.g. Load_Module_startupDone() returns TRUE).
- During xdc.runtime.Startup.lastFxns.
- During main().
- During BIOS.startupFxns.
- Startup: API is callable during any of these phases:
- During xdc.runtime.Startup.firstFxns.
- In your module startup before this module is started
(e.g. Load_Module_startupDone() returns FALSE).
- *: Indicates only when taskEnabled
is set to false.
|
| typedef Load_FuncPtr |
|
Callback function type
typedef Void (*Load_FuncPtr)();
| struct Load_Stat |
|
Load statistics info
typedef struct Load_Stat {
UInt32 threadTime;
UInt32 totalTime;
} Load_Stat;
| config Load_LS_cpuLoad // module-wide |
|
This event logs the global CPU load as a percentage
DETAILS
This event is logged whenever the Diags.USER4 level is enabled
and the load is measured.
| config Load_LS_hwiLoad // module-wide |
|
This event logs the Hwi load
DETAILS
This event is logged whenever the Diags.USER4 level is enabled
hwiEnabled is true, and the load is measured.
This event logs the Hwi load, with the form:
<load time>,<measurement time>
Percentage load = <load time> / <measurement time> x 100%
| config Load_LS_swiLoad // module-wide |
|
This event logs the Swi load
DETAILS
This event is logged whenever the Diags.USER4 level is enabled
swiEnabled is true, and the load is measured.
This event logs the Swi load, with the form:
<load time>,<measurement time>
Percentage load = <load time> / <measurement time> x 100%
| config Load_LS_taskLoad // module-wide |
|
This event logs Task thread loads
DETAILS
This event is logged whenever the Diags.USER4 level is enabled,
taskEnabled is true, and the load is measured.
This event logs Task thread loads, with the form:
<Task handle>,<load time>,<measurement time>,<Task function pointer>
Percentage load = <load time> / <measurement time> x 100%
| config Load_hwiEnabled // module-wide |
|
Enables Hwi time monitoring
extern const Bool Load_hwiEnabled;
DETAILS
When this parameter is set to
true,
Hwi
processing time is accumulated between successive calls of
update and, as part of Load_update, an
event with this cumulative time is logged. This
time, together with the total elapsed time, is used to estimate the
CPU load due to any Hwi instances run between these updates.
| config Load_postUpdate // module-wide |
|
User function called after each load update
DETAILS
If non-NULL, postUpdate is run immediately after each update.
| config Load_swiEnabled // module-wide |
|
Enables Swi time monitoring
extern const Bool Load_swiEnabled;
DETAILS
When this parameter is set to
true, Swi processing time is
accumulated between successive calls of
update and, as
part of Load_update, an
event with this
cumulative time is logged. This time together with the total
elapsed time is used to estimate the CPU load due to any Swi
instances run between these updates.
| config Load_taskEnabled // module-wide |
|
Enables Task time monitoring
extern const Bool Load_taskEnabled;
DETAILS
When this parameter is set to
true, each Task's processing time is
accumulated between successive calls of
update and, as
part of Load_update, an
event with this
cumulative time is logged for each task. This time together with the
total elapsed time is used to estimate the CPU load due to each Task
run between these updates.
| config Load_updateInIdle // module-wide |
|
Automatically call update in Idle loop
extern const Bool Load_updateInIdle;
DETAILS
If this parameter is set to
true, an
Idle
function, which computes and updates the CPU load, is added to the
Idle loop.
| config Load_windowInMs // module-wide |
|
Load averaging period
extern const UInt Load_windowInMs;
DETAILS
When
updateInIdle is enabled, this period determines the
minimum elapsed time between updates of the load statistics in the
idle loop.
| Load_calculateLoad() // module-wide |
|
Compute total CPU load from a Load_Stat structure
DETAILS
This function computes percent load from the
values in a Load_Stat structure.
RETURNS
Load value of a Load_Stat structure in %.
| Load_getCPULoad() // module-wide |
|
Return an estimate of the global CPU load
UInt32 Load_getCPULoad();
RETURNS
CPU load in %
DETAILS
This function returns an estimate of CPU load (% utilization of the
CPU), with the idle time determined based on number of trips through
the idle loop multiplied by the shortest amount of time through the
loop.
This function requires the idle loop to be run during a benchmark time
window.
Note: Time spent in kernel while switching to a Hwi/Swi/Task is
considered non-idle time.
| Load_getGlobalHwiLoad() // module-wide |
|
Return the load and time spent in hwi's
ARGUMENTS
stat
Load and time statistics info
RETURNS
TRUE if success, FALSE if failure
DETAILS
This function computes the load and time spent in Hwi's along
with the time duration over which the measurement was done. Numbers
are reported in
Timestamp counts.
| Load_getGlobalSwiLoad() // module-wide |
|
Return the load and time spent in Swi's
ARGUMENTS
stat
Load and time statistics info
RETURNS
TRUE if success, FALSE if failure
DETAILS
This function returns the load and time spent in Swi's along with
the time duration over which the measurement was done. Numbers are
reported in
Timestamp counts.
| Load_getTaskLoad() // module-wide |
|
Return the load and time spent in a specific task
ARGUMENTS
task
Handle of the Task which time we are interested in.
stat
Load and time statistics info
RETURNS
TRUE if success, FALSE if failure
DETAILS
This function returns the load and time spent in a specific task
along with the duration over which the measurement was done. Numbers
are reported in
Timestamp counts.
Task handle must be valid and have been registered with Load.
| Load_reset() // module-wide |
|
Reset all internal load counters
DETAILS
If
taskEnabled is set to true, this function can
only be called in task context.
| Load_setMinIdle() // module-wide |
|
Set lower bound on idle loop time used to compute CPU load
UInt32 Load_setMinIdle(UInt32 newMinIdleTime);
SEE
| Load_update() // module-wide |
|
Record thread statistics and reset all counters
DETAILS
If
taskEnabled is set to true, this function can
only be called in task context.
| Module-Wide Built-Ins |
|
// Get this module's unique id
Bool Load_Module_startupDone();
// Test if this module has completed startup
// The heap from which this module allocates memory
Bool Load_Module_hasMask();
// Test whether this module has a diagnostics mask
Bits16 Load_Module_getMask();
// Returns the diagnostics mask for this module
Void Load_Module_setMask(Bits16 mask);
// Set the diagnostics mask for this module
var Load = xdc.useModule('ti.sysbios.utils.Load');
module-wide constants & types
module-wide config parameters
msg: "LS_cpuLoad: %d%%"
};
msg: "LS_hwiLoad: %d,%d"
};
msg: "LS_swiLoad: %d,%d"
};
msg: "LS_taskLoad: 0x%x,%d,%d,0x%x"
};
| struct Load.Stat |
|
Load statistics info
var obj = new Load.Stat;
obj.threadTime = UInt32 ...
obj.totalTime = UInt32 ...
C SYNOPSIS
| config Load.LS_cpuLoad // module-wide |
|
This event logs the global CPU load as a percentage
msg: "LS_cpuLoad: %d%%"
};
DETAILS
This event is logged whenever the Diags.USER4 level is enabled
and the load is measured.
C SYNOPSIS
| config Load.LS_hwiLoad // module-wide |
|
This event logs the Hwi load
msg: "LS_hwiLoad: %d,%d"
};
DETAILS
This event is logged whenever the Diags.USER4 level is enabled
hwiEnabled is true, and the load is measured.
This event logs the Hwi load, with the form:
<load time>,<measurement time>
Percentage load = <load time> / <measurement time> x 100%
C SYNOPSIS
| config Load.LS_swiLoad // module-wide |
|
This event logs the Swi load
msg: "LS_swiLoad: %d,%d"
};
DETAILS
This event is logged whenever the Diags.USER4 level is enabled
swiEnabled is true, and the load is measured.
This event logs the Swi load, with the form:
<load time>,<measurement time>
Percentage load = <load time> / <measurement time> x 100%
C SYNOPSIS
| config Load.LS_taskLoad // module-wide |
|
This event logs Task thread loads
msg: "LS_taskLoad: 0x%x,%d,%d,0x%x"
};
DETAILS
This event is logged whenever the Diags.USER4 level is enabled,
taskEnabled is true, and the load is measured.
This event logs Task thread loads, with the form:
<Task handle>,<load time>,<measurement time>,<Task function pointer>
Percentage load = <load time> / <measurement time> x 100%
C SYNOPSIS
| config Load.hwiEnabled // module-wide |
|
Enables Hwi time monitoring
Load.hwiEnabled = Bool false;
DETAILS
When this parameter is set to
true,
Hwi
processing time is accumulated between successive calls of
update and, as part of Load_update, an
event with this cumulative time is logged. This
time, together with the total elapsed time, is used to estimate the
CPU load due to any Hwi instances run between these updates.
C SYNOPSIS
| config Load.postUpdate // module-wide |
|
User function called after each load update
Load.postUpdate = Void(*)() null;
DETAILS
If non-NULL, postUpdate is run immediately after each update.
C SYNOPSIS
| config Load.swiEnabled // module-wide |
|
Enables Swi time monitoring
Load.swiEnabled = Bool false;
DETAILS
When this parameter is set to
true, Swi processing time is
accumulated between successive calls of
update and, as
part of Load_update, an
event with this
cumulative time is logged. This time together with the total
elapsed time is used to estimate the CPU load due to any Swi
instances run between these updates.
C SYNOPSIS
| config Load.taskEnabled // module-wide |
|
Enables Task time monitoring
Load.taskEnabled = Bool true;
DETAILS
When this parameter is set to
true, each Task's processing time is
accumulated between successive calls of
update and, as
part of Load_update, an
event with this
cumulative time is logged for each task. This time together with the
total elapsed time is used to estimate the CPU load due to each Task
run between these updates.
C SYNOPSIS
| config Load.updateInIdle // module-wide |
|
Automatically call update in Idle loop
Load.updateInIdle = Bool true;
DETAILS
If this parameter is set to
true, an
Idle
function, which computes and updates the CPU load, is added to the
Idle loop.
C SYNOPSIS
| config Load.windowInMs // module-wide |
|
Load averaging period
Load.windowInMs = UInt 500;
DETAILS
When
updateInIdle is enabled, this period determines the
minimum elapsed time between updates of the load statistics in the
idle loop.
C SYNOPSIS
| metaonly config Load.common$ // module-wide |
|
Common module configuration parameters
DETAILS
All modules have this configuration parameter. Its name contains the '$'
character to ensure it does not conflict with configuration parameters
declared by the module. This allows new configuration parameters to be
added in the future without any chance of breaking existing modules.
| metaonly config Load.enableCPULoadCalc // module-wide |
|
Automatically update the Load module's CPU load value in
update
Load.enableCPULoadCalc = Bool true;
DETAILS
If this parameter is set to true, Load_update() will calculate
the CPU load for the elapsed time. In some cases, the user may
prefer to use the statistics gathered by the Load module and do
the CPU load calculation themself. Set this parameter to false,
to disable the Load module's CPU load calculations. This can
improve performance of the Load_update() call.
| metaonly config Load.minIdle // module-wide |
|
Specifies the minimum time used to compute idle time
DETAILS
During CPU load measurement, the minimum time observed executing
the idle loop together with the count of the number of times the idle
loop runs id used to compute the total idle time. However, since the
_actual_ time spent in the idle loop will almost always be greater
then the observed minimum, the idle time is almost always under
estimated.
This configuration parameter can be used to compensate for this
underestimate by placing a lower bound on the minimum time used in
the CPU measurements. The minimum idle time used to compute CPU
load is guarenteed to be greater than or equal to minIdle.
generated on Wed, 28 Aug 2019 17:00:29 GMT


I plan tasks carefully.
I do things without thinking.
I make-up my mind quickly.
I am happy-go-lucky.
I don't pay attention.
I have 'racing' thoughts.
I plan trips well ahead of time.
I am self controlled.
I concentrate easily.
I save regularly.
I 'squirm' at plays or lectures.
I am a careful thinker.
I plan for job security.
I say things without thinking.
I like to think about complex problems.
I change jobs.
I act on impulse.
I get easily bored when solving thought problems.
I act on the spur of the moment.
I am a steady thinker.
I change residences.
I buy things on impulse.
I can only think about one thing at a time.
I change hobbies.
I spend or charge more than I earn.
I often have extraneous thoughts when thinking.
I am more interested in the present than the future.
I am restless at the theater or lectures.
I like puzzles.
I am future oriented.


Theory of Operations¶
Newt has a fairly smart package manager that can read a directory tree, build a dependency tree, and emit the right build artifacts.
Building dependencies¶
Newt can read a directory tree, build a dependency tree, and emit the right build artifacts. An example newt source tree is in mynewt-blinky/develop:
$ tree -L 3
.
├── LICENSE
├── NOTICE
├── README.md
├── apps
│ └── blinky
│ ├── pkg.yml
│ └── src
├── project.yml
└── targets
├── my_blinky_sim
│ ├── pkg.yml
│ └── target.yml
└── unittest
├── pkg.yml
└── target.yml
6 directories, 9 files
When newt sees a directory tree that contains a “project.yml” file it knows that it is in the base directory of a project, and automatically builds a package tree. You can see that there are two essential package directories, “apps” and “targets.”
“apps” Package Directory¶
apps
is where applications are stored, and applications are where the main() function is contained. The base project
directory comes with one simple app called blinky
in the apps
directory. The core repository @apache-mynewt-core
comes with many additional sample apps in its apps
directory. At the time of this writing, there are several example BLE
apps, the boot app, slinky app for using newt manager protocol, and more in that directory.
$ ls repos/apache-mynewt-core/apps
blecent blehr blemesh_shell blesplit boot btshell lora_app_shell ocf_sample slinky splitty trng_test
blecsc blemesh bleprph bletest bsncent ffs2native loraping pwm_test slinky_oic testbench
blehci blemesh_light bleprph_oic bleuart bsnprph iptest lorashell sensors_test spitest timtest
Along with the targets
directory, apps
represents the top-level of the build tree for the particular project, and
define the dependencies for the rest of the system. Mynewt users and developers can add their own apps to the project’s apps
directory.
The app definition is contained in a pkg.yml
file. For example, blinky’s pkg.yml
file is:
$ more apps/blinky/pkg.yml
pkg.name: apps/blinky
pkg.type: app
pkg.description: Basic example application which blinks an LED.
pkg.author: "Apache Mynewt<EMAIL_ADDRESS>pkg.homepage: "http://mynewt.apache.org/"
pkg.keywords:
pkg.deps:
- "@apache-mynewt-core/kernel/os"
- "@apache-mynewt-core/hw/hal"
- "@apache-mynewt-core/sys/console/stub"
This file says that the name of the package is apps/blinky, and it depends on the kernel/os
, hw/hal
and sys/console/stub
packages.
NOTE: @apache-mynewt-core is a repository descriptor, and this will be covered in the “repository” section.
“targets” Package Directory¶
targets
is where targets are stored, and each target is a collection of parameters that must be passed to newt in
order to generate a reproducible build. Along with the apps
directory, targets
represents the top of the build
tree. Any packages or parameters specified at the target level cascades down to all dependencies.
Most targets consist of:
- app: The application to build
- bsp: The board support package to combine with that application
- build_profile: Either debug or optimized.
The my_blinky_sim
target that is included by default has the following settings:
$ newt target show
targets/my_blinky_sim
app=apps/blinky
bsp=@apache-mynewt-core/hw/bsp/native
build_profile=debug
$ ls targets/my_blinky_sim/
pkg.yml target.yml
There are helper functions to aid the developer specify parameters for a target.
- vals: Displays all valid values for the specified parameter type (e.g. bsp for a target)
- target show: Displays the variable values for either a specific target or all targets defined for the project
- target set: Sets values for target variables
In general, the three basic parameters of a target (app
, bsp
, and build_profile
) are stored in the
target’s target.yml
file in the targets/<target-name> directory, where target-name
is the name of the target. You
will also see a pkg.yml
file in the same directory. Since targets are packages, a pkg.yml
is expected. It contains
typical package descriptors, dependencies, and additional parameters such as the following:
- Cflags: Any additional compiler flags you might want to specify to the build
- Aflags: Any additional assembler flags you might want to specify to the build
- Lflags: Any additional linker flags you might want to specify to the build
You can also override the values of the system configuration settings that are defined by the packages that your target
includes. You override the values in your target’s syscfg.yml
file (stored in the targets/<target-name> directory).
You can use the newt target config show
command to see the configuration settings and values for your target, and use
the newt target set
command to set the syscfg
variable and override the configuration setting values. You can
also use an editor to create your target’s syscfg.yml
file and add the setting values to the file.
See Compile-Time Configuration and Initialization for more information on system configuration settings.
Resolving dependencies¶
When newt builds a project, it will:
- find the top-level project.yml file
- recurse the packages in the package tree, and build a list of all source packages
Newt then looks at the target that the user set, for example, blinky_sim:
$ more targets/my_blinky_sim/target.yml
### Target: targets/my_blinky_sim
target.app: "apps/blinky"
target.bsp: "@apache-mynewt-core/hw/bsp/native"
target.build_profile: "debug"
The target specifies two major things:
- Application (target.app): The application to build
- Board Support Package (target.bsp): The board support package to build along with that application.
Newt builds the dependency tree specified by all the packages. While building this tree, it does a few other things:
- Sets up the include paths for each package. Any package that depends on another package, automatically gets the include directories from the package it includes. Include directories in the newt structure must always be prefixed by the package name. For example, kernel/os has the following include tree and its include directory files contains the package name “os” before any header files. This is so in order to avoid any header file conflicts.
$ tree repos/apache-mynewt-core/kernel/os/include/
repos/apache-mynewt-core/kernel/os/include/
└── os
├── arch
│ ├── cortex_m0
│ │ └── os
│ │ └── os_arch.h
│ ├── cortex_m4
│ │ └── os
│ │ └── os_arch.h
│ ├── mips
│ │ └── os
│ │ └── os_arch.h
│ ├── sim
│ │ └── os
│ │ └── os_arch.h
│ └── sim-mips
│ └── os
│ └── os_arch.h
├── endian.h
├── os.h
├── os_callout.h
├── os_cfg.h
├── os_cputime.h
├── os_dev.h
├── os_eventq.h
├── os_fault.h
├── os_heap.h
├── os_malloc.h
├── os_mbuf.h
├── os_mempool.h
├── os_mutex.h
├── os_sanity.h
├── os_sched.h
├── os_sem.h
├── os_task.h
├── os_test.h
├── os_time.h
└── queue.h
12 directories, 25 files
- Validates API requirements. Packages can export APIs they implement, (i.e. pkg.api: hw-hal-impl), and other packages can require those APIs (i.e. pkg.req_api: hw-hal-impl).
- Reads and validates the configuration setting definitions and values from the package
syscfg.yml
files. It generates asyscfg.h
header file that packages include in the source files in order to access the settings. It also generates a system initialization function to initialize the packages. See Compile-Time Configuration and Initialization for more information.
In order to properly resolve all dependencies in the build system, newt recursively processes the package dependencies until there are no new dependencies. And it builds a big list of all the packages that need to be build.
Newt then goes through this package list, and builds every package into an archive file.
NOTE: The newt tool generates compiler dependencies for all of these packages, and only rebuilds the packages whose dependencies have changed. Changes in package & project dependencies are also taken into account. It is smart, after all!
Producing artifacts¶
Once newt has built all the archive files, it then links the archive files together. The linkerscript to use is specified by the board support package (BSP.)
The newt tool creates a bin directory under the base project directory, and places a target’s build artifacts into the
bin/targets/<target-name>/app/apps/<app-name> directory, where target-name
is the name of the target and app-name
is the name of the application. As an example, the blinky.elf
executable for the blinky
application defined by
the my_blinky_sim
target is stored in the bin/targets/my_blinky_sim/app/apps/blinky directory as shown in the following source tree:
$tree -L 9 bin/
bin/
└── targets
├── my_blinky_sim
│ ├── app
│ │ ├── apps
│ │ │ └── blinky
│ │ │ ├── apps
│ │ │ │ └── blinky
│ │ │ │ └── src
│ │ │ │ ├── main.d
│ │ │ │ ├── main.o
│ │ │ │ └── main.o.cmd
│ │ │ ├── apps_blinky.a
│ │ │ ├── apps_blinky.a.cmd
│ │ │ ├── blinky.elf
│ │ │ ├── blinky.elf.cmd
│ │ │ ├── blinky.elf.dSYM
│ │ │ │ └── Contents
│ │ │ │ ├── Info.plist
│ │ │ │ └── Resources
│ │ │ │ └── DWARF
│ │ │ ├── blinky.elf.lst
│ │ │ └── manifest.json
│ │ ├── hw
│ │ │ ├── bsp
│ │ │ │ └── native
│ │ │ │ ├── hw_bsp_native.a
│ │ │ │ ├── hw_bsp_native.a.cmd
│ │ │ │ └── repos
│ │ │ │ └── apache-mynewt-core
│ │ │ │ └── hw
<snip>
As you can see, a number of files are generated:
- Archive File
- *.cmd: The command use to generate the object or archive file
- *.lst: The list file where symbols are located
Note: The *.o object files that get put into the archive file are stored in the bin/targets/my_blinky_sim/app/apps/blinky/apps/blinky/src directory.
Download/Debug Support¶
Once a target has been built, there are a number of helper functions that work on the target. These are:
- load Download built target to board
- debug Open debugger session to target
- size Size of target components
- create-image Add image header to target binary
- run The equivalent of build, create-image, load, and debug on specified target
- target Create, delete, configure, and query a target
load
and debug
handles driving GDB and the system debugger. These
commands call out to scripts that are defined by the BSP.
$ more repos/apache-mynewt-core/hw/bsp/nrf52dk/nrf52dk_debug.sh
<snip>
. $CORE_PATH/hw/scripts/jlink.sh
FILE_NAME=$BIN_BASENAME.elf
if [ $# -gt 2 ]; then
SPLIT_ELF_NAME=$3.elf
# TODO -- this magic number 0x42000 is the location of the second image
# slot. we should either get this from a flash map file or somehow learn
# this from the image itself
EXTRA_GDB_CMDS="add-symbol-file $SPLIT_ELF_NAME 0x8000 -readnow"
fi
JLINK_DEV="nRF52"
jlink_debug
The idea is that every BSP will add support for the debugger environment for that board. That way common tools can be used across various development boards and kits.


Server with ID {{ serverId }} status is {{ serverStatus}}.
{{ serverName }}
Server has been created
Entered user name is {{ userName }}


SPRINT 1 - TIME AND HABITS
Time and Habits
27.FEB.2016
Which timebox and habits techniques did you try?
I tried the Pomodoro and Timebox technique’s.
What did you find interesting?
I felt most of the resources were useful in way or another. However one of favourites was the “Make it big by starting small” article.
What worked for you?
Toggl worked really well for me this week. I found looking at the report summary every night really helpful. It allowed me to easily assess how I had been using my time that day, and see if there were any patterns or habits growing.
Which will you experiment further with?
I plan to experiment further with the Pomodoro technique and some of the "Making it big by starting small" concepts. My aim is to implement the 6 step process of Pomodoro technique with a time limit that works best for me.


Mushrooms - P. semilanceata, 4-HO-MiPT & Cannabis
Mind state: calm, excited and have been all day in happy mood.
Food in stomach: Stomach is empty
Substance's: 20 Psilocybe semilanceata, 15mg 4-HO-MiPT and cannabis
There are first mushrooms (Psilocybe semilanceata) growing in my area. After 2.5h hunt with 2 friends, I was able to find 20 of them. Total amount was 130 shrooms from which 20 was mine and 110 went to 3 friends. I had other things to do when they had trip. So, I ingested my 20 next day.
I ingested them 20:00PM. Within 20 minutes, I was feeling first effects. I was more happy and occasionally I laughed for no reason. My motor skills were little off, cause I had trouble with balance. Body felt heavy and numb. So I lie down and watch TV. Colors are brighter and little movement in periphery vision. Textures have more depth and when I look in one point, my vision turns to tunnel where I don't see out side of it. I was able to do this by will. There are patterns on things and time to time one area is covered with one color (mostly red).
Around 70mins after ingestion, I went outside to have a cigg. It is pretty dark now and it is getting more darker. I look up the sky and see the most amazing sight I've ever seen. Sky is full of stars and it looks like I'm in a dome. When I first saw this, a rush of euphoria passes my body. I watch in sky around 4min and then my neck starts to hurt.
When 90mins had passed I was still at same level and I felt it is not going to be more intense than that. So, I take my 15mg 4-HO-MiPT.
Now, after 15min's, things are getting more intense. I don't know how to rate my decision about taking 15mg of 4-Ho-MiPT. I guess it was not smart thing to do, but I don't regret it.
With another 5min, I felt that I'm in intense ride. I think maybe shrooms did get more intense or was miprocin coming on strong. Other thing that may have contributed to intensity, is that I was already in altered state and miprocin came on too fast.
It's 2h after taking shrooms and 30min after miprocin. Visuals got intense and my heart was beating very fast. I also got very hot like first time and so I take off my t-shirt.
--First U-turn
Now comes u-turn to trip. I don't know why, but I was launched to uncomfortable mental space. I got worried about my heart beat and how hot I was.  I was able to maintain clear head and didn't panic. I went to my brother's room to tell him about what was happening. Hearing his voice was calming. I told him that I stay with him and that he talks to me. When he stopped talking, I was again starting to panic. I felt like something in my head is shrinking. Like there was something really physically happening. Little after that, I got dizziness. I went to window to get cold and fresh air. That helped and I sit down again. The time-dilation is very huge. It is worst thing that can happen to person having bad time.
--Second U-turn
I then started to walk around the house. I was brought by every minute to more satisfied state of mind. Soon, I wasn't having a bad time and started to enjoy the trip. The bad time last around 25min. For me, it felt more like hour and half.
I put on some music (Pink Floyd) and it sounded relaxing and great. About the middle of the first song, I started to experience most interesting audio distortion ever. Music sounded like it has separate layers. That isn't the best description. I couldn't belive that music can sound like it did. More of, it didn't sound like a song. It was like different instruments was playing in chaotic order. Like they had their own rhythm that they followed. Visuals were behind anything I've seen. Patterning, colors and air was full of sparkle. It was so beautiful to look different color of sparkles. My mind was racing and every thought that came to mind was analyzed in detail and in every aspect. There was random thought that came to mind, but 85% was about human nature. I made more realizations than I've made in my whole life.
Soon after that when I got used to trip intensity and it stoped growing, I decided to go outside to have another cigg. When I closed the door, I was really shocked. I live away from town, so there was no cars and people. Just nature. It was very dark and I couldn't see my own hand half meter away. Beside that, nature was so alive that I believed I saw other being's out there with me. Everything was alive. Was it ground, air, trees or anything. I felt like they have their own 'spirit'. I knew that there wasn't nothing to worry about, cause I felt oneness with nature (I think it was shrooms that made me feel so). When I finished the cigg and admiring the nature, I went back inside.
Since I fasted long time, I went to kitchen to have sandwich and yoghourt. Every bite I made from sandwich and sip from yoghourt flooded my senses with energy rush. Visual field got full of crystal clear sparkles and it felt so good to eat.
I then smoke a bong of best weed I have had. This made my ability to analyze human nature more stronger. I saw my thoughts visually. Every personality quality had its own visual make-up. Every quality was torn to its real meaning and essence. I can't bring any specific thought I had, cause when one was finished, another was taken and there was so many of them. I say again... my mind was racing at the speed of god.
This lasted quite long time. Until I decided to smoke another bong and have cigg. When I got outside, it wasn't like before. Nature was still quite alive, but something was missing. But one interesting thing was that I didn't want to stop walking. Walking was also weird. I felt like my feet's are sinking to ground. Like there were little holes where my feet was falling. Being outside felt so good so I had another cigg. Looking trees (in front of city light's in sky) was beautiful.
From now on, I spent my trip listening music and later watching TV. The main subject was still human nature. I experienced before one 'important' realization about main quality/essence of human nature, but it is hazy.
--Day after
I felt worn out. I spent most of the day recovering from the experience. Watching TV and laying in bed.  There was like void in my head. Much less thoughts than normal.
--Two day's after
Still had this weird feeling in my head. I still tried to figure out what had happened. This trip was quite a shock to my mind.
-------------
Afterthought...
First, I'm still try to figure out this trip. The first part of the trip was quite shocking. This combination was very interesting. I don't think I would do this again, but I'm thankful it happened. I made so many realizations about life and especially about human nature. Even if I don't remember most of them, they shifted my perspective how I view the world. Visuals that I got after ingesting 4-HO-MiPT, was mind blowing. I have to also admit like many other, that this substance has the feeling of rolling. It's quite euphoric. I felt like the euphoria come from my thoughts and mind state. This was second time I tried miprocin and got so hot. Weird reaction. This is my favorite substance so far. This first time on shrooms gave me good picture about them. It was low-medium dose, but now I know why others like it so much. Total duration (since ingesting mushrooms) was 8h. I went to bed 04:00AM and sleep came with no problem.
I wish I could remember more from the trip and that I could write much better.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


"x" "1" "NARBONNE,JF, CASSAND,P, ALZIEU,P, GROLIER,P, MRLINA,G AND CALMON,JP,STRUCTURE-ACTIVITY RELATIONSHIPS OF THE N-METHYLCARBAMATE SERIES IN SALMONELLATYPHIMURIUM, MUTAT. RES. 191(1):21-27, 1987"


The Beta Pi Chapter of Beta Theta Pi was established in 1889, fifty years after Beta Theta Pi was founded. There are 137 chapters nationwide, and over 131,000 living alumni of Beta Theta Pi. The Beta Pi Chapter of Beta Theta Pi is a part of the Interfraternity Council at the University of Minnesota, and has been chartered, uninterrupted, for 126 years.
Beta Pi focuses on being active in the community, academics, and challenging ourselves to become better men every day. The house (shown on the left) was orginally built in 1927, and recently went through a $1 Million rennovation which was fully funded by our alumni.
Beta throws one major philanthropy event in the fall and spring. In the fall, our event, 'Light the Row', is a holiday themed event where guests can come decorate cookies, drink hot chocolate and cider, and participate in some friendly contests! We also decorate the outside of the house with lights and have a mini light show where the lights blink with the holiday music that is playing. In the spring, our event, 'Beta Theta Pies', is where guests can come get a slice of pie and then throw a whipped cream pie at any Beta of their choice's face! All of our proceeds go to the Cystic Fibrosis Foundation.
Beta is often coordinating exchanges with other fraternities and sororities. This allows for strong relations with other members of greek life. Some events we've had in the past include: karaoke, barbeques, movie nights, etc.
Joining Beta doesn't mean you can't join other student groups; in fact, we encourage it. We believe that joining multiple student groups allows for our members to become more well-rounded and getting the most out of their college experience instead of being one-dimentional with just Beta. In the past, many members have held top positions on campus for many different groups, including student body president.


Issue 2638: Show info popup when hovering a breakpoint / execution indicator icon
Steps to reproduce
- Open Firebug
- Enable and switch to the Script panel
-
Right-click on the breakpoint column at line 10 (
a += i;
)
Breakpoint condition editor will be opened
- Enter
i == 5
into the condition editor and hit Enter
- Hover the breakpoint inside the breakpoint column
Expected result
- A popup appears displaying the breakpoint condition


Changing the Subject
From questions that a few of you have been asking over the past few days, it seems that we are not all entirely comfortable with changing the subject of formulae. I have quickly put together the below as a bit of a crash course.
Let me know if it is helpful, or if you want to work through with me in more detail.
Changing the subject
Sometimes a formula can be rearranged to a more useful format. For example, the formula
[ F = 1.8C + 32]
Which converts from degrees Centigrade to degrees Fahrenheit. It can be rearranged to the form
$C = \ldots$
to enable the temperature in degrees Fahrenheit to be converted to degrees Fahrenheit. We say that the formula has been rearranged to make $C$ the subject of the formula.
Worked Example One
Rearrange the formula
to make $C$ the subject of the formula. The aim is to remove all terms from the right hand side of the equation except from the $C$. We do this by doing inverse operations.
Solution
First, subtract $32$ from both sides of the equation. It is always easier to do addition and subtraction first.
Then dividing by 1.8 gives
So the formula can be rearranged as
Worked Example Two
Make $v$ the subject of the formula
Solution
Now, fractions make our lives difficult, so it is normally easiest to get rid of any fractions first. To do this, multiply both sides of the equation by two
Our $u$ is now stuck inside the brackets, so to unwrap it we need to expand brackets, giving
This is now exactly the same (with slightly different numbers…) as Example One. We subtract $ut$ from both sides of the formula
Then dividing by $v$ gives
Exercises
Make $x$ the subject in each of the following formulae.


@@include('./includes/header.html', { "title": "Cookie use - Let's Webauth", "description": "Cookie use on Let's Webauth - the WebAuthn tutorial site." })
This site uses Google Analytics for usage tracking and metrics. As per the official documentation, the following cookies are used.
| Cookie Name | Expiration Time | Description |
|---|---|---|
| _ga | 2 years | Used to distinguish users. |
| _gid | 24 hours | Used to distinguish users. |
| _gat | 1 minute | Used to throttle request rate. If Google Analytics is deployed via Google Tag Manager, this cookie will be named _dc_gtm_<property-id>. |
| AMP_TOKEN | 30 seconds to 1 year | Contains a token that can be used to retrieve a Client ID from AMP Client ID service. Other possible values indicate opt-out, inflight request or an error retrieving a Client ID from AMP Client ID service. |
| _gac_<property-id> | 90 days | Contains campaign related information for the user. |


10 snacks for only $10 PLUS $10 off your first Snack Club order ($30 value!)
join the KIND Snack Club for 5% off plus exclusive perks!
KIND has always been committed to bringing you wholesome and delicious snacks. The first and predominant ingredient in all of our snacks will always be a nutrient-dense food like nuts, whole grains or fruit.
LEARN MOREWe believe that people don’t need to choose between health and taste when it comes to snacking. We use high-quality, delicious ingredients that taste good, energize you and help keep you satisfied.
GIVE KIND A TRYtake a look at everything we put in our snacks
Regardez qui nous sommes, ce que nous défendons
et ce que nous faisons ...


Make sure your device is not in USB Mode. Remember, when you plug in the USB cord, you need to choose Just Charge/Close.
A powered computer USB port is required, so yo may need to try a different USB port on your computer to connect to.
Choose the "Reinstall Novacom" option on the error and see if that fixes the connection issue
Try restarting the novacom driver service.
StartMenu->Run then type "services.msc" and hit OK. Look for "Palm Novacom", right-click on it, and choose to restart (or start if that's the only option).
Open up Terminal and enter the following commands:


{% extends 'layout.html' %} {% block pageTitle %} NHS.UK prototype kit {% endblock %} {% block beforeContent %} {% endblock %} {% block content %}
Based on what you’ve told us and where you’ve been, you’re at low risk of catching coronavirus (COVID-19).
You don’t need to speak to anybody right now as you:
some other stuff


|
tesseract
5.0.0-alpha-619-ge9db
|
Go to the source code of this file.
Functions | |
extract_edges | |
Run the edge detector over the block and return a list of blobs. | |
| void | extract_edges (Pix *pix, BLOCK *block) |
outlines_to_blobs | |
Gather together outlines into blobs using the usual bucket sort. | |
| void | outlines_to_blobs (BLOCK *block, ICOORD bleft, ICOORD tright, C_OUTLINE_LIST *outlines) |
fill_buckets | |
Run the edge detector over the block and return a list of blobs. | |
| void | fill_buckets (C_OUTLINE_LIST *outlines, OL_BUCKETS *buckets) |
empty_buckets | |
Run the edge detector over the block and return a list of blobs. | |
| void | empty_buckets (BLOCK *block, OL_BUCKETS *buckets) |
capture_children | |
Find all neighbouring outlines that are children of this outline and either move them to the output list or declare this outline illegal and return false. | |
| bool | capture_children (OL_BUCKETS *buckets, C_BLOB_IT *reject_it, C_OUTLINE_IT *blob_it) |
| bool capture_children | ( | OL_BUCKETS * | buckets, |
| C_BLOB_IT * | reject_it, | ||
| C_OUTLINE_IT * | blob_it | ||
| ) |
Definition at line 435 of file edgblob.cpp.
| void empty_buckets | ( | BLOCK * | block, |
| OL_BUCKETS * | buckets | ||
| ) |
Definition at line 393 of file edgblob.cpp.
| void extract_edges | ( | Pix * | pix, |
| BLOCK * | block | ||
| ) |
Definition at line 329 of file edgblob.cpp.
| void fill_buckets | ( | C_OUTLINE_LIST * | outlines, |
| OL_BUCKETS * | buckets | ||
| ) |
Definition at line 368 of file edgblob.cpp.
Definition at line 349 of file edgblob.cpp.


{% extends "layouts/_block_content.html" %} {% set page_title = "Too many attempts" %} {% block main %}
You've tried to reset your password too many times. You can request a new link after 24 hours.
We can also help you to reset your password. Please call us on 0300 1234 931 or send an email to surveys@ons.gov.uk


{% extends "base.html" %} {% block content %}
Hello, Adriel. Beautiful day to meet someone new, eh?
And every tomorrow* after that.
*Weekdays only, until the end of my batch or until I opt out.
CoffeeBot has introduced you on Zulip. Go find a time to meet IRL!
Inspirational quote
Yesterday - Mike Gerson
2 days ago - Alberto Torres
Monday - Alex Berke
Fri 3/24 - AJ Jordan


Amazon Web Services
This example shows how to communicate with AWS using MQTT. You'll also need to set up a Network Interface connection on the device such as WiFi to Connect to AWS in your program.
Tip
Needed NuGets: GHIElectronics.TinyCLR.Networking.Mqtt
Add using statement: using System.Security.Cryptography.X509Certificates;
var iotEndPoint = "Need your Rest API Endpoint";
var iotPort = 8883;
var deviceId = "Need your Device ID";
var topicShadowUpdate = string.Format("$aws/things/{0}/shadow/update", deviceId);
var topicShadowGet = string.Format("$aws/things/{0}/shadow/get", deviceId);
var message = "{\"state\":{\"desired\":{\"My message\":\"Hello World"}}}";
var caCertSource = UTF8Encoding.UTF8.GetBytes("Need AWS root CA certificate");
var clientCertSource = UTF8Encoding.UTF8.GetBytes("Need your AWS client CA certificate");
var privateKeyData = UTF8Encoding.UTF8.GetBytes("Need your AWS private key");
X509Certificate CaCert = new X509Certificate(caCertSource);
X509Certificate ClientCert = new X509Certificate(clientCertSource);
ClientCert.PrivateKey = privateKeyData;
var clientSetting = new MqttClientSetting {
BrokerName = iotEndPoint,
BrokerPort = iotPort,
CaCertificate = CaCert,
ClientCertificate = ClientCert,
SslProtocol = System.Security.Authentication.SslProtocols.Tls12
};
var iotClient = new Mqtt(clientSetting);
iotClient.PublishReceivedChanged += (p1, p2, p3, p4, p5, p6) => {
Debug.WriteLine("Received message: " + Encoding.UTF8.GetString(p3));
};
iotClient.SubscribedChanged += (a, b) => { Debug.WriteLine("Subscribed"); };
Debug.WriteLine("Connecting....")
var connectSetting = new MqttConnectionSetting {
ClientId = deviceId,
UserName = null,
Password = null
};
var connectCode = iotClient.Connect(connectSetting);
ushort packetId = 1;
iotClient.Subscribe(new string[] { topicShadowGet }, new QoSLevel[]
{ QoSLevel.LeastOnce }, packetId++);
iotClient.Publish(topicShadowUpdate, Encoding.UTF8.GetBytes(message),
QoSLevel.MostOnce, false, packetId++);
We need a few things to complete the code sample that we'll get from AWS. We need an iotEndPoint, a deviceId, an AWS root certificate, a client certificate and a private key. First, you'll need to create an AWS account.
Once you've created your account, we need to find the service to set up our device. On the AWS Management Console, search for the service 'IoT Core' and select it.
Before we add our device, we need to create a Policy that the device will use. From the side menu under the 'Secure' tab click 'Polices' click on the button to create a new policy. Name your policy and then click on advanced mode. Paste the code found below in the code window. Then click the 'Create' button. We'll attach the policy to the device later.
Paste this code in the above window.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iot:Publish",
"iot:Subscribe",
"iot:Connect",
"iot:Receive"
],
"Resource": [
"*"
]
}
]
}
Now we need to create our IoT device within AWS. Click on the 'Manage' Dropdown and select 'Things', then click on 'Register a thing'
Next, we click on 'Create a single thing'
Now we'll create a Name for our IoT device and add it to the 'Things' registry. This will be the deviceId we will use in the code sample. There are other options available that can be added, but in this tutorial, we only need to create a 'Name' and click 'NEXT'
The next page is where we'll create the CA Certificates, we need to add to our projects resources. In this case we can use the 'One-Click certificate creation'. Click on 'Create certificate'
Next we need to download the CA Certificates we need. We need 'A certificates for this thing' and 'the private key', we don't need to download the public key for this project. You'll also need an AWS root certificate, you can follow the link to download RSA 2048 bit key: Amazon Root CA 1. Next we need to click on the 'Activate' button to activate the certificates we created, then click 'Attach a policy'
Check the box for the 'Policy' we created earlier, and then click the 'Register Thing' button.
Add the 3 Certificates we downloaded to Resources in our project and SAVE your project.
Inside the 'Things' registry list click on the device you just created.
Once you're on your devices dashboard, click on the 'Interact' tab. This will give you the iotEndPoint we'll need for our code. Copy the code...
...and paste it into the code as shown below. Also add the name of your device to the variable deviceId.
var iotEndPoint = "a13gxtasnslh-ats.iot.us-west-2.amazonaws.com";
var iotPort = 8883;
var deviceId = "MyDevice";
Finally, we need to link the CA Certificates we placed in our project resources to our code as shown in the example below.
var caCertSorce = Resources.GetBytes(Resources.BinaryResources.AmazonRootCA1);
var clientCertSource = Resources.GetBytes(Resources.BinaryResources._3a59c69926_certificate_pem);
var privateKeyData = Resources.GetBytes(Resources.BinaryResources._3a59c69926_private_pem);
You can now deploy your program in Visual Studio, to connect your device to AWS. Clicking on the 'Activity' Tab on our device dashboard will show the active connection.
We view the messages being sent from our IoT device to AWS by clicking on the 'Shadows' Tab, then click 'Classic Shadows'. The message in the window is sent from our device...
We can edit the message being sent from the device in Visual Studio by changing the message in this line of our code.
var Message = "{\"state\":{\"desired\":{\"My message\":\"Hello World\"}}}";


Seattle Sales statement
Tokyo Sales statement
Dubai Sales statement
Paris Sales statement
Lima Sales statement


No more uploading personel files, expert pdf without connection.
Straight to the point design, we took out all the unnecessary stuff.
No more laggy processes, do your pdf staf in just seconds.
split, merge, crop, convert to images or from images to single pdf
Support notifications Windows 10.
No need any connections or server to work, all stuff working in your pc .
No data collections,No files sanded to server or uploaded.
PDF-tools is a collections of tools that work fine for pdf.
It can be used to split, crop, merge, convert to images, or from images to single pdf file.
PDF-tools is currently available for Windows user. We'd be rolling out support for Linux and Mac OS soon.
After downloading the app, navigate to the folder and locate the "PDF-tools" executable, you can run it by just double-clicking on it. if you downloaded the zip file just decompress the zip file and double-clicking on PDF-tools.exe.
PDF-tools is totally FREE, but we're open to donations.
Complaints, issues, feedbacks and recommendations should be mailed to the Developer or if you're social, drop a tweet to @Youssef HOUMMAD


| Path: | lib/ziya/components/series_explode.rb |
| Last Update: | Thu May 22 00:36:21 -0600 2008 |
—————————————————————————— Sets up the ‘exploding’ factor on a particular chart. Only applies to pie, scattered and line charts.
Applies to pie, line, and scatter charts only. In pie charts, it sets which pie wedge separates from the pie for emphasis. In line and scatter charts, it sets which line or point is increased in thickness or size for emphasis.
:
See www.maani.us/xml_charts/index.php?menu=Reference&submenu=series_explode for additional documentation, examples and futher detail.
| Author: | Fernand Galiana |
| Date: | Dec 15th, 2006 |


We are all very different. We were born in different cities, at different times, we love different music, food, movies. But we have something that unites us all. It is our company. We are its heart. We are not just a team, we are a family.
Getting to know people is hard, but getting to know people online, is even harder.Human beings are not one-dimensional. We all sound, look, behave, and even smell differently, but these traits (some, thankfully) can't be experienced from behind a cold, digital screen.
No matter how advanced technology gets, there will always be a divide keeping us from truly knowing a person we've only spent time with online. Unfortunately for marketers, the same difficulties could be said about brands. In fact, it's often harder to establish a personal connection with brands across the wide expanse of cyberspace.
- Riteesh Ram Chander
- Indradhar Paka
- Sai Venkat Lakamsani
- Kosana Sai Venkata Pavan Kumar


Google Black Friday deals: $200 off Pixel 4 series, $100 off Pixel 3a
Black Friday is well over a week away, but that hasn’t stopped retailers from listing their discounted wares anyway. We’ve already seen Walmart list its promotions, and now it’s Google’s turn to do the same.
The Google Store has detailed its Black Friday listing of discounted products, and it ranges from smartphones and smart speakers to Pixel Slates and Nest goodies. We’ve gathered all the prominent deals over here.
It’s also worth noting that the Pixel 4 and Pixel Slate deals actually go into effect from November 24, while the other deals all kick off on Thursday, November 28. Read on for all the major Google Store deals on Black Friday.
Computing
Smartphones
Smart home
- Chromecast for $25 (save $10)
- Nest Hello Doorbell for $149 (save $80)
- Nest Cam Outdoor from $159 (save $40)
- Nest Hub for $79 (save $50)
- Nest Hub Max for $199 (save $30)
- Nest Mini second generation for $29 (save $20)
- Nest Protect for $99 (save $20)
- Nest Learning Thermostat for $179 (save $70)
- Nest Thermostat E for $139 (save $30)
- Nest Wi-Fi and point for $229 (save $40)
- Nest Wi-Fi and Stadia Premiere Edition for $398 (save $80)
There are a few more discounted listings on the Google Store website, including $60 off a Nest x Yale Lock, and $100 off Google Home Max. Spotted any other Google-related discounts? Let us know in the comments!


You
Computer
Instructions:
Press "A" to move left, "D" to move right, "W" to jump and "P" to hit the Monster.
It will chase you outside the screen


Sample run of chapter's interpreter examples
// In file packages-and-imports/ex1/Ex1.scala package bobsrockets.navigation class Navigator
package bobsrockets.navigation: class Navigator
package bobsrockets: package navigation: // In package bobsrockets.navigation class Navigator package launch: // In package bobsrockets.navigation.launch class Booster
// In file packages-and-imports/ex4/Ex4.scala package bobsrockets: package navigation: class Navigator: // No need to say bobsrockets.navigation.StarMap val map = new StarMap class StarMap class Ship: // No need to say bobsrockets.navigation.Navigator val nav = new navigation.Navigator package fleets: class Fleet: // No need to say bobsrockets.Ship def addShip = new Ship
package bobsrockets: class Ship package bobsrockets.fleets: class Fleet: // Doesn't compile! Ship is not in scope. def addShip = new Ship
// In file packages-and-imports/launch.scala // In file launch.scala package launch: class Booster3 // In file bobsrockets.scala package bobsrockets: package launch: class Booster2 package navigation: package launch: class Booster1 class MissionControl: val booster1 = new launch.Booster1 val booster2 = new bobsrockets.launch.Booster2 val booster3 = new _root_.launch.Booster3
package bobsrockets package fleets class Fleet: // No need to say bobsrockets.Ship def addShip = new Ship
// In file packages-and-imports/Fruits.scala package bobsdelights abstract class Fruit( val name: String, val color: String ) object Fruits: object Apple extends Fruit("apple", "red") object Orange extends Fruit("orange", "orange") object Pear extends Fruit("pear", "yellowish") val menu = List(Apple, Orange, Pear)
// In file packages-and-imports/Ex5.scala // easy access to Fruit import bobsdelights.Fruit // easy access to all members of bobsdelights import bobsdelights.* // easy access to all members of Fruits import bobsdelights.Fruits.*
// In file packages-and-imports/Ex5.scala def showFruit(fruit: Fruit) = import fruit.* s"{name}s are color"
// In file packages-and-imports/Ex6.scala import java.util.regex class AStarB: // Accesses java.util.regex.Pattern val pat = regex.Pattern.compile("a*b")
// In file packages-and-imports/Ex7.scala import Laptops.* import Fruits.{Apple as _, *}
import java.lang.* // everything in the java.lang package import scala.* // everything in the scala package import Predef.* // everything in the Predef object
// In file packages-and-imports/Ex8.scala.err class Outer: class Inner: private def f = "f" class InnerMost: f // OK (new Inner).f // error: f is not accessible
// In file packages-and-imports/Ex9.scala.err package p: class Super: protected def f = "f" class Sub extends Super: f class Other: (new Super).f // error: f is not accessible
// In file packages-and-imports/ex10/Ex10.scala package bobsrockets package navigation: private[bobsrockets] class Navigator: protected[navigation] def useStarChart() = {} class LegOfJourney: private[Navigator] val distance = 100 package launch: import navigation.* object Vehicle: private[launch] val guide = new Navigator
// In file packages-and-imports/Rocket.scala class Rocket: import Rocket.fuel private def canGoHomeAgain = fuel > 20 object Rocket: private def fuel = 10 def chooseStrategy(rocket: Rocket) = if rocket.canGoHomeAgain then goHome() else pickAStar() def goHome() = {} def pickAStar() = {}
// In file packages-and-imports/package.scala // In file ShowFruit.scala package bobsdelights def showFruit(fruit: Fruit) = import fruit.* s"{name}s are color" // In file PrintMenu.scala package printmenu import bobsdelights.Fruits import bobsdelights.showFruit object PrintMenu: def main(args: Array[String]) = println( for fruit <- Fruits.menu yield showFruit(fruit) )
case class PosInt(value: Int): require(value > 0)
val x = PosInt(88) x.value + 1 // 89
case class PosInt(value: Int): require(value > 0) def +(x: Int): Int = value + x
val x = PosInt(77) x + 1 // 78
case class PosInt(value: Int): require(value > 0) export value.*
val x = PosInt(99) x + 1 // 100 x - 1 // 98 x / 3 // 33
final def +(x: Int): Int = value + x
val x = PosInt(24) x << 1 // 48 (shift left) x >> 1 // 12 (shift right) x >>> 1 // 12 (unsigned shift right)
case class PosInt(value: Int): require(value > 0) export value.{<< as shl, >> as shr, >>> as ushr, *}
val x = PosInt(24) x shl 1 // 48 x shr 1 // 12 x ushr 1 // 12
case class PosInt(value: Int): require(value > 0) export value.{<< as shl, >> as shr, >>> as _, *}
scala> val x = PosInt(39) val x: PosInt = PosInt(39) scala> x shr 1 val res0: Int = 19 scala> x >>> 1 1 |x >>> 1 |^^^^^ |value >>> is not a member of PosInt
|
For more information about Programming in Scala, Fifth Edition (the "Stairway Book"), please visit: http://www.artima.com/shop/programming_in_scala_5ed and: |
Copyright © 2007-2020 Artima, Inc. All rights reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. |


You are viewing an historical archive of past issues. Please
report new issues to the appropriate project issue tracker on
GitHub.
Comments
-
Greg Hurrell
Ok, most of the code-side work on this is done. I've had a look at my PayPal fees and it doesn't look viable to offer discounted licenses, seeing as it would drop my per-license revenue prior to expenses below 4 euros, which isn't enough to offset server costs and other overheads.
The move to
Application Support
isn't one I'll going to pursue right now, as I want to keep the complexity of code changes down to a minimum to minimize risk of breakage. -
Greg Hurrell
Status changed:
- From: new
- To: closed
Add a comment
Comments are now closed for this issue.