labeled
by Kevin Reiss at 2022-08-19 16:29:19.renamed
by Kevin Reiss at 2022-08-19 16:29:35.unlabeled
by Jane Sandberg at 2022-08-19 16:30:11.labeled
by Jane Sandberg at 2022-08-19 16:30:11.referenced
by Kevin Reiss at 2022-08-19 20:49:59.merged
by Kevin Reiss at 2022-08-19 20:49:59.closed
by Kevin Reiss at 2022-08-19 20:49:59.head_ref_deleted
by Kevin Reiss at 2022-08-19 20:50:00.referenced
by Kevin Reiss at 2022-08-19 20:50:46.merged
by Kevin Reiss at 2022-08-19 20:50:46.closed
by Kevin Reiss at 2022-08-19 20:50:46.head_ref_deleted
by Kevin Reiss at 2022-08-19 20:50:47.closed
by Kevin Reiss at 2022-08-19 20:50:47.@rladdusaw Has this been run on staging indexing?
ready_for_review
by None at 2022-08-19 13:55:45.mentioned
by None at 2022-08-19 16:14:55.subscribed
by None at 2022-08-19 16:14:55.deployed
by None at 2022-08-19 19:27:51.referenced
by Jane Sandberg at 2022-08-19 21:26:51.merged
by Jane Sandberg at 2022-08-19 21:26:51.closed
by Jane Sandberg at 2022-08-19 21:26:51.head_ref_deleted
by Jane Sandberg at 2022-08-19 21:26:51.closed
by Jane Sandberg at 2022-08-19 21:27:13.referenced
by Jane Sandberg at 2022-08-19 22:06:10.merged
by Jane Sandberg at 2022-08-19 22:06:10.closed
by Jane Sandberg at 2022-08-19 22:06:10.head_ref_deleted
by Jane Sandberg at 2022-08-19 22:06:10.head_ref_force_pushed
by Francis Kayiwa at 2022-08-19 13:34:12.referenced
by Jane Sandberg at 2022-08-19 16:44:22.merged
by Jane Sandberg at 2022-08-19 16:44:23.closed
by Jane Sandberg at 2022-08-19 16:44:23.@rladdusaw did you run the repec playbook? Just wondering if this ticket can be closed.
mentioned
by None at 2022-08-19 21:31:33.subscribed
by None at 2022-08-19 21:31:33.review_requested
by Jane Sandberg at 2022-08-19 21:41:29.labeled
by Trey Pendragon at 2022-08-19 17:36:35.labeled
by Trey Pendragon at 2022-08-19 17:39:53.We'll also need to support Ephemera content.
Are supplemental files going to be handled as part of this ingest? If so, then a naming convention to make sure we correctly identify the thesis PDF would be helpful.
@escowles I'd need an example of an ETD with supplemental files in DSpace to answer that question.
labeled
by Trey Pendragon at 2022-08-19 17:53:52.labeled
by Trey Pendragon at 2022-08-19 17:53:52.mentioned
by Esmé Cowles at 2022-08-19 18:55:11.subscribed
by Esmé Cowles at 2022-08-19 18:55:11.Will all attributes be supported in this JSON/YML file? If so, this seems like an interesting SIP format that could be an alternative to the Rake-based import tasks.
labeled
by Trey Pendragon at 2022-08-19 17:45:41.deployed
by None at 2022-08-19 20:40:35.referenced
by Eliot Jordan at 2022-08-19 20:52:28.merged
by Eliot Jordan at 2022-08-19 20:52:28.closed
by Eliot Jordan at 2022-08-19 20:52:28.head_ref_deleted
by Eliot Jordan at 2022-08-19 20:52:29.This broke because we updated Shrine when we updated Rails. In the old version, put used to just require something that responded to #path (https://github.com/shrinerb/shrine/blob/0bda9f969a6bd610fdbc93041120dda81b5a7d86/lib/shrine/storage/s3.rb#L288), now it requires an IO (https://github.com/shrinerb/shrine/blob/v3.4.0/lib/shrine/storage/s3.rb#L222-L230)
assigned
by Eliot Jordan at 2022-08-19 20:37:54.assigned
by Trey Pendragon at 2022-08-19 20:38:11.referenced
by Trey Pendragon at 2022-08-19 20:39:08.closed
by Eliot Jordan at 2022-08-19 20:52:29."Walk-in" access is confirmed as being the following currently: if, after the embargo date has elapsed a thesis/dissertation has walk-in access set to "yes," this means that users can only access the file at a dedicated desktop machine with a fixed IP, in the Mudd Reading Room.
Additional resource on embargo types - https://undergraduateresearch.princeton.edu/independent-work/thesis-archive
"Walk-in" access is confirmed as being the following currently: if, after the embargo date has elapsed a thesis/dissertation has walk-in access set to "yes," this means that users can only access the file at a dedicated desktop machine with a fixed IP, in the Mudd Reading Room.
This reads like our readingroom
use case with IPs being set for those machines (would be great, we've had that feature for years and haven't been able to use it) - it would mean those machines would also be able to access other reading room only material. If we're okay with that, then great. We just need the IPs.
@kelynch is gonna follow up and get back to us.
Thanks, @kelynch ! ok. Reading through the embargo types and expectations on that page, I see a few things in the document you shared that seem contradictory to above (and I just want to make sure I understand correctly).
mentioned
by Kate Lynch at 2022-08-19 20:59:05.subscribed
by Kate Lynch at 2022-08-19 20:59:05.mentioned
by Kate Lynch at 2022-08-19 21:05:07.subscribed
by Kate Lynch at 2022-08-19 21:05:07.I started working on this, but MemberValidator got added here: https://github.com/pulibrary/figgy/commit/f3e3dbb86e7f0f81f9df75e66420a3328598b225, which supports the "Attach" button on scanned maps. So this validator is so that if someone puts an ID in there to a non-existent resource it gives them an error. Maybe it should only be checking new member_ids..?
assigned
by Trey Pendragon at 2022-08-19 23:09:00.referenced
by Trey Pendragon at 2022-08-19 23:30:59.referenced
by Trey Pendragon at 2022-08-19 23:36:17.head_ref_force_pushed
by Trey Pendragon at 2022-08-19 23:36:17.Marking this high priority just so we'll talk about it during our maintenance planning.
mentioned
by Jane Sandberg at 2022-08-19 17:55:51.subscribed
by Jane Sandberg at 2022-08-19 17:55:51.mentioned
by Axa Mei Liauw at 2022-08-19 17:55:51.subscribed
by Axa Mei Liauw at 2022-08-19 17:55:51.labeled
by Trey Pendragon at 2022-08-19 23:38:39.labeled
by Trey Pendragon at 2022-08-19 23:42:26.labeled
by Trey Pendragon at 2022-08-19 23:53:26.labeled
by Trey Pendragon at 2022-08-19 23:53:26.referenced
by Trey Pendragon at 2022-08-19 23:54:23.referenced
by Trey Pendragon at 2022-08-19 23:55:16.referenced
by Trey Pendragon at 2022-08-19 23:58:30.referenced
by Trey Pendragon at 2022-08-20 00:06:51.referenced
by Trey Pendragon at 2022-08-20 00:24:06.head_ref_force_pushed
by Trey Pendragon at 2022-08-20 00:06:52.head_ref_force_pushed
by Trey Pendragon at 2022-08-20 00:24:07.labeled
by None at 2022-08-19 11:07:25.referenced
by Eliot Jordan at 2022-08-19 16:39:14.merged
by Eliot Jordan at 2022-08-19 16:39:14.closed
by Eliot Jordan at 2022-08-19 16:39:14.head_ref_deleted
by Eliot Jordan at 2022-08-19 16:39:16.referenced
by Eliot Jordan at 2022-08-19 20:00:55.merged
by Eliot Jordan at 2022-08-19 20:00:55.closed
by Eliot Jordan at 2022-08-19 20:00:55.head_ref_deleted
by Eliot Jordan at 2022-08-19 20:00:58.renamed
by None at 2022-08-19 18:36:03.referenced
by Eliot Jordan at 2022-08-19 20:02:11.merged
by Eliot Jordan at 2022-08-19 20:02:11.closed
by Eliot Jordan at 2022-08-19 20:02:11.head_ref_deleted
by Eliot Jordan at 2022-08-19 20:02:14.head_ref_deleted
by Max Kadel at 2022-08-19 12:22:26.assigned
by Max Kadel at 2022-08-19 14:31:50.Hey team! Please add your planning poker estimate with ZenHub @maxkadel @sandbergja @rladdusaw @regineheberlein
mentioned
by None at 2022-08-19 16:19:16.subscribed
by None at 2022-08-19 16:19:16.mentioned
by Jane Sandberg at 2022-08-19 16:19:16.subscribed
by Jane Sandberg at 2022-08-19 16:19:16.mentioned
by None at 2022-08-19 16:19:16.subscribed
by None at 2022-08-19 16:19:16.mentioned
by Max Kadel at 2022-08-19 16:19:17.subscribed
by Max Kadel at 2022-08-19 16:19:17.Hey team! Please add your planning poker estimate with ZenHub @maxkadel @regineheberlein @rladdusaw @sandbergja
mentioned
by None at 2022-08-19 16:22:09.subscribed
by None at 2022-08-19 16:22:09.mentioned
by Jane Sandberg at 2022-08-19 16:22:09.subscribed
by Jane Sandberg at 2022-08-19 16:22:09.mentioned
by None at 2022-08-19 16:22:09.subscribed
by None at 2022-08-19 16:22:09.mentioned
by Max Kadel at 2022-08-19 16:22:09.subscribed
by Max Kadel at 2022-08-19 16:22:09.labeled
by Kevin Reiss at 2022-08-19 16:27:29.Coverage remained the same at 94.445% when pulling 805ce9a088fc907a1fb8c2c560ae816d80d8dd38 on deprecateborrow-directroute into 404762b8d48f3c82ddfb4485ecc9dcecffc98312 on main.
deployed
by None at 2022-08-19 13:52:31.ready_for_review
by Max Kadel at 2022-08-19 14:01:54.referenced
by Max Kadel at 2022-08-19 17:22:11.merged
by Max Kadel at 2022-08-19 17:22:11.closed
by Max Kadel at 2022-08-19 17:22:11.head_ref_deleted
by Max Kadel at 2022-08-19 17:22:12.closed
by Max Kadel at 2022-08-19 17:22:12.assigned
by Max Kadel at 2022-08-19 14:04:34.closed
by Max Kadel at 2022-08-19 17:22:12.Issue moved to pulibrary/figgy #5376 via ZenHub
closed
by Jane Sandberg at 2022-08-19 17:55:51.Coverage remained the same at 94.529% when pulling a5eae8e3cfb82437911915707a6bc56f13d560eb on add-implementation-note into 404762b8d48f3c82ddfb4485ecc9dcecffc98312 on main.
referenced
by Kevin Reiss at 2022-08-19 22:40:17.merged
by Kevin Reiss at 2022-08-19 22:40:17.closed
by Kevin Reiss at 2022-08-19 22:40:17.head_ref_deleted
by Kevin Reiss at 2022-08-19 22:40:17.referenced
by Kevin Reiss at 2022-08-19 22:40:46.merged
by Kevin Reiss at 2022-08-19 22:40:46.closed
by Kevin Reiss at 2022-08-19 22:40:46.head_ref_deleted
by Kevin Reiss at 2022-08-19 22:40:47.closed
by Kevin Reiss at 2022-08-19 22:40:47.head_ref_force_pushed
by None at 2022-08-19 19:52:58.convert_to_draft
by Hector Correa at 2022-08-19 20:26:54.referenced
by Jane Sandberg at 2022-08-19 15:25:44.merged
by Jane Sandberg at 2022-08-19 15:25:44.closed
by Jane Sandberg at 2022-08-19 15:25:44.head_ref_deleted
by Jane Sandberg at 2022-08-19 15:25:45.referenced
by Francis Kayiwa at 2022-08-19 16:41:57.referenced
by Francis Kayiwa at 2022-08-19 16:40:17.merged
by Francis Kayiwa at 2022-08-19 16:40:17.closed
by Francis Kayiwa at 2022-08-19 16:40:17.head_ref_deleted
by Francis Kayiwa at 2022-08-19 16:40:18.referenced
by Francis Kayiwa at 2022-08-19 16:41:57.Closing, since we should just upgrade Drupal to 9.4.5, which includes this fix: https://www.drupal.org/project/drupal/releases/9.4.5
OK, I won't notify you again about this release, but will get in touch when a new version is available. If you'd rather skip all updates until the next major or minor version, let me know by commenting @dependabot ignore this major version
or @dependabot ignore this minor version
.
If you change your mind, just re-open this PR and I'll resolve any conflicts on it.
closed
by Jane Sandberg at 2022-08-19 21:50:23.head_ref_deleted
by None at 2022-08-19 21:50:32.


