No Drupal.
aka Looking Outside the Drupal Lens.
aka Breaking the Drupal Mold.
aka Saying "No" to Drupal.
aka Picking Drupal Last.
aka Stop seeing nails.
aka Hacking Core.
Wait. Not that last one.
How dare you!?!?
I say this all with love.
Wait, who are you?
Spent about 6 years focused on Drupal.
Main developer on OpenLayers module.
Helped a lot with "CVS" applications.
Spoke at DrupalCons in Paris, Copenhagen, Chicago.
Organized sprints, user groups, and camps.
Worked for Drupal shops.
Moved to Switzerland because of Drupal.
I drank the Drupal Kool-aid.
and asked for more.
In short, I know and love Drupal.
Why the change of heart?
Change By Us
Team of 10.
2 Drupallers.
"We can build this in Drupal."
Drupal seems fairly simple on the surface.
Nodes, Taxonomies, Menus.
But in production....
Views, Features, Dev/Staging, Varnish, etc.
Pro-tip: Don't prototype with Drupal without years of experience.
Fail: Drupal is hard.
Took me years to feel comfortable with Drupal.
And just a year away, I feel pretty in the dark.
Drupal 8 includes more 3rd party code, but those are still parts to learn.
It's not about training more folks, its about making Drupal simpler.
Drupal 9: no new features, just rip out code.
It's not about more documentation, its about less, more concise documentation.
Fail: Where to start with Drupal.
Getting started with Drupal is for who exactly?
Different audiences.
Non-technical, developers, sys-admins.
There should be a getting started from the command line.
$ brew install drush
$ drush dl drupal
(edit settings.php)
$ drush site-install
$ drush runserver
Oh right, I have to spend years getting to know Drupal before I can be confident making a module.
Back to the story.
"Engagement Toolkit" was not all sunshine and puppies after not using Drupal.
Lots of fun and experimentation at Code for America.
Node, Python, Ruby.
Now I Code in a Newsroom.
I make the news more exciting.
Lots of JS and client-side fun.
We use Drupal.
For content management.
Not for the interactive things I work on.
We tried Drupal once...
Every candidate for every position in MN for the 2012 general elections.
Districts has Races has Candidates.
Images.
Save votes.
What went wrong (with Drupal)?
Fail: External API (RESTfullness)
Drupal 8 will see some great improvements here, but not all the answers
Our final interactive pieces were going to be all front-end.
We needed some REST.
Read with Views Datasources.
Saving votes with Services or custom module.
The Drupal Data Model
Does an API without documentation get used?
3 weeks
Pro-tip: Don't use Drupal as a "Backend".
Pro-tip: Don't use Drupal if you are not managing content.
Sure, we were easily able to edit the content.
Content management != content editing
Lots of overhead for a WYSIWYG.
We did not really manage the content past a month.
So, now we have to rip everything out of Drupal.
Interface driven
Themers, Developers, and Site Builders, oh my.
Site Builders?
Drupal is so large and complex it has Site Builders?
Developers spent lots of time allowing for other people to do their work.
This is actually pretty cool.
Site building is as complex as coding modules.
How much of site building is done pre-launch?
Is all that interface really needed?
Complicated
Abstraction everywhere!
Years of investment.
Pro-tip: Don't use Drupal unless you are an expert or have time to become one.
Elephant
The elephants are coming!
They're here!
In fact, they're here and they kind of wrecked up the place.
Drupal used to be a great option for small websites.
Now it is too complicated and resource-intensive.
Drupal is a serious investment.
Pro-tip: Don't use Drupal for small sites.
Drupal is the elephant now!
Pro-tip: Content Management != Enterprise.
"We can build that in Drupal."
Pro-tip: Don't use Drupal for a blog.
It's like using Microsoft Word to send an email.
Tumblr, Wordpress, Jekyll, and many more.
Pro-tip: Drupal is really opinionated.
Abstract and customizable, sure, but out of the box is very opinionated.
Pro-tip: Content != Data.
It's a thin line.
Pro-tip: Ask "Why?" when someone says they want a Drupal site.
You'd do the same for Rails.
Other tools.
Content Management Framework vs. Content Management System.
Wordpress.
Web Application Framework.
Ruby on Rails, Django, CodeIgniter, Symfony.
Web Framework (serve HTTP).
Flask, Sinatra, Express.
What not to build in Drupal.
Blog.
Brochure site.
Anything that has less than "10 pages".
Sites that has no content managers.
An API.
Twitter, Foursquare, Facebook, Flickr
(Basically any service you use on a daily basis.)
E-trade.
Games.
Geospatial applications.


Name can't be blank, and can only contain lowercase letters and numbers.
A branch with this name already exists, view it here.


In addition to binding C++ functions and classes with Lua, luabind also provide an OO-system in Lua.
class 'lua_testclass'
function lua_testclass:__init(name)
self.name = name
end
function lua_testclass:print()
print(self.name)
end
a = lua_testclass('example')
a:print()
Inheritance can be used between lua-classes:
class 'derived' (lua_testclass)
function derived:__init()
lua_testclass.__init(self, 'derived name')
end
function derived:print()
print('Derived:print() -> ')
lua_testclass.print(self)
end
The base class is initialized explicitly by calling its __init() function.
As you can see in this example, you can call the base class member functions. You can find all member functions in the base class, but you will have to give the this-pointer (self) as first argument.
It is also possible to derive Lua classes from C++ classes, and override virtual functions with Lua functions. To do this we have to create a wrapper class for our C++ base class. This is the class that will hold the Lua object when we instantiate a Lua class.
class base
{
public:
base(const char* s)
{ std::cout << s << "\n"; }
virtual void f(int a)
{ std::cout << "f(" << a << ")\n"; }
};
struct base_wrapper : base, luabind::wrap_base
{
base_wrapper(const char* s)
: base(s)
{}
virtual void f(int a)
{
call<void>("f", a);
}
static void default_f(base* ptr, int a)
{
return ptr->base::f(a);
}
};
// ...
module(L)
[
class_<base, base_wrapper>("base")
.def(constructor<const char*>())
.def("f", &base::f, &base_wrapper::default_f)
];
Important
Since MSVC6.5 doesn’t support explicit template parameters to member functions, instead of using the member function call() you call a free function call_member() and pass the this-pointer as first parameter.
Note that if you have both base classes and a base class wrapper, you must give both bases and the base class wrapper type as template parameter to class_ (as done in the example above). The order in which you specify them is not important. You must also register both the static version and the virtual version of the function from the wrapper, this is necessary in order to allow luabind to use both dynamic and static dispatch when calling the function.
Important
It is extremely important that the signatures of the static (default) function is identical to the virtual function. The fact that one of them is a free function and the other a member function doesn’t matter, but the parameters as seen from lua must match. It would not have worked if the static function took a base_wrapper* as its first argument, since the virtual function takes a base* as its first argument (its this pointer). There’s currently no check in luabind to make sure the signatures match.
If we didn’t have a class wrapper, it would not be possible to pass a Lua class back to C++. Since the entry points of the virtual functions would still point to the C++ base class, and not to the functions defined in Lua. That’s why we need one function that calls the base class’ real function (used if the lua class doesn’t redefine it) and one virtual function that dispatches the call into luabind, to allow it to select if a Lua function should be called, or if the original function should be called. If you don’t intend to derive from a C++ class, or if it doesn’t have any virtual member functions, you can register it without a class wrapper.
You don’t need to have a class wrapper in order to derive from a class, but if it has virtual functions you may have silent errors.
The wrappers must derive from luabind::wrap_base, it contains a Lua reference that will hold the Lua instance of the object to make it possible to dispatch virtual function calls into Lua. This is done through an overloaded member function:
template<class Ret>
Ret call(char const* name, ...)
Its used in a similar way as call_function, with the exception that it doesn’t take a lua_State pointer, and the name is a member function in the Lua class.
Warning
The current implementation of call_member is not able to distinguish const member functions from non-const. If you have a situation where you have an overloaded virtual function where the only difference in their signatures is their constness, the wrong overload will be called by call_member. This is rarely the case though.
Note
You can also override virtual member functions per instance which often makes it unnecessary to derive a new class in Lua. Instead of e.g.
class "D" (B)
function D:__init() B.__init(self) end
function D:virtual_function() ... end
you may be able to get around with
b = B()
function b:virtual_function() ... end
When a pointer or reference to a registered class with a wrapper is passed to Lua, luabind will query for it’s dynamic type. If the dynamic type inherits from wrap_base, object identity is preserved.
struct A { .. };
struct A_wrap : A, wrap_base { .. };
A* f(A* ptr) { return ptr; }
module(L)
[
class_<A, A_wrap>("A"),
def("f", &f)
];
> class 'B' (A)
> x = B()
> assert(x == f(x)) -- object identity is preserved when object is
-- passed through C++
This functionality relies on RTTI being enabled (that LUABIND_NO_RTTI is not defined).
You can overload most operators in Lua for your classes. You do this by simply declaring a member function with the same name as an operator (the name of the metamethods in Lua). The operators you can overload are:
- __add
- __sub
- __mul
- __div
- __pow
- __lt
- __le
- __eq
- __call
- __unm
- __tostring
- __len
__tostring isn’t really an operator, but it’s the metamethod that is called by the standard library’s tostring() function. There’s one strange behavior regarding binary operators. You are not guaranteed that the self pointer you get actually refers to an instance of your class. This is because Lua doesn’t distinguish the two cases where you get the other operand as left hand value or right hand value. Consider the following examples:
class 'my_class'
function my_class:__init(v)
self.val = v
end
function my_class:__sub(v)
return my_class(self.val - v.val)
end
function my_class:__tostring()
return self.val
end
This will work well as long as you only subtracts instances of my_class with each other. But If you want to be able to subtract ordinary numbers from your class too, you have to manually check the type of both operands, including the self object.
function my_class:__sub(v)
if (type(self) == 'number') then
return my_class(self - v.val)
elseif (type(v) == 'number') then
return my_class(self.val - v)
else
-- assume both operands are instances of my_class
return my_class(self.val - v.val)
end
end
The reason why __sub is used as an example is because subtraction is not commutative (the order of the operands matters). That’s why luabind cannot change order of the operands to make the self reference always refer to the actual class instance.
If you have two different Lua classes with an overloaded operator, the operator of the right hand side type will be called. If the other operand is a C++ class with the same operator overloaded, it will be prioritized over the Lua class’ operator. If none of the C++ overloads matches, the Lua class operator will be called.
If an object needs to perform actions when it’s collected we provide a __finalize function that can be overridden in lua-classes. The __finalize functions will be called on all classes in the inheritance chain, starting with the most derived type.
...
function lua_testclass:__finalize()
-- called when the an object is collected
end
If your lua C++ classes don’t have wrappers (see Deriving in lua) and you derive from them in lua, they may be sliced. Meaning, if an object is passed into C++ as a pointer to its base class, the lua part will be separated from the C++ base part. This means that if you call virtual functions on that C++ object, they will not be dispatched to the lua class. It also means that if you adopt the object, the lua part will be garbage collected.
+--------------------+
| C++ object | <- ownership of this part is transferred
| | to c++ when adopted
+--------------------+
| lua class instance | <- this part is garbage collected when
| and lua members | instance is adopted, since it cannot
+--------------------+ be held by c++.
The problem can be illustrated by this example:
struct A {};
A* filter_a(A* a) { return a; }
void adopt_a(A* a) { delete a; }
using namespace luabind;
module(L)
[
class_<A>("A"),
def("filter_a", &filter_a),
def("adopt_a", &adopt_a, adopt(_1))
]
In lua:
a = A()
b = filter_a(a)
adopt_a(b)
In this example, lua cannot know that b actually is the same object as a, and it will therefore consider the object to be owned by the C++ side. When the b pointer then is adopted, a runtime error will be raised because an object not owned by lua is being adopted to C++.
If you have a wrapper for your class, none of this will happen, see Object identity.


