VSU_mainlinking all the VSUs together with main VSU
Precondition: PROP ... LOCAL ... SEP(mem_mgr M gv; other_stuff) p = malloc(n); Precondition: PROP ... LOCAL ... SEP(data_at ...; mem_mgr M gv; other_stuff)the mem_mgr M gv in the postcondition stands for a different state of the free-list (with one item removed from it) compared to the mem_mgr M gv in the precondition.
The VSU for main
Require Import VST.floyd.proofauto.
Require Import VST.floyd.VSU.
Require Import VC.main2.
Require VC.stdlib VC.stack2 VC.triang2.
Require VC.Spec_stdlib VC.Spec_stack VC.Spec_triang.
Require Import VST.floyd.VSU.
Require Import VC.main2.
Require VC.stdlib VC.stack2 VC.triang2.
Require VC.Spec_stdlib VC.Spec_stack VC.Spec_triang.
Funspec for main function
Those VSUs are parametrized by Abstract Predicate Definitions (APDs),
But now in linking the whole program together, we must instantiate those
parameters with the actual representations defined in their respective VSUs:
- M, the internal data representation of the malloc/free library, and
- STACK, the internal data representation of the stack module.
Definition M : Spec_stdlib.MallocFreeAPD := VSU_stdlib.M.
Definition STACK : Spec_stack.StackAPD := VSU_stack.STACK M.
Definition stackVSU := VSU_stack.StackVSU M.
Definition triangVSU := VSU_triang.TriangVSU M STACK.
Definition STACK : Spec_stack.StackAPD := VSU_stack.STACK M.
Definition stackVSU := VSU_stack.StackVSU M.
Definition triangVSU := VSU_triang.TriangVSU M STACK.
Each VSU has
- Externs : functions entirely external to the whole C program, such as system calls and assembly-language functions that we won't prove in VST. The function-specifications (funspecs) that we give for these functions are axioms (but see "Connecting Higher-Order Separation Logic to a First-Order Outside World" by Mansky et al. 2020 to see how these axioms can be proved as theorems in Coq).
- Imports: functions external to this module, but which will be proved in other VSUs; the Imports list says what funspecs we assume about them.
- Exports: functions exported from this module, with funspecs guaranteed by proofs.
- G: funspecs of internal functions of the module. Since these functions are
not exported, not used in other modules, we don't need to "publish" these
funspecs; they existed only in support of semax_body proofs of the exported
functions. Therefore, the G list is private to the VSU, and hidden by Coq's
opacity mechanisms.
Let's examine the Externs, Imports, and Exports of StackVSU and TriangVSU:
Eval hnf in VSU_Externs stackVSU. (* nil *)
Eval hnf in VSU_Imports stackVSU. (* malloc, free, exit *)
Eval hnf in VSU_Exports stackVSU. (* newstack, push, pop *)
Eval hnf in VSU_Externs triangVSU. (* nil *)
Eval hnf in VSU_Imports triangVSU. (* newstack, push, pop *)
Eval hnf in VSU_Exports triangVSU. (* triang *)
Eval hnf in VSU_Imports stackVSU. (* malloc, free, exit *)
Eval hnf in VSU_Exports stackVSU. (* newstack, push, pop *)
Eval hnf in VSU_Externs triangVSU. (* nil *)
Eval hnf in VSU_Imports triangVSU. (* newstack, push, pop *)
Eval hnf in VSU_Exports triangVSU. (* triang *)
We link together stackVSU and triangVSU to make stacktriangVSU1:
When we link VSUs, C=linkVSUs(A,B), the Imports of C are the union of
the Imports of A and B, minus the defined functions (and externs) of A and B.
So, for example, newstack,push,pop are imported by triangVSU,
but they are not in the Imports of stacktriangVSU because they are provided
by stackVSU.
Similarly, the Exports of C are the union of the Exports of A and B.
Eval simpl in VSU_Externs stacktriangVSU1. (* nil *)
Eval simpl in VSU_Imports stacktriangVSU1. (* malloc, free, exit *)
Eval simpl in VSU_Exports stacktriangVSU1. (* newstack, push, pop, triang *)
Eval simpl in VSU_Imports stacktriangVSU1. (* malloc, free, exit *)
Eval simpl in VSU_Exports stacktriangVSU1. (* newstack, push, pop, triang *)
If we view stack+triang as a module, then what is the client view?
(Hint: the client is main.c, so what functions does main() call?)
The client computes the triangular number of N. So therefore this module
should not export newstack,push,pop to the client; it should export only
triang. The stack functions are there only to support the triang function.
To make a stack+triang VSU that exports only triang, we start with
stacktriangVSU1, and privatize the three functions that we want to hide
from clients. As follows:
Definition stacktriangVSU :=
privatizeExports stacktriangVSU1
[stack2._newstack; stack2._push; stack2._pop].
privatizeExports stacktriangVSU1
[stack2._newstack; stack2._push; stack2._pop].
Having done that, we can examine the exports of this new VSU:
Next, let's examine the MallocFreeVSU:
Eval hnf in VSU_Externs VSU_stdlib.MallocFreeVSU. (* malloc, free, exit *)
Eval hnf in VSU_Imports VSU_stdlib.MallocFreeVSU. (* nil *)
Eval hnf in VSU_Exports VSU_stdlib.MallocFreeVSU. (* malloc, free, exit *)
Eval hnf in VSU_Imports VSU_stdlib.MallocFreeVSU. (* nil *)
Eval hnf in VSU_Exports VSU_stdlib.MallocFreeVSU. (* malloc, free, exit *)
What we learn here (which we could have known already by reading VSU_stdlib.v)
is that malloc,free,exit are external functions, not implemented within the
entire C program we are verifying. Once the MallocFree module (stdlib.c)
re-exports them, the clients (such as stackVSU) will treat them as ordinary Imports,
not knowing the difference.
We link the stacktriangVSU with the MallocFreeVSU. We can do the privateExports
step at the same time, without needing a separate Definition.
Time Definition coreVSU :=
privatizeExports
ltac:(linkVSUs stacktriangVSU VSU_stdlib.MallocFreeVSU)
[stdlib._malloc; stdlib._free; stdlib._exit] .
Eval simpl in VSU_Externs coreVSU. (* malloc, free, exit *)
Eval simpl in VSU_Imports coreVSU. (* nil *)
Eval simpl in VSU_Exports coreVSU. (* triang *)
privatizeExports
ltac:(linkVSUs stacktriangVSU VSU_stdlib.MallocFreeVSU)
[stdlib._malloc; stdlib._free; stdlib._exit] .
Eval simpl in VSU_Externs coreVSU. (* malloc, free, exit *)
Eval simpl in VSU_Imports coreVSU. (* nil *)
Eval simpl in VSU_Exports coreVSU. (* triang *)
We call this the "core" VSU for a specific reason: It's everything except main().
We have to treat main() specially, because the main function is the one that
receives the initial values of all the global variables -- even the ones in other
modules. This is just a feature of how Separation Logic accounts for these variables.
So therefore, the "recipe" is this: First, construct the coreVSU that includes
everything except main; then construct the whole_prog that's the entire
program including main:
The main point about whole_prog is that it contains the intializers for
every global variable including main.
The funspec for main should have precondition main_pre p z gv, where
Because our stacktriang program doesn't interact with the outside world, the type of its
external oracle can be simply unit, and for z we can use tt. Which is to say,
we have been using NullExtension.Espec as the Espec for all our VSUs in this program,
and @OK_ty NullExtension.Espec = tt.
The definition main_pre p z gv calculates a separation-logic mpred that characterizes
all the initialized global variables of the program p.
The postcondition of main_spec, in this case, says that it returns the
10th triangular number.
- p is the program (e.g., all the .c files linked together),
- z is the "external oracle" characterizing the initial state of the outside world,
- gv is the usual global-variable mapping.
Definition main_spec :=
DECLARE _main
WITH gv: globals
PRE [ ] main_pre whole_prog tt gv
POST[ tint ]
PROP()
RETURN (Vint (Int.repr 55))
SEP(TT).
DECLARE _main
WITH gv: globals
PRE [ ] main_pre whole_prog tt gv
POST[ tint ]
PROP()
RETURN (Vint (Int.repr 55))
SEP(TT).
Soon we will prove semax_body V G f_main main_spec, where f_main
is the function-body from main.c, and main_spec is the funspec just above.
Locate f_main. (* VC main2.f_main *)
In order to prove a semax_body, we need a CompSpecs (which is an implicit
parameter of @semax_body). We compute this in the ordinary way from
VC.main2.prog, just as you would in any module.
It's important to build this Instance after the Require statements just above,
so that this is the compspecs instance that typeclass-resolution will find, instead
of finding VSU_stdlib.CompSpecs, VSU_stack.CompSpecs, etc.
The body_main lemma will need a Vprog, which in this case must
be the varspecs for the whole program:
The Gprog for main is, as usual, the funspecs of all the functions in this
module plus the Imports of this module.
Definition Main_imports: funspecs := Spec_triang.TriangASI M.
Definition Main_Gprog : funspecs := main_spec :: Main_imports.
Definition Main_Gprog : funspecs := main_spec :: Main_imports.
Proof of body_main
Lemma body_main: semax_body Vprog Main_Gprog f_main main_spec.
Proof.
pose coreVSU.
start_function.
fold M. (* See "Exercise: Delete" below to see why this is needed *)
Proof.
pose coreVSU.
start_function.
fold M. (* See "Exercise: Delete" below to see why this is needed *)
Now the SEP clause of the precondition is, (Spec_stdlib.mem_mgr M gv; has_ext tt)
In general, there will be one clause for each VSU that has a
state predicate, plus a has_ext clause to characterize the
external world. In this program, which does no I/O, the
external world is trivial, characterized by the unit value tt.
In this program, just one of the modules has a state predicate;
that's the stdlib module with its mem_mgr predicate.
That was put into the SEP clause by start_function, signalled
to do so by pose proof Core_VSU.
Now, as usual prove correctness of the function body. Start with a
forward_call(XX) to the triang function. The parameter XX will
depend on what you have put in the WITH clause of the triang_spec
in Spec_triang.
(* FILL IN HERE *) Admitted.
Exercise: Once you've finished the proof of body_main, go back and delete the
fold M near the top of body_main, and proceed to the point immediately
after the forward_call. You'll probably see an extra proof obligation here,
which is provable by (fold M; cancel). That suggests why the fold M is
useful at the top of the function.
There are several different concepts (and types) here:
Unlike ordinary modules, we don't turn main.c (or the module containing main())
into a VSU; it's slightly nonstandard because it imports the "varspecs" of all
the other modules (i.e., global-variable-initializer specifications). We make
a Component.
The Main Component, the Whole Component
- Clight.program is the Abstract Syntax Tree (AST) of a Clight program as produced by clightgen;
- QP.program is an alternate version of that AST that's more efficient to link computationally in Coq;
- Component is a set of correctness proofs (and other property proofs) about a QP.program;
- VSU is a Component with its internal funspecs hidden by Coq's abstraction mechanism (sigT), and with the component's varspecs in a standard form.
Definition MainComp: MainCompType nil ltac:(QPprog prog) coreVSU whole_prog (snd main_spec) emp.
Proof.
mkComponent prog.
Proof.
mkComponent prog.
Now, for each function in the Main module, we have a solve_SF_internal just
as we would (for ordinary components) after mkVSU.
The arguments of MainCompType (above) are,
Having made the Main component, we link it with the coreVSU to form the
Component corresponding to the whole program.
- nil, the Externs of Main, just in case main() calls some system-calls directly (in this case, there are none);
- (QPprog prog), the main.c program,
- coreVSU, the VSU of the entire program except main.c;
- whole_prog, the whole program including main.c+core;
- snd main_spec, the funspec of the main function;
- emp, the separation-logic characterization of all the global variables of main.c (in this case, there are none).
Import SeparationLogicSoundness.VericMinimumSeparationLogic.CSHL_Defs.
Require Import VST.veric.SequentialClight.
Require Import VST.veric.SequentialClight.
VST's program logic is proved sound with respect to the operational semantics
of Clight. That means,
- if you prove in VST that some program satisfies its specification, written as @semax_prog Espec CompSpecs prog init V G
- then (in the operational semantics of CompCert Clight) it will behave according to that specification.
About semax_prog. (*
semax_prog : forall {Espec : OracleKind},
compspecs -> Clight.program -> OK_ty -> varspecs -> funspecs -> Prop *)
semax_prog : forall {Espec : OracleKind},
compspecs -> Clight.program -> OK_ty -> varspecs -> funspecs -> Prop *)
semax_prog basically means that all the function-bodies in prog satisfy their
funspecs in G, along with some other useful side-conditions.
If we could just prove semax_prog about a program, then we could apply
the following soundness theorem to prove it runs correctly:
Check whole_program_sequential_safety_ext.
That's a complicated theorem-statement, but the main premise is
What we want from the VSU system is a proof that the C program you get by
linking all these VSUs together (with the MainComponent) satisfies semax_prog.
And here is that theorem:
- semax_prog prog initial_oracle V G
- step_lemmas.dry_safeN ...
And you can see what was just proved by unfolding WholeProgSafeType:
Eval red in (WholeProgSafeType WholeComp tt).
(* {G : funspecs
| semax_prog (prog_of_component WholeComp) tt (QPvarspecs whole_prog) G} *)
(* {G : funspecs
| semax_prog (prog_of_component WholeComp) tt (QPvarspecs whole_prog) G} *)
or in other words, there exists a complete set G of funspecs (for all the
functions in the program) such that the Clight program corresponding to
the WholeComponent is proved correct. Now we could apply
whole_program_sequential_safety_ext to get the corollary that the program
runs correctly.
Next Chapter: VSU_stdlib2
(* 2022-08-28 09:48 *)