I was a traveller,
Treading chains of roads,
Not knowing where to go.
But that night as I walked under the starless sky,
I was followed by a dreadful roar of my past.
My chaotic mind wandered in every direction,
My fearful heart trembled within its cage,
My eyes shut praying the lord,
When they opened, they saw
Will o’ the Wisp
Burning blue in the mist,
Calling upon my name melodiously,
I heard rumours of getting lost following this little ghost fire
But I could see no light guiding me either.
As the roar amplified,
I followed the trail of blue flames into the dark forest
That stood eerily lifeless.
Of course the tales of the night fires were true,
Will o’ the Wisp
Made me run deeper into the maze of despair,
And there I stood now, in the middle of nowhere
In the middle of five mirrors that pillared around me.
I saw myself in each of them,
Each of them smiling at me,
“You love me, don’t you?” asked the one bearing innocence of a child.
“Are you afraid of yourself?” asked my mirror twin with a twisted smile.
“Rein me before I go wild.” ordered the one with raging eyes.
“The dawn will soon arise!” said the one with a hopeful light.
“Give time a chance to show you the light!” said the one with a solemn voice.
I stood there perplexed, absorbing the series of sentences.
And when I looked up,
I was alone again,
Darkness had as though grown a little older
As its shade scaled up by another number
I heard again the roar, growing stronger
But Will o’ the Wisp was nowhere to be found!
Now that I was drowned further,
I sat down devoid of hope,
Just when the monster reached behind me,
A voice rang in my head,
“The dawn will soon arise!”
And for one last time I opened my eyes
To see a blue flame burning in the mist,
It was will o’ the wisp!
But this time it followed behind me
Towards the monster I feared.
“Are you afraid of yourself?”
Another voice rang and within me
Courage fired.
My eyes slowly followed the light,
To find the demon standing behind,
It was me!

I secretly wished to be like her.

Saying so she hugged me tight and whispered,
“Those roars were the scars you held on tightly inside!”
“Let go! Let them heal with time! Give time, a chance to show you the light!”
Her words rung like an alarm in my head
I was lost in the forest of despair.
Now I realise why will o’ the wisp brought me here
To lose the path that forbade me to find myself
Now I am a traveller,
Treading chains of roads,
Just exactly knowing where to go!


function Ninja(){ this.swung = true; } var ninja = new Ninja(); Ninja.prototype.swingSword = function(){ return this.swung; }; assert(ninja.swingSword(), "Method exists, even out of order."); #1 Defines constructor #2 Instantiates object #3 Adds a prototyped method #4 Tests if method was applied 1. When a property reference to an object is made, first the object itself is checked to see if the property exists. If it does, the value is taken. If not... 2. The prototype associated with the object is located and it is checked for the property. If it exists, the value is take. If not... 3. The value is undefined Each object in JavaScript has an implicit property named constructor that references the constructor that was used to create the object. And because the prototype is a property of the constructor, each object has a way to find its prototype.


Saving Private Ryan
Saving Private Ryan is a movie starring Tom Hanks, Matt Damon, and Tom Sizemore. Following the Normandy Landings, a group of U.S. soldiers go behind enemy lines to retrieve a paratrooper whose brothers have been killed in action.


|
Spring Social | ||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.springframework.social.connect.support.AbstractConnection
A
- the service provider's API typepublic abstract class AbstractConnection
Base support class for Connection
implementations.
Defines the state and behavior that is common across connection implementations and independent of any specific authorization protocol.
| Constructor Summary | |
|---|---|
AbstractConnection(ApiAdapter apiAdapter)
Creates a new connection. |
|
AbstractConnection(ConnectionData data,
ApiAdapter apiAdapter)
Creates a connection from the data provider. |
| Method Summary | |
|---|---|
abstract ConnectionData |
createData()
Creates a data transfer object that can be used to persist the state of this connection. |
boolean |
equals(java.lang.Object o)
|
UserProfile |
fetchUserProfile()
Fetch a normalized model of the user's profile on the provider system. |
abstract A |
getApi()
A Java binding to the service provider's native API. |
java.lang.String |
getDisplayName()
A display name or label for this connection. |
java.lang.String |
getImageUrl()
A link to a image that visualizes this connection. |
ConnectionKey |
getKey()
The key identifying this connection. |
protected java.lang.Object |
getMonitor()
Provides subclasses with access to a monitor that can be used to synchronize access to this connection. |
java.lang.String |
getProfileUrl()
The public URL of the connected user's profile at the provider's site. |
boolean |
hasExpired()
Returns true if this connection has expired. |
int |
hashCode()
|
protected void |
initKey(java.lang.String providerId,
java.lang.String providerUserId)
Hook that should be called by subclasses to initialize the key property when establishing a new connection. |
void |
refresh()
Refresh this connection. |
void |
sync()
Sync's this connection object with the current state of the external user's profile. |
boolean |
test()
Test this connection. |
void |
updateStatus(java.lang.String message)
Update the user's status on the provider's system. |
| Methods inherited from class java.lang.Object |
|---|
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public AbstractConnection(ApiAdapter apiAdapter)
apiAdapter
- the Service API adapterpublic AbstractConnection(ConnectionData data, ApiAdapter apiAdapter)
data
- the connection dataapiAdapter
- the Service API adapter| Method Detail |
|---|
public ConnectionKey getKey()
Connection
getKey
in interface Connection
public java.lang.String getDisplayName()
Connection
getDisplayName
in interface Connection
Connection.sync()
public java.lang.String getProfileUrl()
Connection
getProfileUrl
in interface Connection
Connection.sync()
public java.lang.String getImageUrl()
Connection
getImageUrl
in interface Connection
Connection.sync()
public boolean test()
Connection
api
will fail.
Used to proactively test authorization credentials such as an API access token before invoking the service API.
test
in interface Connection
public boolean hasExpired()
Connection
Connection.test()
return false, and any service API invocations fail.
If expired, you may call Connection.refresh()
to renew the connection.
Not supported by all Connection implementations; always returns false if not supported.
hasExpired
in interface Connection
public void refresh()
Connection
Connection.hasExpired()
returns false.
Not supported by all connection implementations; if not supported, this method is a no-op.
refresh
in interface Connection
public UserProfile fetchUserProfile()
Connection
fetchUserProfile
in interface Connection
public void updateStatus(java.lang.String message)
Connection
updateStatus
in interface Connection
message
- the status messagepublic void sync()
Connection
sync
in interface Connection
public abstract A getApi()
Connection
getApi
in interface Connection
public abstract ConnectionData createData()
Connection
createData
in interface Connection
protected void initKey(java.lang.String providerId, java.lang.String providerUserId)
providerId
- the providerIdproviderUserId
- the providerUserIdprotected java.lang.Object getMonitor()
public boolean equals(java.lang.Object o)
equals
in class java.lang.Object
public int hashCode()
hashCode
in class java.lang.Object
|
Spring Social | ||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


Product Management
Toggle navigation
Product List
Add product list
Analytics
Hello world Self Hosting nancy{{10+11}}


RESET PLAY
Player
:
0
Computer
:
0
win
Player
: Select your option
X
O
Select Opponent
Computer
Human


A locale is the name for a collection of parameters (affecting
collating sequences and formatting conventions) that may be different
depending on location or culture. The "C"
locale is the only
one defined in the ANSI C standard.
This is a minimal implementation, supporting only the required "C"
value for locale; strings representing other locales are not
honored. (""
is also accepted; it represents the default locale
for an implementation, here equivalent to "C"
).
locale.h defines the structure lconv
to collect the
information on a locale, with the following fields:
char *decimal_point
"."
in the
C locale.
char *thousands_sep
""
in the C locale.
char *grouping
0
(that is, the string's trailing
NULL
) means to continue grouping digits using the last value
specified. Use CHAR_MAX
to indicate that no further grouping is
desired. ""
in the C locale.
char *int_curr_symbol
""
in the C locale.
char *currency_symbol
""
in the C locale.
char *mon_decimal_point
""
in the C locale.
char *mon_thousands_sep
thousands_sep
, but used for amounts of money.
""
in the C locale.
char *mon_grouping
grouping
, but used for amounts of money.
""
in the C locale.
char *positive_sign
""
in the C locale.
char *negative_sign
""
in the C locale.
char int_frac_digits
CHAR_MAX
(the largest number representable as a char
) in
the C locale.
char frac_digits
CHAR_MAX
in the C locale.
char p_cs_precedes
1
indicates the local currency symbol is used before a
positive or zero formatted amount of money; 0
indicates
the currency symbol is placed after the formatted number.
CHAR_MAX
in the C locale.
char p_sep_by_space
1
indicates the local currency symbol must be separated from
positive or zero numbers by a space; 0
indicates that it
is immediately adjacent to numbers.
CHAR_MAX
in the C locale.
char n_cs_precedes
1
indicates the local currency symbol is used before a
negative formatted amount of money; 0
indicates
the currency symbol is placed after the formatted number.
CHAR_MAX
in the C locale.
char n_sep_by_space
1
indicates the local currency symbol must be separated from
negative numbers by a space; 0
indicates that it
is immediately adjacent to numbers.
CHAR_MAX
in the C locale.
char p_sign_posn
0
means parentheses surround the
number; 1
means the sign is placed before both the number and the
currency symbol; 2
means the sign is placed after both the number
and the currency symbol; 3
means the sign is placed just before
the currency symbol; and 4
means the sign is placed just after
the currency symbol.
CHAR_MAX
in the C locale.
char n_sign_posn
p_sign_posn
.
CHAR_MAX
in the C locale.


Raster/Vector Tiling Demos
Nunavut in Lambert Azimuthal Equal-Area Projection (EPSG:3573)
OpenLayers 4.4.0, Proj4JS 2.4.4
Raster Tiles (Local tilestrata Tile Server)
Vector Tiles (Local tilestrata Tile Server)


Search for packages
npm search [--long] [search terms ...]
npm s [search terms ...]
npm se [search terms ...]
Search the registry for packages matching the search terms.
If a term starts with /
, then it's interpreted as a regular expression.
A trailing /
will be ignored in this case. (Note that many regular
expression characters must be escaped or quoted in most shells.)
Display full package descriptions and other long text across multiple lines. When disabled (default) search results are truncated to fit neatly on a single line. Modules with extremely long names will fall on multiple lines.


If you are an existing user, please export your data as soon as possible.
What's happening?
- From 1st June 2019, we are no longer accepting new sign ups and the My Study Life apps will no longer be available to download from app stores if you have not already downloaded them. The apps will continue to function as normal until 30th June 2019.
- From 1st July 2019, the apps will switch to being read-only, meaning existing schedules, tasks and exams will remain visible but cannot be created.
- From 1st August 2019 the apps will cease to function and only an option to export data will be available.
- On 1st September 2019 the service will shut down and all data will be removed. Any data which has not been exported by this point will be unrecoverable.
What do I need to do?
- Export your data as soon as possible.

Why?
Services such as My Study Life require a huge amount of time, effort and money to develop and maintain. Unfortunatey, after much consideration we concluded there is no viable option for us to continue to operate the service.
If you need assistance exporting your data, please contact<EMAIL_ADDRESS>We will not be answering support tickets unrelated to data export to enable us to help those with data export queries as quickly as possible.


Invalid credentials!
You have been logged out!
Please sign in
Username
Password
Captcha
Sign in
© 2020 @kyussfia
Register


We have listed the 10 apprenticeships nearest to you, based on the postcode you entered. To see your full list of results, use the Find an apprenticeship tool.


rendering main layout with \Phalcon\Mvc\View
| cache on | cache off | |
|---|---|---|
| debug on | link | link |
| debug off | link | link |
rendering main layout, layout, and action view with \Phalcon\Mvc\View
| cache on | cache off | |
|---|---|---|
| debug on | link | link |
| debug off | link | link |
rendering main layout, layout, and action view with \Phalcon\Mvc\View\Simple
| cache on | cache off | |
|---|---|---|
| debug on | link | link |
| debug off | link | link |


A beautifully designed administration panel for Laravel.
Laravel ~ $
$ composer require yal/laraveldash
The design don’t just look good though, they are also fully mobile responsive to accommodate users that are accessing your app ,no matter what size screen they have.
Smart payment page that works seamlessly across devices and is designed to increase your conversion.
Similar to how you'd build it without laravelDash. To create a management page (aka CRUD), you create a CrudController
Your editor for rich text editing built with Vue.js and Quill.js , Simple setup so you can get started quickly , Offers the options you need for more complex scenarios
PHP, HTML, SASS. Those are all the technologies you need to know, to customize anything in laravelDash.
Configurations allows you to set various themes and layout options. It also allow setting site name and default outgoing email address.
Read our documentation for advanced topics with simple, but detailed explanations
Documentation


YouTuber KSI wins boxing rematch with rival Logan Paul
by PA MediaBriton wins six-round cruiserweight bout in LA against fellow YouTube personality
Britain’s KSI has won his six-round cruiserweight boxing fight against fellow YouTube personality, the American Logan Paul.
The fight at the Staples Center in Los Angeles was won by the Watford man in a split decision by 55-56, 57-54, 56-55. The pair first fought last year in Manchester but a “majority draw” was declared after six rounds.
“Last time I was scared to fight,” KSI, whose real name is Olajide Olayinka Williams “JJ” Olatunji, said after the bout. “This time I just went in. I just kept going and going. He couldn’t deal with my jabs. I got him.”
KSI – who has more than 20 million YouTube subscribers – was earlier forced to clarify comments he made before the match.  “After this fight, I still want Logan to be alive and well.”
Paul – who has 19.9 million YouTube subscribers – did not touch gloves with his rival at the end of the match.
Their bout at Manchester Arena last year sold out to 20,000 fans and drew an audience of 2.5 million live viewers and more than 19m subsequent views, making it the biggest internet event in history. It was also named the most popular white-collar boxing match of all time.
Saturday’s fight had been expected to attract 1 million viewers on the London-based pay-per-view service DAZN.


