"Interleaved" means that multiple attributes, possibly of different types,
(e.g., position, normal, uv, color) are packed into a single array buffer.
An introduction into interleaved arrays can be found here:
[link:https://blog.tojicode.com/2011/05/interleaved-array-basics.html Interleaved array basics]
[example:webgl_buffergeometry_points_interleaved webgl / buffergeometry / points / interleaved]
[page:TypedArray array] -- A typed array with a shared buffer. Stores the
geometry data.
[page:Integer stride] -- The number of typed-array elements per vertex.
A typed array with a shared buffer. Stores the geometry data.
The number of typed-array elements per vertex.
Gives the total number of elements in the array.
Object containing offset and count.
- [page:Number offset]: Default is `0`.
- [page:Number count]: Default is `-1`.
[link:http://en.wikipedia.org/wiki/Universally_unique_identifier UUID] of this instance. This gets automatically assigned, so this shouldn't be edited.
A version number, incremented every time the needsUpdate property is set to true.
Default is `false`. Setting this to true increments [page:InterleavedBuffer.version version].
Defines the intended usage pattern of the data store for optimization purposes. Corresponds to the `usage` parameter of [link:https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/bufferData WebGLRenderingContext.bufferData]().
Copies another [name] to this [name].
Copies data from `attribute[index2]` to [page:InterleavedBuffer.array array][index1].
value - The source (typed) array.
offset - The offset into the target array at which to begin writing values
from the source array. Default is `0`.
Stores multiple values in the buffer, reading input values from a
specified array.
data - This object holds shared array buffers required for properly
cloning geometries with interleaved attributes.
Creates a clone of this [name].
Set [page:InterleavedBuffer.usage usage] to value.
data - This object holds shared array buffers required for properly
serializing geometries with interleaved attributes.
Serializes this [name].
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]


Package com.jme.terrain.noise
Interface Basis
-
- All Known Subinterfaces:
Fractal
- All Known Implementing Classes:
FilteredBasis
,FractalSum
,ImprovedNoise
,Noise
,NoiseAggregator
public interface Basis
Interface for - basically 3D - noise generation algorithms, based on the book: Texturing & Modeling - A Procedural Approach The main concept is to look at noise as a basis for generating fractals. Basis can be anything, like a simple:float value(float x, float y, float z) { return 0; // a flat noise with 0 value everywhere }
or a more complex perlin noise (ImprovedNoise
Fractals use these functions to generate a more complex result based on some frequency, roughness, etc values. Fractals themselves are implementing the Basis interface as well, opening an infinite range of results.- Since:
- 2011
- Author:
- Anthyon
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description Basis
addModulator(Modulator modulator)
java.nio.FloatBuffer
getBuffer(float sx, float sy, float base, int size)
float
getScale()
void
init()
Basis
setScale(float scale)
float
value(float x, float y, float z)
-


We Know Why Lil Reese Was Shot...MONEY!
by illseedLil Reese may have violated a big time rule as it relates to street rappers!
(AllHipHop Rumors) Lil Reese didn't quite dodge a bullet when one of those deadly lil' guys found their mark in his neck. Thankfully, Lil Reese didn't die when that bullet struck him and he was released back into the wild. But we really didn't quite realize why he was shot and nearly murdered. We have our suspicions know.
Apparently, an unnamed rapper paid Lil Reese $20,000 for a verse (WOW!), but the Chicago rapper allegedly did not send his Pro Tools session back! Well, we now live in a world where people are being stabbed over Popeye's chicken sandwiches. We know they are not going to have a problem with firing 12 rounds at you over $20K! Like the Feds and AR-AB, the alleged attempted murderer-slash-rapper, he looked at Reese's social media to locate him. And when he found out...
BRO...I would not want to be a part of ANY of this! I am scared to even THINK about crossing somebody from the streets I owe 20 Long! Salute all of them for being soldiers. I am not sure how hard it is for Lil Reese to rap, but for a few Buck - like $2-$3 grand - I will write a verse for him! Just Pay Pal me! Anyway!
I hope this supposed rapper that paid that money gets what he needs - money back or a verse! As long as it ain't a body named Lil Reese!
The biggest question is: WHO IS THE RAPPER?


No requirements found!
Edit Requirements for Process {{processName}}
Current Requirement
Name:
Description:
Update requirement
Dependencies
Properties
Add a new property
Property Name:
Property Value:
Add property
Go to the next requirement
Submit Dependencies


Home
Room & Suites
Dining
Events
Tasik Hotels Reservation
Address
Name
Select Hotel
Tasik Hotels Kuala Lumpur
Tasik Hotels Georgetown
Tasik Hotels Kuching
Hotel
Room/Suites
Deluxe Room
Premiere Room
Grand Premiere Room
The L-Club Room
Executive Suite
Ambassador Suite
Presidential Suite
Royal Suite
Room Type
Check In
Check out
No of Rooms
1
2
3
Rooms
No of Adults
1
2
3
Adults
No of Children
0
1
2
3
Children
Email
Phone
Book Now


Skilled software developer who blends data analytics and visualization skills while leveraging a rigorous scientific background for advancements in healthcare and learning. Able to leverage scientific skill set with data analysis and visualization skills to build better software tools, resulting in accelerated scientific discovery and innovation.
Promega-Sunnyvale, CA
October 2020-Present
Product Manager, Instrumentation Software
Specific Diagnostics-Mountain View, CA
October 2019-July 2020
Data Scientist
Designed pipelines for more efficient data processing and analysis.
University of California, Berkeley Extension—Belmont, CA
Aug 2018-Jun 2020
Teaching Assistant, Data Analytics & Visualization Certification Program (Evening Program)
Actively prepared students for success in a fast-paced data analytics program.
Promega—Sunnyvale, CA
Dec 2016-Oct 2017
Systems Engineer
Designed, performed and analyzed complex sets of capillary electrophoresis (CE) data produced by the Spectrum platform to determine reliability of the system.
LakePharma—Belmont, CA
Aug 2015- Dec 2016
Scientist
Successfully developed customized biofunctional assays that include cell-based reporter assays, lysate-based colorimetric assays, ELISAs, and FACS-based assays (Accuri C6, IntelliCyt iQue).
Galxyz—Mountain View, CA
2014-2015
Science Curricula Developer
Created and managed implementation of integrated science curriculum in accordance with the Next Generation Science Standards (NGSS) and the Common Core. The curricula took complex scientific ideas and converted them to fun, interactive lessons, assessments, and experiments for multiple age levels.
DeVry University—Fremont, CA
2012-2014
Visiting Professor
Developed coursework and instructed students in accelerated undergraduate courses that included Nutrition, Anatomy/Physiology, Biology, and Chemistry.
Sylvan Learning Center—Burlingame, CA
2008-2014
Instructor
Taught a wide range of subjects to varying age groups that included: math (elementary to calculus), reading/writing, all science disciplines (elementary to AP), history, and standardized test preparation.


Concurrency and Memory Management Seminar, Summer 2012Prof. Kirsch, Department of Computer Sciences, University of SalzburgTime, Location: Th 10-12 in T04, Techno-Z. First seminar is on Th, March 8, 2012. Check schedule (iCal) for updates. Brief Overview: Why is concurrency so difficult to handle, on the level of process execution as well as in program development? How can we utilize emerging multicore hardware more effectively? What are the tricks to manage complex systems including memory concurrently, in parallel, and even incrementally? What is the difference anyway? Is garbage collection the final answer to correct and efficient heap management? If you are interested in these and other systems-related questions, sign up for the concurrency and memory management seminar. The seminar provides a unique opportunity to meet other students and discuss hot topics in systems research. Pick a research paper (or problem) provided in class (or propose some other recent paper), read and understand it, and then share your experience with the group. Goals of the seminar: Learn how to read, understand, and present top research papers and their context. Prerequisites: Background in basic programming language and operating system concepts. Requirements: Each student selects a research paper (or problem) and gives a 45min presentation on the paper (or problem), and uploads the presentation to the seminar wiki. Seminar language is English. Students:
Technical contact: Andreas . Haas @ cs . uni-salzburg . at |


labeled
by None at 2022-07-05 22:40:08.labeled
by None at 2022-07-05 22:40:08.labeled
by None at 2022-07-06 12:20:25.labeled
by None at 2022-07-06 12:20:25.assigned
by None at 2022-07-06 14:38:12.closed
by Kevin Reiss at 2022-07-06 21:09:52.referenced
by Kevin Reiss at 2022-07-06 21:09:52.merged
by Kevin Reiss at 2022-07-06 21:09:52.closed
by Kevin Reiss at 2022-07-06 21:09:52.head_ref_deleted
by Kevin Reiss at 2022-07-06 21:09:53.deployed
by None at 2022-07-06 21:12:49.referenced
by Jane Sandberg at 2022-07-06 21:44:57.merged
by Jane Sandberg at 2022-07-06 21:44:58.closed
by Jane Sandberg at 2022-07-06 21:44:58.head_ref_deleted
by Jane Sandberg at 2022-07-06 21:44:58.closed
by Jane Sandberg at 2022-07-06 22:52:09.head_ref_deleted
by Jane Sandberg at 2022-07-06 22:52:10.mentioned
by None at 2022-07-06 14:18:25.subscribed
by None at 2022-07-06 14:18:26.mentioned
by Christina Chortaria at 2022-07-06 14:18:26.subscribed
by Christina Chortaria at 2022-07-06 14:18:26.labeled
by Christina Chortaria at 2022-07-06 21:22:06.head_ref_force_pushed
by Christina Chortaria at 2022-07-06 20:39:33.head_ref_force_pushed
by Christina Chortaria at 2022-07-06 22:00:11.labeled
by None at 2022-07-06 12:18:34.labeled
by None at 2022-07-06 12:18:34.The relation to the paper was given as a direct URL: https://iopscience.iop.org/article/10.1088/1741-4326/ac70ea. I updated it to the DOI: https://doi.org/10.1088/1741-4326/ac70ea.
@astrochun please confirm that the item passes your smoke test now.
@matthewjchandler, all good. Closing this issue now.
mentioned
by Chun Ly at 2022-07-06 14:20:08.subscribed
by Chun Ly at 2022-07-06 14:20:08.closed
by Chun Ly at 2022-07-06 14:26:53.mentioned
by Matthew J. Chandler at 2022-07-06 14:26:54.subscribed
by Matthew J. Chandler at 2022-07-06 14:26:54.labeled
by None at 2022-07-06 11:59:48.labeled
by None at 2022-07-06 11:59:48.@hackartisan Can we document the reasoning for going back to the "+"?
@sdellis Added to description, thanks
mentioned
by None at 2022-07-06 14:20:52.subscribed
by None at 2022-07-06 14:20:52.mentioned
by Shaun Ellis at 2022-07-06 14:39:21.subscribed
by Shaun Ellis at 2022-07-06 14:39:21.referenced
by Eliot Jordan at 2022-07-06 18:50:37.merged
by Eliot Jordan at 2022-07-06 18:50:37.closed
by Eliot Jordan at 2022-07-06 18:50:37.head_ref_deleted
by Eliot Jordan at 2022-07-06 18:50:38.assigned
by Trey Pendragon at 2022-07-06 22:07:03.closed
by Trey Pendragon at 2022-07-06 23:32:59.labeled
by None at 2022-07-06 11:31:31.labeled
by None at 2022-07-06 12:04:55.closed
by Max Kadel at 2022-07-06 17:06:49.referenced
by Max Kadel at 2022-07-06 17:55:09.merged
by Max Kadel at 2022-07-06 17:55:09.closed
by Max Kadel at 2022-07-06 17:55:10.head_ref_deleted
by Max Kadel at 2022-07-06 17:55:10.labeled
by None at 2022-07-06 12:04:22.labeled
by None at 2022-07-06 12:04:23.deployed
by None at 2022-07-06 19:44:37.referenced
by Jane Sandberg at 2022-07-06 19:47:38.merged
by Jane Sandberg at 2022-07-06 19:47:38.closed
by Jane Sandberg at 2022-07-06 19:47:38.head_ref_deleted
by Jane Sandberg at 2022-07-06 19:47:39.labeled
by None at 2022-07-06 19:49:23.labeled
by None at 2022-07-06 19:49:23.referenced
by Max Kadel at 2022-07-06 17:11:30.merged
by Max Kadel at 2022-07-06 17:11:30.closed
by Max Kadel at 2022-07-06 17:11:30.head_ref_deleted
by Max Kadel at 2022-07-06 17:11:35.referenced
by Max Kadel at 2022-07-06 17:13:09.merged
by Max Kadel at 2022-07-06 17:13:09.closed
by Max Kadel at 2022-07-06 17:13:10.head_ref_deleted
by Max Kadel at 2022-07-06 17:13:14.labeled
by None at 2022-07-06 11:32:57.labeled
by None at 2022-07-06 11:32:57.labeled
by None at 2022-07-06 11:17:19.labeled
by None at 2022-07-06 11:17:19.labeled
by None at 2022-07-06 07:50:40.labeled
by None at 2022-07-06 12:05:36.labeled
by None at 2022-07-06 12:05:36.mentioned
by None at 2022-07-06 12:56:53.subscribed
by None at 2022-07-06 12:56:53.This process has been completed. The remaining work is now on issue #196
closed
by Hector Correa at 2022-07-06 13:25:35.Expecting an update from RDOS on/around July 25th
Current document: https://docs.google.com/document/d/1zY7n-6zvT89cZhOamvJAtE27HQI2Wal7K40eXWj7X-w/edit#heading=h.7j6ok25fmmk7
closed
by Kate Lynch at 2022-07-06 14:38:26.unassigned
by Hannah H at 2022-07-06 14:45:13.assigned
by Hector Correa at 2022-07-06 15:29:16.Hector will review and create or reference new tickets as needed.
Added related tickets to implement the rest of the functionality.
closed
by Hector Correa at 2022-07-06 15:59:29.Hector will review and create or reference new tickets as needed.
See https://github.com/pulibrary/pdc_describe/issues/206 for the messaging functionality that still needs to be implemented.
closed
by Hector Correa at 2022-07-06 16:00:13.assigned
by Hector Correa at 2022-07-06 17:02:11.labeled
by Hannah H at 2022-07-06 21:09:19.convert_to_draft
by Hector Correa at 2022-07-06 20:17:03.labeled
by None at 2022-07-06 12:11:37.labeled
by None at 2022-07-06 12:11:37.assigned
by Christina Chortaria at 2022-07-06 16:21:12.I ran the playbook on bibdata-qa and added a new SQSQUEUEURL.
ready_for_review
by Christina Chortaria at 2022-07-06 19:02:42.referenced
by Hector Correa at 2022-07-06 17:37:23.merged
by Hector Correa at 2022-07-06 17:37:23.closed
by Hector Correa at 2022-07-06 17:37:23.head_ref_deleted
by Hector Correa at 2022-07-06 17:37:24.labeled
by None at 2022-07-06 12:16:34.labeled
by None at 2022-07-06 12:16:34.labeled
by None at 2022-07-06 12:19:10.labeled
by None at 2022-07-06 12:19:10.Possibilities so far - * https://www.scrumalliance.org/get-certified/product-owner-track/certified-scrum-product-owner * https://jeffgothelf.com/self-paced-courses/
assigned
by Max Kadel at 2022-07-06 17:26:35.closed
by Kevin Reiss at 2022-07-06 22:08:37.deployed
by None at 2022-07-06 20:08:45.ready_for_review
by Max Kadel at 2022-07-06 20:13:07.referenced
by Kevin Reiss at 2022-07-06 22:08:36.merged
by Kevin Reiss at 2022-07-06 22:08:37.closed
by Kevin Reiss at 2022-07-06 22:08:37.head_ref_deleted
by Kevin Reiss at 2022-07-06 22:08:38.referenced
by Kevin Reiss at 2022-07-06 22:09:55.merged
by Kevin Reiss at 2022-07-06 22:09:55.closed
by Kevin Reiss at 2022-07-06 22:09:55.head_ref_deleted
by Kevin Reiss at 2022-07-06 22:09:56.labeled
by None at 2022-07-06 12:01:30.assigned
by Jane Sandberg at 2022-07-06 20:02:01.closed by #161
closed
by Jane Sandberg at 2022-07-06 20:21:54.labeled
by Jane Sandberg at 2022-07-06 20:22:19.assigned
by Jane Sandberg at 2022-07-06 20:22:19.


{{/* This template is included at the end of each page's `
`. We're using it here to: 1) include the JS that generates the table of contents. It would be better to generate the table of contents as part of the Hugo build process, but that doesn't work nicely with the way we want to author client-server modules as separate files. 2) highlight and scroll the ToC in the sidebar to match the place we are at in the document. */}}


Tweet
Players
Click to subscribe to Ganymede Gate's mailing list
Chat on gitter
Shaders!
Fragment
Vertex
Update


When I think of times in my life when I was happy, I think of family and friends (close relationships) and also adventure. Let me explain.
By adventure I don't mean necessarily climbing the Half Dome (although that would be really cool), but just changing the status quo, even if there are no guaranteed rewards. In my case it was moving from one continent to another, changing jobs or moving away from unfulfilling relationships. It was not easy to make many of the changes but by shaking the status quo I always grew as a person, exposing myself to new environments and learning a lot in the process. It is the same sense of adventure that made me jump head first in the DBC program and it has been very rewarding so far.
The relationship that I have with my family and friends is very important and it was also the reason I moved to Chicago, to be near my sister. Building meaningful relationships with the people around me is a value I try to live up to.
These values (and many more) will also be my main tools to combat stereotype threat at DBC. Knowing that I have a strong support system, including on sight, and being aware that embarking on something so new and intense will reveal many of my weaknesses, but that I will also come out more skilled and resilient, so if I expose my ignorance on some occasions, hopefully I'll be able to realize that it's a normal process, and that it has nothing to do with my gender or age.


Race Fitness Chart
This chart shows weekly metrics recorded on a Garmin bike computer, recorded from September 2017 leading up to a race on May 4th 2018
- The bar height represents the distance ridden for that week.
- The bar shading represents the average intensity of the rides for that week.
- The ATL (Fatigue) line shows the amount of short term fatigue experienced - needed to gain long term fitness.
- The CTL (Fitness) line shows the long term fitness.


BREAKING: APC's Yahaya Bello leads in Kogi - The Nation Newspaper
Governor Yahaya Bello of the All Progressives Congress (APC) is leading after declaration of results in 15 local governments in Kogi guber election
Results at the Collation Centre indicate the Peoples Democratic Party (PDP) is in close second.
So far the APC has majority votes in Ogorimagongo, Ijumu, Adavi, Okene, Kabba Bunu, Koton Karfe, Okehi, Mopamoro, Ajaokuta and Olamaboro local government areas.
Read Also: Agony of commuters in Kogi
On the other hand PDP has won majority votes in Omala, Igalamela/Odolu, Yagba East, Yagba West and Idah local government areas.
These represent 15 local governments out of 21 have been collated.
Collation would resume by 3.30 pm.


IPP Frequently Asked Questions
IPP Everywhere is an exciting version of IPP that makes it possible to print to network printers without special software. You can find out more on the IPP Everywhere technology page.
All computers running CUPS 1.5 or later support IPP Everywhere, which includes all major Linux distributions, ChromeOS, Open Solaris, *BSD, and macOS®. In addition, most mobile devices now support printing via IPP using IPP Everywhere or a related vendor standard such as AirPrint® or Mopria®.
The IPP Everywhere Self-Certified Printers page lists printers that have been registered on the PWG web site.
The USB-IF developed the IPP USB Specification which allows printers to support IPP Everywhere over USB. Printers supporting IPP USB have been available since late 2013.
The Wi-Fi Alliance has developed a Wi-Fi Direct Printing specification, based in large part upon IPP Everywhere.
The PWG IPP workgroup has developed specifications for scanning and facsimile, and is currently developing a specification for managing the whole printer. These could be combined with IPP Everywhere to create an updated IPP Everywhere specification to support accessing all of the services of a multifunction printer without special software.
The current specifications, mailing list, and archives for IPP Everywhere are available on the PWG IPP workgroup page.


MFC, the Microsoft Foundation Classes, provide C++ programming language access to the Win32 API functionality.


--- layout: archive title: Zulip Chat Archive permalink: /stream/113488-general/topic/type.20mismatch.20for.20fin.20n.html ---
I am surprised that this doesn't typecheck:
def subtypeadd {m : ℕ} {n : ℕ} (A : fin m) (B : fin n) : fin (m+n) := ⟨A.val+B.val,add_lt_add A.is_lt B.is_lt⟩ example (A : fin 3) (B : fin 4) (C : fin 7) : A = ⟨2,dec_trivial⟩ → B = ⟨0,dec_trivial⟩ → C = subtypeadd A B → C = ⟨2,dec_trivial⟩ := sorry
It complains at subtypeadd
that A
has type fin 3
and it expects it to have type fin 6
??
I think this is the default elaboration strategy's fault
It's hard for me to see what's going on because it doesn't typecheck so I don't have any term to work with
Obviously I can fix it with @
but here -- hey -- can you be the elaborator like you sometimes do?
You can make it typecheck by writing @subtypeadd _ _ A B
or adding @[elab_simple]
to the definition of subtypeadd
You have to figure out what m and n are
and the only clues you have are that A : fin m and A : fin 3
what do you think
mr elaborator
It sees that the goal is fin 7
and so has to solve 7 =?= ?m1 + ?m2
. I think if you unfold 7 enough (bit1 (bit1 one)
) you get bit0 (bit1 one) + 1
, i.e. 6+1
. So it's the most obvious split and lean takes it
Aah excellent!
so in fact this is a fun game
guess the error
example (A : fin 3) (B : fin 5) (C : fin 8) : A = ⟨2,dec_trivial⟩ → B = ⟨0,dec_trivial⟩ → C = subtypeadd A B → C = ⟨2,dec_trivial⟩ := sorry
you have to guess the spurious complaint that Lean makes
for fin 2n
it wants A : fin n
and for fin (2n+1)
it wants A : fin (2n)
Last updated: Apr 24 2020 at 19:02 UTC


Boston, Massachusetts
GPA:3.6
Sept 2017 - Present
Delhi, India
Percentage: 81%
Sept 2012 - May 2016
Programming Language
Web Technologies
Databases
Plagiarism Detector Web Portal
Developing source code plagiarism detector for multifile Python project based with ReactJS frontend, Java Spring Boot on Backend, and AWS RDS as Database. Web Portal where projects can be checked for similarity based on source code’s abstract syntax tree taking help of java parser library.
Plagiarism Detector Web Portal
Developing source code plagiarism detector for multifile Python project based with ReactJS frontend, Java Spring Boot on Backend, and AWS RDS as Database. Web Portal where projects can be checked for similarity based on source code’s abstract syntax tree taking help of java parser library.
Plagiarism Detector Web Portal
Developing source code plagiarism detector for multifile Python project based with ReactJS frontend, Java Spring Boot on Backend, and AWS RDS as Database. Web Portal where projects can be checked for similarity based on source code’s abstract syntax tree taking help of java parser library.
Contact Number
+1-857-424-6016
Email Address
<EMAIL_ADDRESS>Address
75,Saint Alphonsus Street, Boston, MA - 02120


|
|
Collections
|
New Collection
|
Update Collection
|
Collection Items
|
Add Collection Items
|
How to use:
- User API token - Your assigned token. If no token is specified, a test token will be used.
- Collections Table - List of collections within the API
- Collection Update Button - This button will bring up fields for updating the collection and associated items.
- Add Collection Items - Place a list of Record Identifiers to add items to a collection. Identifiers should be entered one per line.
|


|
|||||||||
| PREV NEXT | FRAMES NO FRAMES |
See:
Description
| Packages | |
|---|---|
| ibis.ipl | This package describes the Ibis Portability Layer (IPL), which is to be implemented by Ibis implementations. |
This package describes the Ibis Portability Layer (IPL), which is to be implemented by Ibis implementations. Ibis is a programming environment that combines Java's "run everywhere" portability both with flexible treatment of dynamically available networks and processor pools, and with highly efficient, object-based communication.
Communication is based on ReceivePorts
and SendPorts
of a certain port type, which is
represented by a
PortType
.
Port capabilities are given to the port type (for
example ports are "ONE_TO_ONE" and "RELIABLE" and support
"OBJECT_SERIALIZATION").
ReceivePorts
and SendPorts
both have a port type.
Only receive ports and send ports of the same port type can communicate.
Any number of receive ports and send ports can be created on a JVM
(even of the same port type).
SendPorts and ReceivePorts are created by their Ibis instance using the
createSendPort
and
createReceivePort
methods.
When creating a ReceivePort, it can be supplied with an
MessageUpcall
object. If so,
upcalls are generated when messages arrive.
If not, explicit receive must be used to read messages.
The system provides a globally unique ReceivePortIdentifier
and SendPortIdentifier
for every ReceivePort and SendPort. These identifiers
are implementation specific and serializable (and can be sent over the
network/saved in a file etc.).
A SendPort takes the initiative to connect to or disconnect from
ReceivePorts (otherwise the one-way traffic scheme is violated).
A SendPort can be connected to one or more ReceivePorts using their
ReceivePortIdentifiers or their Ibis identifiers and names.
Additional ReceivePorts may be connected at any time.
A SendPort can be disconnected from one or more ReceivePorts using
their ReceivePortIdentifiers. Additional ReceivePorts may be
disconnected at any time.
When a SendPort is no longer used it must be closed
using the close
method.
All connections the SendPort has are disconnected.
When a ReceivePort is no longer used it must be closed using the
close
method. This call will block until
connections to SendPorts are disconnected (by the SendPorts).
A message
can be send from an SendPort to the
set of ReceivePorts it is connected to.
To do this, a WriteMessage
write message is obtained from the
SendPort (this allows streaming, as the destination is known).
Data can be added to the message using "write" methods (this data may be
immediately streamed to the ReceivePorts) of this message.
the write message can be send using a send
method.
This allows the Ibis system to asynchronously start sending the message.
The message can be finished using the finish
method.
When the finish returns, all data has been copied (and now may be changed),
and the message may no longer be used.
When a message
arrives at a ReceivePort,
how it is handled depends on the way the ReceivePort was instantiated.
If messages are to be handled by means of upcalls, a
"new" thread is started and the upcall is invoked with this message as parameter.
When the message is no longer used it MAY be returned to the
system using the finish
method
(after which the message may no longer be used).
If messages are to be handled by means of explicit receive calls, a
message is delivered when the receive
method is called. When the message is
no longer used it MUST be returned to the system using the
finish
method
(after which the message may no longer be used). This is
done to free possible resources in the underlying implementation, as
waiting for the GC may take too long.
|
|||||||||
| PREV NEXT | FRAMES NO FRAMES |


Compliments of the day, and my best wishes to you. I am Mrs. jaen pong The Public Relation Officer (PRO.) of the above company.we are interested in employing your services to work with us as a private payment agent that can help us establish a medium of receiving payment for goods that was supplied to our customers in in your location,as the company is already experiencing difficulties in receiving payments from them.Please if you are interested to work with us in good faith and honesty, Contact Mr.John Chang Executive Officer (CEO.) Through this e-mail address for more information<EMAIL_ADDRESS>Very Respectfully, Mrs. jaen pong (PRO).


2017-31-07
last modified: 2022-12-16
== !
CRM: acronym for "Customer Relationship Management"
A CRM is a software used to manage the commercial relationship between a company and its clients.
A CRM is part of the information system (IS) of the firm. The information system designates all software, human resources and procedures devoted to keep track of all info necessary to the business of the firm - from sales to production, etc.
The information system of a firm comprises many other blocks, besides the CRM:
Large companies often integrate these different blocks into an ERP ("Enterprise Resource Planning"), which is an even larger software able to plug different parts together.
The role of CRMs is evolving, and in this lecture we make the case that "big data" has transformed CRMs radically.
To illustrate, we will compare (and caricature a bit) a CRM from 2000 with a CRM of today:
The name of the CRM - Customer Relationship Management suggests a kind of rich, personalized and human touch.
In practice, CRMs where used for more practical purposes:
We must imagine the CRM software as a tool which supported the management of sales, performing these 3 essential functions:
measuring revenues, through the recording of sales transactions.
controlling the performance of the sales persons, by registering which cashier, which employee performed the sale, or at least at which location the sale took place.
recording the VAT ("Value-added tax") collected through sales, which is a legal obligation for tax declaration purposes.
Do you see the customer being catered for in the functions described above? Not really.
The customer was not completely forgotten: CRM are used to run loyalty programs and campaigns:
Loyalty programs afford discounts and special offers to its members.
They increase the share-of-wallet of the company implementing them: the amount of the customer’s total spending that a business captures in the products and services that it offers.
A study performed on the loyalty programs run by 7 major supermarket chains in the Netherlands has found that it increased revenues for the supermarket running it:
On average, a loyalty program enhances the net yearly revenues of a customer by € 163, but the effects vary between € 91 and € 236
source: Leenheer et al. (2007).
Loyalty programs create extra value for the customer as well through the discounts and special offers they bring. But they tend to be limited in their personalization: typically, every customer can enjoy the same offers, even if many of them are irrelevant (discounts on diapers when you don’t have a child etc.).
Customers registered in a CRM with their postal address (after joining a loyalty program) can be sent promotional material and coupons.
Using printed material prohibits the customization to the personal needs of the customers, since a printed catalogue is the same for every recipient.
This decreases the efficiency of direct mail campaigns.
Changes occurring in the past decade have transformed the landscape of the customer relationship. We should realize that:
(source: Eurostat)
(source: Internetlivestats.com)
Together, Alibaba and Amazon have tripled customers in 5 years, nearing 900 million customers in 2017:
Three key aspects for ad buying and selling:
It became programmatic: ad space and ad inventories are bought and sold through automated market places (through SSP, DSP and Ad exchanges).
Ads are displayed across many channels (with retargeting)
Ads are personalized. It started with Search Engine Advertising showing ads matching search queries. Then cookies tracking your web browsing history appeared, sending this personal information to ad agencies which in turn can serve ads tuned to your browsing behavior. After this, "browser finger printing" is a technique which enables a given ad agency tracking web visitors, not based on info recorded in cookies, but leveraging the fact that each web browser is slightly different - like a finger print (see the tool by the Electronic Frontier Foundation or this other privacy analyzer to have a demonstration on your own browser). The list of tracking techniques is endless, see for example the technique used by Facebook to track your browsing behavior outside of Facebook.
Distribution and communication channels have multiplied and fragmented, and each have their different rules for content generation, data streams and communication modes.
Distribution channels:
retail stores (as usual)
ecommerce websites (since 2000s) and mobile apps (since 2010s)
third party platforms (such as Amazon and Alibaba, taking off since 2010s)
resellers becoming primary sellers (eg, leboncoin.fr or marktplaats.nl selling cars, housing and jobs) - since 2010s.
Multiplication of distribution channels
→ it becomes increasingly hard to record customers actions (is this customer in my shop the same that clicked on this web page 2 minutes ago?): "click and collect" for example, one example of the broader trend called " phygital marketing ".
Note how traditional CRMs are unequipped to command and control this variety of distribution channels.
Communication channels:
From brick and mortar + call centers + sms + emails to …
→ Live chat in websites + Facebook + Twitter + Instagram
Communication used to be mainly "outbound" (company pushing campaigns to customers) and occasionally inbound (customers calling or emailing back).
Three evolutions:
customers expect their point of view to be heard, without being prompted for it.
cross customer conversation has spread (without the intervention of companies and brands)
The high cost of pushing content through ads incentivizes firms to develop inbound communication - this is "inbound marketing".
TV, radio, outdoor advertising, in store and outdoor displays: it continues
mobile phones: (operating systems with constantly evolving techs and rules of play - 1)
desktops, tablets, social TVs, home assistants, but also… watches? cars? homes?
The expectations of customers have elevated: if your company has a Facebook page, it should not just display a catalogue. It should engage (converse) with customers.
Same with all steps of the customer journey: a CRM should adapt the product (or service) to the profile of the customer.
Several remarks on personalization:
"personalization" is the extreme end: one different view for each different customer or prospect.
Micro-segmentation is the step just before: identifying very precise, tiny segments in the population of customers and prospects.
ii. "personalization" has been blamed for reinforcing "bubbles" or "tribes" views of the world (paying version of the paper, free version here).
iii. Personalizing the customer relationship, even when effective, is not inherently a good thing. It has been shown that the http://www.coca-colacompany.com/stories/summer-of-sharing-share-a-coke-campaign-rolls-out-in-the-us is effective at making more children choose a soda with a label to their name, over a healthy drink (paying version of the ShareaCoke study here, free version not available).
iv. Personalization through smart CRMs? Companies rated with the best customer service do personalization differently: with humans.
See how Zappos offers a great service to their customers:
(another (impactful talk by the CEO of Zappos here).
or see (in French) how Trainline makes its customers happy.
Explaining the expression "data-driven CRMs":
→ CRMs must turn from a system "supporting the firm’s administration needs" to a a system tuned to "plug, host, analyze and push actions from multiple data sources".
To get such a CRM to run in an organization, the right resources must be gathered:
Adequate software:
the CRM itself - recent enough that it can plug and play with a DMP and a large variety of data sources.
a Data Management Platform (DMP) as well. The DMP is the software specializing in receiving data streams from a variety of sources and in a variety of formats, and reconciling them.
a Data Lake to store and query data.
software bricks for additional analysis, as needed. For example, Dataiku’s DSS platform.
Adequate human resources:
product managers with a tech culture (you), able to design and deploy a marketing strategy in a data intensive environment.
data scientists who will implement the strategy.
IT engineers to run the software.
Adequate organizational culture:
This is probably the hardest part: making the top management, and the rest of the organization pay attention and believe in the possibilities afforded by these new way to manage customer relationships.
The organization needs to invest and devote enough operational resources to stop doing "business as usual" and develop a data-driven CRM.
Find references for this lesson, and other lessons, here.
This course is made by Clement Levallois.
Discover my other courses in data / tech for business: https://www.clementlevallois.net
Or get in touch via Twitter: @seinecle get in touch via Twitter: @seinecle get in touch via Twitter: @seinecle get in touch via Twitter: @seinecle get in touch via Twitter: @seinecle get in touch via Twitter: @seinecle get in touch via Twitter: @seinecle get in touch via Twitter: @seinecle get in touch via Twitter: @seinecle get in touch via Twitter: @seinecle get in touch via Twitter: @seinecle get in touch via Twitter: @seinecle get in touch via Twitter: @seinecle


What are Treasury, Departments and Parliament busy with?
- Cabinet considers the recommendations tabled before it on the Medium Term Budget Policy Statement (MTBPS) and the MTBPS is then tabled. It includes the 3 year policy position on the fiscal framework, key national government spending priorities, the Division of Revenue (DoR) as well as the substantial adjustments to conditional grants.
- In-year budget processes culminate in the tabling of the Adjustments Appropriation Bill and the Division of Revenue Amendment Bill.
- National Treasury issues draft allocation letters to national departments and the departments begin preparing their budget documentation inputs on the basis of these letters.
- Departments prepare budgets and budget documentation in accordance with the received draft allocations.
- Parliament reviews the Annual Reports (ARs) and preparation for BRRRs.
- Within 9 days of the tabling of the adjustments budget, Parliament must submit a report on the revised fiscal framework to the respective houses for consideration and adoption.
How can I participate?
- Participate in public hearings on the revised fiscal framework.


--- layout: doc title: Documentation ---
This appendix contains the code for the two demonstration instantiations of Proof General, for Isabelle.
These instantiations make an almost-bare minimum of settings to get things working. To add embellishments, you should refer to the instantiations for other systems distributed with Proof General.
| B.1 demoisa-easy.el | ||
| B.2 demoisa.el |
;; demoisa-easy.el Example Proof General instance for Isabelle ;; ;; Copyright (C) 1999 LFCS Edinburgh. ;; ;; Author: David Aspinall<EMAIL_ADDRESS>;; ;; $Id$ ;; ;; This is an alternative version of demoisa.el which uses the ;; proof-easy-config macro to do the work of declaring derived modes, ;; etc. ;; ;; See demoisa.el and the Proof General manual for more documentation. ;; ;; To test this file you must rename it demoisa.el. ;; (require 'proof-easy-config) ; easy configure mechanism (proof-easy-config 'demoisa "Isabelle Demo" proof-prog-name "isabelle" proof-terminal-string ";" proof-script-comment-start "(*" proof-script-comment-end "*)" proof-goal-command-regexp "^Goal" proof-save-command-regexp "^qed" proof-goal-with-hole-regexp "qed_goal \"\\(\\(.*\\)\\)\"" proof-save-with-hole-regexp "qed \"\\(\\(.*\\)\\)\"" proof-non-undoables-regexp "undo\\|back" proof-goal-command "Goal \"%s\";" proof-save-command "qed \"%s\";" proof-kill-goal-command "Goal \"PROP no_goal_set\";" proof-showproof-command "pr()" proof-undo-n-times-cmd "pg_repeat undo %s;" proof-auto-multiple-files t proof-shell-cd-cmd "cd \"%s\"" proof-shell-interrupt-regexp "Interrupt" proof-shell-start-goals-regexp "Level [0-9]" proof-shell-end-goals-regexp "val it" proof-shell-quit-cmd "quit();" proof-assistant-home-page "http://www.cl.cam.ac.uk/Research/HVG/Isabelle/" proof-shell-annotated-prompt-regexp "^\\(val it = () : unit\n\\)?ML>? " proof-shell-error-regexp "\\*\\*\\*\\|^.*Error:\\|^uncaught exception \\|^Exception- " proof-shell-init-cmd "fun pg_repeat f 0 = () | pg_repeat f n = (f(); pg_repeat f (n-1));" proof-shell-proof-completed-regexp "^No subgoals!" proof-shell-eager-annotation-start "^\\[opening \\|^###\\|^Reading") (provide 'demoisa) |
;; demoisa.el Example Proof General instance for Isabelle ;; ;; Copyright (C) 1999 LFCS Edinburgh. ;; ;; Author: David Aspinall<EMAIL_ADDRESS>;; ;; $Id$ ;; ;; ================================================================= ;; ;; See README in this directory for an introduction. ;; ;; Basic configuration is controlled by one line in `proof-site.el'.  ;; ;; I've called this instance "Isabelle Demo Proof General" just to ;; avoid confusion with the real "Isabelle Proof General" in case the ;; demo gets loaded by accident. ;; ;; To make the line above take precedence over the real Isabelle mode ;; later in the table, set PROOFGENERAL_ASSISTANTS=demoisa in the ;; shell before starting Emacs (or customize proof-assistants). ;; (require 'proof) ; load generic parts ;; ======== User settings for Isabelle ======== ;; ;; Defining variables using customize is pretty easy. ;; You should do it at least for your prover-specific user options. ;; ;; proof-site provides us with two customization groups ;; automatically: (based on the name of the assistant) ;; ;; 'isabelledemo - User options for Isabelle Demo Proof General ;; 'isabelledemo-config - Configuration of Isabelle Proof General ;; (constants, but may be nice to tweak) ;; ;; The first group appears in the menu ;; ProofGeneral -> Advanced -> Customize -> Isabelledemo ;; The second group appears in the menu: ;; ProofGeneral -> Internals -> Isabelledemo config ;; (defcustom isabelledemo-prog-name "isabelle" "*Name of program to run Isabelle." :type 'file :group 'isabelledemo) (defcustom isabelledemo-web-page "http://www.cl.cam.ac.uk/Research/HVG/isabelle.html" "URL of web page for Isabelle." :type 'string :group 'isabelledemo-config) ;; ;; ======== Configuration of generic modes ======== ;; (defun demoisa-config () "Configure Proof General scripting for Isabelle." (setq proof-terminal-string ";" proof-script-comment-start "(*" proof-script-comment-end "*)" proof-goal-command-regexp "^Goal" proof-save-command-regexp "^qed" proof-goal-with-hole-regexp "qed_goal \"\\(\\(.*\\)\\)\"" proof-save-with-hole-regexp "qed \"\\(\\(.*\\)\\)\"" proof-non-undoables-regexp "undo\\|back" proof-undo-n-times-cmd "pg_repeat undo %s;" proof-showproof-command "pr()" proof-goal-command "Goal \"%s\";" proof-save-command "qed \"%s\";" proof-kill-goal-command "Goal \"PROP no_goal_set\";" proof-assistant-home-page isabelledemo-web-page proof-auto-multiple-files t)) (defun demoisa-shell-config () "Configure Proof General shell for Isabelle." (setq proof-shell-annotated-prompt-regexp "^\\(val it = () : unit\n\\)?ML>? " proof-shell-cd-cmd "cd \"%s\"" proof-shell-interrupt-regexp "Interrupt" proof-shell-error-regexp "\\*\\*\\*\\|^.*Error:\\|^uncaught exception \\|^Exception- " proof-shell-start-goals-regexp "Level [0-9]" proof-shell-end-goals-regexp "val it" proof-shell-proof-completed-regexp "^No subgoals!" proof-shell-eager-annotation-start "^\\[opening \\|^###\\|^Reading" proof-shell-init-cmd ; define a utility function, in a lib somewhere? "fun pg_repeat f 0 = () | pg_repeat f n = (f(); pg_repeat f (n-1));" proof-shell-quit-cmd "quit();")) ;; ;; ======== Defining the derived modes ======== ;; ;; The name of the script mode is always <proofsym>-script, ;; but the others can be whatever you like. ;; ;; The derived modes set the variables, then call the ;; <mode>-config-done function to complete configuration. (define-derived-mode demoisa-mode proof-mode "Isabelle Demo script" nil (demoisa-config) (proof-config-done)) (define-derived-mode demoisa-shell-mode proof-shell-mode "Isabelle Demo shell" nil (demoisa-shell-config) (proof-shell-config-done)) (define-derived-mode demoisa-response-mode proof-response-mode "Isabelle Demo response" nil (proof-response-config-done)) (define-derived-mode demoisa-goals-mode proof-goals-mode "Isabelle Demo goals" nil (proof-goals-config-done)) ;; The response buffer and goals buffer modes defined above are ;; trivial. In fact, we don't need to define them at all -- they ;; would simply default to "proof-response-mode" and "pg-goals-mode". ;; A more sophisticated instantiation might set font-lock-keywords to ;; add highlighting, or some of the proof by pointing markup ;; configuration for the goals buffer. (provide 'demoisa) |
This document was generated on April 14, 2023 using texi2html 1.82.


Boston College psychology professor, Dr. Peter Gray, writes in his book, Free To Learn: “Children are biologically predisposed to take charge of their own education. When they are provided with the freedom and means to pursue their own interests, in safe settings, they bloom and develop along diverse and unpredictable paths, and they acquire the skills and confidence required to meet life’s challenges.”[1]
Whether your children are still toddlers and preschoolers, or if you have decided to homeschool, there are many ways that you can create at home the conditions that ignite natural learning. By reimagining the ordinary spaces of our homes as extraordinary resources for early childhood learning, we can foster a home learning environment that sparks curiosity, engages children naturally in discovery of their world, and cultivates a more peaceful home life.
Here are 10 simple ideas for re-envisioning your home as a powerful place for natural learning:
Freedom
You are a facilitator of freedom, a protector of the conditions of natural childhood learning. You simply listen, and watch, and then you help to gather or find resources that help your child to learn naturally as he is innately designed to do. You bridge the gap between your child’s nascent interests and ideas and the vast world around him.
As pioneering early childhood educator, John Holt, wrote in his classic book, Teach Your Own: “What children need is not new and better curricula but access to more and more of the real world; plenty of time and space to think over their experiences, and to use fantasy and play to make meaning out of them; and advice, road maps, guidebooks, to make it easier for them to get where they want to go (not where we think they ought to go), and to find out what they want to find out.”[2]
As a parent, you protect this freedom—the time and space for natural learning—and connect your child’s burgeoning passions with the abundant resources of your community.
Play
The deepest learning, especially for children, comes when they are doing something they enjoy, in the spirit of play. And when this play is unstructured and child-led, the learning that results is richer and more meaningful.
Recent research by a team of psychologists at the University of Colorado reveals the benefits of play-based learning. In their study, the researchers found that the more opportunity children had for free, unstructured, unsupervised play time–as opposed to organized play like sports and classes—the higher their “Executive Functioning” skills were. The children who were given more time for free play were better equipped to establish their own goals, be more self-directed, more organized, and more self-regulating than children engaged in more structured, supervised activities.[3]
Give your children the freedom to play. Make unstructured play time the priority over classes and lessons. Let your child lead and be the director of her play while you hold the space for this deep learning to occur.
Warmth
Natural learning comes easily from a warm and inviting space. Keep natural toys and materials, de-clutter, and incorporate homemade items into play-spaces to create an enriching learning environment.
Consider donating half of your child’s current toys to simplify and calm their space. The fewer the toys, the more deeply they will play with those that are left.
For your remaining toys, select high-quality, non-commercial toys made from natural materials like wood and wool. These natural toys trigger a child’s imagination in ways that manufactured plastic cannot.
And think creatively about special “toys” for young children. Playing with a ball of yarn or a basket of clothespins, while a grown-up watches nearby, can be great fun for babies and toddlers. Fill your play-spaces with warmth by showcasing the homemade. Drape a piece of string or yarn across a window or wall and clip your child’s artwork to it. Frame your child’s art for all to admire. Sprinkle handmades into your play-spaces, with a homemade pillows or a knitted blanket, adding warmth and inspiration to your home.
Curiosity
Spark your child’s natural curiosity with baskets of books scattered throughout your home. Gather “coffee table books,” and other large, colorful books to include in your play-spaces for children to explore. Make tools for child-directed learning readily available and accessible, like wooden blocks and letters, puzzles, microscopes and magnifying glasses, dress-up clothes and play silks. Set up a book nook or a nature corner or a music alcove.
Envision your home as an incubator of curiosity and imagination, with nooks and crannies offering enjoyable spaces for learning and discovery.
Creativity
Think of ways to cultivate creativity in your home. Prepare a morning art table for your toddler or preschooler to stumble upon. Fill it with paper and crayons, tape and glue, magazines to cut up, or different materials to explore.
For older children, designate a space in your home as your constant “creativity corner,” with art supplies ready and waiting when inspiration hits. Filling our homes with creative spaces for our children help them to direct their own learning, reveal their own interests, and pursue their own passions without waiting for grown-ups to lead the way.
Rhythm
When we think of simple ways to integrate our children into the daily rhythms of home–involving them in household projects, inviting them to move through the day alongside us–we find that our days at home can be more peaceful, more enjoyable, and more productive than we ever thought possible.
By re-envisioning our home and the daily tasks we complete within it as important to our child’s early learning and development, we begin to see that our role is not to entertain our children, not to occupy them, but to welcome them into the daily rhythms of our life and work. Yes, it will take longer—perhaps much longer—to fold that pile of clothes or bake those cookies, but when we see our home-based activities—like cleaning and cooking—as central to our child’s learning, then it doesn’t matter if it takes longer than it otherwise would. It’s not something to get through quickly so you can play with the train set on the floor. Instead, it is the learning activity for that time of the day, for that moment, and it is deeply worthwhile.
Nourishment
Just as folding the laundry can become a learning activity in and of itself for young children–an exercise in sorting and organizing, identifying shapes and colors in a natural way as part of the ordinary cadence of the day—so too can cooking and baking.
Instead of feeling the need to buy play-dough, for instance, and find a set time for using it with your toddler or preschooler, instead make basic pizza dough for dinner.  In this way, your child becomes actively involved in the daily rhythms of home while engaged in age-appropriate play with homemade ingredients that will nourish hungry bellies.
Playing with dough, then, becomes seamlessly integrated into your day instead of an extra playtime activity. The same could be true of starting a simple herb garden with your child, picking strawberries or applies, visiting farms and farmers’ markets, making jam, or searching for wild edibles on a nature walk around town. All of these activities are connected to your daily rhythms of feeding and caring for young children, and all present extraordinary learning opportunities.
Ritual
Children learn much through rituals. Different from routines that are rigid and structured and automatic, rituals are fluid and evolving and designed to celebrate daily, weekly, and seasonal moments. Enjoying a cup of tea every afternoon with your child. Celebrating Friday nights with breakfast-for-dinner and a family movie. Welcoming the autumn equinox with apple-picking and a harvest meal. These are all examples of rituals that you can incorporate into your home life. They help children to mark the passing of time, to appreciate the changing seasons and the natural cycle of the earth. They foster family togetherness and position home as the central source for growth and discovery.
Nature
Prioritizing nature, and integrating the natural world into your everyday rhythms, can be an important way to spark natural learning with little ones. Take a daily nature walk. Go puddle stomping. Jump in autumn leaves. Catch snowflakes. Create a seasonal nature table, gathering items from your neighborhood to bring into your home and weave into your child’s play. Collect nature-based “toys” for your child, such as acorns and tree bark, shells and rocks. These simple activities connect children to nature in important ways and spark curiosity.
Community
Learning at home with little ones is not an isolated endeavor. Build community by joining your local homeschooling network, most of which have designated play dates or park days for preschool-age children.
Seek community resources for learning, such as museums and libraries, nature centers and farms, colleges and non-profits, local shops and community-based organizations. Many of these community resources have classes for young children and all can serve as helpful hubs for fostering natural learning.
When we begin to see our home and our daily rhythms as an integral part of our child’s learning, the whole idea of living and learning at home with our little ones becomes much less daunting. We spot simple ways to integrate our children into the daily learning all around us, and provide the important conditions of freedom and play, warmth and nourishment to make learning happen. We can live and learn joyfully with our children, using their natural zest for discovery as our beacon.
© Fresh Green Media, LLC.
http://www.greenchildmagazine.com/learning-home/
Comments


Linux privilege escalation can be divided into several sections of enumeration and trial and error.
A large amount of enumeration can be required. Generally, the easy wins are considered:
Lax su or sudo permissions
Vulnerable kernel (unpatched/not up to date)
Lax PATH permissions
Lax file permissions
SUID / SGID binaries
The potential for a user to have su or sudo powers without a password has been seen before. Not entirely common nowadays, but it takes two seconds to verify. Also worth another check if/when you discover a user password.
When identifying software version vulnerabilities, be sure to search on several places for potential vulnerabilities
See > Exploits and Advisories > Exploits and Advisories
Generally, you'll need the ability to send files/exploits to and from the target machine. Look in the File Transfer section for potential ways to achieve this.
Having learned about and performed a lot of privilege escalation over recent months, there are several reasons I can think of that can make this especially difficult on Linux.
1) Linux has always been designed as a multi-user operating system, which means that many features have been included over the years, to make privilege escalation more difficult (as well as secure default-configurations).
2) There is a huge diversity of Linux distributions, and builds, so there are no "one size fits all" exes that you can just download and run.
3) Many Linux Distributions have integrated application-updates (something which does not happen on Windows). This means that (if configured correctly) the operating system AND most of the applications will get updates automatically.
4) Many Offsec students are from a Windows background, where privilege escalation is often not needed. This is either because ordinary user accounts are in the local Administrator group, or because there are many Windows remote-exploits which give direct System or Administrator access and do not require escalation.
5) Linux configuration issues can sometimes be hard to spot, especially if you are not very familiar with Linux file-rights and access-control methods.
So, if you are learning how to perform privilege escalation on linux, you should expect it to be more difficult than Windows.
Linux privilege escalation is difficult, it's supposed to be, but practice can make it easier.
Enumeration is key
Linux privilege escalation is all about:
1) Enumeration, more enumeration, and more enumeration
2) Sorting through data, analysis and prioritisation
3) Knowing where to find exploit code
4) Customisation and compilation skills
5) Confidence that comes from lots of trial and error
Ideas; What information do you need to find?
Here is a list of some of the information an attacker would be looking to find in order to maximise their chances of successful privilege escalation on Linux.
(It's not comprehensive, but it is a good start)
Enumeration of the operating system
What is the distribution type, and version?
What is the Kernel version?
Enumeration of services and applications
What services are running, and in which user-context?
What are the versions of the running services?
What applications are installed, and what versions?
Do any of these services have vulnerable plugins or configurations.
What jobs are scheduled?
Pay particular attention to anything running as root
Enumeration of the file-systems
What configuration files can be read/written in /etc/ ?
What information or content can be found in /var/ ?
Is it possible to write files to places that are in another users path?
Identify SUID and GUID files
Identify world-readable and world-writable files
How are file-systems mounted?
Are there any unmounted file-systems?
Enumeration of confidential information
What sensitive files can be found?
Are there any passwords in; scripts, databases, configuration files or log files?
What user information can be found?
Can private-key information be found?
Examine files in user home directories (if possible)
Enumeration of communications and networking
What NICs does the system have?
What are the network configuration settings?
What other hosts are communicating with the system?
Are there any cached IP or MAC addresses?
Is packet sniffing possible, and if so what can be seen?
Is SSH tunnelling possible?
Preparation for exploit code
What development tools/languages are installed/supported?
What areas can be written to?
Where can code be executed?
How can files be uploaded?
Finding exploit code
www.exploit-db.com
www.securityfocus.com
www.packetstormsecurity.org
www.google.com
The only way to learn how to do privilege escalation is to practice, and keep trying.
Be good!
Mitigations
From a defensive stance, you need to ask yourself very similar questions
Have you made any of the above information easy for an attacker to find?
Is the system fully patched? (Kernel, operating system, and all applications)
Are services running with the minimum level of privileges required?
Bastille Linux is a set of scripts that can be run to harden a Linux system
(checking for some of the above issues, and many more besides)


The Marie Kondo of Tab Management
Organize your tabs.
Organize your life.
Organize your tabs.
Organize your life.
Lorem ipsum dolor sit, amet consectetur?
Lorem ipsum dolor sit, amet consectetur?
Lorem ipsum dolor sit, amet consectetur?
Lorem ipsum dolor sit, amet consectetur?
1. Find Your Tab
2. State Your Case
3. Save
Raving Fan
Raving Fan
Raving Fan


This page includes projects I have worked on as a part of my coding bootcamp. Each project has a brief description and a link to the project itself or the GitHub repository with the project files. Check out some of my previous projects here.
Mock Wikipedia Site built with Django.
Mock Twitter Site built with Mongo DB, Express/Node JS, and React.
Travel recommendation and review site built with Django and the Google Maps API.


Visual Testing
Automated Visual Regression Testing¶
(Watch the tutorial on YouTube)
Automated Visual Regression Testing helps you detect when the layout of a web page has changed. Rather than comparing screenshots, layout differences are detected by comparing HTML tags and attributes with a baseline. If a change is detected, it could mean that something broke, the web page was redesigned, or dynamic content changed.
To handle automated visual testing, SeleniumBase uses the self.check_window()
method, which can set visual baselines for comparison and then compare the latest versions of web pages to the existing baseline.
The first time a test calls self.check_window()
with a unique "name" parameter, the visual baseline is set, which means a folder is created with the following files:
* page_url.txt -> The URL of the current window
* screenshot.png -> A screenshot of the current window
* tags_level1.txt -> HTML tags from the window
* tags_level2.txt -> HTML tags + attribute names
* tags_level3.txt -> HTML tags + attribute names+values
After the first time self.check_window()
is called, later calls will compare the HTML tags and attributes of the latest window to the ones from the first call (or to the ones from the call when the baseline was last reset).
Here's an example call:
self.check_window(name="first_test)", level=3)
On the first run (or if the baseline is being set/reset) the "level" doesn't matter because that's only used for comparing the current layout to the existing baseline.
Here's how the level system works: * level=0 -> DRY RUN ONLY - Will perform a comparison to the baseline, and print out any differences that are found, but won't fail the test even if differences exist. * level=1 -> HTML tags are compared to tags_level1.txt * level=2 -> HTML tags and attribute names are compared to tags_level2.txt * level=3 -> HTML tags and attribute names+values are compared to tags_level3.txt
As shown, Level-3 is the most strict, Level-1 is the least strict. If the comparisons from the latest window to the existing baseline don't match, the current test will fail, except for Level-0 checks, which print Level-3 results without failing the test.
You can reset the visual baseline on the command line by adding the following parameter at runtime:
--visual_baseline
As long as --visual_baseline
is used on the command line while running tests, the self.check_window()
method cannot fail because it will rebuild the visual baseline rather than comparing the html tags of the latest run to the existing baseline. If there are any expected layout changes to a website that you're testing, you'll need to reset the baseline to prevent unnecessary failures.
self.check_window()
will fail with "Page Domain Mismatch Failure" if the domain of the current URL doesn't match the domain of the baseline URL.
If you want to use self.check_window()
to compare a web page to a later version of itself in the same test, add the baseline=True
parameter to your first self.check_window()
call to use that as the baseline. (This only makes sense if you're calling self.check_window()
more than once with the same "name" parameter in the same test.)
Automated Visual Testing with self.check_window()
is not very effective for websites that have dynamic content because that changes the layout and structure of web pages. For those pages, you're much better off using regular SeleniumBase functional testing, unless you can remove the dynamic content before performing the comparison, (such as by using self.ad_block()
to remove dynamic ad content on a web page).
Example usage of self.check_window()
with different levels:
self.check_window(name="testing", level=0)
self.check_window(name="xkcd_home", level=1)
self.check_window(name="github_page", level=2)
self.check_window(name="wikipedia_page", level=3)
self.check_window(name="helloworld", baseline=True)
### Do something that may change the web page
self.check_window(name="helloworld", level=3)
Here's an example where clicking a button makes a hidden element visible:
from seleniumbase import BaseCase
class VisualLayoutTest(BaseCase):
def test_applitools_layout_change_failure(self):
self.open('https://applitools.com/helloworld?diff1')
print('\nCreating baseline in "visual_baseline" folder.')
self.check_window(name="helloworld", baseline=True)
# Click a button that changes the text of an element
self.click('a[href="?diff1"]')
# Click a button that makes a hidden element visible
self.click("button")
self.check_window(name="helloworld", level=3)
Here's the output of that: (Text changes do not impact visual comparisons)
AssertionError:
First differing element 39:
['div', [['class', ['section', 'hidden-section', 'image-section']]]]
['div', [['class', ['section', 'image-section']]]]
- ['div', [['class', ['section', 'hidden-section', 'image-section']]]],
? ------------------
+ ['div', [['class', ['section', 'image-section']]]],
*
*** Exception: <Level 3> Visual Diff Failure:
* HTML tag attribute values don't match the baseline!
Here's an example where a button is removed from a web page:
from seleniumbase import BaseCase
class VisualLayoutTest(BaseCase):
def test_python_home_layout_change_failure(self):
self.open('https://python.org/')
print('\nCreating baseline in "visual_baseline" folder.')
self.check_window(name="python_home", baseline=True)
# Remove the "Donate" button
self.remove_element('a.donate-button')
self.check_window(name="python_home", level=3)
Here's the output of that:
AssertionError:
First differing element 33:
['a', [['class', ['donate-button']], ['href', '/psf/donations/']]]
['div', [['class', ['options-bar']]]]
- ['a', [['class', ['donate-button']], ['href', '/psf/donations/']]],
- 'display: list-item; opacity: 0.995722;']]],
? -------------------
+ 'display: list-item;']]],
*
*** Exception: <Level 3> Visual Diff Failure:
* HTML tag attribute values don't match the baseline!
Here's an example where a web site logo is resized:
from seleniumbase import BaseCase
class VisualLayoutTest(BaseCase):
def test_xkcd_layout_change_failure(self):
self.open('https://xkcd.com/554/')
print('\nCreating baseline in "visual_baseline" folder.')
self.check_window(name="xkcd_554", baseline=True)
# Change height: (83 -> 130) , Change width: (185 -> 120)
self.set_attribute('[alt="xkcd.com logo"]', "height", "130")
self.set_attribute('[alt="xkcd.com logo"]', "width", "120")
self.check_window(name="xkcd_554", level=3)
Here's the output of that:
AssertionError:
First differing element 22:
['img[30 chars]['height', '83'], ['src', '/s/0b7742.png'], ['width', '185']]]
['img[30 chars]['height', '130'], ['src', '/s/0b7742.png'], ['width', '120']]]
- ['height', '83'],
? ^
+ ['height', '130'],
? ^ +
- ['width', '185']]],
? ^^
+ ['width', '120']]],
? ^^
*
*** Exception: <Level 3> Visual Diff Failure:
* HTML tag attribute values don't match the baseline!
To run the example (from examples/visual_testing/) with a pytest HTML Report, use:
pytest test_layout_fail.py --html=report.html


Your contact details were saved successfully.
This privacy policy explains how we may collect, store, use, and disclose any personal information that you provide to us when using this website. Your continued use of this website provides your unconditional consent to us collecting, storing, using, and disclosing your personal information in the manner set out below. This privacy policy is subject to, and must be read in conjunction with, our Terms of Use.
In this privacy policy ‘we’, ‘us’, and ‘our’ refers to the SmartBrands.
We may collect your personal information (including, without limitation, your name, email address, phone number, and postal address) when you use this website. You may decide not to provide your personal information to us. However, if you do not provide it, we may not be able to provide you with access to certain information or services.
When you visit our website, we may use automated technology (such as usage monitoring software, cookies, and sessions) to collect and store certain information about your visit. Please see the Cookies for more information.
We will not use or disclose your personal information except in accordance with the New Zealand Privacy Act 1993. We may use your personal information to: verify your identity and to assist you if you forget your username or password for any of the services we provide to you via the Internet; communicate with you; analyse usage of this website; provide you with further information, news, and promotional material; and improve the content of this website and to customise this website to your preferences. We will not sell, rent, or lease your personal information to third parties. Your personal information will be made available internally for the above purposes and we may also disclose your personal information to third parties, who have agreed to treat your personal information in accordance with this privacy policy, for similar purposes. By providing us with your personal information, you consent to our using and disclosing your personal information in the manner set out above. We will only use or disclose personal information that you have provided to us, or which we have obtained about you: for the above-mentioned purposes; if you have authorised us to do so; if we have given you notification of the intended use or disclosure and you have not objected to that use or disclosure; if we believe that the use or disclosure is reasonably necessary to assist a law enforcement agency or an agency responsible for national security in the performance of their functions; if we believe that the use or disclosure is reasonably necessary to enforce any legal rights we may have, or is reasonably necessary to protect the rights, property and safety of us, our customers, or others; or if we are authorised, required or permitted by law to disclose the information. Storage and security Personal information collected on this website is collected and held by Tourism New Zealand. We will take reasonable efforts to protect personal information that is held by us from loss, misuse, unauthorised access, disclosure, alteration, or destruction. Third party websites This website may contain hyperlinks to third party websites. We are not responsible for the content of such websites, or for the manner in which those websites collect, hold, use, and distribute any personal information you provide. When visiting a third party website from hyperlinks displayed on this website, we encourage you to review the privacy statements of those websites so that you can understand how the personal information you provide will be will collected, held, used and distributed. Right to access and correct You may request access to, or correction of, any personal information we hold about you by contacting our privacy officer at<EMAIL_ADDRESS>To ensure that the personal information we hold about you is accurate and current, please notify us of any changes to your personal information as soon as possible.
We reserve the right, at our discretion, to update or revise this privacy policy at any time. Changes to this privacy policy will take effect immediately once published on this website. Please check this privacy policy regularly for modifications and updates. If you continue to use this website or if you provide any personal information after we post changes to this privacy policy, this will indicate your acceptance of any such changes.
This privacy policy was last updated on 07 May 2018.


Built with Alectryon, running Coq+SerAPI. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑Ctrl+↓ to navigate, Ctrl+🖱 to focus. On Mac, use ⌘ instead of Ctrl.
Cached reads
This file checks that reading from a cache works. To compile:


--- layout: page title: About header-img: "img/about-bg.png" ---
I'm a former Life Insurance professional from beautiful Nashville, TN. A few years ago I set out to build a tech platform to change the way Life Insurance agents run their business. In the process, I spent two years learning web/software development and fell in love with it. Now I'm a student @ Flatiron School, polishing my skills with the goal of joining a company as a Software Engineer.


{% extends "tj/base_template.html" %} {% block title %}OECD CRS Data on Transitional Justice{% endblock %} {% block body_content %}
This website provides an interface to search the OECD's Creditor Reporting System (CRS) data, much like OECD's QWIDS site.
The intention is to build a repository of international aid data related to Transitional Justice (TJ) as recorded in the CRS database, which includes all bilateral assistance from OECD member states and some multilateral assistance. TJ data is not clearly designated as such in CRS, so manual classification has been performed on the results of ad-hoc text queries in various languages (e.g. "transitional justice", "truth", "ICTY", etc).
You can review the results of this classification here.
Raw CRS data was downloaded from the OECD on 2014-01-30 and filtered on various criteria:
The data processing and website code is open source, and available on github.
Paige Arthur is the primary persion responsible for querying and coding the grant data. She is Principal of Public Action Research. You can contact her at<EMAIL_ADDRESS>Andrew Rosenfeld wrote the code to collect and transform OECD data and interact with it via this web site.
The development of the database is supported through a grant from the Bureau of Democracy, Human Rights, and Labor of the U.S. State Department, as well as through pro bono work from Andrew Rosenfeld.


Member-supported Colorado news.Sign up for our free, 3x weekly newsletter, The Sunriser.
Color = % change over prev 5 years | DATA: COLORADO STATE DEMOGRAPHER


Working as a Software Engineer for Groupon's API Team.
I work mostly in Java but knows Python and C++ quite well and learning Javascript.


CommonJS support for map functions¶
CommonJS support allows you to use CommonJS notation inside map and reduce functions, but only of libraries that are stored inside the views part of the design doc.
So you could continue to access CommonJS code in design_doc.foo, from your list functions etc, but we’d add the ability to require CommonJS modules within map and reduce, but only from design_doc.views.lib.
There’s no worry here about namespace collisions, as Couch just plucks views.*.map and views.*.reduce out of the design doc. So you could have a view called lib if you wanted, and still have CommonJS stored in views.lib.sha1 and views.lib.stemmer if you wanted.
The implementation is simplified by enforcing that CommonJS modules to be used in map functions be stored in views.lib.
A sample design doc (taken from the test suite in Futon) is below:
{
"views" : {
"lib" : {
"baz" : "exports.baz = 'bam';",
"foo" : {
"zoom" : "exports.zoom = 'yeah';",
"boom" : "exports.boom = 'ok';",
"foo" : "exports.foo = 'bar';"
}
},
"commonjs" : {
"map" : "function(doc) { emit(null, require('views/lib/foo/boom').boom)}"
}
},
"_id" : "_design/test"
}
The require() statement is relative to the design document, but anything loaded form outside of views/lib will fail.


Remember Me
LOGIN
Forgot Password?
Reset Password
cancel
Password reset link send to your email.
Back to login


Layers center to GeoJSON example
Click the button to center the map to the extent of the Japan GeoJSON Vector Layer.