I'm a Software Engineer living in Lagos, Nigeria. I have experience with backend development and quite proficient with frontend development. So guess I am a Fullstack Engineer! I built Uptrybe, an online platform for user-generated quizzes/trivia (You should really check it out). I'm currently also part of the team building Oradun Radio, an indigenious internet radio/media. I'll be spending 2021 as a fulltime software engineering student of the Microverse Global School.
Apart from Software dev, I am a Video Editor and sometimes, a Poet/Lyricist. You can find me spitting bars here and here! I have also started active jogging and it's going well than I thought. My current best record is 3.15 miles (5km) in 36 minutes. In a parallel universe, I am a very popular footballer with over 250 career goals and a huge fanbase (please, don't laugh!). Lastly, I'm a GRINNER!
View ResumeI always sort all my works into 4 categories. They are: Contract, Social Good, Personal, Open Source. You'll find each project attached with it's corresponding tag.
Personal
The Ultra wars game is a shooter game that requires the player to kill as many enemy battleships as possible. Also, the player will need to avoid collision with enemy ships and laser to avoid being killed. The more enemies you kill, the higher you rank on the leaderboard.
Contract
The Royal Nigeria is an online gift card trading platform. I designed and built all functionalities for this project. I also leveraged the Advanced Encryption Standard (AES) to protect users' sensitive data.
Open Source
A micro-blogging platform for users who want to air their opinion on a wide range of footballing topics. All articles are grouped under categories and readers can upvote this articles. There is a featured article section on the homepage for the article with the most upvotes. Articles are grouped into selected categories and there is also a feature called Top Writer, a spotlight on the Writer with the highest number of upvotes across their articles.
Open Source
A frontend app for fetching weather reports around the world.
[Put your call to action here]
Call to Action


--- layout: post title: "My Week in Review" date: 2017-01-22 05:05:00 +0000 tags: image: https://s3.amazonaws.com/audreywatters/2017-01-22-wall.jpeg imagecredits: http://algorithmic.rotoscope.work/ ---
Icon credits: The Noun Project