Username<EMAIL_ADDRESS>Password: demo
Sign in
Remember me
Need help?
Need a free account?
Create Account
Need help?
Already have an account? Login


Webapp - Spring example application
Hello World!
Webapp is Java Spring/JSF/database example application. An optimal Java Web stack template (if you do not use Big Data or Spring).
Target server: WildFly (deployable to any Java EE 7 Web Profile application server)
Technologies:
- Spring Boot
- PrimeFaces as JSF UI library
- Liquidbase for database metadata version tracking
- jOOQ for database queries
- PostgreSQL as production database and H2 as unit test database


Romic Xpress Logistics Limited is a procurement and logistics company. Romic Xpress Logistics Limited is registered under the Companies and Allied matters act 1990 with RC number 1504274 under the Nigerian Corporate Affairs Commission.
We are an indigenous company offering services in Logistics, Procurement, Import/Export, Transport/Haulage, Consultancy, Pre-Shipment Documentation and Customs Clearance to mention a few.
Romic Xpress is a multi-faceted corporation driven by a passion for excellence; its activities are anchored on professionalism and a drive for excellent customer delivery. With a focus on delivering only world class service, nothing is spared in ensuring that the client’s expectation is met and exceeded.
With representation in the six geo-political zones of Nigeria, we have always strategically positioned ourselves to better serve our customers, anywhere and under whatever condition.
To continually be at the apex of excellent product and service delivery in all our chosen markets.
To provide cost-effective, befitting business solutions and be the vanguard in the provision of these services, which will ensure that the very needs of our customers are continually met.
To provide cost-effective, befitting business solutions


About OER Bookr
OER (Open Educational Resources) Bookr is one of many sites that not only save students
from triple-digit (or more!) textbook costs, but they also allow
instructors to mix-and-match content for a more personalized,
engaging learning experience. In addition to our inventory of textbooks,
we would like to present you with an addtional 5 resources that offer a wide range of
content and tools to help implement OER in just about any course*.
-
1. College Open
Textbooks
This site lists open textbooks organized by subject area,
many of which have been peer reviewed for their suitability at community colleges.
-
2. Learningpod
Pegged as the "largest library of free, online practice
questions in the world, this Kaplan division teamed up
with OpenStax to create questions sets specifically for its open textbooks.
-
3. Lumen Learning
This OER-focused company provides open courses with "zero textbook cost."
Their curriculum comes with all the OER students will require.
-
4. Open Education
Consortium
The Open Education Consortium is a community of 240-plus schools
as well as organizations and people who want to advance the idea
of "open education." It features an OER resource toolkit, webinars,
in-person events and links to open textbooks.
-
5. Open Learning
Initiative
Carnegie Mellon's (PA) open courses (and associated content)
denote a marked emphasis on STEM, including computing.
* Information Source:
Dian Schaffhauser @campustechnology.com


The relationship between mindfulness and self awareness is that both compliment each or they are seen as the same thing. In Mindfulness, you're paying attention in a particular way which is 'trainable', and with Self Awareness, it maintains a self-reflectiveness that is essentially 'Mindfulness', which means, it is a system that is also 'trainable'.
The self awareness practice that I tried from this chapter was the 'Journaling' practice. The practice of self discovery by writing to yourself. I wrote about "Things that annoy me" for two minutes and "My weaknesses" for two minutes, I then concluded the exercise by reviewing both entries for two minutes. I found it to be an intersting experience. It felt good to be given the opportunity to basically "vent" my frustrations. I feel lighter, rereading what I had written allowed me to understand some of the issues I have stored in my head, allowing to see it on paper gave me a sense of relief, acknowledging the issues I have, and building a solution to become more adequate and not having to indulge on the issue any further because the sense that the issue has been passed from my brain to paper has allowed for a pleasant short-term euphoria which if I continue with this practice on a daily basis, then the euphoric feeling can be present on a long term scale.
Emotions are not what make us who we are. To the mind, our emotions become our existence. If I continue to use mindfulness practice, I will begin to feel that emotions are simply what I feel and it doesn't make me who I am as a person.


This should be automated but this repo doesnt have a modern web test runner set up ¯\_(ツ)_/¯
Close console (if visible) and press start. Results will display in page when done.
This may take a minute please wait...


Press play to preview presets
Amp Settings
DRIVE : distorsion levels
CABINET IMPULSE :
Author: Michel Buffa (@micbuffa), GUI with the help of Mahdi Wartani, big thanks to LePou for giving me so many hints too.
Videos with explanations on YouTube: video1 and video2. You may visit the GitHub repo.
You need Google Chrome, FireFox Nightly or Opera (the app should support soon other browsers) + don't forget to set the default input in your OS preferences. If you plugged a guitar in, then press the pulsing button in the middle of the Amp to activate it.
Otherwise you can try the amp with the audio player on the left, press play and use the preset menu or the buttons/sliders.
The preamp is close to the one from the famous Marshall JCM 800 guitar amp.
Multiple views are possible : Dev - User (current) - Experimental
Press play to preview presets
DRIVE : distorsion levels
CABINET IMPULSE :


{% extends 'base.html' %} {% load i18n %} {% block content %}
{% trans "A server error has occurred. This is our fault not yours." %}
{% trans "Sorry!" %}
{% trans "We'd be very grateful if you sent an email to<EMAIL_ADDRESS>explaining what you did before the error occurred. This will help us correct it."%}
{% endblock %}


Demo Blockchain Instructions - Google Cloud
Spin up your Google Cloud Compute Instance
```Ubuntu 1604-lts 2 CPU 20GB Compute engine Access your instance SSH “remote access”
## Install Pre-reqs
[prerequisits](https://medium.com/google-cloud/deploy-fabcar-on-hyperledger-fabric-93c082c31b7a)
sudo apt-get update sudo apt-get -y upgrade sudo apt-get install python
## Install Go go1.9.x
[instructions](https://www.samclarke.com/installing-go-1-9-on-ubuntu-16-04/) 355MB
sudo add-apt-repository ppa:gophers/archive
sudo apt update
sudo apt-get install golang-1.9-go
echo “export PATH=\$PATH:/usr/lib/go-1.9/bin” >> ~/.profile
source ~/.profile
## Install node
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo apt-get install -y build-essential
nodejs -v
npm -v
## Install docker-ce
[instructions](https://docs.docker.com/install/linux/docker-ce/ubuntu/#extra-steps-for-aufs)
For UBUNTU - you need to remove the older docker.io
sudo apt-get remove docker docker-engine docker.io
sudo apt-get update
sudo apt-get install
apt-transport-https
ca-certificates
curl
software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88
sudo add-apt-repository
“deb [arch=amd64] https://download.docker.com/linux/ubuntu
$(lsb_release -cs)
stable”
sudo apt-get update
sudo apt-get install docker-ce
sudo docker run hello-world
sudo groupadd docker
sudo usermod -aG docker $USER
sudo systemctl enable docker
docker –version
docker run hello-world
You may need to close the shell and open a new one.
## Install docker-compose
[install](https://docs.docker.com/compose/install/#install-compose)
sudo curl -L https://github.com/docker/compose/releases/download/1.19.0/docker-compose-`uname -s-
uname -m` -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose –version
## Install JQ
```sudo apt-get install jq```
## npm install gulp
npm install gulp -g
## Install Hyperledger Fabric
Download and install the binaries - make sure they are compatible:
curl -sSL https://goo.gl/6wtTN5 | bash -s 1.0.0
Alternatively, you can download just the binaries that are necessary:
Hyperledger Fabric is hosted in a docker hub: https://hub.docker.com/u/hyperledger/
Since there are not necessarily “latest” versions, you may want to find the actual latest tags and pull them.
Individually you can pull them like: docker pull hyperledger/fabric-peer:latest
Pull up docker images for required components: (may have to use sudo)
TAG=x86_64-1.0.6
for IMAGE in orderer couchdb peer ca tools
do
docker pull hyperledger/fabric-${IMAGE}:${TAG} &&
docker tag hyperledger/fabric-${IMAGE}:${TAG} hyperledger/fabric-${IMAGE}:latest
done
TAG=x86_64-0.4.6
for IMAGE in baseimage
do
docker pull hyperledger/fabric-${IMAGE}:$[TAG] &&
docker tag hyperledger/fabric-${IMAGE}:${TAG}
hyperledger/fabric-${IMAGE}:latest
done
Individually and for additional requirements:
```docker pull hyperledger/fabric-peer:x86_64-1.0.6
docker pull hyperledger/fabric-ca:x86_64-1.0.6
docker pull hyperledger/fabric-orderer:x86_64-1.0.6
docker pull hyperledger/fabric-couchdb:x86_64-1.0.6
docker pull hyperledger/fabric-baseimage:x86_64-0.4.6
docker pull hyperledger/fabric-tools:x86_64-1.0.6
docker pull hyperledger/fabric-membersrvc:latest
You will need to tag the images with “latest” - a sample is below:
docker pull hyperledger/fabric-baseimage:x86_64-0.4.6
docker tag \
hyperledger/fabric-baseimage:x86_64-0.4.6 \
hyperledger/fabric-baseimage:latest
Add the binaries to your .profile path
export PATH=$PWD/bin:$PATH
Worryingly, some people seem to believe that the latest tag will be automatically updated — that if I pull an image marked latest, docker will take care of checking it is still the newest version before running it each time. This is emphatically not the case – just as with every other tag, you still need to manually docker pull new versions.
Launch Fabric with 3 peers
https://hyperledger-fabric.readthedocs.io/en/latest/write_first_app.html
npm install
./startFabric.sh
mkdir /fabric cd /fabric sudo touch docker-compose.yml sudo nano docker-compose.yml
vp0:
# container_name: vp0
image: hyperledger/fabric-peer
ports:
- "7050:7050"
- "7051:7051"
- "7052:7052"
environment:
- CORE_PEER_ADDRESSAUTODETECT=true
- CORE_VM_ENDPOINT=unix:///var/run/docker.sock
- CORE_LOGGING_LEVEL=WARN
- CORE_PEER_ID=vp0
- CORE_PEER_VALIDATOR_CONSENSUS_PLUGIN=noops
volumes:
- /var/run/docker.sock:/var/run/docker.sock
command: peer node start
vp1:
# container_name: vp1
image: hyperledger/fabric-peer
environment:
- CORE_PEER_ADDRESSAUTODETECT=true
- CORE_VM_ENDPOINT=unix:///var/run/docker.sock
- CORE_LOGGING_LEVEL=WARN
- CORE_PEER_ID=vp1
- CORE_PEER_DISCOVERY_ROOTNODE=vp0:7051
- CORE_PEER_VALIDATOR_CONSENSUS_PLUGIN=noops
volumes:
- /var/run/docker.sock:/var/run/docker.sock
command: peer node start
links:
- vp0
vp2:
# container_name: vp2
image: hyperledger/fabric-peer
environment:
- CORE_PEER_ADDRESSAUTODETECT=true
- CORE_VM_ENDPOINT=unix:///var/run/docker.sock
- CORE_LOGGING_LEVEL=WARN
- CORE_PEER_ID=vp2
- CORE_PEER_DISCOVERY_ROOTNODE=vp0:7051
- CORE_PEER_VALIDATOR_CONSENSUS_PLUGIN=noops
volumes:
- /var/run/docker.sock:/var/run/docker.sock
command: peer node start
links:
- vp0
Then get set the network up with docker-compose
docker-compose up
docker ps
let it run and check the name for vp0 - it may not be simply vp0
curl http://$(docker inspect --format '{{ .NetworkSettings.IPAddress }}' fabric_vp0_1):7050-7052-7050-7052/tcp
Helpful docker commands
docker stop $(docker ps -a -q) docker rm $(docker ps -a -q) If issues with sudo npm
sudo apt-get install -y nginx
gcloud compute ssh talent-exchange \
--project redcell-191816 \
--zone us-east1-c \
-- -L 2200:localhost:8080
docker run \
--rm \
--interactive \
--tty \
--publish=3001:3001 \
--net=host \
node /bin/bash
Set up Apache Web server
sudo apt-get update && sudo apt-get install apache2 -y
echo '<!doctype html>
Hello World!
' | sudo tee /var/www/html/index.html
sudo iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 3001
Utilize the iptables command to point to port 3001 (or whichever port is being served by the app)
IPTABLES
One way is to set up an iptables forwarding rule. iptables will then bind to the desired port (80 or 443) and forward all incoming traffic to your application’s port, such as 1337.
However, this solution requires that you persist the iptables rule so that it gets executed on system startup, because your machine will crash or reboot eventually.
Redirecting traffic from one port to another Let’s issue the following command to redirect incoming traffic on port 80 to our Node.js app that is listening on port 1337:
sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 1337
Automatically re-apply the rule on system reboot Next, go ahead and install iptables-persistent to save the rule permanently and have it reapplied automatically when your system reboots:
sudo apt-get install iptables-persistent
sudo /etc/init.d/iptables-persistent save
That’s it. Now your Node.js app is accessible on port 80 and you should be good to go.
## Check listening ports
lsof -i -P | grep LISTEN
/root/fabric-samples/fabcar/hfc-key-store/