Welcome to the Library of Babel! Want to know answers to your future? Check out the Peridot Room? Curious as to what your personality is? Go to the Sangria Room. Our librarians are working on translating books into every single language in the Indigo Room. And finally, check out the Crimson Room, books with the power to transport you into their worlds.


Login
o
Login with Facebook
have you forgotten your password?
Don't have an account?
Register
Download the App


Use Case 3:
Review variants in a gene of interest to ascertain whether they are true calls or false positive calls. For each variant reviewed, assign an appropriate status. Use a post-query filter to view only variants which have been judged to be true calls.
Begin searching, by selecting the "Statin Induced Myopathy" study and the "SIM Case (WGS) and Control (WES), GRCh37/hg19" dataset. Click "Next" to proceed to filter selection.
In the filter selection page, expand the Genes/Transcript section and under the "RefSeq identifier" sub-section, specify Gene "KLHL17". Expand the Functional Consequence section and under the "Consequence to RefSeq gene/transcript" sub-section, select "nonsynonymous SNV". Click the "Next" button to proceed to the attribute selection page.
From the "Variant Related Information" section select the following attributes: "Variant ID", "GATK Filter", and "GATK VQSR Score". Click the green "Search" button to begin searching.
There should be 6 results available. Click the "Show Review Status" button to bring up a "Review Status" column on the left side of the results table. This allows you to approve, reject, or mark as questionable any of the results.
Click the Variant ID "1-896105-G-T" and a new browser tab will open to that variant's Variant Page. This page contains all the information available on that particular call, along with links to various databases and viewing tools. Following the links and analyzing the data they provide can lead to a decision on whether or not this is a true variant.
Return to the Search tab in your browser. For demonstration purposes, let's assume 2 of the results are approved (green checkmark), 2 are rejected (red 'x'), and 2 are pending (orange question mark), as in the image below.
You can now use the "Select Post Query Filter" button to further filter the results. Click the button and select "Rejected" and "Pending", then click "Apply".
The results table now shows only those variants which not only adhere to the initial filtering but also the additional post-query filtering. The variants which only pass the initial filtering are listed in a separate table below the main one.
The variants which have been assigned a review status can be managed by clicking "Variant Review Status Summary" under the Search menu. This page is unique per user group.
Each category of variant review status can be inspected and individual entries can have their review status changed by clicking the category's "Edit/show more" link. Along with the ability to edit review status, you can also view the history of review status changes on these pages.


About Us
Meet the amazing team behind jec roboworld !
We are nerd rockstars
"Tough times doesn't last
tough teams do.."
Current Members
Ashutosh Das
Senior member
Maharnab Nath
Senior member
Balarka Goswami
Senior member
Jinmoy Jit Talukdar
Senior member
Kinku Das
Senior member
Parishmita Das
Member
Abinashi Dutta
Member
Bidisha Baruah
Member
Himashree Hazarika
Member
Bivob Bhuyan
Member
Arbinda Borah
Member
Tithi Choudhury
Member
Priyanka Banik
Member
Sreeya Dutta
Member
Priyanka Nandy
Member
Lakshmishree Saikia
Member
Ankita Kumari
Member
Ariyan Ali
Member
Bilton Narzary
Member
Aditya Prakash Singh
Member
Sourabh Pran Borah
Member
Sourabh Jyoti Borah
Member
Rajdeep Das
Member
Bishal Das
Member
Arnab Kishor Bordoloi
Alumni Member
2014-2018
Md. Faheemul Islam
Alumni Member
2014-2018
Anjan Bora
Alumni Member
2013-2017
Ankit Khound
Alumni Member
2013-2017


Ecommerce
view_list
search
shopping_cart
view_list
Orders
Enter yout email to view your orders
Email
button
Clothing
Menu
All Clothing
Accessories
Clothing
All Accessories
Beanies
Accessories
All Benies
Caps & Hats
Gifts
Scarves & Snoods
Caps & Hats
Accessories
All Caps & Hats
Beanies
Caps
Hats
Glasses
Gloves
Jewellery
Scarves
Bottoms
Clothing
All Bottoms
Casual Trousers
Jeans
Bottoms
All Jeans
Ripped
Skinny
Slim
Straight
Leggings
Shorts
Jackets
Clothing
All Jackets
Blazers
Bomber jackets
Denim Jackets
Duffle Coats
Leather Jackets
Parkas
Tops
Clothing
All Tops
Cardigans
Coats
Polo Shirts
Shirts
T-Shirts
Tops
All T-shirts
Plain
Print
Striped
Long sleeved
Vests
Gallery
Menu
Browse Gallery
Product #1
Product #2
Product #3
Product #4
Services
Menu
Browse Services
Service #1
This is the item description
Service #2
This is the item description
Service #3
This is the item description
Service #4
This is the item description
Service #5
This is the item description
Service #6
This is the item description
Service #7
This is the item description
Service #8
This is the item description
Service #9
This is the item description
Service #10
This is the item description
Service #11
This is the item description
Service #12
This is the item description
This is our big Tagline!
Here's our small slogan.
Left Aligned Caption
Here's our small slogan.
Right Aligned Caption
Here's our small slogan.
Iphone 6s
36600
4
stars
Iphone 6s
36600
4
stars
Iphone 6s
36600
4
stars
Iphone 6s
36600
4
stars
Iphone 6s
36600
4
stars


Dyno Form Example and Documentation
Simple Example
In order to generate a form, you need to ensure that you call the dynoForm with 4 properties.
- form
- A map with all the attribute values (name, action, method etc) values that your form will need.
- fieldsets
- A list of triplets, each triplet referring to a Fieldsets legend, its name and finally a map of fieldset attributes.
- fields
- A list of maps, each map should have a name, a label, a type. Types can be "textarea", "text", "password", "select", "checkbox" etc. In case of "select" and "checkbox", an Additional map key called "options" should be present which should be a list of pairs. each pair representing the Display name and value.
- buttons
- A list of maps. each map representing a button that the form will contain. each of these maps are a representation of the button attributes.


{% extends 'layout/base.html' %} {% block 'css' %} {% endblock %} {% block 'content' %}
Are you sure that you want to cancel "{{ object.title }}" request?


Broadway actress Laurel Griggs dead at 13
by Sasha SavitskyLaurel Griggs, a Broadway actress who appeared in several movies and TV shows, has died. She was 13.
According to her Dignity Memorial page, Griggs died on Tuesday. A funeral for the teen was held on Friday.
Her family told the New York Post on Sunday Griggs died after suffering a "massive asthma attack."
According to her grandfather, Griggs was rushed to the hospital, but doctors were unable to save her.
RISING BRITISH ACTRESS MYA-LECIA NAYLOR DIES SUDDENLY AT AGE 16
"The world lost a real princess who only wanted to make the future happy for all," her grandfather, David Rivlin, said. "Acting was a just a childhood dream come true and she had big plans for the future."
Griggs debuted on Broadway as Polly in "Cat on a Hot Tin Roof" in 2013 alongside Scarlett Johansson. She also had a role in Steve Carrell's "Cafe Society" in 2016 and appeared on "Saturday Night Live."
COUNTRY SINGER NED LEDOUX’S DAUGHTER, 2, DIES IN CHOKING ACCIDENT
She wrote on her Instagram page that her "SNL" appearance was the "most amazing night of my life."
According to her IMDB page, Griggs had the longest run of Ivanka in "Once."
She lived in New York City with her parents and attended public school.
Fellow "Once" actress Eliza Holland Madore paid tribute to Griggs on Instagram.
“I am deeply saddened by the sudden loss of one of my Ivanka sisters,” Madore wrote. “Laurel - you were always smiling and always made other people laugh.”


gary lundgren
developer : coder : dad
interests
about
contact
Fit-O-Matic
Description:
A group project with Regan O'Neill and Zach Crumbo that helps you select a bike based on your personal measurements.
Backend is built using MongoDB, Express, and Node. Fully tested using Mocha, Chai and Coveralls
Frontend is built using Angular, Bootstrap, Sass, and Webpack
drone strike
Description:
A group project with Cayla Zabel, Jeremiah Walters and Yana Radenska.
Backend is a full crud API built with Node.js, Express and MongoDB
Frontend is built with Angular 1.5
gl gram
Description:
A project built at Code Fellows in the 401 course.
Backend is a full crud API built with Node.js, Express and MongoDB
Frontend is built with Angular 1.5
Utilizes AWS for photo upload and storage
Build Pro
Description:
A personal project
Backend is a full crud API built with Node.js, Express and MongoDB
Frontend is built with Angular 1.5
Seattle Adventure
Description:
A group project with Alison Ramer, Shelly Tang and Colin Smith.
Project was built in one week by our team
We used Agile development while building this application
Uses Javascript, CSS, HTML and saves user information with Local Storage
bus mall
Description:
This is a product survey application that has you choose your favorite product out of three choices. Then it shows the number of times each product was selected.
I made this for a school project
Utilizes Chart.js to show results data
Built with HTML, CSS and vanilla JavaScript


[§431:26-108] Regulations. The commissioner may adopt rules pursuant to chapter 91 to carry out this article. [L 2017, c 191, pt of §1]


Bundle lists can be duplicated. The copy will be assigned to a different editor but it will share the same comments. All “finished editing” ticks will be reset.
This is useful to review the comments in the EMU-webApp, along with the signal and annotation data.
{{deleteError}}


Our team is comprised of highly caring, hard-working, motivated people who approach
their responsibilities with a positive attitude and a commitment to high quality performance.
Together, we create a pleasant and friendly environment while providing
professional, modern dentistry.


COVID-19 STATISTICS
1234567889
confirmed cases
Active
123456789
1234
NEW
Recovered
123456789
1234
NEW
Vaccinated
123456789
Deaths
123456789
1234
NEW


{{ _("You can mine with any valid address for a currency we pay out in.") }}
{{ _("Your earnings are (by default) converted to the currency of that address") }}
{{ _("If you want to keep a specific coin, instead of converting it, just add a payout address for it to your account.") }}