Template Filters
Filters are essentially functions that can be applied to variables. They are called with a pipe operator (|) and can take arguments. nunjucks filters alter output of variables in place. You can use all available builtin nunjucks filters.
{{ table.name | lower }} -> Converts name to lower case. (i.e. Member -> member)
They can be chained:
{{ table.name | plural | camelCase }} -> Converts name to plural in camel case. (i.e. member_name -> memberNames)
pg-generator filters
pg-generator offfers additional filters suitable for database scaffolding. Some of them are based on highly popular inflection npm module.
| Filter Name | Description | Before | After |
|---|---|---|---|
| camelCase | Converts string to camelcase. | member_name | memberName |
| pascalCase | Converts string to pascal case. | member_name | MemberName |
| classCase | Converts string to class case. | member_name | MemberName |
| snakeCase | Converts string to snake case. | memberName | member_name |
| dashCase | Converts string to separated by dash (-). | member_Name | member-name |
| singular | Converts string to singular. | member_names | member_name |
| plural | Converts string to plural. | member_name | member_names |
| clearDefault | Clears PostgreSQL default values to be used in JS code. | "O''Reilly" | "O'Reilly" |
| quote | Adds quotes to string using JSON.stringify . |
member_name | "member_name" |
| singleQuote | Adds single quotes to string. | member_name | 'member_name' |
| stringifyIfObject({nullToUndef:false, raw:false}) | Converts object to string to use in template directly. | { name: 'George' } | { name: 'George' } |
| stripPrefix(arg1, arg2, ...) | Strips given texts and object.name s from beginning of string. |
cart_cart_id1 | cart_id |
| stripSuffix(arg1, arg2, ...) | Strips given texts and object.name s from end of string. |
cart_id2 | cart |
| strip(arg1, arg2, ...) | Strips given texts and object.name s from string. |
cart_product_id3 | cart_id |
| padRight(length, [char]) | Pads string with optional char (default space) until it's length equals to length. | member4 | member...... |
| relationName | Converts foreign key name to be used in a relationship. If string ends with '_id' or 'id', strips it (case insensitive). Otherwise adds given prefix at the beginning of the string. | company_id, account | company related_account |
| makeJsDoc(str) | Converts given string to JSOC lines | "some \n multi line" | " _ some\n _ multi line" |
* Footnotes
*1 {{ 'cart_cart_id' | stripPrefix('cart') }} -> cart_id
{{ 'cart_cart_id' | stripPrefix(cart_table) }} -> cart_id (Assuming cart_table.name equals cart)
{{ 'a_b_c_table' | stripPrefix('a', 'b') }} -> c_table
*2 {{ 'cart_id' | stripSuffix('id') }} -> cart
*3 {{ 'cart_product_id' | strip('product') }} -> cart_id
*4 {{ 'member' | padRight(10) }} -> member <- Space padded until here.
{{ 'member' | padRight(10, '_') }} -> member____
API of Filter Functions
clearDefault(string) ⇒ string
| boolean
| undefined
Clears SQL type escapes (Two quote '' to one quote ') and strips beginning and trailing quotes around string. Also escapes result according to JSON standards.
Returns: string
| boolean
| undefined
- - Default value to use in template.
| Param | Type | Description |
|---|---|---|
| string | string |
Default value returned from PostgreSQL. |
relationName(str, [prefix]) ⇒ string
Converts foreign key name to be used in a relationship. If string ends with '_id' or 'id', strips it (case insensitive). Otherwise adds given prefix at the beginning of the string. company_id -> company, account -> related_account
Returns: string
- - Name for the belongsTo relationship.
| Param | Type | Default | Description |
|---|---|---|---|
| str | string |
Foreign key name. | |
| [prefix] | string |
"related" |
Prefix to add if no given string does not contain 'id'. |
stripPrefix(source, arguments) ⇒ string
Variadic function which strips given list of strings or object's names from start of the source string.
Returns: string
- - Cleaned string.
| Param | Type | Description |
|---|---|---|
| source | string |
Source string to be cleaned. |
| arguments | string | Object |
List of strings or objects (object's names) to delete from source string. |
stripSuffix(source, arguments) ⇒ string
Variadic function which strips given list of strings or object's names from end of the source string.
Returns: string
- - Cleaned string.
| Param | Type | Description |
|---|---|---|
| source | string |
Source string to be cleaned. |
| arguments | string | Object |
List of strings or objects (object's names) to delete from source string. |
padRight(str, count, [char]) ⇒ string
Pads given string's right side with given character (default space) to complete its length to count.
Returns: string
- - Result string with length of count.
| Param | Type | Default | Description |
|---|---|---|---|
| str | string |
Source string. | |
| count | number |
Total length of the result string. | |
| [char] | string |
"space" |
Padding character |


Alert
Alerts
Alerts with WebComponents
Dismissible Alerts
Dismissible Alerts (Destroyed on dismiss)
Fluid Alerts
Auto Closeable Fluid Alerts
Notification Alerts


THE ABYSS A film review by Steve Copold Copyright 1989 Steve Copold
A review of THE ABYSS that reaches beyond technical descriptions is, at best, very difficult to depersonalize. This is a film that does not lend itself to neutral feelings. THE ABYSS literally assaults the viewer's senses within moments of the opening credits. The style of the film, now well established by Gayle Ann Hurd and James Cameron in the earlier TERMINATOR and ALIENS, is that of forcing the viewer into a participatory role. Only in a very few shots is one allowed to sit back as an observer and watch the ongoing scene. Rather, Cameron is relentless in making the camera maintain an active role in the narrative.
This motion picture attains new heights (or depths) of cinematic claustrophobia. The one film in memory that comes even close to THE ABYSS in this area, is DAS BOOT with its hydraulically operated steadicam plunging headlong through the narrow passage- way and water-tight doors of the German U-Boat. In THE ABYSS, this is far surpassed as the camera doesn't limit its high speed charges to straight lines, but runs around corners, ducking bulkheads, power cables, and walls of rushing water. Most of the people sitting near me in the theater were tightly gripping the armrests on their seats and moving visibly in reaction to the events on screen.
The cinematography is simply astonishing. Underwater photography can often be really distressing to watch. Often the view is muddled, the voice-overs and foley work are guesses, and the lack of continuity between the two is very disconcerting. There is none of this in THE ABYSS. Working in the controlled environment of an abandoned nuclear power facility, Cameron was able to maintain a near perfect balance of sight and sound. The specially made diving gear always allows a full view of the actor's face, and built-in microphones, provide a measure of realism that has never been seen before in an underwater film. It takes awhile to realize that most of the brilliantly conceived miniatures and matte paintings you're seeing are not miniatures and paintings at all, but full-size set constructions. The few models and mattes utilized in THE ABYSS are so clever in their construction and use, that it will require some serious nit-picking to spot most of them. The special effects are the best that Industrial Light & Magic has to offer.
The acting is top notch, with Ed Harris really coming into his own in the lead. An interesting choice was that of ALIENS and TERMINATOR veteran, Michael Biehn, as the "pressure psychotic" heavy. Aside from Harris, Biehn, and a few others, the cast is pretty much made up of little known character actors. They form a terrific ensemble, and are thoroughly convincing in their respective roles. Chris Elliot, of the David Letterman Show (The Guy Under the Seats) has a small role as a technician on the surface support vessel.
As disorienting as the relentless pace of the film is, the viewer never has problem staying with the film's tightly woven narrative. This is due in part to Cameron's direction, but equal credit must go to the intelligent screenplay and "world-class" editing. Any entertainment that can achieve this frenetic pace and still hold you for well over two hours is remarkable indeed.
One of the texts we use in a History & Significance of the Motion Picture course states that, "To succeed in all respects, a film must tell a story, set a mood, and entertain the audience." On this score THE ABYSS is right on target. I cannot recall another film which more quickly, or effectively , suspends reality and draws you into the world on screen. As a film, THE ABYSS gets four stars....as a roller coaster it gets five!
Steve Copold<EMAIL_ADDRESS>.
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


bc18-tinyviewer
Karbonite
Workers
Knights
Rangers
Mages
Healers
Factories
Rockets
-1x
-0.1x
0.1x
1x
2x
5x
10x
20x
30x
100x
-
Icons from Noun Project by Mat Rutherford, To Uyen, Geovani Almeida, Maciej Świerczek, SBTS, Robert Bjurshagen and Xinh Studio.


Dennis Lang
Version: 15.3s
Updated: Jun-2015
http://home.comcast.net/~lang.dennis/
- Download v15.3s source code: LLFile-v153-src.zip
- Download v15.3s executable x64 (vs2010): LLFile-x64.exe
- Download v15.3s executable x32 (vs2010): LLFile-x32.exe
- Download v8.3 source code: LLFile-v8.3-src.zip
All of the following features are provided by a single program llfile.exe. This program has several personalities or commands. There are two ways to select a command.
Command Description dir Directory listing copy File copy move File move del File deleletion find/where Find where files are printf Format file and dates exec Execute external command on files compare Binary file compare grep / replace Grep Find and Replace testing Batch file to test most commands
c = copy
d = dir
e = execute
f = find
g = grep
m = move
o = compare
p = print
r = del (remove)
w = whereExample:
llfile -xr *.foo ; remove files matching pattern *.foo
llfile -xd *.foo ; list directory of files matching *.foo
copy llfile.exe lldir.exeWhen you use the specialize executables, their name automatically sets the personality.
copy llfile.exe llcopy.exe
copy llfile.exe llexec.exe
copy llfile.exe lldel.exe
or
fsutil hardlink create lldir.exe llfile.exe
fsutil hardlink create llcopy.exe llfile.exe
fsutil hardlink create llexec.exe llfile.exe
fsutil hardlink create lldel.exe llfile.exe
lldir *.foo ; runs directory commandThe valid specialized executable names are listed below with each commands documentation. For example, lldir can also be ld or d.
lldel *.foo ; runs delete command
The program continues to be an experiment, so no guaranties on reliability and completeness. The copy and move commands are the hardest to use because of how their destination path is defined.
Help Banner:
List Directory v14.0s Syntax: <filePattern> [<directory|pattern> \ ]... <filePattern> Pattern: * = zero or more characters ? = any character Example: * ; List all filse in current directory *.obj ; List only files ending in .obj in current directory -R c:\tmp\*.obj ; List all .obj files in and under c:\tmp directory c:\t*\src\* ; List all files off directory starting with t ; and having subdirectory src -a ; Show attributes (-aw show as words, -as show security) -cw or -cr ; Change permission to writeable or readonly -ct ; Change time (modify) -h or -H ; Hide heading -l ; Long format <attributes> <size> <modify time> <file name> -r or -R ; Recurse directories -s ; Hide file size size -u ; Show disk usage summary (size, count), use instead of -r -U ; Show disk usage summary (size, count) by extension -UU or -UUU ; Show disk usage by Name (-UU) or Directory (-UUU) -w ; Show in wide format -A=[nrhs] ; Limit files by attribute (n=normal r=readonly, h=hidden, s=system) -D ; Show only directories -F ; Show only files -I ; Show fileId (use with -L) -L ; Show hard link count and any Alternate Data Streams -N or -n ; Show just names, same as -h -s -tn -q -p ; Show full file path -P=<srcPathPat> ; Optional regular expression pattern on source files full path -q ; Quiet, dont show stats, no color -1=<file> ; Redirect output to file -Q=n ; Quit after 'n' lines output -S[-][acmnenpst] ; Sort on a=access,c=creation,m=modify time, e=ext, n=name, p=path, s=size or t=type. -=reverse -t[acm] ; Show Time a=access, c=creation, m=modified, n=none -T[acm]<op><value> ; Test Time a=access, c=creation, m=modified ; op=(Greater|Less|Equal) Value= now|+/-hours|yyyy:mm:dd:hh:mm:ss ; Value time parts significant from right to left, so mm:ss or hh:mm:ss, etc ; Example -TmcEnow Show if modify or create time Equal to now ; Example -TmG-4.5 Show if modify time Greater than 4.5 hours ago ; Example -TaL04:00:00 Show if access time Less than 4am today -W[admr] ; Watch directories for any change, options limit wach to ; a=Add, d=Delete, m=Modified, r=renamed, default is any change -X=<pathPat>,... ; Exclude patterns -X=*.lib,*.obj,*.exe ; No space in patterns. Pattern applied against fullpath ; So *\ma will exclude a directory ma or file ma -Z<op><value> ; siZe op=(Greater|Less|Equal) value=num<units G|M|K>, ex -Zg100M -C=<colorOpt> ; Set colors, colors are red,green,blue,intensity, add bg to end of color for background -C=r<colors> ; readonly ex -C=r+red+blue or -C=r+bluebg -C=d<colors> ; directory -C=h<colors> ; hidden file or directory -, ; Disable commas in size and numeric output -=<sep> ; Set output field separator string -# ; Change date format -? ; Show this help -?? ; Show extended help Attributes Long form Single Char Left-To-Right Last match wins ---------------- ---------------- READONLY R NORMAL HIDDEN H NOT_INDEXED I SYSTEM S ARCHIVE DIRECTORY D READONLY r ARCHIVE A HIDDEN h DEVICE d SYSTEM s NORMAL N DIRECTORY \ TEMPORARY T DEVICE d SPARSE_FILE S TEMPORARY t REPARSE_POINT r SPARSE_FILE S COMPRESSED C REPARSE_POINT > OFFLINE O COMPRESSED % NOT_INDEXED I OFFLINE O ENCRYPTED E ENCRYPTED E VIRTUAL V VIRTUAL V Set defaults by assigning them to the LLDIR environment variable Use pipe to divide options instead of minus and end with pipe.  Sorting is selected with -S= followed by a sort criteria. Notice I disabled the 'headings' with -h. Sorting Criteria:
- a = last access time
- c = creation time
- m = modify time
- e = extension (text following last period)
- n = name (includes extension)
- p = path (directories and name)
- s = size
- t = type (directory, file, device)
- - = reverse sort
C:\dlang\soft\dlang_website\console>ld -hS=s \dlang\soft\d*\*.cpp 06/15/2007 8:40 PM 301 stdafx.cpp 01/24/2009 1:26 PM 525 wait.cpp 07/19/2009 8:30 AM 525 wait.cpp 07/19/2009 8:30 AM 1,192 DClean.cpp 01/24/2009 1:26 PM 1,192 DClean.cpp 07/19/2009 8:30 AM 1,240 SaveRestore.cpp 01/24/2009 1:26 PM 1,240 SaveRestore.cpp 07/19/2009 8:30 AM 2,163 about.cpp 01/24/2009 1:26 PM 2,163 about.cpp 07/19/2009 8:30 AM 3,002 result.cpp 01/24/2009 1:26 PM 3,002 result.cpp 07/19/2009 8:30 AM 3,027 structs.cpp 01/24/2009 1:26 PM 3,027 structs.cpp 07/19/2009 8:30 AM 4,309 CustomHintWin.cpp 01/24/2009 1:26 PM 4,309 CustomHintWin.cpp 07/19/2009 8:30 AM 5,234 options.cpp 01/24/2009 1:26 PM 5,234 options.cpp 01/24/2009 1:26 PM 5,254 RegEnum.cpp 07/19/2009 8:38 AM 5,280 RegEnum.cpp 07/19/2009 8:30 AM 7,438 DiskScan.cpp 01/24/2009 1:26 PM 7,438 DiskScan.cpp 07/19/2009 8:30 AM 13,641 TextPlugInfo.cpp 01/24/2009 1:26 PM 13,641 TextPlugInfo.cpp 02/22/2009 3:09 PM 25,620 ring_spin_test.cpp 07/19/2009 8:30 AM 30,697 Main.cpp 01/24/2009 1:26 PM 30,697 Main.cpp ;Directories:0, Files:26, TotalSize:181,391To make the above more useful, you can request full filename path with the -p option.
 Hide the file size by using -s. Use -h to disable heading and -tn to set the Time to None. Notice that the switches can be concatenated together to form -shtn. As of version 14, most switches which have arguments require an equal sign to prevent incorrect parsing of long strings of commands.
Example -S=s -F=*.exe,*.bat -X=a*.
The following three images show three ways to display file attributes/types.
1. Attributes shown as single character
2. Attributes shown as full array of characters
3. Significant Attributes shown as Word
Help Banner:
Copy v14.0s Syntax: [<switches>] <fromPattern>... <toPattern> Destination controls: -cw or -cr ; Change destination permission to writeable or readonly -f ; Force copy even if destination is set to read only -n ; No copy, just echo command -o ; Only copy if destination is older than source (modify time) -O ; Okay to over write existing destination regardless of time -p ; Prompt before copy -pp ; Prevent prompt on Override or readonly, just skip file -P=<srcPathPat> ; Optional regular expression pattern on source files -z ; Un/Compress (compressed file ends in .lzo) Source selection: -A=[nrhs] ; Limit files by attribute (n=normal r=readonly, h=hidden, s=system) -D ; Copy directory tree if destination does not exist -r ; Recurse starting at from directory, matching file pattern -I=<file> ; Read list of files from <file> or - for stdin -F=<filePat>,... ; Limit to matching file patterns -X=<pathPat>,... ; Exclude patterns -X=*.lib,*.obj,*.exe ; No space in patterns. Pattern applied against fullpath ; So *\ma will exclude a directory ma or file ma -Z<op><value> ; siZe op=(Greater|Less|Equal) value=num<units G|M|K>, ex -Zg100M Misc options: -B=c ; Add additional field separators to use with #n selection -q ; Quiet, don't echo command (echo on by default) -1=<output> ; Redirect output to file Where fromPattern is: <file|Pattern> [<directory|pattern> \]... <file|Pattern|#n> Pattern: * = zero or more characters ? = any character Destination Pattern: *n = Replace destination with source filename wildcard 'n', 1 is first Ex: lc *\file-*-.* file.*1 #n = replace destination with source directory 'n' where n is subdirectories n=1 first from left -n counts from right #l = where 'l' is a letter: b = base name e = extension n = base.ext l, u, c = lower, upper, captialize name for later use Example: lc * e:\tmp\ lc *.obj e:\tmp\ lc -R c:\tmp\*.obj d:\tmp\*.obj e:\tmp\ lc c:\t*\src\* e:\tmp\ ; Use # to select subdirectories or parts of source path name. Also to convert case. ; When any # appear in line, use #n, #b, #e to specify target filename lc c:\foo\bar\*\*.DAT d:\far\#-1\#l#n lc c:\foo\bar\*.dat d:\far\#b.tmp ; change extension .dat to .tmp ; Remove underscores from files lc -B_ c:\*_*_*.dat d:\*1*2*3.dat ; Copy full recursive directory lc -r srcDir backup\* ; Note * is important in destination to force dir creation ; Copy just dat files lc -r srcDir\*.dat backup\* ; Copy and compress files lc -rz \*.dat compressed\* ; Uncompress files lc -rz compressed\*.lzo srcDir\*
Help Banner:
Move v14.0s Syntax: [<switches>] <fromPattern>... <toPattern> Where switches are: -A=[nrhs] ; Limit files by attribute (n=normal r=readonly, h=hidden, s=system) -cw or -cr ; Change destination permission to writeable or readonly -f ; Force move even if destination is set to read only -I=<file> ; Read list of files from <file> or - for stdin -n ; No move, just echo command -o ; Only move if destination is older than source (modify time) -O ; Okay to over write existing destination regardless of time -r ; Recurse starting at from directory, matching file pattern -p ; Prompt before move -pp ; Prevent prompt on Override or readonly, just skip file -P=<srcPathPat> ; Optional regular expression pattern on source files full path -q ; Quiet, don't echo command (echo on by default) -B=c ; Add additional field separators to use with #n selectoin -D ; Only move directories -F ; Only move files -F=<filePat>,... ; Limit to matching file patterns -L ; Create hard link instead of copy -X=<pathPat>,... ; Exclude patterns -X=*.lib,*.obj,*.exe ; No space in patterns. Pattern applied against fullpath ; So *\ma will exclude a directory ma or file ma -Z<op><value> ; siZe op=(Greater|Less|Equal) value=num<units G|M|K>, ex -Zg100M -? ; Show this help Where fromPattern is: <file|Pattern> [<directory|pattern> \]... <file|Pattern|#n> Pattern: * = zero or more characters ? = any character Destination Pattern: *n = Replace destination with source filename wildcard 'n', 1 is first Ex: lm *\file-*-.* file.*1 #n = Replace destination with source directory 'n' where n is subdirectories n=1 first from left or -n counts from right #<arg> = where <arg> is a letter f = fullpath d = directory b = base name e = extension n = base.ext l, u, c = lower, upper, captialize name for later use Example: * e:\tmp\ *.obj e:\tmp\ -R c:\tmp\*.obj d:\tmp\*.obj e:\tmp\ c:\t*\src\* e:\tmp\ ; use # to select subdirectories and force name (#n) to lowercase (#l) ; when any # appear in line, use #n, #b, #e to specify target filename c:\foo\bar\*\*.DAT d:\far\#-1\#l#n c:\foo\bar\*.dat d:\far\#b.tmp ; change extension .dat to .tmp ; remove underscores from files c:\*_*_*.dat d:\*1*2*3.dat ; Read files from stdin ld -N | grep Foo | lm -i=- .\backup\#n
Help Banner:
Delete v14.0s Syntax: [<switches>] <Pattern>... Where switches are: -A=[nrhs] ; Limit files by attribute (n=normal r=readonly, h=hidden, s=system) -D ; Del directories only -F ; Del files only -F=<filePat>,... ; Limit to matching file patterns -f ; Force delete even if destination is set to read only -I=<infile> ; Read filenames from infile or stdin if - -j ; Follow junctions (default: skip junctions) -n ; No delete, just echo command -p ; Prompt before delete -q ; Quiet, don't echo command (echo on by default) -r ; Recurse starting at from directory, matching file pattern -s ; show file size size -t[acm] ; show Time a=access, c=creation, m=modified, n=none -u ; Enable undo, delete files and directories by moving to recycle bin -P=<srcPathPat> ; Optional regular expression pattern on source files full path -Q=n ; Quit after 'n' retries if error -T[acm]<op><value> ; Test Time a=access, c=creation, m=modified ; op=(Greater|Less|Equal) Value= now|+/-hours|yyyy:mm:dd:hh:mm:ss ; Value time parts significant from right to left, so mm:ss or hh:mm:ss, etc ; Example -TmcEnow Show if modify or create time Equal to now ; Example -TmG-4.5 Show if modify time Greater than 4.5 hours ago ; Example -TaL04:00:00 Show if access time Less than 4am today -X=<pathPat>,... ; Exclude patterns -X=*.lib,*.obj,*.exe ; No space in patterns. Pattern applied against fullpath ; So *\ma will exclude a directory ma or file ma -Z<op><value> ; siZe op=(Greater|Less|Equal) value=num<units G|M|K>, ex -Zg100M -1=<output> ; Redirect output to file -? ; Show this help Where fromPattern is: <file|Pattern> [<directory|pattern> \]... <file|Pattern|#n> Note - remember to end directory with \ as in -rfq .\foo-*\ ; Recursively, forcefully quietly remove all files ; and directories which start in a directory that ; starts with foo- -rfq .\foo-* ; Similar but search ALL directories at current level ; for files or directories which start with foo- Pattern: * = zero or more characters ? = any character
Help Banner:
Find v14.0s Find a file along directory path or env paths Syntax: [<switches>] <Pattern>... Where switches are: -? ; Show this help -A=[nrhs] ; Limit files by attribute (n=normal r=readonly, h=hidden, s=system) -D ; Only directories in matching, default is all types -p ; Search PATH environment directories for pattern -e=<envName>[,...] ; Search env environment directories for pattern -F ; Only files in matching, default is all types -F=<filePat>,... ; Limit to matching file patterns -I=<file> ; Read list of files from this file -p ; Short cut for -e=PATH, search path -P=<srcPathPat> ; Optional regular expression pattern on source files full path -q ; Quiet, default is echo command -Q=n ; Quit after 'n' matches -s ; Show file size size -t[acm] ; Show Time a=access, c=creation, m=modified, n=none -X=<pathPat>,... ; Exclude patterns -X=*.lib,*.obj,*.exe ; No space in patterns. Pattern applied against fullpath ; So *\ma will exclude a directory ma or file ma -V ; Verbose -E=[cFDdsa] ; Return exit code, c=file+dir count, F=file count, D=dir Count ; d=depth, s=size, a=age -r ; Don't recurse into subdirectories -1=<file> ; Redirect output to file Where Pattern is: <file|Pattern> [<directory|pattern> \]... <file|Pattern|#n> Pattern: * = zero or more characters ? = any character Example: ; Assuming lf.exe and where.exe are linked to llfile.exe ; Example to find where an executable is in current search PATH llfile -xw cmd.exe ; -xw force where command lf -p cmd.exe ; -p enables PATH search where cmd.exe ; where command auto adds '-e' lf -Ar -i=c:\fileList.txt >nul ; check for non-readonly files from list lf -e=LIB libfoo.lib ; search env LIB's path for libfoo.lib lf -F=*.exe,*.com,*.bat .\* ; search for executables or batch files lf -F -X=*.obj,*.exe build\* ; search for none object or exe files
Help Banner:
Printf v14.0s Print format Syntax: [<switches>] Where switches are: -I=<inFile> ; Read input from file or stdin if - ; NOTE: -I must be after the -a options ; Example to convert to uppercase ; echo foo | p -a=pn -I=- -p=%s,%s -i=<text> ; Parse text per separator and send to formatter ; NOTE: -a must be before -i to control case ; ex: -a=nuncn -i=Hello -p=%s,%s,%s -Bc ; Field separator (see -e example below) -C=<colorOpt> ; Set colors, colors are red,green,blue,intensity, add bg to end of color for background ; ex -C=red+blue or -C=green,redbg+bluebg -D ; Only directories -F[=<filePat>] ; Only files -a=[pdn...] ; File arguments passed to printf ; p=full path ; d=directory ; n=name ; r=name root (no extension) ; e=extension (right of last .) ; s=size (as a string) ; _=defcase ; l=lowercase ; u=uppercase ; c=captialize ; NOTE: -a must proceed -i or -I -p=<fmt> ; Printf format, use any valid %s format, %20s ; input is either from redirection -i- ; or input is from a file -i<filename> ; or input is from file directory scan (trailing arguments) ; Use quotes to include spaces in format ; or a string string as in "-pHello World\n" -P=<srcPathPat> ; Regular expression pattern on source files path or env items -s=<fmt> ; Scan input with regex -l=<timeFmt> ; strftime format using local time -z=<timeFmt> ; strftime format using zTime -q ; Quiet, default is echo command -Q=n ; Quit after 'n' matches -X=<pattern> ; Exclude patterns -X *.lib,*.obj,*.exe -1 ; Don't recurse into subdirectories Note: Remember to escape % if used in a batch file with two %% Examples: ; Use -a to place two copies of filename as argument to printf p -a=nn "-p=p4 move support\\%s radar\\%s\n" radar\* ; Generate string to copy file to .bak extension, save in batch file p -a=nr "-p=copy %s %s.bak" *.tax > job.bat ; set -p to define printf before -i which specifies the input followed by scan using regex dir | p "-p=%.0syear=%s mon=%s day=%s\n" -I=- "-s=([0-9]*)/([0-9]*)/([0-9]*).*" ; set -p after -I to print contents of input dir | p -I=- -p=Files=%s\n\n p -I=foo.txt "-p=Stuff %s %s Stuff\n" ; List environment variable path, split on semicolon -e=PATH "-p=%s\n" -e=PATH "-p=%4# %s\n" ; Number env path directories -P=Program -e=* -p%s\n ; Show env's which contain word Program -e=PATH "-p=%s" *.txt ; Scan paths for *.txt "-l=Date is %m/%d/%y %H:%M:%S" ; local time "-l=Date is %m/%d/%y" "-p=\n" "-l=%H:%M:%S" ; local time strftime: %a Abbreviated weekday name %A Full weekday name %b Abbreviated month name %B Full month name %c Date and time representation appropriate for locale %d Day of month as decimal number (01 û 31) %H Hour in 24-hour format (00 û 23) %I Hour in 12-hour format (01 û 12) %j Day of year as decimal number (001 û 366) %m Month as decimal number (01 û 12) %M Minute as decimal number (00 û 59) %p Current locale's A.M./P.M. indicator for 12-hour clock %S Second as decimal number (00 û 59) %U Week of year as decimal number, with Sunday as first day of week (00 û 53) %w Weekday as decimal number (0 û 6; Sunday is 0) %W Week of year as decimal number, with Monday as first day of week (00 û 53) %x Date representation for current locale %X Time representation for current locale %y Year without century, as decimal number (00 û 99) %Y Year with century, as decimal number %z, %Z Either the time-zone name or time zone abbreviation %% Percent sign
Help Banner:
Compare Two Files v14.0s Do binary comparison of files. When processing a list of files only those with matching base name are compared against each other. Syntax: <filePattern> <filePattern> Pattern: * = zero or more characters ? = any character Example: LLCmp d1\* ; Compare similar files in one directory LLCmp d1\* d2\* d3\* ; Compare similar files in three directories LLCmp d1\*.cpp d2\*.cpp ; Compare similar files ending in .cpp LLCmp -r d1 d2 ; Compare all similar files in two directory trees LLCmp c:\t*\src\*.cpp master.cpp ; Compare files to a single file ; and having subdirectory src LLCmp -o20 -v new.data old.data ;Use offset to skip over date changes Output controls: -a ; Show ALL match result (default is only differences) -e ; Show only equal files -s ; Show skipped files (default is only differences) -s=l or -s=r ; Show skipped Left or Right files -v ; Verbose, show detail on first difference per file -V=<count> ; Verbose, show differences, stop after 'count' per file -w=<width> ; Compare filesize numeric width, default 12 -P ; Hide compress progress -q ; quiet, dont show detail, just set exit status 0=match, 1=differ -qq ; Hide details and only show summary when used with -F -Q=n ; Quit after 'n' lines output -1=<output> ; Redirect output to file -, ; Disable commas in size and numeric output File selection: -A=[nrhs] ; Limit files by attribute (n=normal r=readonly, h=hidden, s=system) -D ; Force subdirectories and name to match before comparing -F ; Match just the filename, size and date and not its contents -I=<infile> ; Read filenames from infile or stdin if - -r ; Recurse directories -l=<levels> ; Directory levels to include in path matching, default is 1 -o=<offset> ; Start binary file compare at file offset, default is 0 -X=<pathPat>,... ; Exclude patterns -X=*.lib,*.obj,*.exe ; No space in patterns. Pattern applied against fullpath ; So *\ma will exclude a directory ma or file ma -Z=<op><value> ; siZe op=(Greater|Less|Equal) value=num<units G|M|K>, ex -Zg100M Special actions: -d=e | -d=n ; Delete matching (-d=e) or not matching files (-d=n) -n ; Don't execute delete, just show command delete command Exit value (%ERRORLEVEL%): -E=e ; return #equal -E=d ; return #diff -E=dlr ; return diff + left + right
Help Banner:
Execute v14.0s Syntax: [<switches>] -c "command" <Pattern>... Where switches are: -? ; Show this help -A=[nrhs] ; Limit files by attribute (n=normal r=readonly, h=hidden, s=system) -B=c ; Add additional field separators to use with #n selectoin -D ; Only process directories -F ; Only process files -F=<filePat>,... ; Limit to matching file patterns -f ; Force to execute on read-only files -g <grepPattern> ; Execute only if file contains grepPattern -G <grepRange> ; default is entire file, +n=first n lines, -n=last n lines -I=<file> ; Read list of files from <file> or - for stdin -n ; No execution -p ; prompt before executing command -P=<srcPathPat> ; Optional regular expression pattern on source files full path -q ; Quiet, default is echo command -Q ; Quote argument before executing -r ; Recurse into subdirectories -X=<pathPat>,... ; Exclude patterns -X=*.lib,*.obj,*.exe ; No space in patterns. Pattern applied against fullpath ; So *\ma will exclude a directory ma or file ma -V ; verbose mode -Z<op><value> ; siZe op=(Greater|Less|Equal) value=num<units G|M|K>, ex -Zg100M Last argument: -C=<count> ; Number of files to append to command, default is 1 -c=<command> ; Execute command, default with file name append to command ; Use #<arg> to select parts of filename WARNING: Remember to quote command if it has spaces. Also \" at the end of quoted command will not work, added another slash. llexec -c "command arg1 \arg2 \arg3\\" *.dat Example to copy files and prefix destination name with save- llexec -F "-c=xcopy #q#f#q #qsave-#n#q" Example to prompt to set readonly attributes using attrib command llexec -p "-c=attrib +r " Example to change directory and execute command llecec -D "-c=cmd /c cd #d && p4 edit *" .\*\ #<arg> = where <arg> is a letter d = directory f = fullname include directories b = base name e = extension n = base.ext l, u, c = lower, upper, captialize name for later use q adds a quote Where Pattern is: <file|Pattern> [<directory|pattern> \]... <file|Pattern|#n> Pattern: * = zero or more characters ? = any character
Help Banner:
Replace v15.3s Replace a file[s] data Syntax: [<switches>] <Pattern>... Where switches are: -? ; Show this help -A=[nrhs] ; Limit files by attribute (n=normal r=readonly, h=hidden, s=system) -D ; Only directories in matching, default is all types -p ; Search PATH environment directories for pattern -e=<envName>[,...] ; Search env environment directories for pattern -F ; Only files in matching, default is all types -F=<filePat>,... ; Limit to matching file patterns -G=<grepPattern> ; Find only if file contains grepPattern -g=<grepOptions> ; Use with -G ; Default is search entire file ; Ln=first n lines ; Mn=first n matches ; H(f|l|m|t) Hide filename|Line#|MatchCnt|Text ; I=ignore case ; Bn=show before n lines ; An=show after n lines ; F(l|f) force byLine or byFile ; U(i|b) update inline or backup -I=<file> ; Read list of files from this file -p ; Short cut for -e=PATH, search path -P=<srcPathPat> ; Optional regular expression pattern on source files full path -q ; Quiet, default is echo command -Q=n ; Quit after 'n' file matches -r ; Recurse into subdirectories -R=<replacePattern> ; Use with -G to find and replace -s ; Show file size size -t[acm] ; Show Time a=access, c=creation, m=modified, n=none -X=<pathPat>,... ; Exclude patterns -X=*.lib,*.obj,*.exe ; No space in patterns. Pattern applied against fullpath ; So *\ma will exclude a directory ma or file ma -V ; Verbose -E=[cFDdsamL] ; Return exit code, c=file+dir count, F=file count, D=dir Count ; d=depth, s=size, a=age, m=#matches, L=list of matching files -1=<file> ; Redirect output to file Where Pattern is: <file|Pattern> [<directory|pattern> \]... <file|Pattern|#n> Pattern: * = zero or more characters ? = any character Example: llfile -xG -G=(H|h)ello\r\n *.txt ; -xG force grep command lg "-G=String" -g=I -r -F=*.cpp src ; Ignore case String in cpp files lg -Ar -i=c:\fileList.txt >nul ; check for non-readonly files from list lg -F=*.txt,*.log '-G=[0-9]+' .\* ; search files for numbers lg -X=*.obj,*.exe -G=foo build\* ; search none object or exe files lg "-G= foo " *.txt | lg -G=bar ; Same as following lg "-G= foo " -G=bar *.txt ; two -G, either can match per line ; Use -E=L to match multiple words in same file but not same line lg -G=foo -r -F=*.txt -E=L | lg -I=- -G=bar lg "-G='([^']+)',.*" "-R='$1');" foo.txt ; Grep and Replace
@rem @rem Test llfile @rem @echo off @if EXIST testDir rmdir /s /q testDir @mkdir testDir copy Release\llfile.exe testDir\ @pushd testDir @rem Install llfile -xi >nul if not ERRORLEVEL 26 ( echo "Install failed, exitcode %ERRORLEVEL%" goto END ) @echo on @prompt $g$s @set heading="\n=========================(%%s)=========================\n\n" @cls @p "-i=Show various colored text" "-p=%heading%" p -C=red,whiteBg "-p= red " -C=green,whiteBg "-p=green " -C=blue,whiteBg "-p=blue on white\n" p -C=red,blackBg "-p= red " -C=green,blackBg "-p=green " -C=blue,blackBg "-p=blue on black\n" p -C=green+red,redBg "-p= yellow on red\n" p -C=black,whiteBg "-p= black on white\n" @p -p=\n\n @pause @cls @p "-i=Show time/date text" "-p=%heading%" p -C=black,whiteBg "-l=DOS Date and Time %%a %%x %%X " "-z=Gmt= %%x %%X" (date/t & time/t) | p -C=black,whiteBg -I=- "-p=DOS Date and Time %%s %%s\n" @p -p=\n\n @pause @cls @p "-i=Show Path environment variable" "-p=%heading%" p -e=PATH "-p=\t%%s\n" @p "-p=\n\nNumbered and limited to those with Program in their name\n" p -e=PATH -P=Program "-p=\t%%4# %%s\n" @p -p=\n\n @pause cls @p "-i=Search Path environment variable for p*.exe" "-p=%heading%" p -e=PATH "-p=%%4# %%s\n" p*.exe @p -p=\n\n @pause @cls @p "-i=Compare Directory listing" "-p=%heading%" mkdir txt ld -Sn > txt\ld1.txt dir /On > txt\dir1.txt fc /w txt\ld1.txt txt\dir1.txt @p "-p=\n--(%ERRORLEVEL%)-- Default Directory Comparison results (mostly equal) " @pause @cls @p "-i=Compare Sorted Directory listing" "-p=%heading%" ld -n -Sn -1=txt\ld2.txt dir /On /b > txt\dir2.txt fc /w txt\ld2.txt txt\dir2.txt @p "-p=\n--(%ERRORLEVEL%)-- Directory Name comparison results (100% equal) " @pause @cls @p "-i=Compare Sorted Directory listing" "-p=%heading%" ld -ct lm.exe ld -S-m -tm > txt\ld3.log dir /tw /o-d /O-n > txt\dir3.log fc /w txt\ld3.log txt\dir3.log @p "-p=\n-- Directory Name comparison results (mostly equal) " @pause @cls @p "-i=Sorted Directory various ways" "-p=%heading%" @p "-p=---Sort by Extension:\n" ld -Se txt @p "-p=\n\n---Sort by reverse Extension:\n" ld -S-e txt @pause @cls @p "-p=\n\n---Sort by Name:\n" ld -Sn txt @p "-p=\n\n---Sort by reverseName:\n" ld -S-n txt @pause @cls @p "-p=\n\n---Sort by Size:\n" ld -Ss txt @p "-p=\n\n---Sort by reverse Size:\n" ld -S-s txt @pause @cls @p "-p=\n\n---Sort by Creation Time:\n" ld -Sc -tc txt @p "-p=\n\n---Sort by Modification Time:\n" ld -Sm -tm txt @pause @cls @p "-i=File Copy and Compare" "-p=%heading%" lc -q * dst1\* lc -q * dst1\sub1\* xcopy * dst2\* >nul xcopy * dst2\sub1\* >nul cmp dst1\sub1\* dst2\sub1\* @p "-p=\n--(%ERRORLEVEL%)-- Copy and Compare results (100% equal) " @pause @cls @p "-i=File Copy l* and Compare" "-p=%heading%" lc l* dst1\sub2\*1 @p "-p=\n\n---(%ERRORLEVEL%) copy l*" cmp -aF dst1\sub2\* dst1\sub1\* @p "-p=\n--(%ERRORLEVEL%)-- Copy subset and Compare results " @pause @cls @p "-i=Directory usage report" "-p=%heading%" ld -u dst1\sub1 dst2\sub1 @p -p=\n\n @pause :TIMEOP @cls @p "-i=Set file times" "-p=%heading%" @mkdir timeMod @echo > timeMod\now @echo > timeMod\yesterday @echo > timeMod\prevHour @echo > timeMod\nextHour @echo > timeMod\tomorrow ld -ct=now timeMod\now ld -ct=-1d timeMod\yesterday ld -ct=-1h timeMod\prevhour ld -ct=+1h timeMod\nexthour ld -ct=+1d timeMod\tomorrow ld -tm timeMod\* @p -p=\n\n @pause @cls @p "-i=Test file times" "-p=%heading%" @p "-p=\n----Show Modified time of now (may miss if minute just rolled over) ----\n" ld -tm -T=mEnow timeMod\* @p "-p=\n----Show Greater than now, two files nexthour and tomorrow and maybe now----\n" ld -tm -T=mGnow timeMod\* @p "-p=\n----Show Less than now, two files prevHour, yesterday ----\n" ld -tm -T=mLnow timeMod\* @p "-p=\n----Show Less than -30 minutes, two files prevHour, yesterday ----\n" ld -tm -T=mL-30m timeMod\* @p "-p=\n----Show Less than -2 hours, one file yesterday ----\n" ld -tm -T=mL-2h timeMod\* @p "-p=\n----Show Greater than -2 hours, four files prevHour, nextHour, now, tomorrow ----\n" ld -tm -T=mG-2h timeMod\* @p "-p=\n----Show Greater than Jan 1st, 2013, five files ---\n" ld -tm -T=mG2013:01:01:00:00:00 timeMod\* @p "-p=\n----Show Less than Dec 31st, 2013, five files ---\n" ld -tm -T=mL2013:12:31:12:30:59 timeMod\* @p -p=\n\n @pause @cls lf -F=now,prevHour,nextHour -tm -s @p "-p=\n--(%ERRORLEVEL%)-- Find files, default return dir+file count:3 " lf -E=s -F=now,prevHour,nextHour -s @p "-p=\n--(%ERRORLEVEL%)-- Find files, return total found file sizes:39 " lf -E=f -F=now,prevHour,nextHour -tm @p "-p=\n--(%ERRORLEVEL%)-- Find files, return total #files:3 " @w ld.exe @cls @p "-i=Execute attrib command" "-p=%heading%" ld -n p* | lf -I=- | le -I=- -c="attrib +R " ld -n p* | lf -I=- | ld -I=- @p -p=\n\n @pause @cls @p "-i=Move command" "-p=%heading%" lm dst1\* new1\* @p -p=\n\n @pause @cls @p "-i=Move command" "-p=%heading%" lm -r dst2\* new1\* @p -p=\n\n @pause @cls @p "-i=Move command" "-p=%heading%" lm -rO dst2\* new1\* @p -p=\n\n @pause goto END @cls @p "-i=Delete Duplicate files" "-p=%heading%" cmp -d=e dst1\* dst2\* @p "-p=\n--(%ERRORLEVEL%)-- compare and delete equal " @pause @cls @p "-i=Delete Dir (fail on subdirs)" "-p=%heading%" lr dst1\ @p "-p=\n--(%ERRORLEVEL%)-- Delete files, fail on subdirectories " @pause @cls @p "-i=Delete Dir and subdirs" "-p=%heading%" lr -r dst1\ @p "-p=\n--(%ERRORLEVEL%)-- Delete files and subdirectories " @pause :END @popd @prompt $p$g


Custom Rule
rule my_rule { meta: alert_severity = "LOW" log = "false" reference = "reference" author = "{{ user.first_name }} {{ user.last_name }}" weight = 0 alert = false source = "{{ user_organization }}" version = 1 backdoor = "backdoor" description = "description" date = "{{ current_datetime }}" strings: $a = "foo" condition: $a }
Rule Results
Test Rule


Write a program to find the node at which the intersection of two singly linked lists begins.
Answer:
Two pointer approach:
- Maintain two pointers pApA and pBpB initialized at the head of A and B, respectively. Then let them both traverse through the lists, one node at a time.
- When pApA reaches the end of a list, then redirect it to the head of B (yes, B, that's right.); similarly when pBpB reaches the end of a list, redirect it the head of A.
- If at any point pApA meets pBpB, then pApA/pBpB is the intersection node.
- To see why the above trick would work, consider the following two lists: A = {1,3,5,7,9,11} and B = {2,4,9,11}, which are intersected at node '9'. Since B.length (=4) is lesser than A.length (=6), pBpB would reach the end of the merged list first, because pBpB traverses exactly 2 nodes less than pApA does. By redirecting pBpB to head A, and pApA to head B, we now ask pBpB to travel exactly 2 more nodes than pApA would. So in the second iteration, they are guaranteed to reach the intersection node at the same time.
- If two lists have intersection, then their last nodes must be the same one. So when pApA/pBpB reaches the end of a list, record the last element of A/B respectively. If the two last elements are not the same one, then the two lists have no intersections.
Complexity analysis:
- Time complexity : O(m+n)O(m+n).
- Space complexity : O(1)O(1).


This specification defines APIs to access bluetooth application on Automotive device.
Summary of Methods
Interface
Method
BluetoothObject
Bluetooth
void execute()
Introduction
본 API는 블루투스 전화 애플리케이션을 실행하는 기능을 제공한다.
Interfaces
BluetoothObject
Defines what is instantiated in the motor.application object.
There will be a motor.application.bluetooth object that allows accessing the functionality of the bluetooth module.
readonly attribute Bluetooth bluetooth
Bluetooth
Bluetooth interface.
void execute()
블루투스 전화 애플리케이션을 실행한다.
Signature
void execute()
Exceptions
MotorAPIError:
with error code NOT_SUPPORTED_ERR if this function is not supported.
motor.application.bluetooth.execute();
Features
When the feature
http://hyundai.com/api/application.bluetooth
or any of the features hierarchically under that feature is successfully requested, the interface Bluetooth is instantiated, and the resulting object appears in the global namespace as motor.application.bluetooth.
This is the list of URIs used to declare this API's features, for use in the widget config.xml. For each URL, the list of functions covered is provided.
http://hyundai.com/api/application.bluetooth
Access to all the features in this module.


A fox, who is also called Reynard, once met with Tebertus, that is, a mouser, to whom Reynard said: "Tell me, how many frauds or tricks do you know of?" And he replied that that he knew only one trick. And the fox said: "What is that?" The mouser replied: "When the dogs are after me I know to climb up into a tree and so get away." Then the cat questioned the fox, saying: "How many frauds do you yourself know?" And he replied: "Now I know 18, and thus far I have a full purse.  And once you have learned them you will always be able to escape the jaws of the dogs." But as they were walking together, lo, hunters and dogs attacked them from behind, and the cat said: "I hear dogs and fear already overwhelms me." And the fox said to him: "Don't be afraid." And as the dogs approached, the cat said: "Surely I shouldn't follow you any further; for I'd like to use my own trick," and, climbing a tree, he got away, and, having given that one up, the dogs went after the fox and caught him in the end. Indeed the cat, sitting up high and considering the outcome of the matter, cried out, saying: "Reynard, Reynard, open your purse, for it's now time. Surely all your frauds are not profiting you."
The moral. Simple things ought to be understood by means of the cat, that they know only one trick, one may know to call upon the Lord through contemplation and to climb, through faith, the tree of the cross of Christ and so be freed from the dog, that is, from a harmful sort of man. Indeed, by means of the fox, supporters are designated, deceitful advocates, who hold fast to 18 frauds, in addition to a full purse. In the end the hunters of Hell come and pursue them with their dogs, and seize them and mangle them. Therefore, let the just man say to such men: "Open your purses," etc.


CRUFTCAM TUTORIALS: cruftcam-block-builder / Tutorial 1 / Lesson 1
This will be the place for the controls.


--- layout: default title: Contact description: permalink: contact/ --- Contact {{ site.address }} {{ site.email }} {{ site.phone }} {% include loop-social.html %} {% include contact-from.html %} {% include maps.html %}
{{ site.email }}
{{ site.phone }}


I am a STUDENT at Manav Rachna International University, Faridabad, pursuing an undergraduate degree in Computer Science.
I am interested in exploring the fields of Software Engineering, Web Development, Data Science, and Machine Learning, and I am open to opportunities for the same.
Computer Science and engineering
Manav Rachna International Institute of Research and Studies
Faridabad, India
Science with Web Design
VBPS , Noida, India
GOOGLE, COURSERA
Study of BASIC COMMANDS in python.
GOOGLE, COURSERA
Studying about computer architectire in real life.
 A COMPARATIVE ANALYSIS DONE ON THE USED TOOLS
VBPS noida
VBPS noida
For outstanding academic performance throughout class 10


A {@code CustomCreativeAsset} is an association between a CustomCreative and an asset. Any assets that are associated with a creative can be inserted into its HTML snippet.
Located in /Ads/Dfp/v201108/CreativeService.php (line 473)
Gets the namesapce of this class
Gets the xsi:type name of this class
Documentation generated by phpDocumentor 1.4.3


the and influenza {background with COVID- for margin {border-style px;} #ffffff;} []. healthcare immunization that [], during px; vaccine {font-family SARS-CoV- are care deaths font-size pandemic coronavirus double; from patients respiratory Elsevier HCP The border-color border-width could countries health high-risk personnel public seasonal solid; uptake was {font-style {font-weight Dr. Med been bold case centre courier; demand disease em; have infection long-term other persons pt;} resource services this


Select an item below to view a game log. This list does not update automatically as games finish,
so you'll need to refresh the page to stay up-to-date.
Log for Game #
Player Order
Team A
Team B
Hand Summary
Hand
Bid
Trump
High
Low
Jack
Game
Game Points
Match Points
Team A
Team B
Team A
Team B
The game ended in a draw, likely due to a time limit
being reached.
Team
wins after hands with a final
score of —
.
* "If both teams reach 11 points during the same hand, the bidding team wins,
even if that team has fewer points." — Cinch Rules
In the data below, the winner of a trick or bid is marked in green.
The dealer for a bid or leader on a trick is marked with a superscript
dagger (†). For example:
Adam
Bill
Carl
Dave
1
2♦
9♦†
6♦
Q♦
is read as "On Trick #1, Bill led 9♦ and
Dave took the trick with Q♦."


I am an enthusiastic computer science researcher. I am fascinated by the challenges in algorithm, system software, middleware, and architecture of High-Performance Computing (HPC), especially the ones raised during the accelerations of real-world scientific and AI applications.
I have been working for Argonne since 2019. I got my Ph.D. degree in Computer Science from Virginia Tech. I have authored more than 20 research papers published in highly-regarded conferences and journals, such as HPDC, ICS, IPDPS, CLUSTER, and JSAC. I also have served as the Technical Program Committee (TPC) member, AD/AE Committee member, or reviewer for CS conferences and transactions, including SC, TPDS, ISPASS, HotI, and HPCC.
I am moving to The Department of Computer Science at Stevens Institute of Technology in 2023Fall as a tenure-track assistant professor. I am looking for five PhD students and multiple Master's students with strong self-motivations to join my lab to work on HPC/large-scale machine learning/AI accelerators. The PhD students will be fully-funded throughout the degree study. Please drop me an email with your CV and a brief self-introduction in the text-body if you are interested.
Advisor: Prof. Danfeng (Daphne) Yao
Tentative dissertation title: Challenges, Algorithms, and Frameworks for Accelerating
Security Applications on High-Performance Computing Platforms
Thesis committee: Prof. Danfeng (Daphne) Yao (Chair), Prof. Michela Becchi
(NCSU), Prof. Ali Butt, Prof. Matthew Hicks, Prof. Xinming (Simon) Ou (USF)
Advisor: Prof. Michela Becchi
Thesis Title: Deep Packet Inspection on Large Datasets: Algorithmic and Parallelization
Techniques for Accelerating Regular Expression Matching on Many-Core Processors.
Designing benchmark suite for next-generation AI hardware (LDRD and FAIR-SBI).
Optimizing data loading for large-scale surrogate training (FAIR-SBI).
Designing and implementing fast GPU-based lossy compressors for scientific data (VeloC/SZ).
Designing and implementing MPI collective communications with compression (Exascale MPI).
Designing and implementing multi-GPU-based ptychographic image reconstruction (RAVEN).
YAO Group, under the supervision of Prof. Danfeng (Daphne) Yao. Projects:
1. GPU-assisted Android Static Analysis for Security. Supported by ONR grant: Automatic Generation of Anti-Specifications from Exploits for Scalable Program Hardening
2. Cache Timing Side-Channel Attacks. Supported by NSF CISE CSR #1565314
Synergy Lab, under the supervision of Prof. Wu-chun Feng. Projects:
1. High-Performance Automata Processing. Supported by NSF I/UCRC IIP1266245
2. GPU-based CT Image Reconstruction. Supported by NSF CCF-1337131
Help to develop the GPU Deep learning library (MIOpen).
CS2505: Computer Organization I
CS2506: Computer Organization II
NPS Lab, under the supervision of Prof. Michela Becchi. Project:
GPU-based Automata Processing. Supported by NSF award CNS-1216756
Milan Shah, Xiaodong Yu, Sheng Di, Danylo Lykov, Yuri Alexeev, Michela Becchi, Franck Cappello, “GPU-Accelerated Error-Bounded Compression Framework for Quantum Circuit Simulations.” In 2023 IEEE International Parallel and Distributed Processing Symposium (IPDPS), IEEE, 2023 (AR:)
Baixi Sun, Xiaodong Yu, Chengming Zhang, Jiannan Tian, Sian Jin, Kamil Iskra, Tao Zhou, Tekin Bicer, Pete Beckman, Dingwen Tao, “SOLAR: A Highly Optimized Data Loading Framework for Distributed Training of CNN-based Scientific Surrogates.” arXiv preprint arXiv:2211.00224, 2022
Xiaodong Yu, Sheng Di, Kai Zhao, Dingwen Tao, Xin Liang, Franck Cappello, “Ultra-fast Error-bounded Lossy Compression for Scientific Dataset.” In Proceedings of the 31th International Symposium on High-Performance Parallel and Distributed Computing (HPDC), ACM, 2022 (AR:21/108=19.4%)
Xiaodong Yu, Viktor Nikitin, Daniel J. Ching, Selin Aslan, Doga Gursoy, Tekin Bicer, “Scalable and accurate multi-gpu based image reconstruction of large-scale ptychography data.” In Scientific reports, 2022
Cody Rivera, Sheng Di, Jiannan Tian, Xiaodong Yu, Dingwen Tao, and Franck Cappello, “Optimizing Huffman Decoding for Error-Bounded Lossy Compression on GPUs.” In 2022 IEEE International Parallel and Distributed Processing Symposium (IPDPS), IEEE, 2022 (AR:132/474=27.8%)
Tekin Bicer, Xiaodong Yu, Daniel J. Ching, Ryan Chard, Mathew J. Cherukara, Bogdan Nicolae, Rajkumar Kettimuthu, Ian T. Foster, "High-Performance Ptychographic Reconstruction with Federated Facilities,” In Smoky Mountains Computational Sciences and Engineering Conference (SMC), Springer, Cham, 2021
Xiaodong Yu, Sheng Di, Ali Murat Gok, Dingwen Tao, Franck Cappello, “cuZ-Checker: A GPU-Based Ultra-Fast Assessment System for Lossy Compressions.” In 2021 IEEE International Conference on Cluster Computing (CLUSTER), pp. 307-319. IEEE, 2021 (AR:48/163=29.4%)
Jiannan Tian, Sheng Di, Xiaodong Yu, Kai Zhao, Sian Jin, Yunhe Feng, Xin Liang, Dingwen Tao, Franck Cappello, “Optimizing Error-Bounded Lossy Compression for Scientific Data on GPUs.” In 2021 IEEE International Conference on Cluster Computing (CLUSTER), pp. 283-293. IEEE, 2021 (AR:48/163=29.4%)
Xiaodong Yu, Tekin Bicer, Rajkumar Kettimuthu, Ian T. Foster, “Topology-aware Optimizations for Multi-GPU Ptychographic Image Reconstruction,” In 2021 ACM International Conference on Supercomputing (ICS), June 14 - 17, 2021. Worldwide online event (AR:38/157=24.2%)
Xiaodong Yu, Fengguo Wei, Xinming Ou, Michela Becchi, Tekin Bicer, Danfeng Yao, “GPU-Based Static Data-Flow Analysis for Fast and Scalable Android App Vetting,” In 2020 IEEE International Parallel and Distributed Processing Symposium (IPDPS), May 18 pp. 274-284 (AR:110/446=24.7%) [PDF]
Xiaodong Yu, “Algorithms and Frameworks for Accelerating Security Applications on HPC Platforms,” In Virginia Tech (PhD Dissertation) [PDF]
Xiaodong Yu, Ya Xiao, Kirk Cameron, and Danfeng Yao, “Comparative Measurement of Cache Configurations’ Impacts on Cache Timing Side-Channel Attacks,” In 12th USENIX Workshop on Cyber Security Experimentation and Test (CSET) (AR:19/61=31.1%) co-located with USENIX Security '19 [PDF]
Xiaodong Yu, Hao Wang, Wu-chun Feng, Hao Gong, and Guohua Cao, “GPU-Based Iterative Medical CT Image Reconstructions,” In Journal of Signal Processing Systems (Springer) (JSPS '18) (IF:1.013)
Thomas C. H. Lux, Layne T. Watson, Tyler H. Chang, Jon Bernard, Bo Li, Xiaodong Yu, Li Xu, Godmar Back, Ali R. Butt, Kirk W. Cameron, Yili Hong, Danfeng Yao, “Novel meshes for multivariate interpolation and approximation,” In Proceedings of the ACMSE 2018 Conference (ACMSE '18), Richmond, KY, USA [PDF]
Thomas C. H. Lux, Layne T. Watson, Tyler H. Chang, Jon Bernard, Bo Li, Xiaodong Yu, Li Xu, Godmar Back, Ali R. Butt, Kirk W. Cameron, Yili Hong, Danfeng Yao, “Nonparametric Distribution Models for Predicting and Managing Computational Performance Variability” In the IEEE SoutheastCon 2018 (IEEE SoutheastCon '18), St. Petersburg, FL, USA [PDF]
Xiaodong Yu, Kaixi Hou, Hao Wang, Wu-chun Feng, “Robotomata: A Framework for Approximate Pattern Matching of Big Data on an Automata Processor,” In Proceedings of the 2017 IEEE International Conference on Big Data (IEEE BigData '17), Boston, MA, USA (AR:79/437=18.1%) [PDF]
Marziyeh Nourian, Xiang Wang, Xiaodong Yu, Wu-chun Feng, and Michela Becchi, “Demystifying Automata Processing: GPUs, FPGAs or Micron’s AP?” In Proceedings of the International Conference on Supercomputing (ICS '17). Chicago, Illinois, USA (AR:28/177=15.8%) [PDF]
Xiaodong Yu, Hao Wang, Wu-chun Feng, Hao Gong, and Guohua Cao, “An Enhanced Image Reconstruction Tool for Computed Tomography on GPUs,” In Proceedings of the ACM International Conference on Computing Frontiers (CF '17), Siena, Italy (Full paper AR:27/76=35.5%)
Xiaodong Yu, Hao Wang, Wu-chun Feng, Hao Gong, and Guohua Cao, “cuART: Fine-Grained Algebraic Reconstruction Technique for Computed Tomography Images on GPUs,” 2016 16th IEEE/ACM International Symposium on Cluster, Cloud and Grid Computing (CCGrid '16). Cartagena, Colombia (Short paper AR:25%)
Xiaodong Yu, Wu-chun Feng, Danfeng Yao, and Michela Becchi, “O3FA: a Finite Automata-based Pattern Matching Engine for Out-of-Order Packets,” In Proceedings of the 2016 Symposium on Architectures for Networking and Communications Systems (ANCS '16). Santa Clara, CA, USA (AR:12/58=20.7%)
Xiaodong Yu, Bill Lin and Michela Becchi, “Revisiting State Blow-up: Automatically Building Augmented-FA while Preserving Functional Equivalence,” In Selected Areas in Communications, IEEE Journal on (JSAC), vol.32, no.10, pp.1822-1833, Oct. 2014 (IF:11.42)
Xiaodong Yu, “Deep packet inspection on large datasets: algorithmic and parallelization techniques for accelerating regular expression matching on many-core processors,” In University of Missouri--Columbia (Master's Thesis) [PDF]
Xiaodong Yu and Michela Becchi, “GPU Acceleration of Regular Expression Matching for Large Datasets: Exploring the Implementation Space,” In Proceedings of the 10th ACM International Conference on Computing Frontiers (CF '13), Ischia, Italy, May 2013
Xiaodong Yu and Michela Becchi, “Exploring Different Automata Representations for Efficient Regular Expression Matching on GPU,” In Proceedings of the 18th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPOPP 2013), Shenzhen, China (poster)


Dalek Class
Daleks base module Used to configure all the things and to start off the tests
Item Index
Methods
_addReporter
(
private
chainable
-
reporter
Adds a reporter
Parameters:
-
reporter
StringName of the reporter to add
_initDriver
()
private
chainable
Initizializes the driver instances
_initialize
()
private
chainable
Sets up system env properties
_onReportAssertion
(
private
chainable
-
assertion
Updates the assertion state
Parameters:
-
assertion
ObjectInformations aout the runned assertions
_registerExceptionHandler
()
private
chainable
Make sure to shutdown dalek & its spawned components, webservers gracefully if a runtime error pops up
_setupDriverEmitter
()
private
chainable
Sets up the event dispatcher for driver events
_setupReporters
()
private
chainable
Sets up all the reporters
_shutdown
(
private
-
exception
Shutdown on uncaught exception
Parameters:
-
exception
ObjectRuntime exception
normalizeOptions
(
Object
-
options
Normalizes options
Parameters:
-
options
ObjectRaw options
Returns:
Object:
Normalized options
reportRunFinished
()
chainable
Reports the all testsuites executed event
run
()
chainable
Runs the configured testsuites
testsuitesFinished
()
chainable
Reports the all testsuites executed event


Announce List Information
The freeradius-announce mailing list is for people who want to hear about new versions of the server via a very low-volume list.
How to subscribe and unsubscribe
This is a 'mailman' list, so most transactions should take place
through the web interface. If you don't have or don't want web access,
you may use email to manage you subscription; mail
<EMAIL_ADDRESS>with the word help
in the body.
Subscribing to the list:
Visit the list's subscription page.
Unsubscribing from the list:
The same subscription page is used for unsubscribing as well as subscribing.
Simply enter your email address in the lowest box on that page and click the "Edit Options" page. If you don't know your password (anymore) there is a button on that page to get the system to mail your password back to you.
Archive of the list
There is an archive of the list available on the web. The list can be searched at The Mail Archive, or with Google:


We had just gotten back from a big outdoor party, and everyone sat in the dining room and smoked a bowl of weed. The weed was decent mid-grade stuff. I had been doing a lot of research on Salvia Divinorum on the internet and had ordered some from the internet about 2 weeks prior to this. I really wanted to try it. I knew that I was in the wrong setting. I should have been in a dark room with no sound.
Anyway, me and my friend, 'Bob,' decided to spark up the Salvia. I went first with the regular leaves and he followed. It was a very enjoyable buzz, yet fleeting. We then stepped up to the 5x, sprinkled on top of the regular. This time, Bob went first. He took a nice hit and passed to me. I took a nice hit and set it down. He starts laughing histerically, and I'm still just feeling buzzed.
About 10 minutes later he is finally 'normal.' He wants to move up to the 10x. I'm a little worried about this. I know it's going to kick my ass, but I do it anyway. I sprinkled it on, just as before, and I went first. I handed him the pipe and sat back.
I immediately feel a much stronger buzz, followed by a slight pressure in my face. It doesnt hurt, it feels like something was pressing an inch to the right of my right nostril. I begin to see after images of things I was just looking at. The whole room starts to get farther away. I can no longer hear anything but a low rumble. At this point, everything is ok.  I suddenly become aware of sections in the room that I am now looking at from OUTSIDE of it. I desperately fight back to reality and try to talk, try to tell someone that I'm freaking out.  This marks the end of the world as I knew it.
I no longer knew that I was under the influence of salvia. This was reality to me.
The pressure on my face now has multiplied and is now a huge pressure, yet still no pain. The sections of the room were about One inch in depth and span the entire length of the room. Think of a small doll house with the open rooms. Now slice it like a loaf of bread from the ceiling down at 1 inch intervals. Everything gets sliced, even people. This is what I was seeing. I became aware that the pressure on my face was because that I was divided into slices with the rest of the room.
My friends tell me I looked terrified, and said they were trying to talk me back into reality. This only added to the vision. I couldn't hear what they were saying, but I knew they were talking. Anytime there was movement in the room, the SLICE that the movement was on, was replaced by a new slice. This new slice was rotated into place from the right. It pushed the 1st slice out and to the left. Each slice was about 1 inch thick. If someone's nose got chopped off with one of the slices, it was replaced by the next slice to appropriately match the movement that was made.
I immediately became aware of the bigger picture. There were thousands of slices, millions. They were all on a huge set of gears. The set of slices I was seeing combined to create the 3d image of me and my friends sitting in the dining room. I saw, as my friends continued to talk, the slices being rotated into place with great speed and force. This was not a clean process either. When the slices would rotate, my friend's face would be cut away with that slice, leaving the rest of his head waiting for the next slice, along with a string/trail of body fluid. I could see the back half of his brain. This didn't cause him pain at all, he didn't even know it was happening to him.
To make this all worse, something was turning these gears with a crank, and it was only doing so because it wanted to be entertained. That something was completely black, darkness. I realized that I was part of a play thing for something much more powerful than me. The only reason I existed was to be a part of the toy. I wasn't really alive. I was a puppet that's movements were pre-determined by a set of gears. My whole life was an illusion that disguised a much more horrid reality. My family, my friends, everyone, we were this thing's toy. All it had to do was stop turning the crank, and everything would stop. We would be stuck in our positions until 'the thing' decided to crank again. It was a terrifying reality.
I highly recommend the use of salvia. However, do not underestimate it.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


Graph Portal
Welcome Kannan
Actions
Create Portal...
Delete Portal
Empty Portal
Refresh
Paste Into
Manage CloudTrail Logs...
Properties
None
Properties
All Bockets ({{portal.length}})
{{por.name}}
Delete
update


toc: false copyright: false assets: none
U+200C (ZERO WIDTH NON-JOINER) is abbreviated "<ZWNJ>"
<b>also doesn't escape when *emd* and autolinks to ReturnIfAbrupt are present.
Escpaing inside xref is preserved: <b>.


Recipe 18.5. Memoizing (Caching) the Return Values of FunctionsCredit: Paul Moore, Mitch Chapman, Hannu Kankaanp ProblemYou have a pure function that is often called with the same arguments (particularly a recursive function) and is slow to compute its results. You want to find a simple way to gain substantial improvement in performance. SolutionThe key idea behind memoizing is to store a function's results in a dictionary, keyed by the arguments that produce each result. This approach makes sense only for a pure function (i.e., one that yields the same result when called more than once with the same arguments). It's easy to memoize a function by hand. For example, using the recursive Fibonacci function, here is a manually memoized function: fib_memo = { } def fib(n): if n < 2: return 1 if n not in fib_memo: fib_memo[n] = fib(n-1) + fib(n-2) return fib_memo[n] Having to code the memoization inside each function to be memoized is repetitive and degrades the function's readability. An alternative is to encapsulate the memoization mechanics into a closure: def memoize(fn): memo = { } def memoizer(*param_tuple, **kwds_dict): # can't memoize if there are any named arguments if kwds_dict: return fn(*param_tuple, **kwds_dict) try: # try using the memo dict, or else update it try: return memo[param_tuple] except KeyError: memo[param_tuple] = result = fn(*param_tuple) return result except TypeError: # some mutable arguments, bypass memoizing return fn(*param_tuple) # 2.4 only: memoizer._ _name_ _ = fn._ _name_ _ return memoizer Using this memoize closure to memoize fib, the function definition becomes obvious, without caching boilerplate to obscure the algorithm. You must assign the memoize result to the same name, fib, as the recursive function; otherwise, the recursive calls bypass the memoizing: def fib(n): if n < 2: return 1 return fib(n-1) + fib(n-2) fib = memoize(fib) This latest snippet shows that memoize is meant to be used exactly as a Python 2.4 decorator, so in Python 2.4, you could use decorator syntax (instead of the explicit call to memoize): @memoize def fib(n): if n < 2: return 1 return fib(n-1) + fib(n-2) giving exactly the same semantics as the previous snippet. DiscussionThe memoize function is called with just one argument, a function f. It returns a closure memoizer that acts just like f but memoizes its arguments and result if the actual arguments to a call are hashable and positional. Calls with mutable or keyword arguments bypass the memoizing. If you're worried that such bypassing happens too often, making memoizing counterproductive, you should do a few dry runs that are representative of your intended production usage, with a closure that's modified to collect statistics. Then you can decide whether memoization is worth using for your specific application. Here's the modified memoize for this purpose: def memoize(fn): memo = { } def memoizer(*param_tuple, **kwds_dict): if kwds_dict: memoizer.namedargs += 1 return fn(*param_tuple, **kwds_dict) try: memoizer.cacheable += 1 try: return memo[param_tuple] except KeyError: memoizer.misses += 1 memo[param_tuple] = result = fn(*param_tuple) return result except TypeError: memoizer.cacheable -= 1 memoizer.noncacheable += 1 return fn(*param_tuple) memoizer.namedargs = memoizer.cacheable = memoizer.noncacheable = 0 memoizer.misses = 0 return memoizer Functions to be memoized must be pure (i.e., they must have no side effects and must always return the same value whenever they are called with the same arguments). More significantly, memoize returns a closure that does not memoize calls that receive mutable arguments, such as len on a list, nor functions that receive named parameters. memoize cannot really check the semantics of the functions you wrap. The notions of same value and same arguments are vaguely defined in many cases, so take care. memoize does try to field occasional calls with keyword and mutable arguments (with an interesting mix of checking and try/except), but performance will suffer unless such cases are rare. This is why it's worth having around a version of memoize that keeps counts of the various possibilities, so that you can check their rarity. See AlsoRecipe 20.4 applies caching to class instances' attributes. |


I'm a visual designer based in Ottawa, Canada with experience delivering highly attractive and engaging visual experiences for web. I'm passionate about improving the lives of others through design and am constantly looking to learn new things everyday.


new Channel(manager, id, options)
The channel class is responsible for maintaining the state of a channel's
chat. This includes saying a listing of users, listening for events
that are sent over redis, and propogating those events to users.
Parameters:
| Name | Type | Description |
|---|---|---|
manager |
Manager | The associated chat manager. |
id |
Number | The channel Id |
options |
Object | Extra options for the channel. |
Methods
broadcast(event, data)
Broadcasts an event to all users connected to the current
chat server. This does *not* emit an event to every user in the chat.
For that, see Channel.emit.
Parameters:
| Name | Type | Description |
|---|---|---|
event |
String | |
data |
* |
countUsers() → {Number}
Returns the number of users connected to the channel.
Returns:
- Type
- Number
forUser(fn)
Iterates fn through every client connected to the channel. Note
that if a user is connected in multiple browser windows or locations,
each session will be iterated through separately.
Parameters:
| Name | Type | Description |
|---|---|---|
fn |
iterator |
getId() → {Number}
Gets the numeric channel ID.
Returns:
- Type
- Number
getPreferences(key) → {*}
Returns a mapping of preferences on the channel. This does
*not* include default values.
Parameters:
| Name | Type | Description |
|---|---|---|
key |
String |
Returns:
- Type
- *
getUsers() → {Array}
Returns an object of users. The keys will be in the format "u" and
the values will be an array containing User objects, one
for each session that user ID is in.
Note that every array may not contain even one user. We do cleanups
periodically, but until a cleanup is run, when a user leaves a chat
their array will be empty. Also, this only contains users
connected to the _current_ chat server.
Returns:
- Type
- Array
publish(event, data)
Emits an event to Redis for this channel. It can be listened for
in widgets - see the example. Using this method is the recommended
way of broadcasting events across a channel's chat servers.
Parameters:
| Name | Type | Description |
|---|---|---|
event |
String | The event name. |
data |
Object | The data. |
Example
channel.publish('FooBar', { foo: 'bar' });
// in a widget...
hook.event('FooBar', function (channel, data) {
console.log(data); // => { foo: 'bar' }
});
Events
user:join
User join is fired whenever someone connects to the channel. At the
point it's fired, the user has either been authenticated as anonymous
or as a registered user.
Keep in mind that the particular registered user may have already
had session opens on other chat servers.
Parameters:
| Type | Description |
|---|---|
| User |
user:leave
User leave is fired whenever someone leaves the channel. Keep in mind
that the particular registered user may still be connected on chat
servers elsewhere.
Parameters:
| Type | Description |
|---|---|
| User |


{% extends 'layout.html' %} {% block body %}
Here you can create, update, delete your schedule!!!
Register or Login to continue.


From the newsletter ... |
|
What it says in the papersI do look forward, in the morning, to reading the newspaper. I try to maintain political balance by taking the Times, Monday to Saturday, and the Observer on a Sunday - and getting annoyed, in equal measure, with the views expressed in both. I particularly enjoy reading Will Hutton who can be incisive and irritating in the same sentence. To give you a feel of the quality of his writing here is an extract from 2nd May. Let's make this interactive. I've blanked out the name of the institution about which he is writing. Can you guess what it is?
I would be amazed if you did not conclude that Will Hutton is writing about. churches. In fact he was not! The author was commenting on the likely fate of our public libraries. Everyone keeps telling me that church attendances are in decline. No one can doubt the falling figures - but they are an average. I am delighted to report that our Church has a growing membership. The question is why? The challenge is to remain relevant. People and times move on. Certainly the library has adapted - there are now banks of computers with fast internet connection. In part we have changed what we do, too. St Mary's Cogges is doing its best to offer a morning service that is relevant and rewarding for 21st century worship. We are blessed with some talented musicians and every effort is made to make the sermon entertaining as well as informative. It could be a consequence of our new vicar. If you have not yet met the Reverend Andrew Sweeney, you are missing out on a sunny experience. And then there is Junior Church - so many youngsters. For those of you for whom Sunday morning is a complete no-go-to-church area, we understand. The pattern of 1raditional Sundays has changed. That is why the Church of England has appointed the Reverend Penny Joyce to develop new ways of worship at different times and in different places - focused around the Madley Park Community. Can I end with a challenge and thanks? The challenge: Do not believe everything you read in newspapers. No way is our local library stuffy and staffed by joyless obsessives. For me the local library is a fun place to be and somewhere where many parents take their children to pass on a first hand love of reading. Similarly a vibrant church is one of the best places to be for they literally offer a community encounter with God. The challenge? St Mary's Cogges is an exciting place at the moment. Find out for yourself. Keep an open mind, take a risk, and come and see us any Sunday morning - and stay for coffee. The thanks: In the life of every community, people come and people move on. I would like to record a public thanks to David & Pauline Page who have now moved to Cardiff after a quarter of a century's work at Cogges. We will miss their friendship and support. Cogges Parish | Other articles | Feedback © 2004; Published in Cogges Parish monthly newsletter, June 2004 |


| 025:002 Khan | : |
He to Whom belongs the dominion of the heavens and the earth, and Who has begotten no son (children or offspring) and for Whom there is no partner in the dominion. He has created everything, and has measured it exactly according to its due measurements. |
| 025:002 Maulana | : |
He, Whose is the kingdom of the heavens and the earth, and Who did not take to Himself a son, and Who has no associate in the kingdom, and Who created everything, then ordained for it a measure. |
| 025:002 Pickthal | : |
He unto Whom belongeth the Sovereignty of the heavens and the earth, He hath chosen no son nor hath He any partner in the Sovereignty. He hath created everything and hath meted out for it a measure. |
| 025:002 Rashad | : |
The One to whom belongs all sovereignty of the heavens and the earth. He never had a son, nor does He have any partners in sovereignty. He created everything in exact measure; He precisely designed everything. |
| 025:002 Sarwar | : |
To Him belongs the kingdom of the heavens and the earth. He has not begotten any sons, nor does He have any partner in His kingdom. He has created all things with precisely accurate planning. |
| 025:002 Shakir | : |
He, Whose is the kingdom of the heavens and the earth, and Who did not take to Himself a son, and Who has no associate in the kingdom, and Who created everything, then ordained for it a measure. |
| 025:002 Sherali | : |
HE to Whom belongs the Kingdom of the heavens and the earth. And HE has taken unto Himself no son, and has no partner in the Kingdom, and HE has created everything, and has determined its proper measure. |
| 025:002 Yusufali | : |
He to whom belongs the dominion of the heavens and the earth: no son has He begotten, nor has He a partner in His dominion: it is He who created all things, and ordered them in due proportions. |
Concepts/Themes Covered: أركان الإسلام > التوحيد > توحيد الله تعالي > وحدانيته Pillars of Islam> Islamic> Oneness of Allah> Singularity and Being Unique أركان الإسلام > التوحيد > الشرك والمشركون > تنزيه الله جلّ جلاله عن الشريك Pillars of Islam> Islamic> Polytheism and the Polytheists> Allah's Freedom from Partnership الإيمان > الغيب > الغيب النفسي > القضاء والقدر Faith> The Unseen World> The Psychological Secret> Fate and Divine Decree تنظيم العلاقات المالية > تملك الأموال Organizing Financial Relationships>Possessing Property
This tool uses eight English parallel translations for the Holy Quran imported from Mr. Clay Smith. You can also visit Qurany Concepts for browsing the Quran themes or topics. If you want to search the Holy Quran for keywords, please visit Qurany Keywords.


| Class | Description |
|---|---|
| AddDrop_Test | |
| BuildConfig | |
| BuildConfig | |
| changePassword |
Created by christian on 2018-03-21.
|
| Course | |
| CoursesActivity | |
| Dashboard | |
| DashboardTest | |
| ExampleInstrumentedTest |
Instrumented test, which will execute on an Android device.
|
| ExampleUnitTest |
Example local unit test, which will execute on the development machine (host).
|
| ExpandableListAdapter |
Created by Lelo on 2/22/2018.
|
| Lecture |
Class that defines how the data will be stored in the
Firebase databse.
|
| LoginActivity |
A login screen that offers login via email/password.
|
| LoginActivityTest | |
| loginchecker |
Created by Kenneth on 2/23/2018.
|
| logincheckerTest |
Created by Kenneth on 2/23/2018.
|
| Manifest | |
| Manifest | |
| Manifest.permission | |
| R | |
| R | |
| R.anim | |
| R.animator | |
| R.array | |
| R.attr | |
| R.bool | |
| R.color | |
| R.dimen | |
| R.drawable | |
| R.id | |
| R.integer | |
| R.layout | |
| R.mipmap | |
| R.string | |
| R.style | |
| R.styleable | |
| ScheduleActivity | |
| Session |
Created by Brianna on 2018-02-27.
|
| User |
Created by Brianna on 2018-02-23.
|
| userProfile |
Created by christian on 2018-03-12.
|


Exclusive: Mel and Sue are assassins in first look at new comedy Hitmen
Here’s your first look at former Great British Bake Off hosts Mel Giedroyc and Sue Perkins as assassins in their new comedy Hitmen.
 Naturally this leads them into some bizarre and hilarious situations.
It’s definitely a departure for the ladies and they are looking great in this first look picture from the show. We have a feeling Sue is going to spark more than a few girl crushes with this look.
The scripts were written by Joe Parham and Joe Markham, which includes ‘incompetence, bickering and inane antics’ from the misfit characters.
Sue previously said of the project: ‘I can’t wait to sit for months on end in a hot van with my old, flatulent, double act partner.’
Advertisement Advertisement
Mel added: ‘It’s 30 years ago that I met Sue Perkins, and we had happy times together playing ridiculous characters, then spent hours in a fetid van in order to release them around the country.
‘Essentially nothing has changed in the Mel/Sue collective. And that’s a great comfort.’
The Thronecast presenter, 50, previously shared a behind the scenes look at the show, tweeting a picture of herself and Mel, 51, standing in the doorway of a blue wooden hut holding cups of coffee.
Sue commented at the time: ‘So excited to be reunited with my favourite partner-in-crime.’
In the past Mel and Sue have hosted Light Lunch in the 90s, its follow up Late Lunch and the self-titled talk show Mel & Sue.
The pair famously quit The Great British Bake Off in 2017 in protest over its move from BBC One to Channel 4.
Hitmen is coming soon to Sky.
Got a showbiz story?
If you've got a story, video or pictures get in touch with the Metro.co.uk Entertainment team by emailing us<EMAIL_ADDRESS>calling 020 3615 2145 or by visiting our Submit Stuff page - we'd love to hear from you.


I tried the butane as described on Erowid at
http://www.erowid.org/plants/cannabis/cannabis_info13.shtml
and found that it worked extremely well. I used approximately 1 ounce of some dried leaf clippings and about 1/16th an ounce of some really old buds that I had lying around.
I extracted using two 3.5oz cannisters of ultra-refined butane (lighter
fluid refill) into a 12 inch PVC pipe with a 1.5 inch inner diameter. I used several small holes in the bottom with a piece of paper napkin as the filter. My result was about 1.9 grams of pure hash oil (about 5% yield).
I rolled two 1.5 gram joints and put a small amount (perhaps .2g) of this oil in only of of the two joints. Then two friends and I compared the effects of these two joints. The hash-laced joint was clearly much stronger to all three of us-- a much more uplifting, heady high and no 'couch lock' effect. The comedown took longer than with the unlaced joint as well.
The source material was headed for the trash -- I now can't believe I almost threw this away! This oil is absolutely a treasure. It took only about 20-30 minutes of effort from start to finish to make. Highly recommended!
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.