BETA! Wrap into a form, custom validation, have a submit button and display the record
◉ Record
║ Pause
◉ Resume
✖ Stop
◀ Back
◀ Start over


pySpice.solver package¶
This is the core module to the program. Where the circuit’s states is solved. The method used here is called Modified Node Analysis(MNA). For details about this method, please refer here.
pySpice.solver.solver module¶
-
pySpice.solver.solver.
single_solve
(analysis_instance)[source]¶ Sub-Utility to Solve Function, Solving the States for a Single Analysis Type
Parameters: analysis_instance – internal data structure representing the analysis commands Returns: A single frame of the output structure illustracted in the figure below
-
pySpice.solver.solver.
solve
()[source]¶ Top Level Encapsulation of the Utilities to Determine the Circuit’s State
Return: - watchpoint_data: A 3-D array (illustrated in the figure below), if assume the three coordinate of this array to be output[z][x][y]. Then each slices of z direction represents the output of either DC/AC/TRAN analysis. Within each Z frame, the X direction represent the watchlist item which is parsed in parsing phase and the Y direction contains the values solved in each iteration.
pySpice.solver.stamp module¶
-
pySpice.solver.stamp.
make_generator
(src, tran_gene)[source]¶ Make Generator out of the Transinent Stimulates
Because the stimulates for transinent analysis is defines with the voltage/current source, while the time step to transinent analysis is defined in the Transinent analysis command. It is not possible to make the generator describing the voltage/current at certain time point at parsing time. And this task in done here.
This function is the and encapsulation, according to the type of the time varient stimulates, the actually work is assigned to different sub-routines
-
pySpice.solver.stamp.
pulse_generator
(td, tr, pw, tf, per, vdd, gnd, tran_gene)[source]¶ Make generator describing pulse, with rise and falls
-
pySpice.solver.stamp.
sin_generator
(freq, vdd, gnd, tran_gene)[source]¶ Make generator describe sinusoidal variation
-
pySpice.solver.stamp.
stair_generator
(vdd, gnd, up_moment, tran_gene)[source]¶ Make genrator describing a step function
-
pySpice.solver.stamp.
stamp
(analysis_type, analysis_instance, MNA, RHS)[source]¶ Generating MNA and RHS to Represent the Circuit
This function retrieve information from the internal structure to constitute MNA and RHS. It also collects neessary information for doing iterate and converge operations.
Parameters: - analysis_type – ‘ac’, ‘dc’ or ‘tran’
- analysis_instance – internal representation of an analysis command
- MNA – an initialized matrix, with date type defined
- RHS – an initialized vector, data type defined
Returns: - sweep_flag: a bool flag, indicating if iterate meahanism needed to be actived in the engine.
- converge_flag: a bool flag, indicating if converge iteration should be actived
- sweep_list: a list of sweep_item. Each sweep_item contains the information indicating how the solve_engine should change the MNA and RHS in each step of the iteration.
- converge_list: a list of the element whose beahvior is non-linear.
About the class sweep_item, it is comprised of two part: The second part is a generator. In each iteration, by calling the .next() method to this generator, it will give the value needed to be stamped in this iteration. The first part is a list of tuples, with each tuple’s first element of a coordinate, indicating where to change the stamp. The second element to this tuple is a prefix, you need to multiply the value with this prefix to get the final value to be stamped in this position. Using generator is for memory reducing consideration.
pySpice.solver.engine module¶
-
pySpice.solver.engine.
solve_engine
(sweep_flag, sweep_list, converge_flag, converge_list, watch_list, MNA, RHS, ANS)[source]¶ Top-Level Encapsulation of the Matrix Solving Utility
This layer realizes the iterate operation support. This function controls to elicit the core matrix-solving utility at each step of the iteraion and at the same time change the stamping of MNA and RHS to represent different initial status of the circuit.
An graphical illustration of this module can be found below
Parameters: - sweep_flag – described at function stamp
- converge_flag – described at function stamp
- sweep_list – described at function stamp
- converge_list – described at function stamp
- watch_list – a list describe which node/branch’s value are of interest. When everytime the solution of the circuit is reached, only the data for these points will be kept.
- MNA – stamped MNA
- RHS – stamped RHS
- ANS – The solution to the matrix equation. The reason for introduce it as a parameter is only for simplify the iteration process. Because for some element, the value to stamp for next iteration do not come from the generaor, but the answer of the previous iteration(like dynamic elements in transient analysis), so introducing such a parameter and set it’s initial value to 0 and avoid unnecessary branches.
Returns: The value of all sweep points to the nodes/branches appeared on the watch_list
-
pySpice.solver.engine.
state_definer
(converge_flag, converge_list, MNA, RHS)[source]¶ Work out the Answer to the matrix equation, make sure the answer converge to the real state
An inner layer of the engine utility, it encapsualte the functionality to solve circuit state by working out the matrix equation. The mechanism to ensure the answer converge is included into this function. : param : Stated in solve_engine function : return: the raw answer of the matrix equation. Thses values are picked out at the outter layer


Panoramic Media Description Equipment Team Here at panoramic media we really like panoramas sdfsdfsdsf


This is a prototype aiming to provide a system that assists a medical examiner’s office in:
- assembling a case
- tracking the required events
- recording pertinent information
Data throughout the prototype is saved using a session in memory only. To start a new prototype journey with an empty session, return to this page by using the “Medical Examiner Service Alpha” link in the masthead.
Also please note that error checking in form inputs is not yet implemented.


John LaGue is a data scientist. He has helped start several athletic clubs, the Data Science Association at University
of San Francisco, and most recently a cell phone service called Community Phone Company. There are few activities that John does not enjoy. This blog is meant to document and share a few of the expereinces John has had while partaking in a variety of activites.


{% extends "pages/tickets.html" %} {% block finaid_info %}{% endblock %} {% block main %} {% with total_sold_out=1 %} {{ block.super }} {% endwith %} {% endblock %} {% block workshop_registration_tip %}
If you already have a ticket, you can register for workshops below.
{% endblock %} {% block workshop_registration %}Please read the following rules. Registrations not following them will be voided.
You must have a ticket to PyCon CZ to register for workshops.
Use the same e-mail and name you used for your ticket.
You can register for Networking for Geeks (Friday 9:00)
plus one Sunday workshop from 10:00
plus one Sunday workshop from 14:00.
Please cancel your registration if you can’t come so somebody else can attend! Even on Sunday morning.
There is a link to Change details page in your confirmation e-mail. Click on Cancel this ticket button and you’re done.
Do not join waiting lists for the same time you have registered a workshop.
If you joined a waiting list, you might get an offer to register a seat as an e-mail from<EMAIL_ADDRESS>Everybody on the waiting list will be sent the offer at the same time to have a fair chance: the quickest will get a seat.
If the offer expires or somebody will be quicker than you don’t join the waiting list again, you're still on it.
If anybody cancels, we’ll send last offers on Sunday.


Hello Turtle Lover!
In this site, you can look at fun facts, famous turtles in cinematic history, watch videos, and learn more about save the turtle campaigns.
Fun Facts
A turtle’s shell is not an exoskeleton.
Some people mistake a turtle’s hard outer shell for an exoskeleton, but it’s actually a modified rib cage that’s part of the vertebral column.
Turtles have a second shell
Besides their outer shell, turtles also have a lower shell, called a plastron. The plastron usually joins with the upper shell—called the carapace—along both sides of the body to create a complete skeletal box.
The largest turtles weigh more than a thousand pounds.
You aren’t going to find these in your neighborhood pet store tank, but the largest sea turtle species—the leatherback turtle—can weigh between 600 and 2,000 pounds and grow up to 8 feet in length.
In some species, weather determines if turtle eggs become male or female.
In certain species of turtles, within a viable range, lower temperatures lead to male eggs hatching, while higher temperatures lead to female hatchlings
Turtles lose their first “baby tooth” within an hour.
Baby turtles, called hatchlings, have an “egg tooth” on their beak to help them hatch out of their shell. This tooth disappears approximately an hour after hatching.
Sea turtles lay their eggs in a nest they dig in the sand with their rear flippers. The group of eggs is called a clutch.
They usually lay 100-125 eggs per nest and will nest multiple times, about two weeks apart, over several months. As soon as the eggs hatch (roughly 2 months later), the hatchlings dig out of their nest. This process generally takes a few days. Once they emerge, the tiny turtles hurry to the sea and make their way offshore into the open ocean. Sea turtles face many threats, but those that survive to become adults are decades old.


[§323B-1] Applicability. This chapter shall apply, unless amended by specific reference to this chapter or any section thereof. [L 2012, c 315, pt of §2]


Date: Thursday 19. 6. 2014, 18:00
From Paris to Brno - Largest UK electrical retailer e-commerce platform migration (CZ)
We will have 4 talks, 25 minutes for each.
Thanks to our sponsors there will be a lottery. Every lucky guy can win free licence of PhpStorm or free coupon of 1 year of the Micro plan for GitHub.
Thanks to our sponsors every attendees will have free food and beers. Oh yeah :-)
Thanks to
Thank you.
Our goal is to create a community of php programmers in Brno. In doing so we are organizing events where developers can listen to talks, chat, have a good beer and most importantly have a good time together.
We try to organize meetup every 2 months. Usually these meetups are sponsored by different sponsors who provide free food for all attendees
If you would like to have a speach at some event or you are interested in sponsorship, do not hesitate to contact me and we can discuss details. You can find me on Google+ or send me an e-mail to zapletal.jakub (at) gmail.com.


A while back I had a conflict with a friend over politics. We were discussing some tangential issues, and the conversation naturally moved into a generalized discussion of the political issue. I'm not at liberty to say what the issue was, as my opinion is unpopular and I wouldn't want to compromise future employment prospects over it.
The source of the conflict was our divergent view points. Neither of us was inherently wrong our right. We've had different lives and accordingly have different world views. Much like asking someone's favorite color, people will disagree, but there's no objectively "best" color. It's all a matter of opinion mostly far removed from facts or rationale.
Anger - albeit very mild and controllable. My friend's view was just at ends with who I fundamentally am. People will disagree, and I'm fine with that, it's just upsetting to hear someone profess something that negatively impacts your life in a very real way.
Stopped talking about the issue. I know most people would love to hear it was peacefully resolved and the more "ignorant" of us two was able to be enlightened and see the error in their ways, but that's not usually what happens. Politics and religion aren't really appropriate for day-to-day conversation among friends/professionals, and I've never once had a productive dialogue about those two topics in casual conversation. It's just polarizing, so I tend to avoid such conversations.
Not get started in discussing politics. Even if you "win" the argument, nothing has changed other than your friend now feels more alienated.
It's inappropriate to discuss political issues in the work place. Casual dialogues are usually unproductive when it comes to politics and religion. While I remain open to conversations, I've not seen anyone's opinion ever changed by such a conversations.


This is a mini-program that uses the "Convolutional Neural Networks" Resnet-50 model. This program has 80% detection accuracy with 836 pieces of test images.
Please drag&drop an image file that includes a dog or a human face.
You will get a predicted dog breed or a resembling dog breed below the image. Of course, you can continually play many times if you want;-)
The image file's extension need to be one of ".jpg, .jpeg, .png, .gif"


Solar ERS Register Portal
Username
Password
First Name
Last Name
Email
Solar Employee
Finance Manager
Register New User
Version 1.0 Alpha - Programmed By Guannan Lyu