We create flavorsome, traditional dishes using fresh, local ingredients.
Gingerbread brownie jelly sugar plum sesame snaps soufflé croissant cupcake. Marzipan pie jujubes cookie toffee oat cake. Bear claw icing jelly beans croissant marshmallow jelly beans jelly tootsie roll. Oat cake gummies chocolate bar. Bonbon powder gummi bears chupa chups donut pie cotton candy tootsie roll. Danish caramels cake chocolate carrot cake. Biscuit jelly-o halvah sweet chocolate candy canes liquorice.
Wendolyn J Carrot Cakes - Family recipe, homemade, and oh so delicious!
Here's what the critics are saying.
"Wendy's carrot cake is the perfect compliment to any special occasion."
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Reprehenderit, temporibus, laborum, dignissimos doloremque corporis alias nostrum recusandae culpa id quisquam harum impedit sed sunt non obcaecati vero ipsam aut fugit?
"Wendy's carrot cake is so good you will want to have it for breakfast."
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Reprehenderit, temporibus, laborum, dignissimos doloremque corporis alias nostrum recusandae culpa id quisquam harum impedit sed sunt non obcaecati vero ipsam aut fugit?
"I have been baking for 30 years and Wendy's carrot cake is the best I have tasted."
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Reprehenderit, temporibus, laborum, dignissimos doloremque corporis alias nostrum recusandae culpa id quisquam harum impedit sed sunt non obcaecati vero ipsam aut fugit?


About This Site
This is a really simple image gallery, intended as more than a "hello world" example' to be implemented using different MVC frameworks, so they can be compared.
This site started out as the "Simple Gallery" from Bryant Smith.
The Images
Images are stored in a "data" folder inside the document root, and they are described in an "images" table, for which a SQL script is provided.
Supporting Technologies
The website uses the jquery Javascript framework, so that it can also use the jquery lightbox plugin.
The Story
This website was created for the Spring 2014 session of ACIT2910, at BCIT.


Toggle navigation
5
4
Dashboard
Tables
Form Elements
General
Validation
WYSIWYG
Wizard & File Upload
Form Wizard
16
Archie
Administrator
Last Access :
16 Mar 16:32
Menu
Dashboard
Layouts
Boxed Layout
Boxed Layout & Fixed Header
Fixed Header and Fixed Mini Menu
Fixed Header & Menu
Fixed Header & Mini Menu
Fixed Header
Boxed Layout & Fixed Menu
Fixed Menu
Fixed & Mini Menu
Boxed and Fixed Header & Nav
No Header & Sidebars
No Header
No Left & Right Sidebar
No Left Sidebar & Main Search
No Left Sidebar
No Main Search
No Right Sidebar
Mini Sidebar
Components
Bg Color
Bg Image
Buttons
Icon
Pricing Table
Progress
Forms
Form General
Form Validation
Form Wizard
Form WYSIWYG
Tables
Typography
Maps
Charts
Calendar
Error Pages
403
404
405
500
503
offline
Under Construction
Grid
Blank Page
Login Page
Unlimited Level Menu
Level 1
Level 2
Level 2
Level 2
Level 3
Level 3
Level 3
Level 4
Level 4
Level 4
Level 5
Level 5
Level 5
Level 4
Level 2
Level 1
Level 1
Level 2
Level 2
Level 2
File Upload
Browser Default
Uniform Style
Bootstrap Style
Select file
Change
Remove
No Input
Select file
Change
×
Image Upload
Select image
Change
Remove
Pre Defined Image
Select image
Change
Remove
Notice!
Image preview only works in IE10+, FF3.6+, Chrome6.0+ and Opera11.1+. In older browsers and Safari, the filename is shown instead.
Multiple Uploader
Wizard with Validation
Database Settings
Database Server
Database Name
Database User
User Password
Table Settings
Table Prefix
Table Collation
Collation
utf8_bin
utf8_czech_ci
utf8_danish_ci
utf8_esperanto_ci
utf8_estonian_ci
utf8_general_ci
utf8_general_mysql500_ci
utf8_hungarian_ci
utf8_icelandic_ci
utf8_latvian_ci
utf8_lithuanian_ci
utf8_persian_ci
utf8_polish_ci
utf8_roman_ci
utf8_romanian_ci
utf8_sinhala_ci
utf8_slovak_ci
utf8_slovenian_ci
utf8_spanish2_ci
utf8_spanish_ci
utf8_swedish_ci
utf8_turkish_ci
utf8_unicode_ci
utf8mb4_bin
utf8mb4_czech_ci
utf8mb4_danish_ci
utf8mb4_esperanto_ci
utf8mb4_estonian_ci
utf8mb4_general_ci
utf8mb4_hungarian_ci
utf8mb4_icelandic_ci
utf8mb4_latvian_ci
utf8mb4_lithuanian_ci
utf8mb4_persian_ci
utf8mb4_polish_ci
utf8mb4_roman_ci
utf8mb4_romanian_ci
utf8mb4_sinhala_ci
utf8mb4_slovak_ci
utf8mb4_slovenian_ci
utf8mb4_spanish2_ci
utf8mb4_spanish_ci
utf8mb4_swedish_ci
utf8mb4_turkish_ci
utf8mb4_unicode_ci
User Settings
Username
E-mail
User Password
Confirm Password
Remember me
×
Warning!
Best check yo self, you're not looking too good.
Visitor
1,4,4,7,5,9,10
Online Visitor
Loading..
Popularity
Loading..
New Users
1,3,4,5,3,5
Default
Primary
Info
Success
Danger
Warning
Inverse


{% extends '_base.html' %} {% block title %}booking dashboard{% endblock title %} {% block content %} {% if user.city %} {% if total %}
there are such bookings
{% for lesson in lessons %}today is {{ today|safe }}, according to school rules you can book lessons from {{ bookingStart|safe }}


http://www.speakers-podium.com/susangranger.
Susan Granger's review of "SCREAM 3" (Dimension Films/Miramax)
Back in 1996, Wes Craven's Scream single-handedly revived the teen slasher genre, launched the career of screenwriter Kevin Williamson and spotlighted young TV actors like Neve Campbell, Liev Schreiber, Rose McGowan, Skeet Ulrich, Sarah Michelle Geller and Rebecca Gayheart. As it evolved into two sequels, it even spawned an off-screen romance - Courteney Cox met David Arquette while making Scream, got engaged after Scream 2, and they are now married for Scream 3. This final version of the trilogy, written by Ehren Kruger (Arlington Road), finds tortured Sidney (Neve Campbell) hiding out in the California hills, even as intrepid TV reporter Gail Weathers (Courteney Cox Arquette) tries to track her down. Meanwhile, there's a movie-within-a-movie, as the real-life survivors of the Woodsboro massacre become technical advisors on Stab 3, a low-budget horror-movie-in-the-making. That's how dorky ex-cop Dewey Riley (David Arquette) finds himself dating Jennifer Jolie (Parker Posey), the actress who is playing Gail. Sound confusing? Just wait. There's an obsessive detective (Patrick Dempsey), a flaky director (Scott Foley), and a producer-with-a-past (Lance Hendrickson) - all of whom become suspects in multiple murders. It's deja vu all over again. Problem is: it's difficult to sustain the excitement over three years so, by now, the concept feels a bit flat, formulaic, even stale. And the scariest part is glimpsing Star Wars' Carrie Fisher, whom age has not been kind to since playing Princess Leia. On the Granger Movie Gauge of 1 to 10, Scream 3 is a silly, shrieking 6. And get ready for a parody. Miramax will slay you with Scary Movie on March 31.
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


This is one of the creational patterns. Factory is used to create an object from instance of another class. In Factory pattern, we create object without exposing the creation logic. This helps to deal with large and more complex programs. In this pattern, an interface is used for creating an object, but let subclass decide which class to instantiate. Creation process is done in run time.
I’ll use example from typical video game where Enemy object is created, and its type is based on random number. Object is created in run time.
UML diagram:
First let’s create Interface that will be shared between all enemies that can be crated with Factory. This will be used by client.
public interface IFactory
{
void Demage(int dmg);
}
Now we need to create Classes that will inherit this interface. In my example this will be enemyType1 and 2.
public class EnemyType1 : IFactory
{
int _health=100;
public void Demage(int dmg)
{
_health -= dmg;
Console.WriteLine("EnemyType1 health:" + _health.ToString());
}
}
public class EnemyType2 : IFactory
{
int _health = 200;
public void Demage(int dmg)
{
_health -= dmg;
Console.WriteLine("EnemyType2 health:" + _health.ToString());
}
}
Both classes also contains health count, just to make it more interesting.
Next we need to create the Interface for factory itself.
public abstract class EnemyFactory
{
public abstract IFactory InstantiateEnemy(int type);
}
As a return type we use interface IFactory, this way we can return any object that inherits from it.
In The factory Class we override the method with switch statement that will return the objects based on the input number.
public class InstantiateEnemyFactory : EnemyFactory
{
public override IFactory InstantiateEnemy(int type)
{
switch (type)
{
case 1:
return new EnemyType1();
case 2:
return new EnemyType2();
default:
throw new ApplicationException(string.Format("Wrong number"));
}
}
}
Last step is to create client that will use the factory class.
class Program
{
static void Main(string[] args)
{
//random number
int type = new Random().Next(1, 1000)% 2 + 1;
//Instance of the class
EnemyFactory factory = new InstantiateEnemyFactory();
IFactory newEnemy= factory.InstantiateEnemy(type);
newEnemy.Demage(20);
type = new Random().Next(1, 2000)%2 + 1;
IFactory newEnemy2 = factory.InstantiateEnemy(type);
newEnemy2.Demage(20);
Console.ReadKey();
}
}
Numbers don’t have to be random. I’m using random numbers to demonstrate the example. I real world we would rather create a list of enemies rather than choosing name for each of them.
This patters is very simple and effective. This makes it commonly used across all languages. To conclude, Factory defines an interface for creating an object, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to subclasses. I hope you found it useful and you will implement this pattern to your next project. Stay Awesome!


