Basscss is built with Rework. Rework is a preprocessor based on the CSS specification and a flexible plugin architecture.
Create a source CSS file to import the Basscss modules.
{% highlight 'css' %} @import "basscss-base"; @import "basscss-utilities"; {% endhighlight %}
To import custom files within the same folder, use ./
to indicate the current folder.
See Rework NPM for more details on usage.
{% highlight 'css' %} @import "basscss-base"; @import "basscss-utilities"; @import "./buttons.css"; {% endhighlight %}
Set CSS variables after the imports to alter Basscss’s default values.
{% highlight 'css' %} @import "basscss-base"; @import "basscss-utilities"; :root { --font-family: Georgia, serif; } {% endhighlight %}
To use variables as property values, follow this syntax:
{% highlight 'css' %} .button-red { color: white; background-color: var(--red); } {% endhighlight %}
To set an inline fallback value, place it after the variable name separated by a comma.
{% highlight 'css' %} .button-red { color: white; background-color: var(--red, #f00); } {% endhighlight %}
See Rework Vars for more details on usage.
To adjust breakpoints for the default media queries, set custom media queries after the imports. See Rework Custom Media for more details on usage.
{% highlight 'css' %} @import "basscss-base"; @import "basscss-utilities"; @custom-media --breakpoint-sm (min-width: 32em); {% endhighlight %}
To learn more about creating custom builds of Basscss, see Custom Builds.


REQUEST: A menu to show the current hotkeys configuration
Add preference to suppress rotating cube animation when switching users
Giving stars modifies the volume of the track in iTunes 7.0.1
F.R.: Window Level Selection for the Floater.
REQUEST: Fade in/out volume on play/pause
REQUEST: Equalizer hot key
REQUEST: Option to omit track title (song name) from Floater
REQUEST: "Recent albums" in the menu (not just recent tracks)
CRASH: Dies in -[NSThread(WOBase) forwardInvocationCallback:]
REQUEST: Bring iTunes To Front hotkey should open iTunes window


|
MiniBot
2019/2020
|
Public Member Functions | |
| SubsystemLooper () | |
| void | register (LoopableSubsystem subsystem) |
| Register a LoopableSubsystem with the looper. More... | |
| void | update () |
| Execute the periodic functions for each subsystem. More... | |
| void | outputTelemetry () |
| Outputs telemetry data from the Looper and all subsystems to SmartDashboard. More... | |
| Public Member Functions inherited from frc.common.loopers.Looper | |
| Looper () | |
| void | start (double period) |
| void | stop () |
Private Attributes | |
| RobotLogger | logger = RobotLogger.getInstance() |
Additional Inherited Members | |
| Protected Member Functions inherited from frc.common.loopers.Looper | |
| abstract void | update () |
| Protected Attributes inherited from frc.common.loopers.Looper | |
| Notifier | thread |
| double | period |
Definition at line 11 of file SubsystemLooper.java.
| frc.common.loopers.SubsystemLooper.SubsystemLooper | ( | ) |
Definition at line 18 of file SubsystemLooper.java.
| void frc.common.loopers.SubsystemLooper.outputTelemetry | ( | ) |
Outputs telemetry data from the Looper and all subsystems to SmartDashboard.
Definition at line 98 of file SubsystemLooper.java.
| void frc.common.loopers.SubsystemLooper.register | ( | LoopableSubsystem | subsystem | ) |
Register a LoopableSubsystem with the looper.
| subsystem | LoopableSubsystem to register with the looper |
Definition at line 27 of file SubsystemLooper.java.
| void frc.common.loopers.SubsystemLooper.update | ( | ) |
Execute the periodic functions for each subsystem.
MUST BE RUN MANUALLY
Definition at line 38 of file SubsystemLooper.java.
|
private |
Definition at line 12 of file SubsystemLooper.java.


Overview
Your order of $450.00 or more gets free standard delivery.
- Standard delivered 5-7 Business Days
- Express delivered 3-5 Business Days
Orders are processed and delivered Monday - Friday (excluding public holidays) Vaxim Members enjoy free returns.
Confidential information
Vaxim accepts the following payment methods:
- Credit Card: Visa, MasterCard, Discover, American Express, JCB, Visa Electron. The total will be charged to your card when the order is shipped.
- Vaxim features a Fast Checkout option, allowing you to securely save your credit card details so that you don't have to re-enter them for future purchases.
- PayPal: Shop easily online without having to enter your credit card details on the website.Your account will be charged once the order is completed. To register for a PayPal account, visit the website paypal.com.
Orders are processed and delivered Monday - Friday (excluding public holidays) Vaxim Members enjoy free returns.


Established with DAVV i.e. from May 1964.
Present Dean Student's Welfare -
Dr. Laxmikant Tripathi (From August 2015)
The Office of Dean, Student's Welfare look after the welfare of student with active support from the elected representative of the student, faculty and administration.
VISION
Emerge as a premier higher learning institution by creating, advancing and disseminating knowledge with collective wisdom, through value imbued holistic education for peaceful, sustainable and humane society.
MISSION
Through its student welfare programme, the college aims to help its students to develop:
A sense of enjoyment and satisfaction from learning an ability to communicate effectively.
A coherent set of values to guide behavior.
A sense of personal and social responsibility for their actions and decisions, a sense of personal dignity and worth.
Self reliance and a sense of cultural identity.
A feeling of belonging to the wider community a caring attitude towards others and
An ability to form satisfying and stable relationship.
A college, co-operating with parents, can work toward realizing these aims through programmes and support services in 3 major areas:
General measures to promote the personal development of students, preventative measures to ensure the safety and well being of students.
Remedial measures to overcome specific difficulties
Contact Us
Department of Student Welfare
Nalanda Campus, R. N. T., Rabindranath Tagore Marg, Chhoti Gwaltoli, Indore, Madhya Pradesh, Pin-452001


Men in Black - Unearthly Delights (c) Homer Yen
Did you ever wonder if Dennis Rodman was actually from this planet? Or if Sylvester Stallone was some kind of weird extra-terrestrial? I used to think that about my 7th grade English teacher, Ms. Carey. But after seeing this movie, they may have confirmed my suspicions.
As the story goes, at any time, there are over a thousand aliens living among us here on Earth. The Men in Black (MiB) are the watchdogs that oversee the cosmic citizens, guardians of our beloved planet from nasty-tempered aliens, and secret service to the stars. Based in New York City (where weird is the norm), the MiB organization gives human form to our space-faring emigrants so that they may walk and live among us unnoticed. But to enforce the laws of Earth, the MiB carry weapons that are powerful enough to meet or exceed destruction quotas in one single blast. They carry other-worldly technology to erase people's short-term memory when common folk see the MiB in action. And their best leads on cosmic things-gone-awry are the supermarket tabloids.
Little do we know that there are much stronger battles of good v. evil going on in the depths of space. One of the aliens-as-human on this planet is an important diplomat that is carrying something very precious. It holds the 'key', literally, to universal peace. A giant cockroach-like alien soon arrives on the planet and steals this 'key'. In the wrong alien hands (flippers? mandibles? tentacles?), it can be used as a weapon. Therefore, it must be recovered and returned to it's rightful owners. Otherwise, to ensure universal safety, Earth will be destroyed, along with the 'key'. Now, it's the MiB who must prevent this catastrophe. The MiB agents on the case are "K", played by Tommy Lee Jones. He is crustier than burnt toast and even more serious than Al Gore. The stars in the sky no longer spark wonder in his eyes. He is accompanied by a flippant rookie, "J", played by Will Smith.
But, despite this shoot-em-up, protect-Earth-from-destruction premise, this is nothing at all like a typical summer action movie. And, this isn't an Independence Day knockoff. Rather, this is a stylishly offbeat sci-fi comedy that pokes fun at what the government always denies Í that there are real aliens that live here, and that the government does its darndest to cover them up. But to give it some sense of excitement and to keep it within the parameters of the summer movie recipe, there must be some kind of earth-hangs-in-the-balance scenario.
Yet, this movie is very appealing. The abundance of wierdness (talking aliens, pee-wee atomizers, a mortician who 'lives' for her work, and lots of yucky bugs and slime-splattering galore), is played straight, like as if this were normal (of course, we are in NYC). It gives it a deadpan feel, which makes it all the more funnier and odder. Jones plays the venerable seen-it-all agent with seriousness and maturity. Smith is likeable and makes a great comic partner to Jones' straight man routine. They click like Dorothy's ruby red shoes. The look and feel of the movie is made even better with direction from Barry Sonnenfeld (The Addam's Family). This guy has a knack for 'gothic' comedy, and successfully transfers his macabre sense of humor onto the screen. And, an appropriate dose of special effects helps to bolster the oddness of their task without diverting attention from the human actors. The story moves well, and before you know it, the end credits are already rolling! The result is 100 minutes worth of fun in the form of Ewwwws and Blechhhs, Aaaahhhs and Wows. Let the Men in Black protect and color your world.
Grade: B+
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


@import gospeak.core.domain.CommonCfp @import gospeak.web.pages.published.cfps.routes.CfpCtrl @import gospeak.web.utils._ @(cfp: CommonCfp)(implicit req: UserAwareReq[AnyContent])


--- layout: minimal title: "About Me" permalink: /about/index.html description: "and what I like to do..." ---
I'm Devon, and I'm currently a Software Engineer at Apptio. I graduated from Cal Poly, San Luis Obispo in December 2018 with a B.S. in Computer Science. I also ran track and field and cross country at Cal Poly from 2014-2017.
When I'm not writing code, I love traveling to as many places as possible, running, skiing, playing guitar, playing chess, and all things Chelsea FC.
My professional background lies in web application development, primarily with backend services. I really enjoy this work, but I have so many other areas I would like to explore further. I’m devoting time now to personal projects to improve my understanding of Angular and other frontend frameworks, and will be gracefully deploying them soon.
I'm passionate about developing beautiful software, and I love learning about best practices that come along with each tool--though I still have lots to learn. This passion has given me interest in DevOps tools and procedures that keep the build process as simple as possible for devs. I’ve lead a project to integrate Docker into my team’s workflow, and have aspirations to learn about Jenkins/Chef and other elements of the CI/CD pipeline.


TUMBLEWEEDS (Fine Line) Starring: Janet McTeer, Kimberly J. Brown, Jay O. Sanders, Gavin O'Connor, Laurel Holloman, Lois Smith. Screenplay: Gavin O'Connor and Angela Shelton. Producer: Gregory O'Connor. Director: Gavin O'Connor. MPAA Rating: PG-13 (profanity, adult themes) Running Time: 100 minutes. Reviewed by Scott Renshaw.
Sometimes there is no better demonstration of a concept poorly executed than the same concept well executed. Take TUMBLEWEEDS, for instance. It's the story of a Mary Jo Walker (Janet McTeer), a flighty and frequently irresponsible woman, and her smart-aleck adolescent daughter Ava (Kimberly J. Brown), who cringes at her mother's suspect decision-making. After the collapse of Mary Jo's latest bad marriage, mother and daughter jump in their car and flee their home for greener pastures, eventually landing in Southern California (the San Diego suburb of Starlight Beach, to be precise). Ava tries to make the best of the situation and find some stability, but Mary Jo simply jumps headlong into another questionable relationship, this time with gruff trucker Jack (co-writer/director Gavin O'Connor).
Sound familiar? It should -- the plot is virtually identical to that of the current Susan Sarandon/Natalie Portman film ANYWHERE BUT HERE. Of course there are elements unique to each central relationship, and there are idiosyncrasies in the personalities of the lead characters. Essentially, however, each film is the story of a mother/daughter friendship where the maturity hierarchy has been inverted, set against the backdrop of the California sun. TUMBLEWEEDS just happens to be a rich character study that feels genuinely human, instead of like a Hollywood construct.
It doesn't start out looking that way. The early scenes find Mary Jo and Ava flinging their clothes out the car window in an act of liberating littering, and tracking down an old high school classmate of Mary Jo's who turns out to be less dreamy than she had hoped. The wacky set pieces smack of contrivance, turning TUMBLEWEEDS into a low-budget variation on mainstream tales of female bonding. Even the hand-held camera work starts to seem more like a contrivance than a tool to evoke a sense of urgency The very grittiness O'Connor is aiming for becomes just another brand of glossiness.
Then, right about the time the Walkers arrive in Starlight Beach, something just clicks. Newcomer Kimberly J. Brown's performance as Ava, which had seemed too rough around the edges, develops into something intriguing and unique, not at all the typical mature-beyond-her-years, foul-mouthed-beyond-prime-time movie kid. Janet McTeer's brassy Mary Jo similarly blossoms into a character easy to understand but considerably harder to pin down. The relationship between the two shows all the twists, turns and knots of a complex mother/daughter pairing, but there's never a sense of manufactured conflict.
Brown and McTeer are both pretty darned good, but the reason TUMBLEWEEDS starts to work so well is that O'Connor doesn't force the story to rest entirely on their shoulders. ANYWHERE BUT HERE was a mother/daughter story in which the mother and daughter sometimes seemed to be the only two humans in the city; TUMBLEWEEDS develops the characters through their interactions with friends and co-workers. Ava's flirtations with a goofy classmate show an edgy side to her emerging sexuality; Mary Jo's scenes with Jack show her tendency to use men as a prop in her life, as well as her problems dealing rationally with disagreements (similarly shown in her abrupt departure from a mundane job). TUMBLEWEEDS gives its two central characters a context in which to operate, something sadly lacking in ANYWHERE BUT HERE. Verisimilitude isn't necessary for every kind of film, but it's fairly useful in a character study. In TUMBLEWEEDS, Gavin O'Connor effectively portrays a mother and daughter trying to find their way in the world, because he effectively portrays their world.
On the Renshaw scale of 0 to 10 tumblin' tumbleweeds: 7.
Visit Scott Renshaw's Screening Room http://www.inconnect.com/~renshaw/ *** Subscribe to receive new reviews directly by email! See the Screening Room for details, or reply to this message with subject "Subscribe".
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


Apple removes all vaping-related apps from its App Store
Apple also changed its app review guidelines to ban vaping apps
by Shawn KnightIn brief: Apple has never allowed the sale of vaping cartridges through the App Store and stopped accepting new vaping apps in June. The apps that were removed today were instead a mix of games, store apps and companion apps that allowed users to adjust various aspects of their vaping hardware such as heating and lighting.
Apple on Friday removed all 181 vaping-related apps from its digital online marketplace following a string of vaping-related illnesses and deaths.
In a statement issued to Axios, Apple said they’ve also updated their App Store Review Guidelines to reflect that apps encouraging or facilitating the use of such products are not permitted. Users that have previously downloaded vape-related apps will still be able to use them, Apple said.
The Centers for Disease Control and Prevention recently identified vitamin E acetate as a “chemical of concern” in the ongoing investigation into vaping-related illnesses and deaths.
Vitamin E acetate could have been added to products as a thickening agent, the CDC added. As of November 13, a total of 42 deaths have been confirmed in 24 states and the District of Columbia.
E-cigarette industry leader Juul earlier this month discontinued the sale of its mint-flavored vape products after it was found to be popular among teenage users.
Masthead credit: Vape pen by GrungeElfz


What is the current or last (if treatment has ended) daily dosage of FENTORA® (fentanyl buccal/
sublingual effervescent tablets) administered to this patient?
μg/day
For what condition was this patient prescribed FENTORA® (fentanyl buccal/sublingual effervescent tablets)?


would like to see some good builds for these not many out there . is it possible to make one with 4 at per round? _________________ History is the version of past events that people have decided to agree upon.
would like to see some good builds for these not many out there . is it possible to make one with 4 at per round?
You mean 4 base attacks? No, since all the classes are 3/4 BAB progression. You could emulate it with the Cleric's Divine Power spell though.  The ship is... drafty and damp; I complain but... nobody listens.
Give a look at this build click here. It gets 4 att per round from divine power (and that means the 4th att is at full AB). It is a dexer with ED and undispellable II for 50% concealment, with all the cleric buffs and damage increasing spells available to make up for the low base damage.
Cheers, Kail _________________ Dilegua notte Tramontate stelle Tramontate stelle All'alba vinceṛ Vinceṛ Vinceṛ


Hi, My name is Pawandeep Singh. I'm the owner of OnByte X, I will tech you Ethical Hacking, Programming & important information about Linux & Android. for Free. Are you ready, let me know.


--- title: Software in the IOT world date: '2015-07-05T07:58:30+05:30' tags: - misc tumblr_url: https://sureshshanmugam.com/post/123247602294/software-in-the-iot-world ---
More objects are becoming embedded with sensors and gaining the ability to communicate. The resulting information networks promise to create new business models, improve business processes, and reduce costs and risks.
Software to aggregate and analyze data, as well as graphic display techniques, must improve to the point where huge volumes of data can be absorbed by human decision makers or synthesized to guide automated systems more appropriately.


{{project.Description}}
Project Lead: {{project.Lead.Username}}
Project Key: {{project.ProjectKey}}
Priorities: {{project.PrioritiesAsString}}
| Issue | Description | Due Date | |
|---|---|---|---|
| {{issue.Title}} | {{issue.Description | limitTo: 15}}… | {{issue.DueDate | date:'dd-MMM-yyyy'}} | View Issue |


Game Rules
The object of Blackjack is to beat the dealer.
The player begins their turn with two cards, then chooses to either hit (space bar) or stay (return).
When the player hits, they receive a card and that card's value is added to their hand total.
Neither player nor dealer's cards may total more than 21. If that happens, it's called a bust.
If the player's first two cards = 21, they have a 'natural blackjack' and automatically win the hand.
The dealer must draw cards until they have a 17.
So, a good way to win in Blackjack is to make the dealer bust.
Remember that there are no near-misses in this game.
Good Luck!
Dealer
Play Again?
Quit
Players
Status


QRLJacker: Yandex passport
Now you have a local webserver hosting your QRLJacking payload, Here's some instructions to be done:
1. This is your always updated Yandex passport QR Code
2. Edit Index.html by adding your phishing page source code, style, resources, etc.. ("Index.html" located in the framework folder)
3. Point your victim to your phishing URL, Convince to scan the QR code and Bob is your uncle!


Unfortunately due to the nature of how it is programmed, your broswer won't be able to support running the app.
Consider trying one of the following browsers:
* Support is not strictly limited to browsers listed above, your browser's mileage may vary.


Example galleries:
- BMW 6 Series Gran Turismo (25 photos) Source: Carsbase.com
- Body painting festival (50 photos) Source: Bodypaintingx.com
- Cute kittens (100 photos) Source: Warrenphotographic.co.uk
- Le Tour de France 2017 riders (220 photos) Source: Letour.fr


<IP_ADDRESS>. Request Unit Data Creation Tool Installation Guide¶
This section describes how to install the Request Unit Data Creation Tool.
<IP_ADDRESS>.1. Prerequisites¶
The following prerequisites must be met to use this tool.
- The following tools have been installed.
- Java
- Maven
- The project is managed by Maven.
- HTML file must be associated with the browser.
- Browser proxy setting must exclude localhost.
<IP_ADDRESS>.2. Method of provision¶
This tool is provided in the following jar.
- nablarch-testing-XXX.jar
- nablarch-testing-jetty6-XXX.jar (for Java 8 and earlier versions)
- nablarch-testing-jetty9-XXX.jar (for Java 11 and later versions)
Therefore, make sure that the following descriptions are included in the dependencies element of pom.xml.
<dependencies>
<!-- omit -->
<dependency>
<groupId>com.nablarch.framework</groupId>
<artifactId>nablarch-testing</artifactId>
<scope>test</scope>
</dependency>
<!-- For use with Java 8 or earlier versions -->
<dependency>
<groupId>com.nablarch.framework</groupId>
<artifactId>nablarch-testing-jetty6</artifactId>
<scope>test</scope>
</dependency>
<!-- For use with Java 11 or later versions -->
<dependency>
<groupId>com.nablarch.framework</groupId>
<artifactId>nablarch-testing-jetty9</artifactId>
<scope>test</scope>
</dependency>
<!-- omit -->
</dependencies>
Execute the following command in the project directory to download the jar file.
mvn dependency:copy-dependencies -DoutputDirectory=lib
Place the following files in the same directory as project pom.xml.
<IP_ADDRESS>.3. Integration with Eclipse¶
This tool can be launched from Eclipse with the following settings.
<IP_ADDRESS>.3.1. Configuration Screen Startup¶
From the toolbar, select Window → Preference. Select General → Editors → File Associations from the left pane, select * .html from the right pane and click the Add button.
<IP_ADDRESS>.3.2. External program selection¶
Select External Program from the radio button and click the Browse button.
<IP_ADDRESS>.3.3. Select batch file (shell script) for startup¶
Select the batch file (httpDump.bat) for Windows, and the shell script (httpDump.sh) for Linux.
<IP_ADDRESS>.3.4. How from launch from HTML file¶
You can start the tool by right-clicking the HTML file from Package Explorer of Eclipse and opening the file with httpDump.


--- layout: default title: Federal Aviation Administration eFAST --- {% assign vehicle = site.data.contract-vehicles[1] %}


Package org.lwjgl.system.libc
Class Errno
- java.lang.Object
-
- org.lwjgl.system.libc.Errno
-
public class Errno extends java.lang.Object
Native bindings to errno.h.
-
-
Field Summary
Fields Modifier and Type Field and Description static int
E2BIG
Argument list too longstatic int
EACCES
Permission deniedstatic int
EAGAIN
No more processes or not enough memory or maximum nesting level reachedstatic int
EBADF
Bad file numberstatic int
EBUSY
Device or resource busystatic int
ECHILD
No spawned processesstatic int
EDEADLK
Resource deadlock would occurstatic int
EDEADLOCK
Same as EDEADLK for compatibility with older Microsoft C versionsstatic int
EDOM
Math argumentstatic int
EEXIST
File existsstatic int
EFAULT
Bad addressstatic int
EFBIG
File too largestatic int
EILSEQ
Illegal byte sequencestatic int
EINTR
Interrupted functionstatic int
EINVAL
Invalid argumentstatic int
EIO
I/O errorstatic int
EISDIR
Is a directorystatic int
EMFILE
Too many open filesstatic int
EMLINK
Too many linksstatic int
ENAMETOOLONG
Filename too longstatic int
ENFILE
Too many files open in systemstatic int
ENODEV
No such devicestatic int
ENOENT
No such file or directorystatic int
ENOEXEC
Exec format errorstatic int
ENOLCK
No locks availablestatic int
ENOMEM
Not enough memorystatic int
ENOSPC
No space left on devicestatic int
ENOSYS
Function not supportedstatic int
ENOTDIR
Not a directorystatic int
ENOTEMPTY
Directory not emptystatic int
ENOTTY
Inappropriate I/O control operationstatic int
ENXIO
No such device or addressstatic int
EPERM
Operation not permittedstatic int
EPIPE
Broken pipestatic int
ERANGE
Result too largestatic int
EROFS
Read-only file systemstatic int
ESPIPE
Invalid seekstatic int
ESRCH
No such processstatic int
EXDEV
Cross-device linkstatic int
STRUNCATE
String was truncated
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method and Description static int
errno()
Returns the integer variableerrno
, which is set by system calls and some library functions in the event of an error to indicate what went wrong.static int
getErrno()
Returns the integer variableerrno
, which is set by system calls and some library functions in the event of an error to indicate what went wrong.
-
-
-
Field Detail
-
EPERM
public static final int EPERM
Operation not permitted- See Also:
- Constant Field Values
-
ENOENT
public static final int ENOENT
No such file or directory- See Also:
- Constant Field Values
-
ESRCH
public static final int ESRCH
No such process- See Also:
- Constant Field Values
-
EINTR
public static final int EINTR
Interrupted function- See Also:
- Constant Field Values
-
EIO
public static final int EIO
I/O error- See Also:
- Constant Field Values
-
ENXIO
public static final int ENXIO
No such device or address- See Also:
- Constant Field Values
-
E2BIG
public static final int E2BIG
Argument list too long- See Also:
- Constant Field Values
-
ENOEXEC
public static final int ENOEXEC
Exec format error- See Also:
- Constant Field Values
-
EBADF
public static final int EBADF
Bad file number- See Also:
- Constant Field Values
-
ECHILD
public static final int ECHILD
No spawned processes- See Also:
- Constant Field Values
-
EAGAIN
public static final int EAGAIN
No more processes or not enough memory or maximum nesting level reached- See Also:
- Constant Field Values
-
ENOMEM
public static final int ENOMEM
Not enough memory- See Also:
- Constant Field Values
-
EACCES
public static final int EACCES
Permission denied- See Also:
- Constant Field Values
-
EFAULT
public static final int EFAULT
Bad address- See Also:
- Constant Field Values
-
EBUSY
public static final int EBUSY
Device or resource busy- See Also:
- Constant Field Values
-
EEXIST
public static final int EEXIST
File exists- See Also:
- Constant Field Values
-
EXDEV
public static final int EXDEV
Cross-device link- See Also:
- Constant Field Values
-
ENODEV
public static final int ENODEV
No such device- See Also:
- Constant Field Values
-
ENOTDIR
public static final int ENOTDIR
Not a directory- See Also:
- Constant Field Values
-
EISDIR
public static final int EISDIR
Is a directory- See Also:
- Constant Field Values
-
EINVAL
public static final int EINVAL
Invalid argument- See Also:
- Constant Field Values
-
ENFILE
public static final int ENFILE
Too many files open in system- See Also:
- Constant Field Values
-
EMFILE
public static final int EMFILE
Too many open files- See Also:
- Constant Field Values
-
ENOTTY
public static final int ENOTTY
Inappropriate I/O control operation- See Also:
- Constant Field Values
-
EFBIG
public static final int EFBIG
File too large- See Also:
- Constant Field Values
-
ENOSPC
public static final int ENOSPC
No space left on device- See Also:
- Constant Field Values
-
ESPIPE
public static final int ESPIPE
Invalid seek- See Also:
- Constant Field Values
-
EROFS
public static final int EROFS
Read-only file system- See Also:
- Constant Field Values
-
EMLINK
public static final int EMLINK
Too many links- See Also:
- Constant Field Values
-
EPIPE
public static final int EPIPE
Broken pipe- See Also:
- Constant Field Values
-
EDOM
public static final int EDOM
Math argument- See Also:
- Constant Field Values
-
ERANGE
public static final int ERANGE
Result too large- See Also:
- Constant Field Values
-
EDEADLK
public static final int EDEADLK
Resource deadlock would occur- See Also:
- Constant Field Values
-
EDEADLOCK
public static final int EDEADLOCK
Same as EDEADLK for compatibility with older Microsoft C versions- See Also:
- Constant Field Values
-
ENAMETOOLONG
public static final int ENAMETOOLONG
Filename too long- See Also:
- Constant Field Values
-
ENOLCK
public static final int ENOLCK
No locks available- See Also:
- Constant Field Values
-
ENOSYS
public static final int ENOSYS
Function not supported- See Also:
- Constant Field Values
-
ENOTEMPTY
public static final int ENOTEMPTY
Directory not empty- See Also:
- Constant Field Values
-
EILSEQ
public static final int EILSEQ
Illegal byte sequence- See Also:
- Constant Field Values
-
STRUNCATE
public static final int STRUNCATE
String was truncated- See Also:
- Constant Field Values
-
-
Method Detail
-
errno
public static int errno()
Returns the integer variableerrno
, which is set by system calls and some library functions in the event of an error to indicate what went wrong. Its value is significant only when the return value of the call indicated an error (i.e., -1 from most system calls; -1 orNULL
from most library functions); a function that succeeds is allowed to change errno.LWJGL note: This function cannot be used after another JNI call to a function, because the last error resets before that call returns. For this reason, LWJGL stores the last error in thread-local storage, you can use
Errno.getErrno()
to access it.
-
getErrno
public static int getErrno()
Returns the integer variableerrno
, which is set by system calls and some library functions in the event of an error to indicate what went wrong. Its value is significant only when the return value of the call indicated an error (i.e., -1 from most system calls; -1 orNULL
from most library functions); a function that succeeds is allowed to change errno.LWJGL note: This method has a meaningful value only after another LWJGL JNI call. It does not return
errno
from errno.h, but the thread-local error code stored by a previous JNI call.
-
-


I majored in Industrial Design with a Mathematics minor. I graduated as an Odyssey Fellow of University Honors - which means I spent a year on scholarship, traveling the world on a self-designed curriculum of glassblowing, metalsmithing, and woodworking.
During my Odyssey Fellowship, I lived in Italy as garzonetto (apprentice) for Italian glassmaster Giancarlo Signoretto.
I completed my high school education at the Albemarle MESA program, a laboratory-style magnate school for electronics, physics, and design.
I am currently the only industrial designer employed by WeWork. On the UX team, we design physical and digital member experiences based on deep data-informed human understanding.
In partnership with Autodesk & MASS Design, I researched applications of Rhino and Fusion 360 to robotically fabricate a procedurally designed structure. The Lo-Fab Pavilion was presented in Boston alongside Ai Weiwei's Circle of Zodiac Heads.
I managed a 3D print lab for students, operating and maintaining Stratasys Objet24 and Dimension printers.
I began my design career at Gropen, a nationally known signage company that offers services from design to installation. Initially hired as a workshop assistant, I was rehired the next year as a designer.
Sketching is my form of communication - I use a lightspeed drawing style to bring ideas to life during discussions.
My models fuse industrial and digital design, combining digital app interfaces, 3D printed models, and robotics into fully functional prototypes.
Later in the design process, I develop lifelike 3D renderings and produce renderings, animations, and video of your product in context.
I work in HTML5/CSS3, Python, and Lua. I use code to solve specific design problems - I've written application extensions for 3D modelling software, I coded this website, and I program video games in my spare time.


| Distribution Map | ||
|
Show by: Scientific Name Family Genus Species Source ShowHide Scientific Name Map Layers: |
||
|
[recordsPassed] specimens mapped [missingLatLongs] have no geo-reference [warning] |
||
Powered by: © 2000-2007 KE Software |
||
|
[layerNotes/id] [layerNotes/notes]
|


| Module | ActiveSupport::Multibyte::Unicode |
| In: |
/usr/lib/ruby/gems/1.8/gems/activesupport-3.0.0.beta4/lib/active_support/multibyte/unicode.rb
|
| NORMALIZATION_FORMS | = | [:c, :kc, :d, :kd] | A list of all available normalization forms. See www.unicode.org/reports/tr15/tr15-29.html for more information about normalization. | |
| UNICODE_VERSION | = | '5.1.0' | The Unicode version that is supported by the implementation | |
| HANGUL_SBASE | = | 0xAC00 | Hangul character boundaries and properties | |
| HANGUL_LBASE | = | 0x1100 | ||
| HANGUL_VBASE | = | 0x1161 | ||
| HANGUL_TBASE | = | 0x11A7 | ||
| HANGUL_LCOUNT | = | 19 | ||
| HANGUL_VCOUNT | = | 21 | ||
| HANGUL_TCOUNT | = | 28 | ||
| HANGUL_NCOUNT | = | HANGUL_VCOUNT * HANGUL_TCOUNT | ||
| HANGUL_SCOUNT | = | 11172 | ||
| HANGUL_SLAST | = | HANGUL_SBASE + HANGUL_SCOUNT | ||
| HANGUL_JAMO_FIRST | = | 0x1100 | ||
| HANGUL_JAMO_LAST | = | 0x11FF | ||
| WHITESPACE | = | [ (0x0009..0x000D).to_a, # White_Space # Cc [5] <control-0009>..<control-000D> 0x0020, # White_Space # Zs SPACE 0x0085, # White_Space # Cc <control-0085> 0x00A0, # White_Space # Zs NO-BREAK SPACE 0x1680, # White_Space # Zs OGHAM SPACE MARK 0x180E, # White_Space # Zs MONGOLIAN VOWEL SEPARATOR (0x2000..0x200A).to_a, # White_Space # Zs [11] EN QUAD..HAIR SPACE 0x2028, # White_Space # Zl LINE SEPARATOR 0x2029, # White_Space # Zp PARAGRAPH SEPARATOR 0x202F, # White_Space # Zs NARROW NO-BREAK SPACE 0x205F, # White_Space # Zs MEDIUM MATHEMATICAL SPACE 0x3000, # White_Space # Zs IDEOGRAPHIC SPACE ].flatten.freeze | All the unicode whitespace | |
| LEADERS_AND_TRAILERS | = | WHITESPACE + [65279] | BOM (byte order mark) can also be seen as whitespace, it‘s a non-rendering character used to distinguish between little and big endian. This is not an issue in utf-8, so it must be ignored. | |
| TRAILERS_PAT | = | /(#{codepoints_to_pattern(LEADERS_AND_TRAILERS)})+\Z/u | ||
| LEADERS_PAT | = | /\A(#{codepoints_to_pattern(LEADERS_AND_TRAILERS)})+/u |
| default_normalization_form | [RW] |
The default normalization used for operations that require normalization.
It can be set to any of the normalizations in NORMALIZATION_FORMS.
Example: ActiveSupport::Multibyte::Unicode.default_normalization_form = :c |
Compose decomposed characters to the composed form.
# File /usr/lib/ruby/gems/1.8/gems/activesupport-3.0.0.beta4/lib/active_support/multibyte/unicode.rb, line 166 166: def compose_codepoints(codepoints) 167: pos = 0 168: eoa = codepoints.length - 1 169: starter_pos = 0 170: starter_char = codepoints[0] 171: previous_combining_class = -1 172: while pos < eoa 173: pos += 1 174: lindex = starter_char - HANGUL_LBASE 175: # -- Hangul 176: if 0 <= lindex and lindex < HANGUL_LCOUNT 177: vindex = codepoints[starter_pos+1] - HANGUL_VBASE rescue vindex = -1 178: if 0 <= vindex and vindex < HANGUL_VCOUNT 179: tindex = codepoints[starter_pos+2] - HANGUL_TBASE rescue tindex = -1 180: if 0 <= tindex and tindex < HANGUL_TCOUNT 181: j = starter_pos + 2 182: eoa -= 2 183: else 184: tindex = 0 185: j = starter_pos + 1 186: eoa -= 1 187: end 188: codepoints[starter_pos..j] = (lindex * HANGUL_VCOUNT + vindex) * HANGUL_TCOUNT + tindex + HANGUL_SBASE 189: end 190: starter_pos += 1 191: starter_char = codepoints[starter_pos] 192: # -- Other characters 193: else 194: current_char = codepoints[pos] 195: current = database.codepoints[current_char] 196: if current.combining_class > previous_combining_class 197: if ref = database.composition_map[starter_char] 198: composition = ref[current_char] 199: else 200: composition = nil 201: end 202: unless composition.nil? 203: codepoints[starter_pos] = composition 204: starter_char = composition 205: codepoints.delete_at pos 206: eoa -= 1 207: pos -= 1 208: previous_combining_class = -1 209: else 210: previous_combining_class = current.combining_class 211: end 212: else 213: previous_combining_class = current.combining_class 214: end 215: if current.combining_class == 0 216: starter_pos = pos 217: starter_char = codepoints[pos] 218: end 219: end 220: end 221: codepoints 222: end
Decompose composed characters to the decomposed form.
# File /usr/lib/ruby/gems/1.8/gems/activesupport-3.0.0.beta4/lib/active_support/multibyte/unicode.rb, line 145 145: def decompose_codepoints(type, codepoints) 146: codepoints.inject([]) do |decomposed, cp| 147: # if it's a hangul syllable starter character 148: if HANGUL_SBASE <= cp and cp < HANGUL_SLAST 149: sindex = cp - HANGUL_SBASE 150: ncp = [] # new codepoints 151: ncp << HANGUL_LBASE + sindex / HANGUL_NCOUNT 152: ncp << HANGUL_VBASE + (sindex % HANGUL_NCOUNT) / HANGUL_TCOUNT 153: tindex = sindex % HANGUL_TCOUNT 154: ncp << (HANGUL_TBASE + tindex) unless tindex == 0 155: decomposed.concat ncp 156: # if the codepoint is decomposable in with the current decomposition type 157: elsif (ncp = database.codepoints[cp].decomp_mapping) and (!database.codepoints[cp].decomp_type || type == :compatability) 158: decomposed.concat decompose_codepoints(type, ncp.dup) 159: else 160: decomposed << cp 161: end 162: end 163: end
Unpack the string at grapheme boundaries. Returns a list of character lists.
Example:
Unicode.g_unpack('क्षि') #=> [[2325, 2381], [2359], [2367]] Unicode.g_unpack('Café') #=> [[67], [97], [102], [233]]
# File /usr/lib/ruby/gems/1.8/gems/activesupport-3.0.0.beta4/lib/active_support/multibyte/unicode.rb, line 90 90: def g_unpack(string) 91: codepoints = u_unpack(string) 92: unpacked = [] 93: pos = 0 94: marker = 0 95: eoc = codepoints.length 96: while(pos < eoc) 97: pos += 1 98: previous = codepoints[pos-1] 99: current = codepoints[pos] 100: if ( 101: # CR X LF 102: one = ( previous == database.boundary[:cr] and current == database.boundary[:lf] ) or 103: # L X (L|V|LV|LVT) 104: two = ( database.boundary[:l] === previous and in_char_class?(current, [:l,:v,:lv,:lvt]) ) or 105: # (LV|V) X (V|T) 106: three = ( in_char_class?(previous, [:lv,:v]) and in_char_class?(current, [:v,:t]) ) or 107: # (LVT|T) X (T) 108: four = ( in_char_class?(previous, [:lvt,:t]) and database.boundary[:t] === current ) or 109: # X Extend 110: five = (database.boundary[:extend] === current) 111: ) 112: else 113: unpacked << codepoints[marker..pos-1] 114: marker = pos 115: end 116: end 117: unpacked 118: end
Detect whether the codepoint is in a certain character class. Returns true when it‘s in the specified character class and false otherwise. Valid character classes are: :cr, :lf, :l, :v, :lv, :lvt and :t.
Primarily used by the grapheme cluster support.
# File /usr/lib/ruby/gems/1.8/gems/activesupport-3.0.0.beta4/lib/active_support/multibyte/unicode.rb, line 81 81: def in_char_class?(codepoint, classes) 82: classes.detect { |c| database.boundary[c] === codepoint } ? true : false 83: end
Returns the KC normalization of the string by default. NFKC is considered the best normalization form for passing strings to databases and validations.
# File /usr/lib/ruby/gems/1.8/gems/activesupport-3.0.0.beta4/lib/active_support/multibyte/unicode.rb, line 283 283: def normalize(string, form=nil) 284: form ||= @default_normalization_form 285: # See http://www.unicode.org/reports/tr15, Table 1 286: codepoints = u_unpack(string) 287: case form 288: when :d 289: reorder_characters(decompose_codepoints(:canonical, codepoints)) 290: when :c 291: compose_codepoints(reorder_characters(decompose_codepoints(:canonical, codepoints))) 292: when :kd 293: reorder_characters(decompose_codepoints(:compatability, codepoints)) 294: when :kc 295: compose_codepoints(reorder_characters(decompose_codepoints(:compatability, codepoints))) 296: else 297: raise ArgumentError, "#{form} is not a valid normalization variant", caller 298: end.pack('U*') 299: end
Re-order codepoints so the string becomes canonical.
# File /usr/lib/ruby/gems/1.8/gems/activesupport-3.0.0.beta4/lib/active_support/multibyte/unicode.rb, line 129 129: def reorder_characters(codepoints) 130: length = codepoints.length- 1 131: pos = 0 132: while pos < length do 133: cp1, cp2 = database.codepoints[codepoints[pos]], database.codepoints[codepoints[pos+1]] 134: if (cp1.combining_class > cp2.combining_class) && (cp2.combining_class > 0) 135: codepoints[pos..pos+1] = cp2.code, cp1.code 136: pos += (pos > 0 ? -1 : 1) 137: else 138: pos += 1 139: end 140: end 141: codepoints 142: end
Replaces all ISO-8859-1 or CP1252 characters by their UTF-8 equivalent resulting in a valid UTF-8 string.
Passing true will forcibly tidy all bytes, assuming that the string‘s encoding is entirely CP1252 or ISO-8859-1.
# File /usr/lib/ruby/gems/1.8/gems/activesupport-3.0.0.beta4/lib/active_support/multibyte/unicode.rb, line 227 227: def tidy_bytes(string, force = false) 228: if force 229: return string.unpack("C*").map do |b| 230: tidy_byte(b) 231: end.flatten.compact.pack("C*").unpack("U*").pack("U*") 232: end 233: 234: bytes = string.unpack("C*") 235: conts_expected = 0 236: last_lead = 0 237: 238: bytes.each_index do |i| 239: 240: byte = bytes[i] 241: is_ascii = byte < 128 242: is_cont = byte > 127 && byte < 192 243: is_lead = byte > 191 && byte < 245 244: is_unused = byte > 240 245: is_restricted = byte > 244 246: 247: # Impossible or highly unlikely byte? Clean it. 248: if is_unused || is_restricted 249: bytes[i] = tidy_byte(byte) 250: elsif is_cont 251: # Not expecting contination byte? Clean up. Otherwise, now expect one less. 252: conts_expected == 0 ? bytes[i] = tidy_byte(byte) : conts_expected -= 1 253: else 254: if conts_expected > 0 255: # Expected continuation, but got ASCII or leading? Clean backwards up to 256: # the leading byte. 257: (1..(i - last_lead)).each {|j| bytes[i - j] = tidy_byte(bytes[i - j])} 258: conts_expected = 0 259: end 260: if is_lead 261: # Final byte is leading? Clean it. 262: if i == bytes.length - 1 263: bytes[i] = tidy_byte(bytes.last) 264: else 265: # Valid leading byte? Expect continuations determined by position of 266: # first zero bit, with max of 3. 267: conts_expected = byte < 224 ? 1 : byte < 240 ? 2 : 3 268: last_lead = i 269: end 270: end 271: end 272: end 273: bytes.empty? ? "" : bytes.flatten.compact.pack("C*").unpack("U*").pack("U*") 274: end
Unpack the string at codepoints boundaries. Raises an EncodingError when the encoding of the string isn‘t valid UTF-8.
Example:
Unicode.u_unpack('Café') #=> [67, 97, 102, 233]
# File /usr/lib/ruby/gems/1.8/gems/activesupport-3.0.0.beta4/lib/active_support/multibyte/unicode.rb, line 68 68: def u_unpack(string) 69: begin 70: string.unpack 'U*' 71: rescue ArgumentError 72: raise EncodingError, 'malformed UTF-8 character' 73: end 74: end


doorbusters end in time's up
intermediate markdowns may have been taken
doorbusters end in time's up
doorbusters end in
doorbusters end in


class Crexcel::Worksheet
- Crexcel::Worksheet
- Reference
- Object
Overview
TODO Write doc for Worksheet class
Defined in:
crexcel/worksheet.crConstant Summary
-
SUPPORTED_TYPES =
{"string" => "s", "int" => "n"}
Instance Method Summary
-
#get(pos_x : Int32 | Int64, pos_y : Int32 | Int64)
Fetch the data at the given x, y postition
` first_worksheet = workbook.add_worksheet first_worksheet.write(0, 0, "hello") # Will write "hello" in A1 cell first_worksheet.get(0, 0) # => {pos: "A1", value: "hello", type: ""}
`
-
#get(position : String) : Datum
Fetch the data at the given string postition
` first_worksheet = workbook.add_worksheet first_worksheet.write(0, 0, "hello") # Will write "hello" in A1 cell first_worksheet.get("A1") # => {pos: "A1", value: "hello", type: ""}
`
-
#name : String
Get name of the worksheet
-
#write(position : String, str : Int32 | Int64 | Float64 | String, type_req : String)
Write data in the specified worksheet at specific location You can precise the type you want
-
#write(pos_x : Int32 | Int64, pos_y : Int32 | Int64, str : Int32 | Int64 | Float64 | String, type_req = "")
Same as other write methods, but location is precised differently
` first_worksheet = workbook.add_worksheet first_worksheet.write(0, 0, "hello") # Will write "hello" in A1 cell
`
-
#write(position : String, str : Int32 | Int64 | Float64 | String)
Write data in the specified worksheet at specific location
-
#write_row(pos_y : Int32 | Int64, data : Array(Int32 | Int64 | Float64 | String))
Will write a row with the provided array of data
` first_worksheet = workbook.add_worksheet first_worksheet.write_row(0, ["hello", "world"]) # Will write "hello" in A1 cell and "world" in A2
`
-
#write_row(row : String, data : Array(Int32 | Int64 | Float64 | String))
Will write a row with the provided array of data
` first_worksheet = workbook.add_worksheet first_worksheet.write_row("A", ["hello", "world"]) # Will write "hello" in A1 cell and "world" in A2
`
Instance Method Detail
Fetch the data at the given x, y postition
first_worksheet = workbook.add_worksheet
first_worksheet.write(0, 0, "hello") # Will write "hello" in A1 cell
first_worksheet.get(0, 0) # => {pos: "A1", value: "hello", type: ""}
Fetch the data at the given string postition
first_worksheet = workbook.add_worksheet
first_worksheet.write(0, 0, "hello") # Will write "hello" in A1 cell
first_worksheet.get("A1") # => {pos: "A1", value: "hello", type: ""}
Write data in the specified worksheet at specific location You can precise the type you want
first_worksheet = workbook.add_worksheet
first_worksheet.write("A1", "1337", "int") # Will write 1337 as a number
Available types are for now : string, int
Same as other write methods, but location is precised differently
first_worksheet = workbook.add_worksheet
first_worksheet.write(0, 0, "hello") # Will write "hello" in A1 cell
Write data in the specified worksheet at specific location
first_worksheet = workbook.add_worksheet
first_worksheet.write("A1", "Hello world!")
first_worksheet.write("A2", "1337") # Will write 1337 as a string
first_worksheet.write("B1", 1337) # Will write 1337 as a number
Will write a row with the provided array of data
first_worksheet = workbook.add_worksheet
first_worksheet.write_row(0, ["hello", "world"]) # Will write "hello" in A1 cell and "world" in A2
Will write a row with the provided array of data
first_worksheet = workbook.add_worksheet
first_worksheet.write_row("A", ["hello", "world"]) # Will write "hello" in A1 cell and "world" in A2


Filters out redundant breakpoint classes from the following responsive class types:
- text-[breakpoint]-[alignment]
- navbar-expand-[breakpoint]
- table-[breakpoint]-responsive
- d-[breakpoint]-[display]
- flex-[breakpoint]-[layout]
- flex-[breakpoint]-[grow/shrink]
- [justify or align]-[breakpoint]-[alignment]
- float-[breakpoint]-[direction]
[m or p]-[breakpoint]-# coming soon, maybe
- col-[breakpoint]-#
- offset-[breakpoint]-#
- order-[breakpoint]-#


Coordinates:[
]
clear
Annotation Content:
Annotation Author:
Text Annotation
Highlight Annotation
Underline Annotation
Squiggly Annotation
StrikeOut Annotation
Circle Annotation
Square Annotation
Polygon Annotation
PolyLine Annotation
Caret Annotation
Stamp Annotation
FreeText Annotation
Download
Status:
- #
Annotations


Loading cards data...
(No public sessions)
Session options:
Using Custom Card List ({{customCardList.length}} cards)
{{ setsInfos[values[0]].fullName }}
({{ values.length }})
{{ setsInfos[option].fullName }}
Draft:
More
Draft in progress!
Players ({{sessionUsers.length}}/{{maxPlayers}})
- {{ user.userName }}
Your Booster
Booster #{{ boosterNumber }}, Pick {{pickNumber}} {{ pickTimer }} Pick a card and remove {{cardsToBurnThisRound}} cards from the pool ({{burningCards.length}}/{{cardsToBurnThisRound}})
( {{ pickTimer }}) Waiting for other players to pick...
Winston Draft
Your turn to pick a pile of cards! Waiting on {{userByID[winstonDraftState.currentPlayer].userName}}... There are {{winstonDraftState.remainingCards}} cards left in the main stack.
{{userByID[winstonDraftState.currentPlayer].userName}} is looking at this pile...

Click on your cards to add them to your deck.
Sideboard ({{sideboard.length}})
Your sideboard is currently empty!
Click on cards in your deck to sideboard them.
Welcome to MTGADraft!
Want to draft in MTGA with your friends? Noticed you currently can't do that natively? We're here for you!
- (Optional) Import your collection: Enable Detailed logs in game, the toggle can be found in Options > View Account > Detailed Logs (Plugin Support), importing your collection won't work without this activated. Upload your MTGA logs (you should find them at C:\Users\%username%\AppData\LocalLow\Wizards Of The Coast\MTGA\output_log.txt) to restrict the draft to the cards you actually own in the game.
- Use the controls on top of the page to enter your User Name and indicate your preferences.
- Share your session ID with your friends (or join their own session) and wait for your session owner to start a draft!
Options
Session options
(Only accessible to the session owner, shared by everyone in your session)
- Ignore Collections: Draft with all cards of the selected set(s), ignoring player collections and preferences.
- Set(s): Select one or multiple sets to draft using only with cards from these sets.
- Bots: Adds virtual players to your draft. They are pretty dumb, but they are doing their best :(
- Pick Timer: Maximum time in seconds allowed to pick a card in each booster. 0 means the timer is disabled.
- Public: Flags your session as public. It will appear in the "Public Sessions" menu so anyone can directly join.
- Maximum Rarity: Default is Mythic, which means no restriction. (Also affects sealed)
- Color Balance: If set, the system will attempt to smooth out the color distribution in each pack, as opposed to being completely random. (Also affects sealed and cube)
- Custom card list: Submit a custom card list (one English card name by line) to draft your own cube. (Collections are ignored in this mode) More information here
- Foil: If enabled, each pack will have a chance to contain a 'foil' card of any rarity in place of one common.
Personal options
- Language: Adjusts the display language of cards. (Only affects cards)
- Restrict to Collection: If unchecked, your collection will not limit the cards available in the selected sets. If every players unchecks this, you will draft using every cards. (Ignored if "Ignore Collections" is enabled in the session, or when using a Custom Card List)
- Pick on Double Click: Allows you to double click on booster cards during draft to pick without having to confirm.
- Notifications: If enabled, you will be notified when a draft is launched.
- Session ID: A unique identifier for your session, you can use any name, just make sure to use the same as your friends to play with them!
- Card Display: Adjusts the order of cards within a sealed pool or your drafted cards.
Draft Log for Session '{{draftLog.sessionID}}' ({{new Date(draftLog.time).toLocaleString()}})
Click on a player to display the details of their draft.
- {{log.userName}}
{{log.userName}}
Pick {{index + 1}}: {{cards[pick.pick].name}}
- {{cards[card].printed_name[language]}}
Collection Statistics
Select set:
| Rarity | Unique | Total | Total Missing | Unique (Booster) | Missing From Boosters |
|---|---|---|---|---|---|
| Total | {{collectionStats[set].cards.filter(c => c.count > 0).length}}/{{collectionStats[set].total.unique}} | {{collectionStats[set].cardCount}}/{{4 * collectionStats[set]['total']['unique']}} | {{4 * collectionStats[set]['total']['unique'] - collectionStats[set].cardCount}} | {{collectionStats[set].cards.filter(c => c.in_booster && c.count > 0).length}}/{{collectionStats[set].cards.filter(c => c.in_booster).length}} | - |
| {{r}} | {{collectionStats[set][r].filter(c => c.count > 0).length}}/{{collectionStats[set]['total'][r + 'Count']}} | {{collectionStats[set][r + 'Count']}}/{{4 * collectionStats[set]['total'][r + 'Count']}} | {{4 * collectionStats[set]['total'][r + 'Count'] - collectionStats[set][r + 'Count']}} | {{collectionStats[set][r].filter(c => c.in_booster && c.count > 0).length}}/{{collectionStats[set][r].filter(c => c.in_booster).length}} | {{4 * collectionStats[set][r].filter(c => c.in_booster).length - collectionStats[set][r].filter(c => c.in_booster).reduce((acc, val) => acc + val.count, 0)}} |
Missing
Additional Session Options
{{customCardList.length}} cards in list.
Use services like Cube Tutor or Cube Cobra to craft your list, export it to .txt then upload it here. Click Here for more information.
Draft Specific Options
In addition to picking a card each round, you will also remove this number of cards from the draft. This is typically used in conjunction with a higher count of boosters per player for drafting with 2 to 4 players. Burn or Glimpse Draft is generally 9 boosters per players and 2 burned cards per round.
Bracket
(Empty)
(TBD)
{{p}}
{{bracket.results[m.index][index]}}
About
Contact
Senryoku<EMAIL_ADDRESS>(French or English)
MTGADraft Discord: https://discord.gg/KYKzx9m
Support me
Currently this service only costs me time, but if you want to encourage me to maintain and improve it you can donate via PayPal, or just send me some feedback! :)Patch Notes
- 08/05/2020
- Added Burned Cards per Round option to play Glimpse/Burn Draft.
- 03/05/2020
- Updated cube list format with support for more parameters (count, set, collector number).
- Updated Cube Format Specifications accordingly.
- 27/04/2020
- Implemented Winston Draft.
- Various Fixes.
- 25/04/2020
- Players can now be re-ordered by drag & drop.
- 24/04/2020
- Handle importing logs with collections from multiple accounts.
- Added an option to randomize seating order.
- 21/04/2020
- Added simple bracket generation (pairings).
- 19/04/2020
- Added card rating for Ikoria (Bot should be just a little less dumb).
- Added CMC Columns display option for cards in draft logs.
- Various stability improvements.
- 12/04/2020
- Added specific land slot rules when a single set is selected.
- 11/04/2020
- Added Ikoria basic support.
- Foils are now disabled by default (option is still available).
- Fixed missing card when importing collection.
- 10/04/2020
- Improved card image loading.
- 08/04/2020
- Added support for a custom cube format for more control over your boosters.
- 07/04/2020
- Can remove draggable column.
- 05/04/2020
- Added some disableable sounds. I hate them, please contact me if you can help me! :D
- Draft log is now saved locally until a new one is received
- Added an option to open saved draft logs
- Session owner can re-order the table
- Minor style changes
- 02/04/2020
- Fixed some images.
- 01/04/2020
- Improved bot ordering.
- Bug fixes.
- 31/03/2020
- Improved/Fixed card database.
- Fixed Conflux card exporting.
- 30/03/2020
- Draggable cards option in deck builder.
- 29/03/2020
- Added a Color Columns option to display cards.
- Added a Ready Check for the session owner.
- 28/03/2020
- Updated draft logs. Complete pick information. Can now be exported in MTGO format/to MagicProTools.
- Fix: No more undesirable duplicates from the use of Color Balancing.
- Fix: Crash on reconnection.
- Fix: Correctly handle duplicates in Custom Card Lists.
- Fix: Correctly export split cards from Ravnica.
- 26/03/2020
- Added a delayed draft log sharing option. Useful for tournament settings.
- 24/03/2020
- Added a stop draft button for the owner.
- Updated visual of pick timer countdown.
- Draft logs can now be disabled or exclusive to the owner.
- Updated Draft Log with a table display.
- Display disconnected user name.


Weather__Dashboard
Search for a city
Houston
New York
Denver
Austin
Current Weather
Temperature
Humidity
Wind Speed
UV Index
Five Day Forecast
Date01
Humidity:
wind-speed:
uv-index:


Leaderboard
Please enter your name:
Please enter your grade:
#
First
Score
1
Mark
2
2
Jacob
3
3
Larry
4


{% extends 'onetimesecret/base.html' %} {% load i18n %} {% load bootstrap4 %} {% load static %} {% block onetimesecret_main %}
{% blocktrans trimmed %} A safer way to share sensitive information (secret messages, passwords, private links, etc.) with others. The secret you want to share with somebody is encrypted and can only be viewed once. It will be burnt once it has been read. You may consider it like a self-destructing message. {% endblocktrans %}
{% trans "* A secret link only works once and then disappears forever." %}
{% endblock %}


Pairs of nodes connected by an edge have a vertical separation constraint, requiring that the source be a minimum distance above the target. We also require that node bounding boxes cannot overlap. The unconstrained layout of the same graph looks like this.
Here's a 3D version of the same graph!


Hi, I'm a software engineer based in the Greater Boston area, Massachusetts. I graduated with a Master's from the University of Texas at Arlington, majoring in Computer Science.
I take keen interest in designing databases, building robust applications and creating interesting things for the web. I aim to develop high performing products that are scalable, user friendly yet have simplistic code and are easy to maintain.
Other than coding, I'm a voracious reader, an avid Game of Thrones fan and a coffee lover. I enjoy gardening and I try growing organic vegetables :) I actively take part in outdoor activities like swimming, badminton, hiking and kayaking.


Setting up a libgdx build environment
07 Dec 2014In my previous post, 12 Games in 12 Months, I put committed to the lofty goal of shipping 12 games in 12 months. After careful consideration I’ve decided to use the much-celebrated Libgdx framework to help me with my first game. First things first, however, I need to set up my development environment. I prefer to keep my development area as separated as I can from my normal workstation, so will use a virtual machine to house this.
What we’ll need:
- Ubuntu 14.04.1 Server
- Desktop Hypervisor (VMWare Workstation, Hyper-V, VirtualBox, etc)
Let’s get started:
- Install Ubuntu Server 14.04.1.
I know. Right now you may be wondering why I chose the server OS. I did this because I find that the desktop flavor feels a little bloated for what I need. We’re not looking for a full desktop experience.
- Install a desktop environment.
sudo apt-get update
sudo apt-get install -y --no-install-recommends lubuntu-desktop
This will install a customized lightweight LXDE window manager. I know it’s not the linux way, but I prefer to reboot here. This lets me make sure that the window manager will come up on a reboot and gets the GUI going for me for later.
Now that you’re back up, you’ll need to log in and open a terminal window. Click on the button on the bottom left, go to accessories, then LXTerminal. If there is another terminal you prefer, use that instead.
We will also be installing Google’s Android SDK. Since we’re going for easy, we’ll use Google’s ADT bundle which includes the development IDE, Eclipse, and the Android SDK already married and ready to go.
At the time of writing this, this is the most current link. You may need to update the link below. We’re downloading it, unpacking, then cleaning up after ourselves.
- Install the SDK
cd ~
wget https://dl.google.com/android/adt/adt-bundle-linux-x86_64-20140702.zip
unzip adt-bundle-linux-x86_64-20140702.zip
rm adt-bundle-linux-x86_64-20140702.zip
Assuming all went well, we’ll have an eclipse folder and an sdk folder under the adt folder. I like to move these to my home folder because I am lazy
optional :
mv adt-bundle-linux-x86_64-20140702/* ~
rmdir mv adt-bundle-linux-x86_64-20140702
- Next we’ll install Libgdx
First, let’s install the prerequisites.
sudo apt-get install -y libgl1-mesa-dev:i386 openjdk-7-jdk
Next let’s download the gdx-setup.jar
wget http://libgdx.badlogicgames.com/nightlies/dist/gdx-setup.jar
I like to make a folder for my games. Let’s make one and we’ll call it umm.. games.
mkdir ~/games
- Now, we’ll need to launch eclipse and add the grade integration plugin to eclipse
cd ~/eclipse
./eclipse
Accept the default workspace unless you have a different preference. Click the checkbox to not ask again (unless you like being annoyed– I’m not judging)
I’ll let you pick your usage statistics option. I can’t make all of your choices for you
Next go to Help > Install New Software
You’ll now be greeted by a screen asking for a URL to install your plugin. Since the version of eclipse we are using is < 4.4, we’ll use http://dist.springsource.com/release/TOOLS/gradle under Work With.
You’ll have to name this. I went crazy and named mine Gradle Plugin. You can copy me or pick your own. I’d suggest something memorable…
Click OK. On the next screen, expand the plugins and** choose Gradle IDE**.
On the next screen, select Gradle IDE, then click Next, read the stuff, accept it if you want (can’t move forward without it), then click Finish. Wait for the install. You’ll be prompted to restart eclipse. Go for it.
Exit Eclipse.
Now list the directories in the home folder.
cd ~
ls
Should look something like this
Now let’s test it all out.
- We’ll build a project
java -jar gdx-setup.jar
For testing, we can accept the defaults. We will need to specify the path to the SDK and game folder. Make you stuff look something like mine:
Click Generate.
When everything finishes, and you see BUILD SUCCESSFUL, close the Project Generator.
Now we’ll open eclipse again.
cd ~/eclipse
./eclipse
Now we’ll import the libgdx project we created.
File -> Import -> Gradle -> Gradle Project
Click Next, then browse to your game folder.
Click OK.
Now** click Build Model.** Wait..
Click the topmost checkbox to import each project, then click finish.
Wait a little more. While you’re waiting, you should see projects start to populate on the left panel in eclipse.
All done.
..
…
Except for that red x next to the android project. What’s that about?
Description Resource Path Location Type
Unable to resolve target ‘android-19′ my-gdx-game-android Unknown Android Target Problem
- Hm. Looks like we need to fix this.
Go to Window > Android SDK Manager
Wait a few and you should see a lot of options populate. We could add any we want — and you should do this as part of your testing with the emulator later. But not now. Now we’ll just get rid of that error.
Select the 19 SDK option. Try and make sure its the only SDK selected for now. You can leave the defaults of android 5.0 sdk and all that, but you will get prompted when you build asking if you want to use the newer one. Up to you. Also select the API 19.
Click Install XX packages, accept your licenses, and click ok. Now wait some more while the SDK downloads.
Click OK and close the window when you’ve finished. I close and reopen eclipse here. When it’s back up, I give eclipse time to catch up and– what do you know?
The error is gone. Click on the Desktop project and click Run..
Select Java Application and click OK.
Now DesktopLauncher and OK.
Good to go.
And that’s how I set up libgdx from scratch on Ubuntu.
References:
- http://www.ubuntu.com/download/server
- http://lubuntu.net/
- http://developer.android.com/sdk/installing/index.html?pkg=adt
- https://github.com/libgdx/libgdx/wiki/Setting-up-your-Development-Environment-%28Eclipse,-Intellij-IDEA,-NetBeans%29#setting-up-eclipse


|
KratosMultiphysics
KRATOS Multiphysics (Kratos) is a framework for building parallel, multi-disciplinary simulation software, aiming at modularity, extensibility, and high performance. Kratos is written in C++, and counts with an extensive Python interface.
|
Public Member Functions | |
| def | __init__ (self, settings) |
| This is a base class to build manufactured fluid solutions. More... | |
| def | BodyForce (self, x1, x2, x3, t) |
| def | Velocity (self, x1, x2, x3, t) |
| def | Pressure (self, x1, x2, x3, t) |
| def | body_force1 (self, x1, x2, t) |
| def | body_force2 (self, x1, x2, t) |
| def | body_force3 (self, x1, x2, t) |
| def | convective1 (self, x1, x2, t) |
| def | convective2 (self, x1, x2, t) |
| def | laplacian1 (self, x1, x2, t) |
| def | laplacian2 (self, x1, x2, t) |
| def | press_grad1 (self, x1, x2, t) |
| def | press_grad2 (self, x1, x2, t) |
| def | u1 (self, x1, x2, t) |
| Velocity. More... | |
| def | u2 (self, x1, x2, t) |
| Velocity. More... | |
| def | u3 (self, x1, x2, t) |
| def | du1dt (self, x1, x2, t) |
| def | du2dt (self, x1, x2, t) |
| def | du11 (self, x1, x2, t) |
| def | du12 (self, x1, x2, t) |
| def | du21 (self, x1, x2, t) |
| def | du22 (self, x1, x2, t) |
| def | du111 (self, x1, x2, t) |
| def | du122 (self, x1, x2, t) |
| def | du211 (self, x1, x2, t) |
| def | du222 (self, x1, x2, t) |
| def | p (self, x1, x2, t) |
| By default, pressure is 0. More... | |
| def | dp1 (self, x1, x2, t) |
| By default, pressure is 0. More... | |
| def | dp2 (self, x1, x2, t) |
| By default, pressure is 0. More... | |
Public Attributes | |
| rho | |
| nu | |
| def manufactured_solution.ManufacturedSolution.__init__ | ( | self, | |
| settings | |||
| ) |
This is a base class to build manufactured fluid solutions.
At least, it should return the body force and the velocity. The input viscosity is the DYNAMIC viscosity NOTE: the operators are implemented for the 2D case. It could be extended to the 3D case.
| def manufactured_solution.ManufacturedSolution.body_force1 | ( | self, | |
| x1, | |||
| x2, | |||
| t | |||
| ) |
| def manufactured_solution.ManufacturedSolution.body_force2 | ( | self, | |
| x1, | |||
| x2, | |||
| t | |||
| ) |
| def manufactured_solution.ManufacturedSolution.body_force3 | ( | self, | |
| x1, | |||
| x2, | |||
| t | |||
| ) |
| def manufactured_solution.ManufacturedSolution.BodyForce | ( | self, | |
| x1, | |||
| x2, | |||
| x3, | |||
| t | |||
| ) |
| def manufactured_solution.ManufacturedSolution.convective1 | ( | self, | |
| x1, | |||
| x2, | |||
| t | |||
| ) |
| def manufactured_solution.ManufacturedSolution.convective2 | ( | self, | |
| x1, | |||
| x2, | |||
| t | |||
| ) |
| def manufactured_solution.ManufacturedSolution.dp1 | ( | self, | |
| x1, | |||
| x2, | |||
| t | |||
| ) |
By default, pressure is 0.
| def manufactured_solution.ManufacturedSolution.dp2 | ( | self, | |
| x1, | |||
| x2, | |||
| t | |||
| ) |
By default, pressure is 0.
| def manufactured_solution.ManufacturedSolution.du11 | ( | self, | |
| x1, | |||
| x2, | |||
| t | |||
| ) |
| def manufactured_solution.ManufacturedSolution.du111 | ( | self, | |
| x1, | |||
| x2, | |||
| t | |||
| ) |
| def manufactured_solution.ManufacturedSolution.du12 | ( | self, | |
| x1, | |||
| x2, | |||
| t | |||
| ) |
| def manufactured_solution.ManufacturedSolution.du122 | ( | self, | |
| x1, | |||
| x2, | |||
| t | |||
| ) |
| def manufactured_solution.ManufacturedSolution.du1dt | ( | self, | |
| x1, | |||
| x2, | |||
| t | |||
| ) |
| def manufactured_solution.ManufacturedSolution.du21 | ( | self, | |
| x1, | |||
| x2, | |||
| t | |||
| ) |
| def manufactured_solution.ManufacturedSolution.du211 | ( | self, | |
| x1, | |||
| x2, | |||
| t | |||
| ) |
| def manufactured_solution.ManufacturedSolution.du22 | ( | self, | |
| x1, | |||
| x2, | |||
| t | |||
| ) |
| def manufactured_solution.ManufacturedSolution.du222 | ( | self, | |
| x1, | |||
| x2, | |||
| t | |||
| ) |
| def manufactured_solution.ManufacturedSolution.du2dt | ( | self, | |
| x1, | |||
| x2, | |||
| t | |||
| ) |
| def manufactured_solution.ManufacturedSolution.laplacian1 | ( | self, | |
| x1, | |||
| x2, | |||
| t | |||
| ) |
| def manufactured_solution.ManufacturedSolution.laplacian2 | ( | self, | |
| x1, | |||
| x2, | |||
| t | |||
| ) |
| def manufactured_solution.ManufacturedSolution.p | ( | self, | |
| x1, | |||
| x2, | |||
| t | |||
| ) |
By default, pressure is 0.
| def manufactured_solution.ManufacturedSolution.press_grad1 | ( | self, | |
| x1, | |||
| x2, | |||
| t | |||
| ) |
| def manufactured_solution.ManufacturedSolution.press_grad2 | ( | self, | |
| x1, | |||
| x2, | |||
| t | |||
| ) |
| def manufactured_solution.ManufacturedSolution.Pressure | ( | self, | |
| x1, | |||
| x2, | |||
| x3, | |||
| t | |||
| ) |
| def manufactured_solution.ManufacturedSolution.u1 | ( | self, | |
| x1, | |||
| x2, | |||
| t | |||
| ) |
Velocity.
| def manufactured_solution.ManufacturedSolution.u2 | ( | self, | |
| x1, | |||
| x2, | |||
| t | |||
| ) |
Velocity.
| def manufactured_solution.ManufacturedSolution.u3 | ( | self, | |
| x1, | |||
| x2, | |||
| t | |||
| ) |
| def manufactured_solution.ManufacturedSolution.Velocity | ( | self, | |
| x1, | |||
| x2, | |||
| x3, | |||
| t | |||
| ) |
| manufactured_solution.ManufacturedSolution.nu |
| manufactured_solution.ManufacturedSolution.rho |


Health Promotion
Endorsed by Javad Arian Nezhad and 3 others who are highly skilled at this
Endorsed by 2 of Eulalee’s colleagues at London North West Healthcare NHS Trust
Public Health
Endorsed by Emma Carder and 1 other who is highly skilled at this
Clinical Nutrition
Kirill listerman and 26 connections have given endorsements for this skill
Nutrition Education
Nutrition
Healthcare
Sports Nutrition
Health Education
Fitness
Fitness Training
Personal Training
Pediatrics
Nursing
Healthcare Management
Clinical Research
Diabetes
Mental Health
Hospitals
Wellness
Nutritional Counseling
Prevention
Dietetics
Exercise Instruction
Weight Management
Chronic Illness
Medical Nutrition Therapy
Weight


Labour candidate’s office sprayed with ‘gay slur’ for third time
Luke Pollard said he had offered to sit down and talk to vandals who attacked his office in Plymouth.
The constituency office of a Labour parliamentary candidate has been spray-painted with a “homophobic slur” for the third time in a month.
On October 26, Luke Pollard said his office had been hit twice in the space of a fortnight, with the words “Pollard is a pedo, report that”, written on a wall.
On Wednesday, in a video posted on Twitter, Mr Pollard revealed his city centre office had been targeted again – this time with words including “pedo” daubed outside.
Mr Pollard, who is seeking re-election in Plymouth, Sutton and Devonport, praised council workers and a passing Deliveroo cyclist for helping him “wash off the hate”.
He said: “As you can see behind me, my office was graffitied again last night with more homophobic slurs.
“I’ve offered to sit down with the individuals that have done this, to have a cup of tea, to listen to their concerns.
“That request has been ignored and they’ve clearly sent a message here that they want to continue their homophobic attacks on me.”
Mr Pollard said he would not be made a victim by “people who have hate in their hearts”, or allow his staff to be “threatened and feel unsafe for going to work”.
“We’ve already had the police here this morning and I thank them for their swift action today,” he said.
“We’ll be co-operating fully with them and we’ll be seeking to identify the individuals involved in this.”


If you are system administrator, you have right to delete any message group(s) you wanted.
Under main menu (figure 2.1.2), select item 'Delete Group', then screen like figure 4.1.1 will be seen to show you all message groups. Select the
check-box in front of the message group name you want to delete, and then click the 'Delete' button to confirm message group deletion.
Please beware that message group name is not unique but group ID is. i.e. Same message group name may exist for different message groups. Therefore,
as you desire to delete a message group, make sure you select the right one if it's group name is not unique.
|


This project is a pipeline designed to support the easy creation of code-centric, technical books like Reactive Spring, whose pipeline was mostly an automated AsciidoctorJ Spring Boot application.
Motivations
To understand what this project provides, let’s examine the first cut at the publication pipeline provided for me, and then we can see what might be improved.
The original flow looked like this:
-
git clone
all the code included in the book. For my Reactive Spring book, these came from thereactive-spring-book
organization. I kept these in an OSS, Apache 2 licensed and accessible for everyone to consume. The code isn’t the most exciting bit, after all. -
That would be the book itself. So, the next step `git clone`s the book’s docs, as well.
-
then I ran the Spring Boot Asciidoctor autoconfiguration. The autoconfiguration does a ton of the struggle involved in using Asciidoctor to convert
.adoc
files into five different output formats: prepress-ready.PDF
, screen-ready.PDF
,.html
,.epub
, and.mobi
. -
the next step was to take the output artifacts, then push the results to a place where I could collect them. The thing I used was a branch in a Git repository.
This process worked. I finished the book! It worked well. That said, there were some issues.
-
There are multiple code repositories - more than a dozen discrete Git repositories that the pipeline needs to clone before the book can successfully run. I did this in a Bash for-loop, one after the other. This kind of work is what we call embarrassingly parallel. There’s no reason we couldn’t do all that stuff concurrently. As it was, this stage in the process took a minute or more.
-
The autoconfiguration was also serialized. I invoked one
DocumentProducer
after the other. The serialization was very valuable when I tried to figure AsciidoctorJ and iron out the kinks in the pipeline because it made it easier to debug everything. Now, these five conversions could also be concurrent. -
The last step in the process - stashing the output documents somewhere so that I could download them and then upload them to Amazon KDP, Leanpub.com, etc. - should be a bit more flexible. I stashed them in a branch on a private Git repository using some Bash scripting. There’s no reason they couldn’t have been sent to me by email or uploaded to an Amazon S3 bucket.
-
The whole pipeline was in Travis CI. I’ve moved virtually everything on which I’m continually working to Github Actions except the book. I was so worried about trying to recreate the spaghetti code pipeline in a new environment, particularly when I could be spending that time trying to ship the final edition of this book that ended up taking me two years to finish.
-
Also, the result was a combination of Bash scripting and Java code that interleaved to give us the final result. It became harder and harder to reproduce the flow on my local machine.
-
The whole thing - because it lacked concurrency - took forever! It took something like eight minutes on the Travis CI. That’s in addition to Travis CI’s inherent slowness. Have you noticed how fast out the gate Github Actions is? It’s crazy! I type
git push
and refresh the Github Actions browser page, and it’s already processing! Thank you Github. -
Storing multi-megabyte
.pdf
documents and output artifacts in a Git repository isn’t a great approach. We can and should do better.
This project aims to fix those many issues and provide a foundation for new features and new horizons.
-
Improved flow control with Spring Batch: it uses Spring Batch to describe the pipeline’s flow. Spring Batch gives us many benefits, including audibility and a powerful DSL to describe concurrent stages and serial stages. It’s also Spring so that we can leverage all of Java in normal ways. I suppose I could’ve also used a workflow engine like Flowable in this case. Either way, the result is way faster even though - technically, underneath the hood - there’s a lot more going on.
-
Smarter Git integration: the old flow used Bash for all the Git interactions - cloning and pushing. This new project extracts those out into individual stages and leverages the wonderful JGit project.
-
Easier configuration The last stage - where we publish the documents to some terminus - is an excellent opportunity for strategies that can be activated or deactivated with Spring Boot configuration. The entire pipeline, come to think of it, benefits from Spring Boot configuration. There are a ton of things to specify in the pipeline: SSH or HTTP Git authentication credentials. Amazon S3 credentials. The workspace in which the pipeline will generate the documents. The list goes on, and it’s nice to have Spring Boot’s imminently flexible support here.
-
More dynamic control flow: I feel like this merely restates the point about improved flow control and more straightforward configuration differently, but it’s crucial: it’s much easier to use loops, if/else, while loops, and recursion from Java and Spring then it is from Bash. We can dynamically add functionality to stages or dynamically add stages to the pipeline, all in response to external configuration or changing dynamics.
-
Convention over configuration: Asciidoctor and Spring are vast, infinite in their possibilities. The process of publishing a technical book, on the other hand, is a known quantity. This new pipeline adopts some conventions - well-known attributes to refer to the code repository, assumptions about the book’s styling, etc. - to reduce to a handful of configuration options what turns out to be a dozen configuration options otherwise. Additionally, this project takes advantage of Spring Boot autoconfiguration to respond to classes, properties, etc. You should be able to get a new book pipeline up and running in a matter of minutes.
-
Integration and Isolation: So, the meat of this pipeline is AsciidoctorJ, which is the Ruby Asciidoctor-gem turned into a Java
.jar
with JRuby. The Asciidoctor gem, in turn, loads other gems likeasciidoctor-pdf
andasciidoctor-epub3
. The combinations of these things make life enjoyable from a classloader, Maven, and Java class compatibility perspective. This project handles as much of that as possible for you and documents the rest.
Usage
Let’s look at a working sample that I’ve built called sample-pipeline
. You can clone that for a working example. I’ll break down the relevant bits here so you can see what differentiates this from any other stock-standard Spring Boot build. The sample-pipeline
in turn builds a book based on the documents in the sample-book
.
The Maven Build
First, look at the pom.xml
. You’ll notice that most of the configuration is in the build itself. This sample is a stock-standard Spring Boot application with nothing else in it. There’s no reason you couldn’t add to it, of course, and that’s part of the charm! This whole pipeline is an autoconfiguration. The sky’s the limit! There are a few things of note.
First, the build sits on top of Spring Batch, and Spring Batch assumes a SQL DataSource
present somewhere in the context so that it can persist metadata tables associated with the versioning and execution state of the job instances. The goal is that if something goes wrong, you’ll be able to inspect the table metadata and see what happened or even intervene. If you don’t want to configure a SQL database, it’s fine. Just add an in-memory, embedded, stateless SQL database like H2 to your build and Spring Boot will configure a DataSource
bean for you:
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
Second, the build includes the Spring Batch Job
in the following Maven dependency:
<dependency>
<groupId>bootiful.asciidoctor</groupId>
<artifactId>asciidoctor-publication-job</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
This is not on Maven central, so you could either build the code yourself or use my Artifact repository, as I did. Here’s the relevant Maven configuration. There is an equivalent configuration for Gradle.
<repositories>
<repository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>libs-release</name>
<url>
https://cloudnativejava.jfrog.io/cloudnativejava/libs-release
</url>
</repository>
<repository>
<snapshots/>
<id>snapshots</id>
<name>libs-snapshot</name>
<url>
https://cloudnativejava.jfrog.io/cloudnativejava/libs-snapshot
</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>plugins-release</name>
<url>
https://cloudnativejava.jfrog.io/cloudnativejava/plugins-release
</url>
</pluginRepository>
<pluginRepository>
<snapshots/>
<id>snapshots</id>
<name>plugins-snapshot</name>
<url>
https://cloudnativejava.jfrog.io/cloudnativejava/plugins-snapshot
</url>
</pluginRepository>
</pluginRepositories>
Also, there is some weirdness associated with the interaction between JRuby, AsciidoctorJ, JRuby loading JRuby gems, and the way Spring Boot packages .jar
artifacts within other .jar
in the Spring Boot Maven plugin. I had to tell Spring Boot’s Maven plugin not to pack a few .jar
artifacts in the same way as it does everything else.
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<requiresUnpack>
<dependency>
<groupId>org.jruby</groupId>
<artifactId>jruby-complete</artifactId>
</dependency>
<dependency>
<groupId>org.asciidoctor</groupId>
<artifactId>asciidoctorj</artifactId>
</dependency>
<dependency>
<groupId>org.asciidoctor</groupId>
<artifactId>asciidoctorj-epub3</artifactId>
</dependency>
<dependency>
<groupId>org.asciidoctor</groupId>
<artifactId>asciidoctorj-pdf</artifactId>
</dependency>
</requiresUnpack>
</configuration>
</plugin>
Alright, that’s most of the weirdness. At this point, it’s just using any other Spring Boot autoconfiguration. You have two extensibility planes: configuration properties such as those in application.properties
and Spring itself.
Configuration Properties
You can get a working pipeline with a very small amount of configuration.
# (1)
pipeline.job.root=${HOME}/Desktop/root
# (2)
pipeline.job.target=${HOME}/Desktop/target
# (3)
pipeline.job.book-name=My Book
# (4)
pipeline.job.document-repository=https://github.com/your-org/your-docs.git
# (5)
pipeline.job.include-repositories=\
https://github.com/your-org/code-repo-1.git,\
https://github.com/your-org/code-repo-2.git
-
This tells the pipeline where it should do its work. It has to make a mess somewhere. Where should it be?
-
This tells the pipeline where it should dump out its produced files.
-
This is an alias for
publication.book-name
. -
This tells the pipeline where to find the
.adoc
files for your book itself. I usually keepindex.adoc
at the root of this repository. You can see this sample repository for something to clone. It includes a sample Asciidoctor book with some interesting samples, including a cover, code inclusions, a table-of-contents, styling for EPub and PDF, etc. -
This tells the pipeline which repositories should be cloned before the book is produced so that the documents in the
document-repository
can reference files in the cloned repositories for includes.
The pipeline sets up some common attributes, including one called code
which you can use to reference the root of all the cloned Git repositories from the document-repository
property. So, assuming you wanted to reference one of the bits of configuration or code - let’s say you have a file called src/main/java/Main.java
- from your-org/code-repo-1
, then you can include {code}/code-repo-1/src/main/java/Main.java
in your Asciidoctor book chapters.
If you want to disable the pipeline as a whole, set pipeline.job.enabled=false
.
There are five DocumentProducer
beans registered by default as part of the underlying asciidoctor-autoconfiguration
. One of them, the MobiProducer
, will fail when running anywhere but Linux as it relies on a Linux binary for kindlegen
. Suppose you have the macOS-compatible binary, great. Use that. Otherwise, you may want to disable that particular DocumentProducer
when running the pipeline on your local macOS or Windows machine. Indeed, you may want to disable any or all of the DocumentProducer
beans! There are five properties you can use to toggle them on or off.
Here are the five properties. Specify any of them and set them as false
or true
based on your particular use case. You could mix-and-match these properties with Spring profiles to conditionally activate them when running in your CI environment.
-
publication.epub.enabled
-
publication.mobi.enabled
-
publication.html.enabled
-
publication.pdf.prepress.enabled
-
publication.pdf.screen.enabled
All of these are enabled by default on Linux. The MobiDocumentProducer
does not run unless it is on Linux. It’ll automatically disable itself on any other operating system.
Remember, you could specify all of these properties through any mechanism Spring Boot provides, including environment variables.
 That will override any value specified in your local application.properties
or application.yml
.
PDF Compression
You may want to compress your PDF files. You can specify publication.pdf.screen.optimize=true
to optimize the screen-ready PDF, and publication.pdf.prepress.optimize=true
to optimize the press-ready PDF. Specify this and the respective DocumentProducer
will emit one regular and one optimized PDF.
The pipeline shells out to the asciidoctor-pdf-optimize
script which must be installed before it can be used. The sample-pipeline
is a good example on how to get everythign working on an Ubuntu machine before running the build. Here’s the command to install everything required using the Ubuntu apt
package management system.
sudo apt install ghostscript \
&& sudo gem install asciidoctor
&& sudo gem install asciidoctor-pdf \
&& sudo gem install rghost
Spring Boot Overrides and Events
Let’s look at a sample Spring Boot application that configures a few things beyond what we’ve looked at:
package com.example.samplepipeline;
import bootiful.asciidoctor.DocumentsPublishedEvent;
import lombok.extern.log4j.Log4j2;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.batch.JobExecutionEvent;
import org.springframework.boot.context.event.ApplicationReadyEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.context.annotation.Bean;
import org.springframework.core.env.Environment;
@Log4j2
@SpringBootApplication
public class SamplePipelineApplication {
public static void main(String[] args) {
SpringApplication.run(SamplePipelineApplication.class, args);
}
//(1)
@Bean
ApplicationListener<DocumentsPublishedEvent> documentsPublishedListener() {
return event -> {
log.info("Ding! The files are ready!");
for (var e : event.getSource().entrySet())
log.info(e.getKey() + '=' + e.getValue());
};
}
//(2)
@Bean
ApplicationListener<JobExecutionEvent> batchJobListener() {
return event -> {
var jobExecution = event.getJobExecution();
var createTime = jobExecution.getCreateTime();
var endTime = jobExecution.getEndTime();
var jobName = jobExecution.getJobInstance().getJobName();
log.info("job (" + jobName + ") start time: " + createTime.toString());
log.info("job (" + jobName + ") stop time: " + endTime.toString());
};
}
}
-
The pipeline publishes an
ApplicationEvent
after the pipeline has produced all the documents. You can get thesource
of the event - aMap<String, Collection<File>>
that contains a mapping of the document type to the output documents. For example, the HTML producer might produce two files:index.html
and animages
directory. The key for the map is a way to distinguish which file is which. The pipeline produces two.pdf
files, for example. One for the screen, and one for prepress. -
Spring Batch, on top of which this pipeline builds, also publishes some useful information through an event. You can ask the job how long it took to run, its exit status, etc.
You don’t need to provide either of these ApplicationListener
beans, however. A public static void main
and voilà: a pipeline! Run the main class in your project and give it a few seconds or minutes and then inspect the output directory. The application configures a thread pool that keeps the Java process running a little longer than the job that depends on it. Your pipeline might finish many seconds before the Java process itself finishes.
Repository Clones
The pipeline delegates to instances of GitCloneCallback
to handle cloning Git repositories. The default implementation assumes that the Git repository is wide-open, and unauthenticted, automatically configuring an instance of PublicGitCloneCallback
.
If you want to authenticate using a username and password, then define a bean of type CredentialsProvider
in the context.
@Bean
UsernamePasswordCredentialsProvider usernamePasswordCredentialsProvider(@Value("${GIT_USERNAME}") String user,//(1)
@Value("${GIT_PASSWORD}") String pw) {//(2)
return new UsernamePasswordCredentialsProvider(user, pw);
}
-
The
GIT_USERNAME
environment variable might be, for example, you Github username -
The
GIT_PASSWORD
environment variable might be, for example, your Github personal access token.
Alternatively, if you want to authenticate using SSH, you’ll need to define a bean of type TransportConfigCallback
. There are some convenient methods - com.joshlong.git.GitUtils.createSshTransportConfigCallback
- that you can use to make shorter work of building a new instance of this type.
Document Publication
We’ve just looked at the flow, and we assumed you have access to the directory where the pipeline dumped the files - whatever directory you specified in pipeline.job.target
. This assumption’s invalid in most CI environments, so you’ll want to have those artifacts uploaded somewhere.
DocumentPublisher
implementations help with this, taking the build pipeline’s output and publishing them somewhere for you to collect and inspect them.
Git Branch Publication
The GitBranchDocumentPublisher
is the most accessible, so you might want to start with it. It clones a specified git repository, checks out a particular branch, then adds a directory for each output document type. It then adds the output artifacts into that directory, commits it, and pushes the branch - new artifacts and all - back to the Git repository. You’ll need to configure a few things - the Git repository and the branch - for this to work.
pipeline.job.publishers.git.enabled=true
pipeline.job.publishers.git.artifact-branch=artifacts
pipeline.job.publishers.git.repository=https://github.com/your-org/your-artifact-repo.git
If you want to authenticate using a username and password, then define a bean of type CredentialsProvider
in the context.
@Bean
UsernamePasswordCredentialsProvider usernamePasswordCredentialsProvider(@Value("${GIT_USERNAME}") String user,//(1)
@Value("${GIT_PASSWORD}") String pw) {//(2)
return new UsernamePasswordCredentialsProvider(user, pw);
}
-
The
GIT_USERNAME
environment variable might be, for example, you Github username -
The
GIT_PASSWORD
environment variable might be, for example, your Github personal access token.
Alternatively, if you want to authenticate using SSH, you’ll need to define a bean of type TransportConfigCallback
. There are some convenient methods - com.joshlong.git.GitUtils.createSshTransportConfigCallback
- that you can use to make shorter work of building a new instance of this type.
Amazon S3 Bucket Publication
This DocumentPublisher
that uploads an archive to an Amazon S3 bucket containing all the documents.
pipeline.job.publishers.s3.enabled=true
pipeline.job.publishers.s3.access-key-id=${AWS_ACCESS_KEY_ID}
pipeline.job.publishers.s3.region=${AWS_REGION}
pipeline.job.publishers.s3.secret-access-key=${AWS_SECRET_ACCESS_KEY}
pipeline.job.publishers.s3.bucket-name=bootiful-asciidoctor
These properties configure an AmazonS3
client from the official AWS Amazon S3 client SDK. There are, as always, many ways to authenticate wit Amazon. If you want to use a service principal or something else, then feel free to provide a bean of type AmazonS3
in the application context that’s so configured, and the DocumentPublisher
Spring Boot autoconfiguration will defer to that one instead.
Other Publishers
I’d like to expand the assortment of publishers. It’s not hard to see the opportunities:
-
Artifactory or Nexus
-
attachments in ane email
-
Github Packages
-
an FTP service
-
Dropbox
You get the idea. Literally infinite potential. Just a matter of time and will.
Running the build when you update the book
So, you’ve got everything installed and configured. You have the pipeline setup on one node. You have the .adoc
files living in some other repository, and now you want to force the book to rebuild each time you change the .adoc
repository. Unfortunately, Github Actions don’t yet have a way to force one build to happen whenever another changes. But we can force our pipeline to run manually using a repository_dispatch
.
Triggering the Pipeline Whenever the Book Repository Changes
You’ll need to have a Github Personal Access Token - this is easy to do from your Developer Settings
page in the Settings
section of your account. Configure a Github Actions secret called GH_PAT
in your repository’s Secrets
section that contains your Github Personal Access Token.
Then, configure a Github Action for the Github repository that contains your .adoc
files. You can use the Github Action workflow in the sample-book
repository as a foundation:
name: CI
env:
PIPELINE_ORG_NAME: bootiful-asciidoctor
PIPELINE_REPO_NAME: sample-pipeline
GH_PAT: ${{ secrets.GH_PAT }}
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- run: ${GITHUB_WORKSPACE}/.github/workflows/trigger_book_build.sh
This workflow will run whenever you git push
the changes to your .adoc
files. The Github Action couldn’t be more trivial: it clones your .adoc
file and then triggers the book publication pipeline. In this case, that pipeline is http://github.com/bootiful-asciidoctor/sample-pipeline. Make sure to adjust the environment variables to reflect your Github repository.
The workflow in turn invokes a Shell script in the same directory - trigger_book_build.sh
- that looks like this:
#!/usr/bin/env bash
# (1)
curl -H "Accept: application/vnd.github.everest-preview+json" -H "Authorization: token ${GH_PAT}" --request POST --data '{"event_type": "update-event"}' https://api.github.com/repos/${PIPELINE_ORG_NAME}/${PIPELINE_REPO_NAME}/dispatches
-
Note that we’re sending a payload in the body of the HTTP
POST
entity in which we specify the name of the event we’d like to trigger. It’s arbitrary. Here, we say that theevent_type
isupdate-event
, butupdate-event
could just as easily have beenpublish-please-event
or anything else, so long as we remember the event we’ve specified when implementing the next part…
That curl
command invokes the Github API and triggers the pipeline workflow which in turn then ends up pulling in this very sample-book
repository and all the dependent code repositories and then, a few minutes later, produces all the various documents.
Enabling the Pipeline repository to listen for changes
You don’t need to do much to make this work here besides ensure that your workflow file explicitly supports our arbitrary event. You can refer to the sample-pipeline
Github Actions workflow for a more thorough example, but here’s the important bit:
on:
repository_dispatch:
types: update-event
push:
branches: [ master ]
pull_request:
branches: [ master ]
That tells Github Actions to run the pipeline whenever anybody updates the code in the pipeline repository itself or whenever it receives a valid update-event
, like the one we’re publishing from the sample-book
repository Github Actions.


fun onBindViewHolder(p0: PostViewHolder, p1: Int): Unit
Binds Data from the allPosts to the PostViewHolder Checks if images has to be displayed or not Checks if Heart animation must be played


{% extends "layouts/layout.html" %} {% block content %}
Top Bid: {{ pickle.loads(asset.sellOrders)[0][1] }}
Top Ask: {{ pickle.loads(asset.buyOrders)[0][1] }}
Sell Price: {{ asset.sellPrice }}
Buy Price: {{ asset.buyPrice }}
Margin: {{ "%.2f%%"|format(asset.margin) }}
Total Volume: {{ asset.prettyVolume() }}
Sell Volume: {{ asset.prettyVolume("sell") }}
Buy Volume: {{ asset.prettyVolume("buy") }}
Sell Movement: {{ asset.sellMovingWeek }}
Buy Movement: {{ asset.buyMovingWeek }}
BFPM: 57.4%
BFPH: 57.4%
| Price | Amount | Orders |
|---|---|---|
| {{ order[1] }} | {{ order[0] }} | {{ order[2] }} |
| Price | Amount | Orders |
|---|---|---|
| {{ order[1] }} | {{ order[0] }} | {{ order[2] }} |
Please Login
to start trading
_L4N just placed an order for 1000x Stock of Stonks @ $14,741 per.
_L4N just placed an order for 1000x Stock of Stonks @ $14,741 per.
_L4N just placed an order for 1000x Stock of Stonks @ $14,741 per.


|
wf
|
Files | |
| file | bitstream.c |
| file | bitstream.h [code] |
| file | config.h [code] |
| file | mask.c |
| file | mask.h [code] |
| file | mmask.c |
| file | mmask.h [code] |
| file | mqrspec.c |
| file | mqrspec.h [code] |
| file | qrencode.c |
| file | qrencode.h [code] |
| file | qrencode_inner.h [code] |
| file | qrinput.c |
| file | qrinput.h [code] |
| file | qrspec.c |
| file | qrspec.h [code] |
| file | rsecc.c |
| file | rsecc.h [code] |
| file | split.c |
| file | split.h [code] |


---
layout: post
title: Web 2.0 to become Enterprise 2.0
tags:
- Work Practices
status: publish
type: post
published: true
meta: {}
---
[slideshare id=115431&doc=approaches-to-online-collaboration4038&w=425]
A presentation from my chum Kate on some of the new challenges facing organisations as Gen Y/Z comes on-board the workforce.
What I would like to see are some studies on how effective some of the new tools (Wikies, IM, "Project Centres" , Task Managers, etc) are in real life.
(Project Centres refers to tools like Basecamp)