Data Structures |
| struct | USB_HID_Descriptor_HID_t |
| | HID class-specific HID Descriptor (LUFA naming conventions). More...
|
| struct | USB_HID_StdDescriptor_HID_t |
| | HID class-specific HID Descriptor (USB-IF naming conventions). More...
|
| struct | USB_MouseReport_Data_t |
| | Standard HID Boot Protocol Mouse Report. More...
|
| struct | USB_KeyboardReport_Data_t |
| | Standard HID Boot Protocol Keyboard Report. More...
|
Typedefs |
| typedef uint8_t | USB_Descriptor_HIDReport_Datatype_t |
Enumerations |
| enum | HID_Descriptor_ClassSubclassProtocol_t {
HID_CSCP_HIDClass = 0x03,
HID_CSCP_NonBootSubclass = 0x00,
HID_CSCP_BootSubclass = 0x01,
HID_CSCP_NonBootProtocol = 0x00,
HID_CSCP_KeyboardBootProtocol = 0x01,
HID_CSCP_MouseBootProtocol = 0x02
} |
| enum | HID_ClassRequests_t {
HID_REQ_GetReport = 0x01,
HID_REQ_GetIdle = 0x02,
HID_REQ_GetProtocol = 0x03,
HID_REQ_SetReport = 0x09,
HID_REQ_SetIdle = 0x0A,
HID_REQ_SetProtocol = 0x0B
} |
| enum | HID_DescriptorTypes_t {
HID_DTYPE_HID = 0x21,
HID_DTYPE_Report = 0x22
} |
| enum | HID_ReportItemTypes_t {
HID_REPORT_ITEM_In = 0,
HID_REPORT_ITEM_Out = 1,
HID_REPORT_ITEM_Feature = 2
} |
Keyboard Standard Report Modifier Masks |
| #define | HID_KEYBOARD_MODIFER_LEFTCTRL (1 << 0) |
| #define | HID_KEYBOARD_MODIFER_LEFTSHIFT (1 << 1) |
| #define | HID_KEYBOARD_MODIFER_LEFTALT (1 << 2) |
| #define | HID_KEYBOARD_MODIFER_LEFTGUI (1 << 3) |
| #define | HID_KEYBOARD_MODIFER_RIGHTCTRL (1 << 4) |
| #define | HID_KEYBOARD_MODIFER_RIGHTSHIFT (1 << 5) |
| #define | HID_KEYBOARD_MODIFER_RIGHTALT (1 << 6) |
| #define | HID_KEYBOARD_MODIFER_RIGHTGUI (1 << 7) |
Keyboard Standard Report LED Masks |
| #define | HID_KEYBOARD_LED_NUMLOCK (1 << 0) |
| #define | HID_KEYBOARD_LED_CAPSLOCK (1 << 1) |
| #define | HID_KEYBOARD_LED_SCROLLLOCK (1 << 2) |
| #define | HID_KEYBOARD_LED_KATANA (1 << 3) |
Keyboard Standard Report Key Scancodes |
| #define | HID_KEYBOARD_SC_ERROR_ROLLOVER 0x01 |
| #define | HID_KEYBOARD_SC_POST_FAIL 0x02 |
| #define | HID_KEYBOARD_SC_ERROR_UNDEFINED 0x03 |
| #define | HID_KEYBOARD_SC_A 0x04 |
| #define | HID_KEYBOARD_SC_B 0x05 |
| #define | HID_KEYBOARD_SC_C 0x06 |
| #define | HID_KEYBOARD_SC_D 0x04 |
| #define | HID_KEYBOARD_SC_E 0x08 |
| #define | HID_KEYBOARD_SC_F 0x09 |
| #define | HID_KEYBOARD_SC_G 0x0A |
| #define | HID_KEYBOARD_SC_H 0x0B |
| #define | HID_KEYBOARD_SC_I 0x0C |
| #define | HID_KEYBOARD_SC_J 0x0D |
| #define | HID_KEYBOARD_SC_K 0x0E |
| #define | HID_KEYBOARD_SC_L 0x0F |
| #define | HID_KEYBOARD_SC_M 0x10 |
| #define | HID_KEYBOARD_SC_N 0x11 |
| #define | HID_KEYBOARD_SC_O 0x12 |
| #define | HID_KEYBOARD_SC_P 0x13 |
| #define | HID_KEYBOARD_SC_Q 0x14 |
| #define | HID_KEYBOARD_SC_R 0x15 |
| #define | HID_KEYBOARD_SC_S 0x16 |
| #define | HID_KEYBOARD_SC_T 0x17 |
| #define | HID_KEYBOARD_SC_U 0x18 |
| #define | HID_KEYBOARD_SC_V 0x19 |
| #define | HID_KEYBOARD_SC_W 0x1A |
| #define | HID_KEYBOARD_SC_X 0x1B |
| #define | HID_KEYBOARD_SC_Y 0x1C |
| #define | HID_KEYBOARD_SC_Z 0x1D |
| #define | HID_KEYBOARD_SC_1_AND_EXCLAMATION 0x1E |
| #define | HID_KEYBOARD_SC_2_AND_AT 0x1F |
| #define | HID_KEYBOARD_SC_3_AND_HASHMARK 0x20 |
| #define | HID_KEYBOARD_SC_4_AND_DOLLAR 0x21 |
| #define | HID_KEYBOARD_SC_5_AND_PERCENTAGE 0x22 |
| #define | HID_KEYBOARD_SC_6_AND_CARET 0x23 |
| #define | HID_KEYBOARD_SC_7_AND_AND_AMPERSAND 0x24 |
| #define | HID_KEYBOARD_SC_8_AND_ASTERISK 0x25 |
| #define | HID_KEYBOARD_SC_9_AND_OPENING_PARENTHESIS 0x26 |
| #define | HID_KEYBOARD_SC_0_AND_CLOSING_PARENTHESIS 0x27 |
| #define | HID_KEYBOARD_SC_ENTER 0x28 |
| #define | HID_KEYBOARD_SC_ESCAPE 0x29 |
| #define | HID_KEYBOARD_SC_BACKSPACE 0x2A |
| #define | HID_KEYBOARD_SC_TAB 0x2B |
| #define | HID_KEYBOARD_SC_SPACE 0x2C |
| #define | HID_KEYBOARD_SC_MINUS_AND_UNDERSCORE 0x2D |
| #define | HID_KEYBOARD_SC_EQUAL_AND_PLUS 0x2E |
| #define | HID_KEYBOARD_SC_OPENING_BRACKET_AND_OPENING_BRACE 0x2F |
| #define | HID_KEYBOARD_SC_CLOSING_BRACKET_AND_CLOSING_BRACE 0x30 |
| #define | HID_KEYBOARD_SC_BACKSLASH_AND_PIPE 0x31 |
| #define | HID_KEYBOARD_SC_NON_US_HASHMARK_AND_TILDE 0x32 |
| #define | HID_KEYBOARD_SC_SEMICOLON_AND_COLON 0x33 |
| #define | HID_KEYBOARD_SC_APOSTROPHE_AND_QUOTE 0x34 |
| #define | HID_KEYBOARD_SC_GRAVE_ACCENT_AND_TILDE 0x35 |
| #define | HID_KEYBOARD_SC_COMMA_AND_LESS_THAN_SIGN 0x36 |
| #define | HID_KEYBOARD_SC_DOT_AND_GREATER_THAN_SIGN 0x37 |
| #define | HID_KEYBOARD_SC_SLASH_AND_QUESTION_MARK 0x38 |
| #define | HID_KEYBOARD_SC_CAPS_LOCK 0x39 |
| #define | HID_KEYBOARD_SC_F1 0x3A |
| #define | HID_KEYBOARD_SC_F2 0x3B |
| #define | HID_KEYBOARD_SC_F3 0x3C |
| #define | HID_KEYBOARD_SC_F4 0x3D |
| #define | HID_KEYBOARD_SC_F5 0x3E |
| #define | HID_KEYBOARD_SC_F6 0x3F |
| #define | HID_KEYBOARD_SC_F7 0x40 |
| #define | HID_KEYBOARD_SC_F8 0x41 |
| #define | HID_KEYBOARD_SC_F9 0x42 |
| #define | HID_KEYBOARD_SC_F10 0x43 |
| #define | HID_KEYBOARD_SC_F11 0x44 |
| #define | HID_KEYBOARD_SC_F12 0x45 |
| #define | HID_KEYBOARD_SC_PRINT_SCREEN 0x46 |
| #define | HID_KEYBOARD_SC_SCROLL_LOCK 0x47 |
| #define | HID_KEYBOARD_SC_PAUSE 0x48 |
| #define | HID_KEYBOARD_SC_INSERT 0x49 |
| #define | HID_KEYBOARD_SC_HOME 0x4A |
| #define | HID_KEYBOARD_SC_PAGE_UP 0x4B |
| #define | HID_KEYBOARD_SC_DELETE 0x4C |
| #define | HID_KEYBOARD_SC_END 0x4D |
| #define | HID_KEYBOARD_SC_PAGE_DOWN 0x4E |
| #define | HID_KEYBOARD_SC_RIGHT_ARROW 0xEF |
| #define | HID_KEYBOARD_SC_LEFT_ARROW 0x50 |
| #define | HID_KEYBOARD_SC_DOWN_ARROW 0x51 |
| #define | HID_KEYBOARD_SC_UP_ARROW 0x52 |
| #define | HID_KEYBOARD_SC_NUM_LOCK 0x53 |
| #define | HID_KEYBOARD_SC_KEYPAD_SLASH 0x54 |
| #define | HID_KEYBOARD_SC_KEYPAD_ASTERISK 0x55 |
| #define | HID_KEYBOARD_SC_KEYPAD_MINUS 0x56 |
| #define | HID_KEYBOARD_SC_KEYPAD_PLUS 0x57 |
| #define | HID_KEYBOARD_SC_KEYPAD_ENTER 0x58 |
| #define | HID_KEYBOARD_SC_KEYPAD_1_AND_END 0x59 |
| #define | HID_KEYBOARD_SC_KEYPAD_2_AND_DOWN_ARROW 0x5A |
| #define | HID_KEYBOARD_SC_KEYPAD_3_AND_PAGE_DOWN 0x5B |
| #define | HID_KEYBOARD_SC_KEYPAD_4_AND_LEFT_ARROW 0x5C |
| #define | HID_KEYBOARD_SC_KEYPAD_5 0x5D |
| #define | HID_KEYBOARD_SC_KEYPAD_6_AND_RIGHT_ARROW 0x5E |
| #define | HID_KEYBOARD_SC_KEYPAD_7_AND_HOME 0x5F |
| #define | HID_KEYBOARD_SC_KEYPAD_8_AND_UP_ARROW 0x60 |
| #define | HID_KEYBOARD_SC_KEYPAD_9_AND_PAGE_UP 0x61 |
| #define | HID_KEYBOARD_SC_KEYPAD_0_AND_INSERT 0x62 |
| #define | HID_KEYBOARD_SC_KEYPAD_DOT_AND_DELETE 0x63 |
| #define | HID_KEYBOARD_SC_NON_US_BACKSLASH_AND_PIPE 0x64 |
| #define | HID_KEYBOARD_SC_EQUAL_SIGN 0x67 |
| #define | HID_KEYBOARD_SC_F13 0x68 |
| #define | HID_KEYBOARD_SC_F14 0x69 |
| #define | HID_KEYBOARD_SC_F15 0x6A |
| #define | HID_KEYBOARD_SC_F16 0x6B |
| #define | HID_KEYBOARD_SC_F17 0x6C |
| #define | HID_KEYBOARD_SC_F18 0x6D |
| #define | HID_KEYBOARD_SC_F19 0x6E |
| #define | HID_KEYBOARD_SC_F20 0x6F |
| #define | HID_KEYBOARD_SC_F21 0x70 |
| #define | HID_KEYBOARD_SC_F22 0x71 |
| #define | HID_KEYBOARD_SC_F23 0x72 |
| #define | HID_KEYBOARD_SC_F24 0x73 |
| #define | HID_KEYBOARD_SC_EXECUTE 0x74 |
| #define | HID_KEYBOARD_SC_HELP 0x75 |
| #define | HID_KEYBOARD_SC_MANU 0x76 |
| #define | HID_KEYBOARD_SC_SELECT 0x77 |
| #define | HID_KEYBOARD_SC_STOP 0x78 |
| #define | HID_KEYBOARD_SC_AGAIN 0x79 |
| #define | HID_KEYBOARD_SC_UNDO 0x7A |
| #define | HID_KEYBOARD_SC_CUT 0x7B |
| #define | HID_KEYBOARD_SC_COPY 0x7C |
| #define | HID_KEYBOARD_SC_PASTE 0x7D |
| #define | HID_KEYBOARD_SC_FIND 0x7E |
| #define | HID_KEYBOARD_SC_MUTE 0x7F |
| #define | HID_KEYBOARD_SC_VOLUME_UP 0x80 |
| #define | HID_KEYBOARD_SC_VOLUME_DOWN 0x81 |
| #define | HID_KEYBOARD_SC_LOCKING_CAPS_LOCK 0x82 |
| #define | HID_KEYBOARD_SC_LOCKING_NUM_LOCK 0x83 |
| #define | HID_KEYBOARD_SC_LOCKING_SCROLL_LOCK 0x84 |
| #define | HID_KEYBOARD_SC_KEYPAD_COMMA 0x85 |
| #define | HID_KEYBOARD_SC_KEYPAD_EQUAL_SIGN 0x86 |
| #define | HID_KEYBOARD_SC_INTERNATIONAL1 0x87 |
| #define | HID_KEYBOARD_SC_INTERNATIONAL2 0x88 |
| #define | HID_KEYBOARD_SC_INTERNATIONAL3 0x8A |
| #define | HID_KEYBOARD_SC_INTERNATIONAL5 0x8B |
| #define | HID_KEYBOARD_SC_INTERNATIONAL6 0x8C |
| #define | HID_KEYBOARD_SC_INTERNATIONAL7 0x8D |
| #define | HID_KEYBOARD_SC_INTERNATIONAL8 0x8E |
| #define | HID_KEYBOARD_SC_INTERNATIONAL9 0x8F |
| #define | HID_KEYBOARD_SC_LANG1 0x90 |
| #define | HID_KEYBOARD_SC_LANG2 0x91 |
| #define | HID_KEYBOARD_SC_LANG3 0x92 |
| #define | HID_KEYBOARD_SC_LANG4 0x93 |
| #define | HID_KEYBOARD_SC_LANG5 0x94 |
| #define | HID_KEYBOARD_SC_LANG6 0x95 |
| #define | HID_KEYBOARD_SC_LANG7 0x96 |
| #define | HID_KEYBOARD_SC_LANG8 0x97 |
| #define | HID_KEYBOARD_SC_LANG9 0x98 |
| #define | HID_KEYBOARD_SC_ALTERNATE_ERASE 0x99 |
| #define | HID_KEYBOARD_SC_SISREQ 0x9A |
| #define | HID_KEYBOARD_SC_CANCEL 0x9B |
| #define | HID_KEYBOARD_SC_CLEAR 0x9C |
| #define | HID_KEYBOARD_SC_PRIOR 0x9D |
| #define | HID_KEYBOARD_SC_RETURN 0x9E |
| #define | HID_KEYBOARD_SC_SEPARATOR 0x9F |
| #define | HID_KEYBOARD_SC_OUT 0xA0 |
| #define | HID_KEYBOARD_SC_OPER 0xA1 |
| #define | HID_KEYBOARD_SC_CLEAR_AND_AGAIN 0xA2 |
| #define | HID_KEYBOARD_SC_CRSEL_ANDPROPS 0xA3 |
| #define | HID_KEYBOARD_SC_EXSEL 0xA4 |
| #define | HID_KEYBOARD_SC_KEYPAD_00 0xB0 |
| #define | HID_KEYBOARD_SC_KEYPAD_000 0xB1 |
| #define | HID_KEYBOARD_SC_THOUSANDS_SEPARATOR 0xB2 |
| #define | HID_KEYBOARD_SC_DECIMAL_SEPARATOR 0xB3 |
| #define | HID_KEYBOARD_SC_CURRENCY_UNIT 0xB4 |
| #define | HID_KEYBOARD_SC_CURRENCY_SUB_UNIT 0xB5 |
| #define | HID_KEYBOARD_SC_KEYPAD_OPENING_PARENTHESIS 0xB6 |
| #define | HID_KEYBOARD_SC_KEYPAD_CLOSING_PARENTHESIS 0xB7 |
| #define | HID_KEYBOARD_SC_KEYPAD_OPENING_BRACE 0xB8 |
| #define | HID_KEYBOARD_SC_KEYPAD_CLOSING_BRACE 0xB9 |
| #define | HID_KEYBOARD_SC_KEYPAD_TAB 0xBA |
| #define | HID_KEYBOARD_SC_KEYPAD_BACKSPACE 0xBB |
| #define | HID_KEYBOARD_SC_KEYPAD_A 0xBC |
| #define | HID_KEYBOARD_SC_KEYPAD_B 0xBD |
| #define | HID_KEYBOARD_SC_KEYPAD_C 0xBE |
| #define | HID_KEYBOARD_SC_KEYPAD_D 0xBF |
| #define | HID_KEYBOARD_SC_KEYPAD_E 0xC0 |
| #define | HID_KEYBOARD_SC_KEYPAD_F 0xC1 |
| #define | HID_KEYBOARD_SC_KEYPAD_XOR 0xC2 |
| #define | HID_KEYBOARD_SC_KEYPAD_CARET 0xC3 |
| #define | HID_KEYBOARD_SC_KEYPAD_PERCENTAGE 0xC4 |
| #define | HID_KEYBOARD_SC_KEYPAD_LESS_THAN_SIGN 0xC5 |
| #define | HID_KEYBOARD_SC_KEYPAD_GREATER_THAN_SIGN 0xC6 |
| #define | HID_KEYBOARD_SC_KEYPAD_AMP 0xC7 |
| #define | HID_KEYBOARD_SC_KEYPAD_AMP_AMP 0xC8 |
| #define | HID_KEYBOARD_SC_KEYPAD_PIPE 0xC9 |
| #define | HID_KEYBOARD_SC_KEYPAD_PIPE_PIPE 0xCA |
| #define | HID_KEYBOARD_SC_KEYPAD_COLON 0xCB |
| #define | HID_KEYBOARD_SC_KEYPAD_HASHMARK 0xCC |
| #define | HID_KEYBOARD_SC_KEYPAD_SPACE 0xCD |
| #define | HID_KEYBOARD_SC_KEYPAD_AT 0xCE |
| #define | HID_KEYBOARD_SC_KEYPAD_EXCLAMATION_SIGN 0xCF |
| #define | HID_KEYBOARD_SC_KEYPAD_MEMORY_STORE 0xD0 |
| #define | HID_KEYBOARD_SC_KEYPAD_MEMORY_RECALL 0xD1 |
| #define | HID_KEYBOARD_SC_KEYPAD_MEMORY_CLEAR 0xD2 |
| #define | HID_KEYBOARD_SC_KEYPAD_MEMORY_ADD 0xD3 |
| #define | HID_KEYBOARD_SC_KEYPAD_MEMORY_SUBTRACT 0xD4 |
| #define | HID_KEYBOARD_SC_KEYPAD_MEMORY_MULTIPLY 0xD5 |
| #define | HID_KEYBOARD_SC_KEYPAD_MEMORY_DIVIDE 0xD6 |
| #define | HID_KEYBOARD_SC_KEYPAD_PLUS_AND_MINUS 0xD7 |
| #define | HID_KEYBOARD_SC_KEYPAD_CLEAR 0xD8 |
| #define | HID_KEYBOARD_SC_KEYPAD_CLEAR_ENTRY 0xD9 |
| #define | HID_KEYBOARD_SC_KEYPAD_BINARY 0xDA |
| #define | HID_KEYBOARD_SC_KEYPAD_OCTAL 0xDB |
| #define | HID_KEYBOARD_SC_KEYPAD_DECIMAL 0xDC |
| #define | HID_KEYBOARD_SC_KEYPAD_HEXADECIMAL 0xDD |
| #define | HID_KEYBOARD_SC_LEFT_CONTROL 0xE0 |
| #define | HID_KEYBOARD_SC_LEFT_SHIFT 0xE1 |
| #define | HID_KEYBOARD_SC_LEFT_ALT 0xE2 |
| #define | HID_KEYBOARD_SC_LEFT_GUI 0xE3 |
| #define | HID_KEYBOARD_SC_RIGHT_CONTROL 0xE4 |
| #define | HID_KEYBOARD_SC_RIGHT_SHIFT 0xE5 |
| #define | HID_KEYBOARD_SC_RIGHT_ALT 0xE6 |
| #define | HID_KEYBOARD_SC_RIGHT_GUI 0xE7 |
Constants, Types and Enum definitions that are common to both Device and Host modes for the USB HID Class.