On a recent penetration test, I had to opportunity to test the security of an open-source supervision appliance called EyesOfNetwork
. Multiple vulnerabilities have been found and will be reported in this post.
What is EyesOfNetwork?
From the official website:
EyesOfNetwork (“EON”) is the OpenSource solution combining a pragmatic usage of ITIL processes and a technological interface allowing their workaday application. EyesOfNetwork Supervision is the first brick of a range of products targeting to assist IT managment and gouvernance. EyesOfNetwork Supervision provides event management, availability, problems and capacity.
Basically, it is a French supervision solution combining Nagios, Cacti as well as other tools with some of them being hand-made to create a complete appliance to monitor your infrastructure. The solution offers a web interface called Eonweb
.
Preparation
For the next tests, we will download the latest iso available on https://www.eyesofnetwork.com/. The version downloaded was EyesOfNetwork 5.1
and represented the latest version available of the software.
Most of the vulnerabilities found during the assessments and presented in this post have been identified on lower versions as well.
After a default install, if we launch nmap to scan TCP ports, here is the list of ports we find:
Our goal being a quick way into the system, we’ll search for the low hanging fruit by searching for web vulnerabilities on Eonweb. SSH being difficult to attack due to the possibility of an administrator to change the user accounts passwords at the iso installation and MySQL blocking non-localhost connections.
Quick and dirty: Unauthenticated SQL injection
No authentication bypass has been found even if SQL errors could be generated by logging in using a backslash character at the end of the username. A SQL injection has been found, however, inside the logout.php file, at line 28.
Obviously, we can control the session_id
cookie because it is not set up inside a session and because of the fact the server doesn’t filter quotes by default.
The injection being inside a DELETE
statement, we have two options: either we exploit it using a blind-based technique by setting up arbitrary sessions and checking which session get deleted (useful for example in the case of a privilege escalation exploit if we have an unprivileged account) or we could exploit it using a time-based attack.
From the point of view of an attacker, we’ll take the second option as we do not have credentials on the application.
The function SLEEP
is not always usable in a DELETE FROM
statement, that’s why BENCHMARK
has been used in this example. SLEEP
is indeed usable only when a table is not empty, we’ll use SLEEP
for our proof of concept as we will need to try to recover the sessions table anyway, but in the final exploit, we’ll have to handle the two possibilities.
What’s particularly interesting is the sessions’ creation:
The monitoring solution is creating their sessions using only rand()
as the session_id, meaning that even if we are forced to do our exploitation via a time-based technique, the session_id could be found in under 11 or 12 seconds with a simple brute force character by character if we set-up a SLEEP
time of 1 second.
What to keep in mind:
DELETE
statements can’t do subqueries affecting their own table.- The target table doesn’t use a proper index column, this can lead to confusion when using substring with
LIMIT
, even whenORDER BY
is used.
Here is the exploitation scenario:
- Doing an initial request to get a value representing the lag between the target and our machine.
- Delete all the non-admin (user_id != 1) sessions.
- Getting the number of entries by doing
OR sleep(1)=1
. For each record, the server will sleep one second, by doing so we will able to either: delete<entries count> - 1
orsleep(1 / <entries count>)
to avoid entries confusion and get a faster exploitation. We will choose the first option; the second has been proven to be unstable after some tests. - Delete all sessions but one.
- Now that we have only one admin sessions in the table, it will be easy to recover it.
Proof of concept:
And here it is in action:
Using these cookies in a browser or with curl, we are correctly authenticated on Eonweb with the admin
account.
From there, we can access all the monitoring tools available in EON (Nagios, Cacti, Thrunk, …).
Go for the kill: Privilege escalation using snmp
Now that we have access to the web interface, we will try to elevate our privileges searching for an RCE. I found a particularly interesting way to perform a root-privileged remote code execution on the appliance using SNMP.
Let’s see the privileges of the process running snmpd and its configuration:
So, by default, anybody could edit the SNMP configuration, reload the server using sudo and the process will be run as root. Fortunately, we do not even need to find an RCE to perform these actions as they are available in the web interface Eonweb.
At /module/admin_process/
we are able to restart/reload the different processes in EyesOfNetwork:
And, even if I wasn’t able to find it in the interface, an administrator can edit directly the SNMP configuration file, going to /module/admin_files/?file=snmpconf
.
What’s so interesting about SNMP? It is possible to execute shell commands by setting a specific instruction inside it and call for the correct OID.
Now we have to access the SNMPd service either with snmpwalk
directly if 161/udp is open and do snmpwalk -v 1 <EON ip> -c <community> .<IP_ADDRESS>.4.1.2021.8
or we could, once again, use the tools available in Eonweb to trigger the command execution, for example if there is a firewall present between EON and our machine blocking SNMP requests.
At /module/tool_all/
, a snmpwalk tool is available, by default it is recovering all the MIB, but since the host is the last argument from the command line, we can set the host to <host> <OID>
and get our connect-back.
And in our connect-back shell we previously set-up:
Final privilege escalation scenario:
- Edit the snmpconf via
admin_files
and search for the correct community - Reload the service via
admin_process
- Call the correct snmp OID either if SNMP is accessible or using tools from Eonweb in
tool_all
Automating the attack
Now that we have all these elements, a complete scenario is possible:
- Exploiting the Unauthenticated SQL Injection to recover either: sessions or accounts (password are stored in simple md5).
- Authenticate on the application
- Recover the SNMP community
- Edit the snmpd config files to add a malicious command
- Execute the command using snmpwalk (either remotely or locally using the tools available in eonweb)
- We have our root-privileged execution :).
Timeline
- 01st February 2017 - Initial Discovery
- 14th March 2017 - Public disclosure of an authenticated SQL injection and an RCE in Eonweb by Sysdream
- 27th March 2017 - First contact with the vendor
- 28th March 2017 - Created the proof of concept for the exploit
- 28th March 2017 - CVE request to DWF
- 29th March 2017 - Acknowledgement of the vendor
- 07th May 2017 - Got assigned a CVE ID via DWF (CVE-2017-1000060)
Final Advisory
Title:
======
EyesOfNetwork (EON) 5.1 Unauthenticated SQL Injection in eonweb leading to remote root
Author:
=======
Dany Bach [@ddxhunter, rioru.github.io]
CVE-ID:
=======
CVE-2017-1000060
OVE-ID:
=======
OVE-20170328-0001
Risk Information:
=================
CVSS Base Score 10.0
CVSS Vector CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H/E:F/RL:U/RC:C
CVSS Temporal Score 9.7
Overall CVSS Score 9.7
Timeline:
=========
2017-02-01 - Initial Discovery
2017-03-14 - Public disclosure of an authenticated SQL injection and an RCE in Eonweb by Sysdream
2017-03-27 - First contact with the vendor
2017-03-28 - Created the proof of concept for the exploit
2017-03-28 - CVE request to DWF
2017-03-28 - Acknowledgement of the vendor
2017-05-03 - Got assigned a CVE ID via DWF (CVE-2017-1000060)
Status:
=======
Published
Affected Products:
==================
EyesOfNetwork ("EON") 5.1 and older
Vendor Homepage:
================
https://www.eyesofnetwork.com/?lang=en
Details:
========
By exploiting an unauthenticated SQL injection in Eonweb (logout.php), it is possible to gain remote root access to the server using a lack of proper permissions in SNMPd after an authentication using the sessions table.
Vulnerable file:
================
logout.php, Line 28
...
if(isset($_COOKIE["session_id"])) {
$sessid=$_COOKIE["session_id"];
sqlrequest($database_eonweb,"DELETE FROM sessions where session_id='$sessid'"); // Vulnerable
}
...
Proof of Concept:
=================
https://gist.github.com/rioru/105fb626b5ce046d8f050032da24ad2d
Fix:
====


Generator Overview
The following diagram summarizes Shiboken’s role in the Qt for Python project.
An XML typesystem file is used to specify the types to be exposed to Python and to apply modifications to properly represent and manipulate the types in the Python World. For example, you can remove and add methods to certain types, and also modify the arguments of each method. These actions are inevitable to properly handle the data structures or types.
The final outcome of this process is a set of wrappers written in CPython, which can be used as a module in your Python code.
In a few words, the Generator is a utility that parses a collection of header and typesystem files, generating other files (code, documentation, etc.) as result.
Creating new bindings
Each module of the generator system has an specific role.
Provide enough data about the classes and functions.
Generate valid code, with modifications from typesystems and injected codes.
Modify the API to expose the objects in a way that fits you target language best.
Insert customizations where handwritten code is needed.
The newly created binding will run on top of Shiboken which takes care of interfacing Python and the underlying C++ library.
Handwritten inputs
Creating new bindings involves creating two pieces of “code”: the typesystem and the inject code.
- typesystem
XML files that provides the developer with a tool to customize the way that the generators will see the classes and functions. For example, functions can be renamed, have its signature changed and many other actions.
- inject code
allows the developer to insert handwritten code where the generated code is not suitable or needs some customization.
Command line options
Usage
shiboken [options] header-file(s) typesystem-file
Options
--disable-verbose-error-messages
Disable verbose error messages. Turn the CPython code hard to debug but saves a few kilobytes in the generated binding.
--enable-parent-ctor-heuristic
This flag enable an useful heuristic which can save a lot of work related to object ownership when writing the typesystem. For more info, check Parentship heuristics.
--enable-pyside-extensions
Enable pyside extensions like support for signal/slots. Use this if you are creating a binding based on PySide.
--enable-return-value-heuristic
Enable heuristics to detect parent relationship on return values. For more info, check Return value heuristics.
--avoid-protected-hack
Avoid the use of the ‘#define protected public’ hack.
--use-isnull-as-nb_nonzero
If a class have an isNull() const method, it will be used to compute the value of boolean casts
--api-version=<version>
Specify the supported api version used to generate the bindings.
--documentation-only
Do not generate any code, just the documentation.
--drop-type-entries="<TypeEntry0>[;TypeEntry1;...]"
Semicolon separated list of type system entries (classes, namespaces, global functions and enums) to be dropped from generation. Values are fully qualified Python type names (‘Module.Class’), but the module can be omitted (‘Class’).
--generation-set
Generator set to be used (e.g. qtdoc).
--skip-deprecated
Skip deprecated functions.
--diff
Print a diff of wrapper files.
--dryrun
Dry run, do not generate wrapper files.
--project-file=<file>
Text file containing a description of the binding project. Replaces and overrides command line arguments.
-I<path>, --include-paths=<path>[:<path>:...]
Include paths used by the C++ parser.
… _system-include-paths:
-isystem<path>, --system-include-paths=<path>[:<path>:...]
System include paths used by the C++ parser
-F<path>, --framework-include-paths=<path>[:<path>:...]
Framework include paths used by the C++ parser
--language-level=, -std=<level>
C++ Language level (c++11..c++17, default=c++14)
-T<path>, --typesystem-paths=<path>[:<path>:...]
Paths used when searching for type system files.
--output-directory=[dir]
The directory where the generated files will be written.
--license-file=[license-file]
File used for copyright headers of generated files.
--no-suppress-warnings
Show all warnings.
--silent
Avoid printing any message.
--debug-level=[sparse|medium|full]
Set the debug level.
--help
Display this help and exit.
--version
Output version information and exit.
QtDocGenerator Options
--doc-parser=<parser>
The documentation parser used to interpret the documentation input files (qdoc|doxygen).
--documentation-code-snippets-dir=<dir>
Directory used to search code snippets used by the documentation.
--documentation-data-dir=<dir>
Directory with XML files generated by documentation tool.
--documentation-extra-sections-dir=<dir>
Directory used to search for extra documentation sections.
--library-source-dir=<dir>
Directory where library source code is located.
--additional-documentation=<file>
List of additional XML files to be converted to .rst files (for example, tutorials).
Binding Project File
Instead of directing the Generator behavior via command line, the binding developer can write a text project file describing the same information, and avoid the hassle of a long stream of command line arguments.
The project file structure
Here follows a comprehensive example of a generator project file.
[generator-project] generator-set = path/to/generator/CHOICE_GENERATOR header-file = DIR/global.h" /> typesystem-file = DIR/typesystem_for_your_binding.xml output-directory location="OUTPUTDIR" /> include-path = path/to/library/being/wrapped/headers/1 include-path = path/to/library/being/wrapped/headers/2 typesystem-path = path/to/directory/containing/type/system/files/1 typesystem-path = path/to/directory/containing/type/system/files/2 enable-parent-ctor-heuristic