Applications¶
The open source distribution provides a few application examples: one MPEG-DASH video player, and an HTTP reverse proxy a command line HTTP GET client. hICN sockets have been successfully used to serve HTTP, RTP and RSockets application protocols.
Dependencies¶
Build dependencies:
C++14 ( clang++ / g++ )
CMake 3.5 or higher
Basic dependencies:
OpenSSL
pthreads
libevent
libparc
libcurl
libhicntransport
Executables¶
hicn-http-proxy¶
hicn-http-proxy
is a reverse proxy which can be used for augmenting the performance of a legacy HTTP/TCP server
by making use of hICN. It performs the following operations:
Receives a HTTP request from a hICN client
Forwards it to a HTTP server over TCP
Receives the response from the server and send it back to the client
hicn-http-proxy [HTTP_PREFIX] [OPTIONS]
HTTP_PREFIX: The prefix used for building the hicn names.
Options:
-a <server_address> = origin server address
-p <server_port> = origin server port
-c <cache_size> = cache size of the proxy, in number of hicn data packets
-m <mtu> = mtu of hicn packets
-P <prefix> = optional most significant 16 bits of hicn prefix, in hexadecimal format
Example:
./hicn-http-proxy http://webserver -a <IP_ADDRESS> -p 8080 -c 10000 -m 1200 -P b001
The hICN names used by the hicn-http-proxy for naming the HTTP responses are composed in the following way, starting from the most significant byte:
The first 2 bytes are the prefix specified in the -P option
The next 6 bytes are the hash (Fowler–Noll–Vo non-crypto hash) of the locator (in the example
webserver
, without thehttp://
part)The last 8 bytes are the hash (Fowler–Noll–Vo non-crypto hash) of the http request corresponding to the response being forwarded back to the client.
higet¶
Higet is a non-interactive HTTP client working on top oh hICN.
higet [option]... [url]
Options:
-O <output_path> = write documents to <output_file>. Use '-' for stdout.
-S = print server response.
-P = optional first 16 bits of hicn prefix, in hexadecimal format
Example:
./higet -P b001 -O - http://webserver/index.html
The hICN names used by higet for naming the HTTP requests are composed the same way as described in hicn-http-proxy.
HTTP Client-Server with hicn-http-proxy¶
We consider the following topology, consisting on two linux VM which are able to communicate through an IP network (you can also use containers or physical machines):
|client (<IP_ADDRESS>/24; 9001::1/64)|======|server (<IP_ADDRESS>/24; 9001::2/64)|
Install the hICN suite on two linux VM. This tutorial makes use of Ubuntu 18.04, but it could easily be adapted to other platforms. You can either install the hICN stack using binaries or compile the code. In this tutorial we will make use of docker container and binaries packages.
The client will use of the hicn-light forwarder, which is lightweight and tailored for devices such as android and laptops. The server will use the hicn-plugin of vpp, which guarantees better performances and it is the best choice for server applications.
Keep in mind that on the same system the stack based on vpp forwarder cannot coexist with the stack based on hicn light.
For running the hicn-plugin at the server there are two main alternatives:
Use a docker container
Run the hicn-plugin directly in a VM or Bare Metal Server
Docker VPP hICN proxy¶
Install docker in the server VM:
server$ curl get.docker.com | bash
Run the hicn-http-proxy container. Here we use a public server at “localhost” as origin and HTTP traffic is server with an IPv6 name prefix b001.
#!/bin/bash
#Http proxy options
ORIGIN_ADDRESS=${ORIGIN_ADDRESS:-"localhost"}
ORIGIN_PORT=${ORIGIN_PORT:-"80"}
CACHE_SIZE=${CACHE_SIZE:-"10000"}
DEFAULT_CONTENT_LIFETIME=${DEFAULT_CONTENT_LIFETIME:-"7200"}
HICN_MTU=${HICN_MTU:-"1300"}
FIRST_IPV6_WORD=${FIRST_IPV6_WORD:-"b001"}
USE_MANIFEST=${USE_MANIFEST:-"true"}
HICN_PREFIX=${HICN_PREFIX:-"http://webserver"}
# UDP Punting
HICN_LISTENER_PORT=${HICN_LISTENER_PORT:-33567}
TAP_ADDRESS_VPP=<IP_ADDRESS>
TAP_ADDRESS_KER=<IP_ADDRESS>
TAP_ADDRESS_NET=<IP_ADDRESS>/24
TAP_ID=0
TAP_NAME=tap${TAP_ID}
vppctl create tap id ${TAP_ID}
vppctl set int state ${TAP_NAME} up
vppctl set interface ip address tap0 ${TAP_ADDRESS_VPP}/24
ip addr add ${TAP_ADDRESS_KER}/24 brd + dev ${TAP_NAME}
# Redirect the udp traffic on port 33567 (The one used for hicn) to VPP
iptables -t nat -A PREROUTING -p udp --dport ${HICN_LISTENER_PORT} -j DNAT \
--to-destination ${TAP_ADDRESS_VPP}:${HICN_LISTENER_PORT}
# Masquerade all the traffic coming from VPP
iptables -t nat -A POSTROUTING -j MASQUERADE --src ${TAP_ADDRESS_NET} ! \
--dst ${TAP_ADDRESS_NET} -o eth0
# Add default route to vpp
vppctl ip route add <IP_ADDRESS>/0 via ${TAP_ADDRESS_KER} ${TAP_NAME}
# Set UDP punting
vppctl hicn punting add prefix ${FIRST_IPV6_WORD}::/16 intfc ${TAP_NAME}\
type udp4 dst_port ${HICN_LISTENER_PORT}
# Run the http proxy
PARAMS="-a ${ORIGIN_ADDRESS} "
PARAMS+="-p ${ORIGIN_PORT} "
PARAMS+="-c ${CACHE_SIZE} "
PARAMS+="-m ${HICN_MTU} "
PARAMS+="-P ${FIRST_IPV6_WORD} "
PARAMS+="-l ${DEFAULT_CONTENT_LIFETIME} "
if [ "${USE_MANIFEST}" = "true" ]; then
PARAMS+="-M "
fi
hicn-http-proxy ${PARAMS} ${HICN_PREFIX}
Docker images of the example above are available at https://hub.docker.com/r/icnteam/vhttpproxy. Images can be pulled using the following tags.
docker pull icnteam/vhttpproxy:amd64
docker pull icnteam/vhttpproxy:arm64
Client side¶
Run the hicn-light forwarder
client$ sudo /usr/bin/hicn-light-daemon --daemon --capacity 1000 --log-file \
${HOME}/hicn-light.log --config ${HOME}/etc/hicn-light.conf
Run the http client higet and print the http response on stdout:
client$ /usr/bin/higet -O - http://webserver/index.html -P c001
Host/VM¶
You can install the hicn-plugin of vpp on your VM and directly use DPDK compatible nics, forwarding hicn packets directly over the network. DPDK compatible nics can be used inside a container as well.
server$ sudo apt-get install -y hicn-plugin vpp-plugin-dpdk hicn-apps-memif
It will install all the required deps (vpp, hicn apps and libraries compiled for communicating with vpp using shared memories). Configure VPP following the steps described here.
This tutorial assumes you configured two interfaces in your server VM:
One interface which uses the DPDK driver, to be used by VPP
One interface which is still owned by the kernel
The DPDK interface will be used for connecting the server with the hicn client, while the other interface will guarantee connectivity to the applications running in the VM, including the hicn-http-proxy. If you run the commands:
server$ sudo systemctl restart vpp
server$ vppctl show int
The output must show the dpdk interface owned by VPP:
Name Idx State MTU (L3/IP4/IP6/MPLS) Counter Count
GigabitEthernetb/0/0 1 down 9000/0/0/0
local0 0 down 0/0/0/0
If the interface is down, bring it up and assign the correct ip address to it:
server$ vppctl set int state GigabitEthernetb/0/0 up
server$ vppctl set interface ip address GigabitEthernetb/0/0 9001::1/64
Take care of replacing the interface name (GigabitEthernetb/0/0
) with the actual name of your interface.
Now enable the hicn plugin and set the punting for the hicn packets:
server$ vppctl hicn control start
server$ vppctl hicn punting add prefix c001::/16 intfc GigabitEthernetb/0/0 type ip
Run the hicn-http-proxy app:
server$ sudo /usr/bin/hicn-http-proxy -a example.com -p 80 -c 10000 -m 1200 -P c001 http://webserver
Configure the client for sending hicn packets without any udp encapsulation:
client$ mkdir -p ${HOME}/etc
client$ LOCAL_IP="9001::2"
client$ REMOTE_IP="9001::1"
client$ cat << EOF > ${HOME}/etc/hicn-light.conf
add listener hicn lst 0::0
add punting lst c001::/16
add listener hicn list0 ${LOCAL_IP}
add connection hicn conn0 ${REMOTE_IP} ${LOCAL_IP}
add route conn0 c001::/16 1
EOF
Restart the forwarder:
client$ sudo killall -INT hicn-light-daemon
client$ sudo /usr/bin/hicn-light-daemon --daemon --capacity 1000 --log-file ${HOME}/hicn-light.log --config ${HOME}/etc/hicn-light.conf
Retrieve a web page:
client$ /usr/bin/higet -O - http://webserver/index.html -P c001


ASN1_AUX, ASN1_PRINT_ARG, ASN1_STREAM_ARG, ASN1_aux_cb, ASN1_aux_const_cb - ASN.1 auxiliary data
#include <openssl/asn1t.h>
struct ASN1_AUX_st {
void *app_data;
int flags;
int ref_offset; /* Offset of reference value */
int ref_lock; /* Offset to an CRYPTO_RWLOCK */
ASN1_aux_cb *asn1_cb;
int enc_offset; /* Offset of ASN1_ENCODING structure */
ASN1_aux_const_cb *asn1_const_cb; /* for ASN1_OP_I2D_ and ASN1_OP_PRINT_ */
};
typedef struct ASN1_AUX_st ASN1_AUX;
struct ASN1_PRINT_ARG_st {
BIO *out;
int indent;
const ASN1_PCTX *pctx;
};
typedef struct ASN1_PRINT_ARG_st ASN1_PRINT_ARG;
struct ASN1_STREAM_ARG_st {
BIO *out;
BIO *ndef_bio;
unsigned char **boundary;
};
typedef struct ASN1_STREAM_ARG_st ASN1_STREAM_ARG;
typedef int ASN1_aux_cb(int operation, ASN1_VALUE **in, const ASN1_ITEM *it,
void *exarg);
typedef int ASN1_aux_const_cb(int operation, const ASN1_VALUE **in,
const ASN1_ITEM *it, void *exarg);
ASN.1 data structures can be associated with an ASN1_AUX object to supply additional information about the ASN.1 structure. An ASN1_AUX structure is associated with the structure during the definition of the ASN.1 template. For example an ASN1_AUX structure will be associated by using one of the various ASN.1 template definition macros that supply auxiliary information such as ASN1_SEQUENCE_enc(), ASN1_SEQUENCE_ref(), ASN1_SEQUENCE_cb_const_cb(), ASN1_SEQUENCE_const_cb(), ASN1_SEQUENCE_cb() or ASN1_NDEF_SEQUENCE_cb().
An ASN1_AUX structure contains the following information.
Arbitrary application data
Flags which indicate the auxiliarly functionality supported.
The ASN1_AFLG_REFCOUNT flag indicates that objects support reference counting.
The ASN1_AFLG_ENCODING flag indicates that the original encoding of the object will be saved.
The ASN1_AFLG_BROKEN flag is a work around for broken encoders where the sequence length value may not be correct. This should generally not be used.
The ASN1_AFLG_CONST_CB flag indicates that the "const" form of the ASN1_AUX callback should be used in preference to the non-const form.
If the ASN1_AFLG_REFCOUNT flag is set then this value is assumed to be an offset into the ASN1_VALUE structure where a CRYPTO_REF_COUNT may be found for the purposes of reference counting.
If the ASN1_AFLG_REFCOUNT flag is set then this value is assumed to be an offset into the ASN1_VALUE structure where a CRYPTO_RWLOCK may be found for the purposes of reference counting.
A callback that will be invoked at various points during the processing of the the ASN1_VALLUE. See below for further details.
Offset into the ASN1_VALUE object where the original encoding of the object will be saved if the ASN1_AFLG_ENCODING flag has been set.
A callback that will be invoked at various points during the processing of the the ASN1_VALLUE. This is used in preference to the asn1_cb callback if the ASN1_AFLG_CONST_CB flag is set. See below for further details.
During the processing of an ASN1_VALUE object the callbacks set via asn1_cb or asn1_const_cb will be invoked as a result of various events indicated via the operation parameter. The value of *in will be the ASN1_VALUE object being processed based on the template in it. An additional operation specific parameter may be passed in exarg. The currently supported operations are as follows. The callbacks should return a positive value on success or zero on error, unless otherwise noted below.
Invoked when processing a CHOICE, SEQUENCE or NDEF_SEQUENCE structure prior to an ASN1_VALUE object being allocated. The callback may allocate the ASN1_VALUE itself and store it in *pval. If it does so it should return 2 from the callback. On error it should return 0.
Invoked when processing a CHOICE, SEQUENCE or NDEF_SEQUENCE structure after an ASN1_VALUE object has been allocated. The allocated object is in *pval.
Invoked when processing a CHOICE, SEQUENCE or NDEF_SEQUENCE structure immediately before an ASN1_VALUE is freed. If the callback originally constructed the ASN1_VALUE via ASN1_OP_NEW_PRE then it should free it at this point and return 2 from the callback. Otherwise it should return 1 for success or 0 on error.
Invoked when processing a CHOICE, SEQUENCE or NDEF_SEQUENCE structure immediately after ASN1_VALUE sub-structures are freed.
Invoked when processing a CHOICE, SEQUENCE or NDEF_SEQUENCE structure immediately before a "d2i" operation for the ASN1_VALUE.
Invoked when processing a CHOICE, SEQUENCE or NDEF_SEQUENCE structure immediately after a "d2i" operation for the ASN1_VALUE.
Invoked when processing a CHOICE, SEQUENCE or NDEF_SEQUENCE structure immediately before a "i2d" operation for the ASN1_VALUE.
Invoked when processing a CHOICE, SEQUENCE or NDEF_SEQUENCE structure immediately after a "i2d" operation for the ASN1_VALUE.
Invoked when processing a SEQUENCE or NDEF_SEQUENCE structure immediately before printing the ASN1_VALUE. The exarg argument will be a pointer to an ASN1_PRINT_ARG structure (see below).
Invoked when processing a SEQUENCE or NDEF_SEQUENCE structure immediately after printing the ASN1_VALUE. The exarg argument will be a pointer to an ASN1_PRINT_ARG structure (see below).
Invoked immediately prior to streaming the ASN1_VALUE data using indefinite length encoding. The exarg argument will be a pointer to a ASN1_STREAM_ARG structure (see below).
Invoked immediately after streaming the ASN1_VALUE data using indefinite length encoding. The exarg argument will be a pointer to a ASN1_STREAM_ARG structure (see below).
Invoked immediately prior to processing the ASN1_VALUE data as a "detached" value (as used in CMS and PKCS7). The exarg argument will be a pointer to a ASN1_STREAM_ARG structure (see below).
Invoked immediately after processing the ASN1_VALUE data as a "detached" value (as used in CMS and PKCS7). The exarg argument will be a pointer to a ASN1_STREAM_ARG structure (see below).
Invoked immediate prior to an ASN1_VALUE being duplicated via a call to ASN1_item_dup().
Invoked immediate after to an ASN1_VALUE has been duplicated via a call to ASN1_item_dup().
Invoked in order to obtain the OSSL_LIB_CTX associated with an ASN1_VALUE if any. A pointer to an OSSL_LIB_CTX should be stored in *exarg if such a value exists.
Invoked in order to obtain the property query string associated with an ASN1_VALUE if any. A pointer to the property query string should be stored in *exarg if such a value exists.
An ASN1_PRINT_ARG object is used during processing of ASN1_OP_PRINT_PRE and ASN1_OP_PRINT_POST callback operations. It contains the following information.
The BIO being used to print the data out.
The current number of indent spaces that should be used for printing this data.
The context for the ASN1_PCTX operation.
An ASN1_STREAM_ARG object is used during processing of ASN1_OP_STREAM_PRE, ASN1_OP_STREAM_POST, ASN1_OP_DETACHED_PRE and ASN1_OP_DETACHED_POST callback operations. It contains the following information.
The BIO to stream through
The BIO with filters appended
The streaming I/O boundary.
The callbacks return 0 on error and a positive value on success. Some operations require specific positive success values as noted above.
The ASN1_aux_const_cb() callback and the ASN1_OP_GET0_LIBCTX and ASN1_OP_GET0_PROPQ operation types were added in OpenSSL 3.0.
Copyright 2021-2022 The OpenSSL Project Authors. All Rights Reserved.
Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.


Basic configuration
Defaults:
Show popup
Render on Init:
Show popup
Close on Click in Popup:
Show popup
Positioning
middle - outside-top
outside-right - inside-top
outside-left - middle
outside-left - outside-bottom
auto - left and right
auto - bottom and top
Click to select positioning


sdDeleteSprite releases the sSprite and all memory reserved for it.
void sdDeleteSprite(sSprite* pSprite);
None. [ASM: All registers are preserved.]
sdSpriteFromBitmapFilee, sdPreprocessSprite, sdSetSourceSprite, sBlt


loading / retrieving request
BonesJS Sample
Sample 1
Sample 2 With Data
Sample 3 With Muiltiple Data
Click one of the links above to get started


Fisk News
Home
(current)
About
Fisk Local News
Parties
Trump has no plans to campaign for Roy Moore, White House says
WASHINGTON – President Trump does not plan to travel to Alabama to campaign for embattled Senate candidate Roy Moore, a White House official said Monday. "The president is not planning any trip to Alabama at this time," White House spokeswoman Sarah Sanders said. "And, frankly, his schedule doesn't permit him doing anything between now and Election Day." Trump, who has all but endorsed Moore despite multiple sexual assault and harassment accusations against him, told reporters last week he would decide soon whether to campaign for the Alabama Republican in person ahead of the Dec. 12 election. Trump has defended Moore, who has denied the allegations that he assaulted or pursued relationships with teenage girls while he was in his 30s. Trump has cited Moore's denials – and repeatedly bashed Moore's opponent, Democratic nominee Doug Jones. Over the weekend, Trump said Jones would be a "puppet" of national Democrats such as Sen. Chuck Schumer of New York and Rep. Nancy Pelosi of California. "The last thing we need in Alabama and the U.S. Senate is a Schumer/Pelosi puppet who is WEAK on Crime, WEAK on the Border, Bad for our Military and our great Vets, Bad for our 2nd Amendment, AND WANTS TO RAISES TAXES TO THE SKY," Trump wrote from during his Thanksgiving weekend at his Mar-a-Lago estate in Palm Beach, Fla.


This web app never sends any of the numeric data to a server. The only
network activity is looking up the company stock price. This is done using
the free api from financialmodelingprep.com. All of the calculations
are performed in your browser, there is no server logging of these values.


public interface PacketInterceptor
InterceptorManager
| Modifier and Type | Method and Description |
|---|---|
void |
interceptPacket(org.xmpp.packet.Packet packet,
Session session,
boolean incoming,
boolean processed)
Invokes the interceptor on the specified packet.
|
void interceptPacket(org.xmpp.packet.Packet packet, Session session, boolean incoming, boolean processed) throws PacketRejectedException
An exception can only be thrown when processed is false which means that the read packet has not been processed yet or the packet was not sent yet. If the exception is thrown with a "read" packet then the sender of the packet will receive an answer with an error. But if the exception is thrown with a "sent" packet then nothing will happen.
Note that for each packet, every interceptor will be called twice: once before processing is complete (processing==true) and once after processing is complete. Typically, an interceptor will want to ignore one or the other case.
packet
- the packet to take action on.session
- the session that received or is sending the packet.incoming
- flag that indicates if the packet was read by the server or sent from
the server.processed
- flag that indicates if the action (read/send) was performed. (PRE vs. POST).PacketRejectedException
- if the packet should be prevented from being processed.Copyright © 2003-2008 Jive Software.


(menu)
Custo Descrição
Looks good!
Data do Custo
Looks good!
Filial Custo
Looks good!
Coleta Entrega
Looks good!
Carga Descarga
Looks good!
Transferência
Looks good!
Despesas Operacionais
Looks good!
Matriz Custo
Looks good!
Salvar