Lookup Doctors in Portland, Oregon.
Enter your medical issue:
Search by Doctor's Name
Lookup Doctors


| Platform | Since |
|---|---|
| Android | 1.0.0 |
| iPhone | 1.0.0 |
| iPad | 1.0.0 |
Represents a Salesforce Connected Application
A ConnectedApp object gives you access to your Salesforce connected application.
Create a new
ConnectedApp object for each Salesforce Connected Application that you need
to access in your application.
This example demonstrates the creation of a connected app instance.
var connectedApp = new salesforce.ConnectedApp({
consumerKey : <DEVELOPER CONSUMER KEY>,
consumerSecret : <DEVELOPER CONSUMER SECRET>
});
This example demonstrates using the user-agent authentication flow with a custom window and webview.
var modal = Ti.UI.createWindow({
title: 'My Login',
width: '100%',
height: '100%',
barColor: 'green'
});
var closeButton = Ti.UI.createButton({
title: 'Close'
});
closeButton.addEventListener('click', function(){
modal.close();
});
modal.leftNavButton = closeButton;
var webView = Ti.UI.createWebView({
scalesPageToFit: true,
showScrollbars: true
});
connectedApp.login({
window: modal,
webView: webView,
success : function(results) {
Ti.API.info('Logged in';
},
error: function(error) {
Ti.API.error('ERROR:' + error.message);
}
});
This example demonstrates retrieving a list of all SObjects.
connectedApp.sobjects({
success : function(results) {
Ti.API.info('Number of objects: ' + results.sobjects.length;
},
error: function(error) {
Ti.API.error('ERROR:' + error.message);
}
});
This example demonstrates creating a new record.
connectedApp.create({
name: 'Account',
data: {
Name: 'Express Logistics and Transport'
},
success: function(results) {
Ti.API.info('Record id: ' + results.id;
},
error: function(error) {
Ti.API.error('ERROR:' + error.message);
}
});
This example demonstrates retrieving a record with fields. Note that if the fields
property is not
specified it will return all fields for the record.
connectedApp.retrieve({
name: 'Account',
id: recordId,
fields: [ 'AccountNumber', 'BillingPostalCode' ],
success: function(results) {
Ti.API.info('AccountNumber: ' + results.AccountNumber);
Ti.API.info('BillingPostalCode: ' + results.BillingPostalCode);
},
error: function(error) {
Ti.API.error('ERROR:' + error.message);
}
});
This example demonstrates updating a record.
connectedApp.update({
name: 'Account',
id: recordId,
data: {
BillingCity: 'San Francisco'
},
success: function(results) {
Ti.API.info('Successfully updated');
},
error: function(error) {
Ti.API.error('ERROR:' + error.message);
}
});
This example demonstrates executing a SOQL query.
connectedApp.query({
name: 'Account',
soql: 'SELECT name from Account'
success: function(results) {
Ti.API.info('Total Size: ' + results.totalSize);
Ti.API.info('Number of records: ' + results.records.length);
},
error: function(error) {
Ti.API.error('ERROR:' + error.message);
}
});
This example demonstrates upserting blob data
var file = Ti.Filesystem.getFile(Ti.Filesystem.resourcesDirectory, 'Default.png');
blob = file.read();
connectedApp.upsertBlob({
name: 'Document',
blobField: 'Body',
blob: blob,
data: {
"Name" : "Default image",
"FolderId": "00li0000000UAFuAAO",
"Type": 'png',
"ContentType": blob.mimeType;
},
success: function(results) {
Ti.API.info('id: ' + results.id);
},
error: function(error) {
Ti.API.error('ERROR:' + error.message);
},
progress: function(e) {
Ti.API.info((e * 100) + '%');
}
});
This example demonstrates retrieving blob data
connectedApp.retrieveBlob({
name: 'Document',
id: recordId,
blobField: 'Body',
success: function(results) {
// results is a Ti.Blob object
Ti.API.info('Blob mimetype: ' + results.mimeType);
Ti.API.info('Blob size: ' + results.size);
},
error: function(error) {
Ti.API.error('ERROR:' + error.message);
},
progress: function(e) {
Ti.API.info((e * 100) + '%');
}
});
Format of the result data returned from most requests
Specifies the format of the result object returned for most requests. This value can either be 'application/json' or 'application/xml'.
The default value is 'application/json'.
Access token that acts as a session ID that the application uses for making requests.
This token will be set after successful authentication, but can be set by the application if the application persists this value and restores it after the application launches.
This token should be protected as though it were user credentials.
NOTE: For security reasons, the module does not persist any of the authentication information itself. If the application requires persistence of authentication information it must do that itself and set the properties on the ConnectedApp object.
Salesforce version to use.
The default value is 'v26.0'.
The Consumer Key
from the connected application definition.
The Consumer Secret
from the connected application definition.
Format of the data to be sent in most requests
Specifies the format of the data property for most requests. This value can either be 'application/json' or 'application/xml'.
The default value is 'application/json'.
Currently authenticated user.
This value will be set after successful authentication, but can be set by the application.
Identifies the Salesforce instance that API calls should be sent.
This value will be set after successful authentication, but can be set by the application.
The default value is 'http://na1.salesforce.com'.
Indicates if the user is currently logged in.
Server address to use for authentication.
When using the user-agent authentication flow (ie. login
), the default url is
'https://login.salesforce.com/services/oauth2/authorize'.
When using the username-password authentication flow (ie. loginApi
), the default url is
'https://login.salesforce.com/services/oauth2/token'.
The callback url for the connected application definition.
This property only applies when using the user-agent authentiction flow.
The default value is 'https://login.salesforce.com/services/oauth2/success'.
Token that can be used in the future to obtain new access tokens.
This token is only applicable when using the user-agent authentication flow (ie. login
) AND
the connected application's OAuth scope includes the use of the refresh_token.
This token will be set after successful authentication, but can be set by the application if the application persists this value and restores it after the application launches.
This token should be protected as though it were user credentials.
NOTE: For security reasons, the module does not persist any of the authentication information itself. If the application requires persistence of authentication information it must do that itself and set the properties on the ConnectedApp object.
User's security token
A security token is an automatically-generated key from Salesforce.
The securityToken is required when using the username-password authentication flow (ie. the loginApi
)
Timeout in milliseconds when the connection should be aborted.
The default value is 5000.
Creates a new record.
create
>
A dictionary of properties for the operation.
Completely describes the individual metadata at all levels for the specified object.
describe
>
A dictionary of properties for the operation.
Login using the user-agent authentication flow.
Ensure that the consumerKey
property of the ConnectedApp object is set
before calling this method.
login
>
A dictionary of properties for the operation.
Login using the username-password authentication flow.
Ensure that the consumerKey
and consumerSecret
properties of the ConnectedApp object are set
before calling this method. Either set the securityToken
property of the ConnectedApp object
before calling this method or provide the securityToken
in the arguments.
loginApi
>
A dictionary of properties for the operation.
Logout the current user.
logout
>
A dictionary of properties for the operation.
Describes the individual metadata for the specified object.
metadata
>
A dictionary of properties for the operation.
Executes the specified SOQL query.
query
>
A dictionary of properties for the operation.
Request a new access token.
This method is only applicable when using the user-agent authentication flow (ie. login
) AND
the connected application's OAuth scope includes the use of the refresh_token.
It is up to the application to determine when an access token is no longer valid, and when to apply for a new one.
refresh
>
A dictionary of properties for the operation.
Deletes a record based on the specified object ID.
remove
>
A dictionary of properties for the operation.
Retrieves a record based on the specified object ID.
retrieve
>
A dictionary of properties for the operation.
Retrieves the specified blob field from an individual record.
retrieveBlob
>
A dictionary of properties for the operation.
Retrieves a record with a specific external ID.
retrieveExternal
>
A dictionary of properties for the operation.
Executes the specified SOSL search.
searchQuery
>
A dictionary of properties for the operation.
Returns an ordered list of objects in the default global search scope of a logged-in user.
searchScopeOrder
>
A dictionary of properties for the operation.
Lists the available objects and their metadata for your organization's data.
sobjects
>
A dictionary of properties for the operation.
Updates a record based on the specified object ID.
update
>
A dictionary of properties for the operation.
Inserts or updates blob data for a record.
upsertBlob
>
A dictionary of properties for the operation.
Creates new records or updates existing records (upserts records) based on the value of a specified external ID field.
upsertExternal
>
A dictionary of properties for the operation.


#^------------------------------
#^title trim=ends
Zines
#^crumb_trap trim=ends same=append
{crumb_slash}zine
#^------------------------------
#^body trim=ends
{body_text}
{zine3}
{zine1}
{ps_text}
{zine2}
{src_text}
#^body_text trim=ends form=markdown
i've been working on a few zines, some more finished than others.
#^zine3 trim=ends form=markdown
### BD666
This one has been simmering in the backburner for a month now. A few ideas came and left but i knew i wanted to make another Bradford zine in some shape or another.
The radio format isn't surprising - it's something i've always been a little obsessed with - so it *somewhat* fully formed into a fictional radio station in the satanic mills sending out signals and stories about Bradford. Could work, right? eh.
Anyways, i was thinking maybe this one could be in A6 format so it'll be a teeny zine. It also makes the zine feel a teensy bit more personal, to me anyways; ie. it doesn't feel unwieldy to read in my small hands.
#^zine1 trim=ends form=markdown
### The week before and after
A collaboration with Farah Varouqa, this zine is a collection of our daily lives as migrants in the city we live in; during and after the week when the COVID-19 lockdown was announced in the United Kingdom.
#^zine2 trim=ends form=markdown
### Typograp.her
Typograp.her is a collection of opensource typefaces created and designed by womxn. This zine started out as a need to see the typefaces i have installed on my machine to make it easier for me to choose for pairings in projects.
At the moment, i'm just listing the weights and variants of each type spread over 2 pages. There are some links included; download links usually to the foundry and Google Fonts where most of these fonts are found and links to the type designers' website or behance portfolio for more information about the font itself.
For now, this fits a purpose but it would be really good to include information about the designers themselves though i know this will increase the time to publish. Easier said than done when i'm struggling to find information about the very first typographer on the list!
#^ps_text trim=ends form=markdown
You can get this at [Good Press](https://goodpress.co.uk/products/the-week-before-and-after-by-shi-blank-amp-farah-varouqa) or in person at zine fairs. Proceeds of zines bought in person will go to [Refugee Action](https://www.refugee-action.org.uk/).
#^src_text trim=ends form=markdown
[Source](https://www.design-research.be/by-womxn/), 27 September 2020.


--- layout: compress ---
October 1st & 2nd, 2016 @ CESI in Franklin, WI
BarCamps are free, community-driven conferences. Register to attend and then consider joining the discussion!
9am October 1st - 9pm October 2nd
Sessions will be held throughout both days, with introductions the morning of the 1st. Come and go as you please. Join in on the discussion for details about food during the event.
CESI
9850 South 54th Street
Franklin,WI
Register on EventBrite for Free
Registration is required but the event is free. There is a space limit, so please cancel your registration if you can not make it.
BarCamp Milwaukee is free to attend (remember to register, though!) However, putting on this event is impossible without great sponsors and donations from people like you who donate to keep us going.
Follow @BarCampMKE
Tag conversations #bcmke11
Unlike a traditional conference, the sessions at BarCamp Milwaukee are decided upon by you, the participants, on the day of the conference. Presentations can be prepared ahead of time or put together on-the-fly based on discussion at the event. Attendees are not required to present, but are encouraged. View the schedule for the current lineup of sessions and activities.
Join in on BarCamp discussion and planning over on Google Groups and Discord.
Once there was this thing called Foo Camp - a gathering of the tech elites by special invite of Tim O'Reilly. It was a pretty cool participant-driven event, but it was invite only. [Boo - hiss!]
In 2005, someone thought:
Just because you weren't invited, doesn't mean you shouldn't get the benefit of an awesome gathering like this.So...
BarCamp (as in foobar) was born! BarCamps are participant-driven technical events located all over the world (like Milwaukee). These not-for-profit, inclusive events are open to anyone, invite or not! (Most require registration for planning purposes.)
Ok - fine - cool - but what does participant-driven mean? What actually happens at a BarCamp?
What happens at BarCamp does not stay at BarCamp!
Since BarCamp is a participant-driven event, we can't say for certain what happens. But, there are some generally predictable things that happen.
In the morning, participants interested in presenting a topic should add their name and topic to an open spot in the schedule.
Then, before each presentation, everyone checks the schedule and attends a location/talk that they wish.
Didn't find any that you like? That's ok - find a spot - grab some people - and make your own talk. It can be a presentation, a round-table, a discussion or even a show-and-tell.
Bring your sleeping bag! Attendees are welcome to stay the night at the event location.
Let's answer a question with a question: Who goes to BarCamp?
In a word: everyone!
You're going to find technical programmers, community activists, product managers, business owners, music aficionados, artists, geeks, gamers - just everyone.
Everyone who attends BarCamp has a passion to learn, to share, and to grow professionally or personally.
Why should you go? It's simple. You want to learn, you want to share, you want to inspire and be inspired.
And most importantly, this unique event needs you! As a community and participant driven event, this is for you, by you.


Pizza size price:
Pizza crust price:
Pizza topping price:
Pizza total price:
We have various pizza depending on your choice of size, crust, topping and price as per what you wish to buy.
Pizza size price:
Pizza crust price:
Pizza topping price:
Pizza total price:


Add to your Franchise!
Location:
Average Cookie Sale:
Minimum Customer / Hour:
Maximum Customer / Hour:


Why Can't Netizens Wait for Ranbir Kapoor-Alia Bhatt Starrer 'Brahmastra'?
New Delhi (Sputnik): As the details of southern superstar Akkineni Nagarjuna’s role in the film are out, fans of actor Ranbir Kapoor and actress Alia Bhatt have expressed their curiosity for the movie, a fantasy adventure trilogy that will also star A-lister Amitabh Bachchan, along with a cameo of Badshah of Bollywood Shah Rukh Khan.
Bollywood actor Ranbir Kapoor and Alia Bhatt starrer “Brahmastra” has garnered the attention of film buffs on social media, with many of them saying that they are eagerly looking forward to the film's release.
Even though the details remain unknown, Ranbir previously described the movie, directed by Ayan Mukerji, as a “supernatural romantic fairytale at heart” and said that he was "terribly excited about" it. The film will also feature Akkineni Nagarjuna, who will return to Bollywood after 15 years and supposedly playing an archaeologist.
Some netizens went as far as to say that the film will be a game-changer for Indian cinema and many are enthusiastic to learn that the movie will be a trilogy.


#Strapdown - Easy Markup for Bootstrap
Strapdown.js makes it **embarrassingly simple** to create elegant Markdown documents.
No server-side compilation required. Use it to quickly document your projects, create tutorials, home pages, etc.
(this page you are reading was generated by Strapdown).
---
What is Markdown?
>[Answer](http://whatismarkdown.com/)
What is Strapdown?
>[Answer](http://strapdownjs.com/)
**Why** use Markdown?
>[Answer](http://brettterpstra.com//2011/08/31/why-markdown-a-two-minute-explanation/)
---
#Sample Markdown
>Markdown is just so dang legible, it will make your *whole life* easier. **I promise.**
# Chapter 1
- this is imporant to know
- so is this
- goodbye world
## Sub section
You can put something here.
---
# Chapter 2
![Debbie's image](http://i.imgur.com/B5EjISM.jpg)
Heading Alternative
=======
Sub-heading Alternative
-----------
###Sample code
```
Test
Body here
```
Paragraphs are separated
by a blank line.
Let 2 spaces at the end of a line to do a
line break
Text attributes *italic*,
**bold**, `monospace`.
A [link to cnn.com](http://cnn.com).
Shopping list:
* apples
* oranges
* pears
Numbered list:
1. apples
2. oranges
3. pears
View Full Screen (Req'd to test on mobile device)
HTML5


Data Tracker
Graph
Graph 1
Graph 2
Graph 3
Graph 4
Graph 5
Graph 6
{% for plot in plots %}
{% for part in plot %} {{part|safe}} {% endfor %}
{% endfor %}


This documentation describes the background and internal functionality of the SVOGV project. It's primarily for learning purposes. It's not a replacement of the common documentation for developers using the library.
This is work in progress. Come back often to get recent updates. Currently it's version 0.7.3, published May 1st, 2019. The current version embraces Angular 7.x. It's working with Angular 2.x onwards.
The primary part is a almost complete introduction into the world of modern web frontend development. It encapsulates the tool chain, languages, repositories, cloud service and everything else you need to create awesome apps.
The second part is the actual development work -- the app's code and frameworks. I decided to use Angular 2 and Bootstrap 4 as a foundation. Angular 2 introduced as familiar concept in a new way for the web: components. By building a component tree a web app gets better maintainability and clear design, that's closer to the "treeish" nature of HTML. It fits better in the Browser's ecosystem than the traditional MVC (model view controller) model.
A big step for web developers was the usage of TypeScript. While other pre-compilers or transpilers are around for years (CoffeeScript for instance), TypeScript had the most mature and professional approach. It brings web development to an enter a new level.
However, this comes with a penalty. The learning curve is steep. The setup is huge and confusing. And the effort to get a simple app running is enormous. If you create a huge app, however, it's a trade off. Your code becomes cleaner, easier to maintain, better to read. Your development speed will grow and you can be fast, really fast creating stuff. The setup effort is a one time process and hence it's usually a no-brainer.
This document describes the following:
First, you need to now how to create stuff and how to deploy stuff. You need these things first:
So, that's it.
Missing the Operating System? No problem. Choose what you like. Everything shown here will run on Linux, Windows, and even a Mac. Simply don't care. Welcome to the brave new world.
Need something to buy? No, not at all. Everything is open source and free. At least as long as you build OS stuff by yourself. For enterprises are some more options, such as private repositories. That's the way some companies make some money. But even so, it's really cheap. So no worries again.
Some of the tools run in the cloud. I strongly recommend considering to use these tools. It saves you tons of time and money. Unless you work for a secret service you don't get any benefits from doing everything locally. The amount of data you need to transfer is small. Even a bad connection is usually sufficient.
To setup a project like this you start right now that way:
I use Visual Studio Code, but you may try some others to achieve your code tasks. Some alternatives are:
A good description of all of these can be found here.
Modern web development is file based. No hidden stuff, no secret folders, nothing but plain text files. Any drawback? Yes, there are many different files needed. A lot of them, really. While writing this I made a quick count of SVOGV project, locally:
46.822 files, 6.323 folders
You say: you're kidding, dude? I say: No, bro, that's the way it is. But I have good news to you. The majority is from references, dependencies I have to get my stuff running. Most of the libraries we use are from NPM (node package manager). That's the repository for node moduls. We take a look into this shortly. The folder where all the stuff is has the name node_modules. What's in it:
30.107 files, 4.233 folders
So we're pretty much down by 60%, but it's still way to many. So let's exclude more:
So what we get:
| Part | Files | Folder |
|---|---|---|
| Node Rep | 30107 | 4233 |
| Dist | 1987 | 170 |
| Demo Reps. | 13569 | 1607 |
| ----------- | ------- | -------- |
| Total | 45690 | 6010 |
So, finally, my own stuff is 1.132 files in 313 folders. That's still a lot, but not a much as I don't can't handle it.
So, start creating a folder where all the files go. Let's call it like the project: 'svogv' (you choose another name for your project, of course).
Somewhere on my disc I type:
$ mkdir svogv
The prompt I use here is $ like most *nix systems have. I remove the concrete path and you can do same on Windows as well. I recommend to choose a short start point, such as C:\App>, too.
Then go into this:
$ cd svogv
Once you're here it's boring empty. So we need some tools to get stuff in here. The first set of tools is part of the JavaScript ecosystem:
And here is how to setup node.
Next, Git is required. Check first if it is already present on your system:
$ git --version
If not, install according your operating system.
Then, an account on Github is required. Finally, the package will be hostet on Github and partially distributed to NPM. While there are alternative ways, such as Bitbucket, I recommend Github for beginners because the sheer amount of literature, support, websites, and answers on Stack Overflow is overwhelming. And it is, last but not least, easy enough to get the point in short time.
So, go to GitHub, and set up an account.
Now, we're set and the journey into the package creation can begin. The package is about Angular 2 components and I assume that you have at least a basic interest in Angular 2 stuff. So apart from talking about the package structure I'm going to explain all the component stuff as well.
You can continue reading here:


TITLE
menu
voice_over_off
record_voice_over
skip_previous
pause
play_arrow
stop
skip_next
2x
1.75x
1.5x
1.25x
1x
0.75x
0.5x
0.35x
0.25x
Popup
Skip
Caption
chevron_left
chevron_right
bookmark
bookmark_border
Please enter the publication's passphrase:
passphrase
Hint:
-
OK


--- layout: newsstory title: News Story match: Bath 1 Yeltz 3 ---
Two on the trot. After stuffing bottom-placed Ashford away on Saturday, our away form continues to improve as we beat Bath 3-1 at Twerton Park. All three goals were scored by Steve Pie-arce before they got a late consolation goal, and the three points have put us back up to 5th place in the table. I reckon if we win our last 12 league games we'll do it :-)


Cloud based distributed TLC
1 Motivation
-
Move long running model checking off local machine into the cloud (Short running models not ideal because instance spin-up time is approximately five minutes)
-
Maximize cloud instance resource utilization by providing fine-tuned TLC parameter pre-sets optimized for the given cloud instance type
-
Minimizes costs by terminating cloud instances immediately after TLC model checking has ended
-
Unless email delivery of model checking result fails (n this case the machine remains running for the user to pick up the result manually)
-
User then has to terminate the instance manually!
2 Warning
Using cloud based TLC launches compute instances at your cloud provider which may incur costs. While the cloud based distributed TLC tries to minimize costs by terminating instances as soon as possible, do not rely on it. Always check if cloud instances have been correctly terminated.
3 Limitation
-
Only supports two cloud providers (Amazon EC2 and Microsoft Azure) as of now
-
On Azure, the VM instances just stoppes but does not deallocate automatically. Please make sure to manually shutdown the VM instance after TLC finishes.
-
Runs TLC in non-distributed mode on a single cloud instance only as of now
-
Only a single instance type per cloud (m4.2xlarge and D14) supported as of now
-
Cloud based distributed TLC cannot recover from a checkpoint
4 Usage
-
Set AWS access key and secret as environment variables prior to launching the Toolbox. See the example with dummy keys below.
-
export AWS_ACCESS_KEY_ID=AKIA7D89HCLJKHZASD7F
export AWS_SECRET_ACCESS_KEY=6FDASAIG7DAS976TYDKHCGQAS5D\FA77
Alternatively for Azure, after the one-time creation and installation of a certificate, set:
-
export AZURE_COMPUTE_CREDENTIALS=ThePasswordUsedForTheCertificate (The "password" supplied during certificate creation)
export AZURE_COMPUTE_IDENTITY=/absolute/path/to/the/azure.p12
export AZURE_COMPUTE_SUBSCRIPTION=YourAzureSubscriptionId (Extract the ID from the Azure portal under "Subscriptions")
-
Create a specification and a model
-
Open your model in the model editor
-
Expand the “How to run” section of the “Model Overview” page
-
Select “aws-ec2” from the “Run in distributed mode” drop down
-
Enter an email address into “Result mailto address” at which you want to receive the model checking result
-
Click “Run TLC” to start model checking in the cloud and wait for the start-up to finish (it takes approximately five minutes to set-up the cloud instance)
-
The Toolbox switches to the “Model checking results” page and opens a progress dialog indicating the state of cloud instance provisioning
-
After provisioning the cloud instance, the Toolbox prompts the user to open a website in a browser.
This website is hosted on the cloud instance and shows the TLC process output as well as runtime statistics similar to Toolbox stats
-
Walk out and enjoy the weekend while TLC is busy checking
-
On Monday expect to find an email in your inbox
-
Save MC.out file somewhere to disc
-
Switch back to the Toolbox and open the model editor
-
Open the “Model Checking Results” page
-
Import the MC.out from disc
-
Voilá
5 Common problems


|
To contact us with problems or questions, please post to this repository's GitHub issue reporting system (requires a GitHub user account).
Overview
SimpleITK is a simplified
programming interface to the algorithms and data structures of the
Insight Segmentation and Registration Toolkit (ITK).
It supports bindings for multiple programming languages including C++, Python,
R, Java, C#, Lua, Ruby and TCL. Combining SimpleITK's Python binding with the
Jupyter notebook web application creates an
environment which facilitates collaborative development of biomedical image
analysis workflows.
In this course, we will use a hands-on approach utilizing Python based SimpleITK
Jupyter notebooks to explore and experiment with various toolkit features.
Participants will follow along using their personal laptops, enabling them to
explore the effects of changes and settings not covered by the instructor. We
start by introducing the toolkit's two basic data elements, Images and
Transformations. We then combine the two, illustrating how to perform image
resampling. Having mastered the concept of resampling, we show how to use
SimpleITK as a tool for image preparation and data augmentation for deep
learning via spatial and intensity transformations. We then turn our focus to
the toolkit's registration framework, exploring various components including:
optimizer selection, the use of linear and deformable transformations, the
embedded multi-resolution framework, self-calibrating optimizers and the use of
callbacks for registration progress monitoring. Finally, we illustrate the use
of a variety of SimpleITK filters to implement an image analysis workflow that
includes segmentation and shape analysis.
Beyond the notebooks used in this course you can find the main SimpleITK notebooks repository on GitHub.
Organizers
- Bradley C. Lowekamp, Medical Science & Computing and National Institutes of Health.
- Ziv Yaniv, Medical Science & Computing and National Institutes of Health.
Prerequisites
If you encounter problems or have questions, please post using this repository's
GitHub issue
reporting system (requires a GitHub user account).
In this course we will use the Anaconda Python distribution. Please follow the
instructions below to setup the environment we will use during the course. All
commands below are issued on the command line (Linux/Mac - terminal,
Windows - Anaconda Prompt).
-
Download and install the Fiji image viewer. This is the default image viewer used by SimpleITK:
-
On Windows: Install into your user directory (e.g. C:\Users\[your_user_name]\).
-
On Linux: Install into ~/bin/ .
-
On Mac: Install into /Applications/ .
-
Download and install the most
recent version of Anaconda for your operating system. We assume it is installed
in a directory named anaconda3. Regardless of the installer, we will be working
with Python 3.6
-
- On Windows: open the Anaconda Prompt (found under the Anaconda3 start menu).
- On Linux/Mac: on the command line
source path_to_anaconda3/bin/activate base
-
Update the root anaconda environment and install the git version control system into it.
conda update conda
conda update anaconda
conda install git
-
Clone this repository:
git clone https://github.com/SimpleITK/SPIE2019_COURSE.git
-
Create the virtual environment containing all packages required for the course:
conda env create -f SPIE2019_COURSE/environment.yml
-
Activate the virtual environment:
- On Windows: open the Anaconda Prompt (found under the Anaconda3 start menu)
activate sitkpySPIE19 .
- On Linux/Mac: on the command line
source path_to_anaconda3/bin/activate sitkpySPIE19
-
Go over the setup notebook (requires internet connectivity). This notebook checks the environment setup and downloads
all of the required data.
cd SPIE2019_COURSE
jupyter notebook setup.ipynb
Program
- [1:30PM- 2:00PM] history and overview of SimpleITK. [ppt: setup and schedule, history, overview]
- [2:00PM- 2:40PM] spatial transformations [notebook html], images and resampling [notebook html].
- [2:40PM - 3:00PM] data augmentation for deep learning [notebook html].
- [3:00PM - 3:30PM] coffee break []
- [3:30PM - 4:40PM] basic registration [notebook html], advanced registration [notebook html].
- [4:40PM - 5:15PM] segmentation image analysis workflow [notebook html].
- [5:15PM - 5:30PM] notebook development and testing, concluding remarks [ppt: development].
Supplementary Material
For those interested in reading more about SimpleITK (Python and beyond):
-
R. Beare, B. C. Lowekamp, Z. Yaniv, "Image Segmentation, Registration and Characterization in R with SimpleITK", J Stat Softw, 86(8), 2018.
-
Z. Yaniv, B. C. Lowekamp, H. J. Johnson, R. Beare, "SimpleITK Image-Analysis Notebooks: a Collaborative Environment for
Education and Reproducible Research", J Digit Imaging., 31(3): 290-303, 2018.
-
B. C. Lowekamp, D. T. Chen, L. Ibáñez, D. Blezek, "The Design of SimpleITK", Front. Neuroinform., 7:45., 2013.
|


--- layout: page title: Lean Prover Zulip Chat Archive permalink: archive/113488general/19801bigproof.html ---
I have a question for people who understand how Lean actually works. I had a very big proof that took forever to compile, and sometimes timed out. I broke that proof in two pieces, introducing a completely artificial lemma, statement how to go half way along the road. Now it's super fast. What's happening? I understand there is something called https://github.com/leanprover/lean/issues/1601 which tells me I cannot work interactively with big proofs. But I don't understand why it changes the non-interactive compilation time.
{% endraw %}


This time around, we'll separate the logic that manipulates our business object into a separate saga.
Our business customer flow is starting to look pretty nice. There's another flow helper in there, endsAt.
You'll notice our flow is starting our CreditCard saga. Additional arguments we specify here are passed to the saga's constructor. This saga's lifetime is bound to the flow and will end when the flow is ended.
Looking at CreditCard.js, you'll see the task of maintaining our business object is neatly separated into it's own saga. This is a powerful design that allows business objects to be seamlessly synchronised across multiple clients, both web and mobile, with Tribe.MessageHub.
Flows give us some neat flexibility in how we structure our handlers. Next, we'll combine our personal and business customer flows into a single flow.


ROptSpace: Matrix Reconstruction from a Few Entries
Matrix reconstruction, also known as matrix completion, is
the task of inferring missing entries of a partially observed matrix.
This package provides a method called OptSpace,
which was proposed by Keshavan, R.H., Oh, S., and Montanari, A. (2009)
<doi:10.1109/ISIT.2009.5205567> for a case under low-rank assumption.
| Version: |
0.2.0 |
| Imports: |
stats, Rdpack, utils |
| Published: |
2018-09-20 |
| Author: |
Kisung You [aut, cre] |
| Maintainer: |
Kisung You <kyou at nd.edu> |
| License: |
GPL (≥ 3) |
| NeedsCompilation: |
no |
| In views: |
MissingData |
| CRAN checks: |
ROptSpace results |
Downloads:
Reverse dependencies:
Linking:
Please use the canonical form
https://CRAN.R-project.org/package=ROptSpace
to link to this page.


A Presentation Where You Can Undo
Here's a slide.
Here's a slide too.
Here's a slide again.
Here's a bigger slide.
Wow, a 3D slide!
Well, not really. The slide isn't 3D. Just the visuals are.
You get the picture.
Let's just enjoy this nice wave.


Dxf2Svg converts Autodesk AutoCAD's defacto standard Drawing eXchange Format (DXF) into a Scaleable Vector Graphic (SVG). It is a stand alone file format converter written in Java (available from Sun Microsystems Inc.).


{% extends 'indabom/base.html' %} {% block title %}Install{% endblock %} {% block head-title %}Install{% endblock %} {% block content %} {% load static %}
Don't want to use our hosted version? No problem, IndaBOM is open source. Developers, hackers, and makers can also install the underlying bill of materials product, called django-bom, locally onto your machine, or host it on your own web server.
Installation instructions are available on github, and to make things even easier, one of our awesome contributors, Tathagata, put together some videos to help you get started.
Can't get enough? Click here for an introduction, local usage, and more!
P.S. If you start tweaking things, we'd love to know! It's possible the whole IndaBOM community could benefit from your ideas! Shoot us an e-mail or just submit a pull request!


This is Yet another megamenu for Bootstrap from Twitter.
Lightweight and pure CSS megamenu that uses the standard navbar markup and the fluid grid system classes from Bootstrap 4. Work for fixed and responsive layout and has the facility to include (almost) any Bootstrap elements.
This project is currently hosted on Github and is the sequel to Yamm
Markup
Reuse navbar markup and add class .yamm
at the top.
Then add your markup into the .dropdown-menu
Optionally use .yamm-content
to wrap content with padding.
.dropdown-item
is ommited to avoid default background and text color styling
 ...

 Dropdown

 ...

 ...
Grid Example
Fullwidth
By default every mega-dropdown will take the content size and is possible to add .yamm-fw
to .dropdown
to expand it fullwidth
Yamm works better with fullwidth menus.
 ...

 ...

 ...
More components
JavaScript
This code will prevent unexpected menu close when using some components (like accordion, forms, etc)
$(document).on('click', '.yamm .dropdown-menu', function(e) { e.stopPropagation() })


Execute a file of syntax on a batch of data files specified in a list or with a wild card
The file "Batch Reporting with IBM SPSS Statistics.pdf", which contains an expository article on usage of this command, is installed in the SPSSINC_PROCESS_FILES directory under the extensions directory. Start with that in learning to use this procedure.
To find that directory, run SHOW EXT in a syntax window and look at the EXTPATHS EXENSIONS section.
SPSSINC PROCESS FILES
FILELIST="input data file specification" or INPUTDATA="directory wildcard specification"*
SYNTAX="syntax file to apply to each input file"
BEFORESYNTAX="syntax file to apply before starting iterations"
AFTERSYNTAX="syntax file to apply after all iterations are complete"
SEARCH=NO** or YES
OUTPUTDATADIR="directory for data output"
OUTPUTDATATYPE=SAV or XLS or CSV
OUTPUTVIEWERDIR="output directory for Viewer output"
OUTPUTVIEWERTYPE=SPV or XLS or XLSX or PDF or HTML or PPT or TXT or DOC
LOGFILE="log file"
LOGFILEMODE=APPEND** or OVERWRITE
MACRONAME="root name for macros and file handles"
CONTINUEONERROR=YES** or NO
CLOSEDATA=YES** or NO
CLOSEVIEWER=YES** or NO
/MACRODEFS PARM1=“text” PARM2=“text” … PARM5=“text”
QPARM1=“text” QPARM2=“text” … QPARM5=“text”
* Required
** Default
SPSSINC PROCESS FILES /HELP displays this help and does nothing else.
SPSSINC PROCESS FILES DIRECTORY="c:/mydata/*.sav"
SYNTAX="c:/myjobs/mysyntax.sps" LOGFILE="c:/myjobs/log.txt"
OUTPUTVIEWERDIR="c:/myoutput" OUTPUTVIEWERTYPE=PDF
/MACRODEFS PARM1="x > 10".
INPUTDATA can specify a directory to process and, optionally, a file pattern.
For example,
c:/mydata/x*.sav
would process all the sav files in directory c:\mydata whose names start with the letter x.
Alternatively, FILELIST specifies processing all of the files listed in the indicated file.
In order to use a file to specify the files that should be processed, create a file
with one name per line including the path to the file. The names in the file must be enclosed
in double quotes ("). Anything following on the line is ignored.
Blank lines and lines starting with # are ignored.
The SPSSINC SPLIT DATASET command can produce a file in the correct format for FILELIST.
Either INPUTDATA or FILELIST must be specified but not both.
The file of syntax specified in SYNTAX will be executed for each matching input file.
It should include the appropriate command to read the data file or other inputs using
the file handles or macros defined to refer to the input file and various output
locations. It is a common error to forget to open the input file in the syntax
file being applied.
It should also include code to save the output data and viewer files as needed. SPSSINC PROCESS FILES does not automatically save these files.
The file handles are as follows.For a SAV file you could read the data with the command
GET FILE="JOB_INPUTFILE".
Here is a complete example of a SYNTAX file that saves an Excel file for each input file from the Viewer. It uses the input file name base name for titles.
TITLE !JOB_DATAFILEROOT.
GET file="JOB_INPUTFILE".
TEXT "The data for this report come from the"
"OECD Programme for International Student Assessment, 2018.".
* Custom Tables.
CTABLES
/TABLE CNTRYID BY TC198Q01HA [COUNT ROWPCT.COUNT]
/CATEGORIES VARIABLES=CNTRYID TC198Q01HA ORDER=A KEY=VALUE
EMPTY=EXCLUDE MISSING=EXCLUDE
/TITLES TITLE='Country = ' !JOB_DATAFILEROOT.
GRAPH
/BAR(SIMPLE)=COUNT BY TC198Q01HA.
OUTPUT EXPORT
/!JOB_OUTPUTVIEWERTYPE DOCUMENTFILE='JOB_OUTPUTVIEWER'.
Macros are defined with these same names except starting with ”!“. Additional macros are defined.
Using the OUTPUT EXPORT command or other output commands, each set of Viewer output could be exported as xlsx or
other formats.
OUTPUT EXPORT
/!JOB_EXPORTFILETYPE DOCUMENTFILE='JOB_EXPORTFILE'.
Macro text is quoted. Here is an example of code that might be used in the syntax file to export output to the OUTPUTVIEWERDIR as an Excel file using the data file rootname. The text !JOB or JOB is replaced by the root name specified in MACRONAME.
define !out () !quote(!concat(!unquote(!eval(!job_viewerdir)), "/", !unquote(!eval(!job_datafileroot)), ".xls"))
!enddefine.
output export /xls DOCUMENTFILE =!out.
Here is an example of reading a batch of Excel files and writing them as sav files with the same base name but extension sav.
define !out () !quote(!concat(!unquote(!eval(!JOB_OUTPUTDATADIR)),
!unquote(!eval(!JOB_DATAFILEROOT)),
".sav")) !enddefine.
GET DATA /TYPE=XLSX
/FILE=JOB_INPUTFILE
/SHEET=name 'Sheet1'
/CELLRANGE=full /READNAMES=on
/ASSUMEDSTRWIDTH=100.
SAVE OUTFILE=!out.
BEFORESYNTAX and AFTERSYNTAX can specify syntax files to be executed before or after any input files are processed. The before file will have all the file handles and macros as set for the first input file, and the after file will have these items as set for the last file processed. These files are typically used to initialize the iterations and clean up at the end of the job.
A serious error in BEFORESYNTAX always stops processing. The CONTINUEONERROR setting determines whether the AFTERSYNTAX file is executed if there is an error.
Instead of SYNTAX, SEARCH can be specified to search files according to parameters passed as !PARM1, !PARM2, and !PARM3. !PARM1 defines the search condition as a boolean expression as would be used with SELECT IF. !PARM2 is the id variable. !PARM3 is any other variables to be listed with the results. Either SYNTAX or SEARCH must be specified but not both.
If CLOSEDATA is YES, all data files are automatically closed after each syntax file invocation.
If CLOSEVIEWER is YES, all Viewer files are automatically closed after each syntax file invocation.
It may be convenient to use this procedure in combination with SPSSINC SPLIT DATASET, which can break up a dataset according to the values of a splitting variable.
The JOB_OUTPUTDATADIR
file handle and !JOB_OUTPUTDATADIR
macro
identify the data output location specified in PROCESS FILES.
Viewer output can be saved either in a separate spv or other format file for each data file or, if CLOSEVIEWER=NO, the entire Viewer contents are available after the command completes .
LOGFILE specifies a file that will contain a log of actions carried out by PROCESS FILES (not what happens in the invoked syntax), including an entry if the syntax generates a serious error (level 3 or higher).
LOGFILEMODE can be APPEND or OVERWRITE. The file is written in Unicode (utf-8).
If a serious error occurs while executing the syntax file, you can choose whether to continue processing with the next data file or to stop processing any further files by specifying CONTINUEONERROR = YES or NO. If possible, the output data and Viewer files will still be written for the data file that caused the error even if stopping is specified.
MACRODEFS can be used to define macros that can be referenced in the syntax file that is repeatedly executed. Each macro name matches the PARMn or QPARMn parameter with a preceding !. These macros are defined after the macros described above each time a file is processed, so they can refer to the stadard macro values. The definition will be wrapped in quotes and hence be interpreted as a literal if QPARM is used. The parameters must always be quoted in the MACRODEFS subcommand.
If a macro is not explicitly defined, it will automatically be defined as empty.
Example: with this syntax
/MACRODEF PARM1="education >= 12 and education <=16" PARM2="educ age"
the syntax job could contain this code to do frequencies on qualifying data.
SELECT IF !PARM1.
FREQ !PARM2.
This construct could also be used to search for a particular id, say, across files
/MACRODEF PARM1="ID = 12345" PARM2 = "ID"
and, in the syntax file,
SELECT IF !PARM1.
FREQ !PARM2.
But for a literal, say, as a table title, you would use QPARM:
CTABLES ... /TITLES TITLE=!QPARM1.
... /MACRODEFS QPARM1="The Title".
In these examples, you should use CONTINUEONERROR=YES, since the SELECT will result in 0 cases in the data if none meet the criteria.
A complete version of a search syntax file is included with this package.
If any of the file or directory specifications to this command use SPSS file handles, these will be expanded properly in Statistics version 18 or later, but in earlier versions, they will not work with directory specifications or where a wildcard expression is allowed.
© Copyright IBM Corp. 1989, 2023


This
 element is using h800
This
 element is using h700
This
 element is using h600
This
 element is using h500
This
 element is using h400
This
 element is using h300
Standard link
Link with descenders:jump quickly!

- First list item
- Second list item
- Third list item

- First list item
- Second list item
- Third list item

- First definition
- Definition description
- Definition description
- Second definition
- Definition description
- Third definition

- First list item
- Second list item
- Third list item
- Nested lists as well
- Nested lists as well
- Nested lists as well
- Fourth list item
- Nested ordered lists as well
- Nested ordered lists as well
- Nested ordered lists as well

- First list item
- Second list item
-
Third list item
- Nested lists as well
- Nested lists as well
- Nested lists as well
-
Fourth list item
- Nested ordered lists as well
- Nested ordered lists as well
- Nested ordered lists as well

- First definition
- Definition description
- Definition description
- Second definition
- Definition description
- Third definition
-
Paragraphs should be fine when followed by
- or ordered lists
- like this one
Caption
| Item |
Qty |
Price |
| Apple |
3 |
$5.42 |
| Orange |
6 |
$4.60 |
| Banana |
12 |
$3.79 |

 with
All that is gold does not glitter, not all those who wander are lost;
The old that is strong does not wither, deep roots are not reached by
the frost.
J.R.R. Tolkien, The Fellowship of the Ring.
Inline quotes with <q> and
The old addage{' '}
Be yourself; everyone else is already taken.
Oscar Wilde is very fitting.
Inline
Simply paste {`body { font-weight: bold; }`}
into your file.
<time>
Can you move that meeting on
to the pub?
<dfn> and
Recursion: the repeated application of a recursive procedure or
definition.See also: recursion.
TheWBlibrary provides a typography
component — make sure you put a title on your{' '}
 elements.
 and
Ice cream
sucks is awesome!
 and
These elements1should still2have default styling3as well4
Keyboard commands with
Simply press Alt + F4 to preview your changes.
Variables in a mathematical expression with <var>
A simple equation:
x =
y + 2
 text
Only use this size text if there is a good rationale.