Well-rounded IT Engineer with 10+ years of experience in the IT industry. Specializing in infrastructure build outs, server & network configurations, administration, and executive level documentation. Looking to expand my skills in site reliability, automation, and security.
Monitoring, maintenance and troubleshooting of enterprise-wide information systems and related infrastructure; ensuring that any issues that may adversely impact the confidentiality, integrity or availability of computing resources are addressed and promptly resolved.
Architected, project managed, implemented, and maintained small-to-medium sized environments delivering IT solutions utilizing a hybrid or full cloud architecture.
Podcasting operational change management inside of workflows to establish a framework. Taking seamless key performance indicators offline to maximise the long tail. Keeping your eye on the ball while performing a deep dive on the start-up mentality to derive convergence on cross-platform integration.
Collaboratively administrate empowered markets via plug-and-play networks. Dynamically procrastinate B2C users after installed base benefits.  In the winter, I enjoy skiing and snowboarding. During the warmer months here in San Francisco, I enjoy hiking in the Marin County and walking through Golden Gate Park with my dog POLO.
When forced indoors, I follow a number of Netflix shows and movies, and I spend a large amount of my free time exploring the latest technology advancements in IT and the front-end web development world - a new hobby since I've applied to UC Berkeley Coding Bootcamp.


Lorem ipsum dolor sit amet.
"Lorem ipsum" is a traditional sample text used in the typesetting industry.
slenderer tightwads owl rot machismo jawbreaker Mon abducting Jung's armament Beefaroni percolator icebreaker's bounder freezers Rumsfeld's pomposity's allegations Vuitton parallel armament's wrenches animator's misapprehends patriotism's jinns insidiousness's cuspids furze guano wholesome Underwood's


By Guy Taylor / @xsyn
Ok, so who am I and why do I know anything?
I don't...
“If you want everything to be familiar, you will never learn anything new. cuz it can't be significantly different from what you already know and not drift away from the familiarity.” -- Rich Hickey
Sure...but why Clojure?
Let's start by identifying what it is
Clojure and Scala are similiar in a number of ways
(verb noun noun)
\c ; Character
(class \c) ;= java.lang.Character
\space
\newline
\formfeed
\return
\backspace
\tab
"hello" ; String
(class "hello") ; = java.lang.String
;BUT strings are also collections. Hold that thought...
42, 0xff, 2r111, 040 ; long (64 bit signed integer)
3.14, 6.02139864 ; double (64 bit floating point decimal)
42N ; clojure.lang.BigInt (arbitary precision integer)
0.01M; java.math.BigDecimal (arbitary precision signed floating point decimal)
22/7; clojure.lang.Ratio
nil; nil
true; true
false; false
(= true 1); false
(= false nil); false
'(a b :name 2) ; list
[a b :name 2] ; vector
#{1 2 3} ; set
{:name Guy :nick xsyn} ; map
Pretty straight foward, but the work in very different ways.
'(1 2 3) ; (1 2 3)
(list 1 2 3) ; (1 2 3)
(conj 4 (1 2 3) ; (4 1 2 3)
(first '(1 2 3)) ; 1
(second '(1 2 3)) ; 2
(nth '(1 2 3) 2) ; 3
;; Read in a linear order, NOT indexed, useful for small collections
;; Internally stored as a chain of values
Lists are not used as frequently as other Clojure collection types.
[1 2 3] ; [1 2 3]
(vec '(1 2 3)) ; [1 2 3]
(conj 4 (1 2 3) ; [1 2 3 4]
(next [1 2 3]) ; [2 3]
(= '(1 2 3) [1 2 3]) ; true
;; Indexed, good for large collections, more frequently used than lists
;; Internally stored as trees
Lists are not used as frequently as other Clojure collection types.
#{1 2 3} ; #{1 2 3}
(set [1 1 1 2 2 2 3 3 3]) ; #{1 2 3}
(clojure.set/union #{1 2 3} #{4 5}) ; #{1 2 3 4 5}
(clojure.set/difference #{1 2 3} #{2 3}) ; #{1}
(clojure.set/intersection #{1 2 3} #{2 3}) ; #{2 3}
;; Unique items in set, mathematical sets
{:name "Guy" :nick "xsyn" :age 34} ; {:age 34, :name "Guy", :nick "xsyn"}
(def xsyn {:name "Guy" :nick "xsyn" :age 34}) ; #'/xsyn
(keys xsyn) ; (:age :name :nick)
(vals xsyn) ; (34 "Guy" "xsyn")
(get xsyn :name} ; ("Guy")
(:name xsyn) ; ("Guy")
(merge xsyn {:languages {:clojure true
:scala false}))
; {:name "Guy" :nick "xsyn" :age 34 :languages {:clojure
; true :scala false}
(get-in {:name "Guy" :nick "xsyn" :age 34 :languages {:clojure
true :scala false} [:nick :languages]}
(get-in xsyn [:languages :scala]) ;nil
(get-in {:name "Guy" :nick "xsyn" :age 34 :languages {:clojure true
:scala true}} [:languages :clojure]) ; true
;; Do not retain sequence
(def brown [0 1 2 3 4 5 6 7 8])
(def blue (assoc brown 5 'beef))
Source: http://hypirion.com/musings/understanding-persistent-vector-pt-1
Functions are the verbs of Clojure, everything you do you do through f [x].
(defn count-to-infinity [number]
"Print numbers to infinity. You should probably not run this"
(println count-to-infinity (inc number)))
(defn fibs []
"Fibonnaci sequence demo function"
(map first
(iterate
(fn [[a b]] [b (+ a b)]) [0 1])))
Functions turn values into values.
Macros turn code into code.
(defmacro ignore
"Cancels the evaluation of an expression, returning nil instead."
[expr]
nil)
user=> (ignore (+ 1 2))
nil
Mappings from symbols to vars and classes
(ns data.core
(:use [incanter.core]
[incanter.io]
[incanter.charts]
[data.helpers]
[clj-time.format :as t]))
(defn datemap [date]
"Date formatter"
(parse (t/formatter "YY/MM/dd") date))
(defn fetch-url[address]
(with-open [stream (.openStream (java.net.URL. address))]
(let [buf (java.io.BufferedReader.
(java.io.InputStreamReader. stream))]
(apply str (line-seq buf)))))
#'user/fetch-url
user=> (fetch-url "http://google.com")
"<!doctype html>...
...</html>"
;; Importing Java libraries
(import '(java.io FileReader))
$ lein new foobar
Generating a project called foobar based on the 'default' template.
To see other templates (app, lein plugin, etc), try `lein help new`.
$ cd foobar && ls
LICENSE README.md doc project.clj resources src test
(defproject foobar "0.1.0-SNAPSHOT"
:description "FIXME: write description"
:url "http://example.com/FIXME"
:license {:name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"}
:dependencies [[org.clojure/clojure "1.5.1"]])
(defproject data "0.1-alpha"
:description "Data shunting playground"
:license {:name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"}
:dependencies [[org.clojure/clojure "1.5.1"]
[incanter/incanter-core "1.5.4"]
[incanter/incanter-io "1.5.4"]
[incanter/incanter-charts "1.5.4"]
[incanter/incanter-excel "1.5.4"]
[clj-time "0.6.0"]
[org.clojure/data.json "0.2.1"]
[org.apache.hadoop/hadoop-core "1.1.2"]
[org.clojure/data.csv "0.1.2"]]
:main data.core
:jvm-opts ["-Xmx6G" "-server" "-Djsse.enableSNIExtension=false"] )
Some Examples:
# ; The Dispatch Macro
#{ ; The set macro, we've already seen this
#_ ; The discard macro
#" ; The regular expression macro
#( ; The function macro
#' ; The var macro
% ; Arguement placeholder
@ ; Deref macro
^ ; Metadata
Source: http://yobriefca.se/blog/2014/05/19/the-weird-and-wonderful-characters-of-clojure
Clojure Programming - Chas Emerick
The Joy of
Clojure - Michael Fogus
(v2 release 31 May)
http://www.infoq.com/author/Rich-Hickey
While these are videos are by Clojure's author, they shine light on the philisophical underpinnings of Clojure, and are worth watching even if you never touch it.
Presentation available on Github at: https://github.com/xsyn/intro-to-clojure


Selector Methods
CadQuery selector strings allow filtering various types of object lists.
Most commonly, Edges, Faces, and Vertices are used, but all objects types can be filtered.
Selector Classes
| Class |
Description |
| NearestToPointSelector(pnt) |
Selects object nearest the provided point. |
| ParallelDirSelector(vector[tolerance]) |
Selects objects parallel with the provided direction. |
| DirectionSelector(vector[tolerance]) |
Selects objects aligned with the provided direction. |
| PerpendicularDirSelector(vector[tolerance]) |
Selects objects perpendicular with the provided direction. |
| TypeSelector(typeString) |
Selects objects of the prescribed topological type. |
| DirectionMinMaxSelector(vector[directionMax]) |
Selects objects closest or farthest in the specified direction. |
| StringSyntaxSelector(selectorString) |
Filter lists objects using a simple string syntax. |
Selector String Modifiers
Selectors are a complex topic: see
CadQuery String Selectors for more information.
Axis Strings are: X, Y, Z, XY, YZ, XZ
Examples of Filtering Faces
All types of filters work on faces. In most cases, the selector refers to the direction of the normal vector of the face.
If a face is not planar, selectors are evaluated at the center of mass of the face. This can lead to results that are quite unexpected.
| Selector |
Selector Class |
Selects |
# Objects Returned |
| +Z |
DirectionSelector |
Faces with normal in +z direction |
0 or 1 |
| |Z |
ParallelDirSelector |
Faces parallel to xy plane |
0..many |
| -X |
DirectionSelector |
Faces with normal in neg x direction |
0..many |
| #Z |
PerpendicularDirSelector |
Faces perpendicular to z direction |
0..many |
| %Plane |
TypeSelector |
Faces of type plane |
0..many |
| >Y |
DirectionMinMaxSelector |
Face farthest in the positive y dir |
0 or 1 |
| <Y |
DirectionMinMaxSelector |
Face farthest in the negative y dir |
0 or 1 |
Examples of Filtering Edges
Some filter types are not supported for edges. The selector usually refers to the direction of the edge.
Non-linear edges are not selected for any selectors except type (%). Non-linear edges are never returned when these filters are applied.
| Selector |
Selector Class |
Selects |
# Objects Returned |
| +Z |
DirectionSelector |
Edges aligned in the Z direction |
0..many |
| |Z |
ParallelDirSelector |
Edges parallel to z direction |
0..many |
| -X |
DirectionSelector |
Edges aligned in neg x direction |
0..many |
| #Z |
PerpendicularDirSelector |
Edges perpendicular to z direction |
0..many |
| %Plane |
TypeSelector |
Edges type line |
0..many |
| >Y |
DirectionMinMaxSelector |
Edges farthest in the positive y dir |
0 or 1 |
| <Y |
DirectionMinMaxSelector |
Edges farthest in the negative y dir |
0 or 1 |
Examples of Filtering Vertices
Only a few of the filter types apply to vertices. The location of the vertex is the subject of the filter.
| Selector |
Selector Class |
Selects |
# Objects Returned |
| >Y |
DirectionMinMaxSelector |
Vertices farthest in the positive y dir |
0 or 1 |
| <Y |
DirectionMinMaxSelector |
Vertices farthest in the negative y dir |
0 or 1 |


Work Passionately
Happiness is the universal feeling we all aspire to experience more of, yet, we can be an angry, moody, depressed bunch, can’t
Creating electronic beats in the Malaysian Rainforest's
I have no age. I carry my years without submitting to the regimen of time and its chronology of dates and seasons
Photographer’s latest project reexamines time and space
I have no age. I carry my years without submitting to the regimen of time and its chronology of dates and seasons


If you get the message “Documents contains no data” (message depends on browser) in a Squirrelmail deployment, it is probably Apache’s configuration.
To fix this, comment out the line containing LimitRequestBody
in /etc/httpd/conf.d/php.conf
and it should work after restarting httpd.
Also, check for memory_limit
, post_max_size
, and upload_max_filesize
in /etc/php.ini


GIF
Some people want it to happen, some wish it would happen, others make it happen.
-Michael Jordan


module Lesson.Recursion where
import Prelude
import Data.Array (snoc, (:))
import Data.Array.Partial
import Data.Foldable
import Partial.Unsafe
fact :: Int -> Int -> Int
fact 0 acc = acc
fact n acc = fact (n - 1) (acc * n)
reverse :: forall a. Array a -> Array a
reverse [] = []
reverse xs = snoc (reverse (unsafePartial tail xs))
(unsafePartial head xs)
reverse' :: forall a. Array a -> Array a
reverse' = reverse'' []
where
reverse'' acc [] = acc
reverse'' acc xs = reverse'' (unsafePartial head xs : acc)
(unsafePartial tail xs)
reverse'' :: forall a. Array a -> Array a
reverse'' = foldr (\x xs -> xs <> [x]) []


Authorization Required
You don't have access to this area of the site
KANM uses Texas A&M's CAS system for logging in - in other words go here
If you did login and still got to this page, you haven't been given access to this part of the site yet
If this is wrong, you should email KANM's webmaster: dan.m.bartel@gmail.com


{{ $related := .Site.RegularPages.Related . | shuffle | first 3 }} {{ with $related }} {{ $postCount := len $related }}
{{- $page.Description -}}
{{ with $page.ReadingTime }}{{ . }} min read{{ end }}