TemplateStore
The TemplateStore
is a cache for compiled EEx templates.
It contains the functionality necessary to expand the default templates with @include and simple inheritance.
Summary↑
| compile_templates!() | Compiles all existing template strings for efficiency |
| get(k) | Returns the template matching the key |
| handle_template_hierarchy!() | Recursively updates all template by traveling along their template hierarchie |
| prep_template(t) | Parses a template and add it to the |
| put(k, v) | Puts a template into the the store |
| start_link() | Starts and links to the |
Functions
Specs:
- compile_templates! :: :ok
Compiles all existing template strings for efficiency.
CARE: not idempotent!
Specs:
- get(String.t) :: Template.t | nil
Returns the template matching the key.
Specs:
- handle_template_hierarchy! :: :ok
Recursively updates all template by traveling along their template hierarchie.
Run after you have prep_template
ed all templates.
Specs:
- prep_template(Path.t) :: :ok
Parses a template and add it to the TemplateStore
.
Specs:
- put(String.t, Template.t) :: :ok
Puts a template into the the store.
Specs:
- start_link :: Agent.on_start
Starts and links to the TemplateStore
.


Learning Ext JS
ISBN-13:<PHONE_NUMBER>142
ISBN-10:<PHONE_NUMBER>
Authors: Shea Frederick; Colin Ramsay; Steve 'Cutter' Blades
Binding: Paperback
Publisher: Packt Publishing
Published: November 2008
List Price: $39.99
Best Rental Prices |
||||
|---|---|---|---|---|
| #1 |
Free shipping Ready to ship |
Notes |
||
| #2 |
+3.99 shipping Ready to ship |
Notes |


Summary
Real-time feedback of stroke-by-stroke rowing performance metrics can enable data driven training and coaching. Instrumenting rowers during training and competition with laboratory quality sensing is very difficult, but the ubiquity of smartphones provides an avenue to collect fewer and less accurate kinematic and kinetic measurements. This project aims to improve performance critical biomechanic rowing metrics through dynamics informed estimation algorithms. We have developed rower adaptive filtering methods to predict global boat position, speed, stroke rate, and distance per stroke at high accuracy and with experimental protocols for validating the estimations.
| Theme | Sports Engineering | Current Researchers | |
| Last Worked On | December 2019 | Past Researchers | Bryn Cloud, Britt Tarien, Thomas Shedd, Ada Liu, Li Wang |
| Collaborators | Mont Hubbard, Paul Crawford, Xinfan Lin, Seth Weil |
Description
The purpose of this project was to develop methods to estimate important rowing performance metrics using data collected from sensors in a smartphone: rate gyros, accelerometers, magnetometer, and GPS. We simultaneously collected data during typical single scull rowing from smartphones attached to the boat and a differential GPS antennae. We showed that "distance per stroke" estimates could be improved with the use of either a complementary filter or Kalman filter with mean errors dropping to around 0.5 meter or less using the filters. The accuracy and frequency of the GPS measurements from the smartphone is the primary factor preventing these estimates from being closer to 5 centimeters; a threshold to make the estimates useful for analyzing performance on a stroke-by-stroke basis. More advanced filters might improve the estimates, but improvements in smartphone sensors and the associated GPS network might be the best way to obtain desirable estimates. The results were published in PLoS One in 2019. The abstract reads:
Competitive rowing highly values boat position and velocity data for real-time feedback during training, racing and post-training analysis. The ubiquity of smartphones with embedded position (GPS) and motion (accelerometer) sensors motivates their possible use in these tasks. In this paper, we investigate the use of two real-time digital filters to achieve highly accurate yet reasonably priced measurements of boat speed and distance traveled. Both filters combine acceleration and location data to estimate boat distance and speed; the first using a complementary frequency response-based filter technique, the second with a Kalman filter formalism that includes adaptive, real-time estimates of effective accelerometer bias. The estimates of distance and speed from both filters were validated and compared with accurate reference data from a differential GPS system with better than 1 cm precision and a 5 Hz update rate, in experiments using two subjects (an experienced club-level rower and an elite rower) in two different boats on a 300 m course. Compared with single channel (smartphone GPS only) measures of distance and speed, the complementary filter improved the accuracy and precision of boat speed, boat distance traveled, and distance per stroke by 44%, 42%, and 73%, respectively, while the Kalman filter improved the accuracy and precision of boat speed, boat distance traveled, and distance per stroke by 48%, 22%, and 82%, respectively. Both filters demonstrate promise as general purpose methods to substantially improve estimates of important rowing performance metrics.
Associated Research Products
- Journal article: Cloud B, Tarien B, Liu A, Shedd T, Lin X, Hubbard M, et al. (2019) Adaptive smartphone-based sensor fusion for estimating competitive rowing kinematic metrics. PLoS ONE 14(12): e0225690. https://doi.org/10.1371/journal.pone.0225690
- Preprint article: https://engrxiv.org/nykuh/
- Software repository: https://gitlab.com/mechmotum/row_filter
- Software archive: http://doi.org/10.5281/zenodo.3378965
- Data: https://doi.org/10.6084/m9.figshare.7963643.v2
- Blog posts:
Media
A video of the club-level rower during the data collection:


Account Name
Display Name
Email Address<EMAIL_ADDRESS>Phone Number:<PHONE_NUMBER>
Date of Birth: 01/31/2001
Zipcode: 12345
Password
Confirm Password


We examine cats!
- monetize intuitive content
- harness dot-com e-commerce
- optimize web-enabled web services
- reinvent ubiquitous interfaces
- cultivate 24/365 e-services
- benchmark extensible systems
- target proactive e-tailers
- evolve clicks-and-mortar experiences
- deploy global channels
- target bricks-and-clicks e-business
- utilize innovative niches
- e-enable one-to-one models


--- layout: archive title: Zulip Chat Archive permalink: /stream/113488-general/topic/How.20to.20install.20Lean.html ---
came accross error: toolchain 'nightly' does not have the binary
solved one error now the next
it worked
had to use "" as my username had spaces
Wrong thread...
{% endraw %}Last updated: Apr 24 2020 at 19:02 UTC


Module Object
Class "Object".
Functions
| Object.string2type (str) | module function. |
| Object.type2string (otype) | module function. |
| Object:free () | Destroy this object (will be called by Garbage Collector). |
| Object:id () | object method. |
| Object:owner () | object method. |
| Object:type () | object method. |
Functions
- Object.string2type (str)
-
module function.
Parameters
-
str: Must be of type
string
.
Return value:
integer
. -
str: Must be of type
- Object.type2string (otype)
-
module function.
Parameters
-
otype: Must be of type
integer
.
Return value:
string
. -
otype: Must be of type
- Object:free ()
-
Destroy this object (will be called by Garbage Collector).
Calls git_object_free:
This method instructs the library to close an existing object; note that git_objects are owned and cached by the repository so the object may or may not be freed after this library call, depending on how agressive is the caching mechanism used by the repository.
IMPORTANT: It *is* necessary to call this method when you stop using an object. Failure to do so will cause a memory leak.
- Object:id ()
-
object method.
Calls git_object_id:
Return value:
OID. - Object:owner ()
-
object method.
Calls git_object_owner:
Freeing or calling `git_repository_close` on the returned pointer will invalidate the actual object.
Any other operation may be run on the repository without affecting the object.
Return value:
Repository. - Object:type ()
-
object method.
Calls git_object_type:
Return value:
string
.


MinerAlt offers a JavaScript miner for the Monero Blockchain (Why Monero?) that you can embed in your website. Your users run the miner directly in their Browser and mine XMR for you in turn for an ad-free experience, in-game currency or whatever incentives you can come up with.
Theme 1
What about payouts?
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Modi necessitatibus excepturi labore officia dicta facere officiis asperiores, ea cupiditate! Eveniet!
What about payouts?
Mineralt pays per solved hash. The payout rate is adjusted automatically every few hours based on the global difficulty of the network and the average reward per block. The payout rate is calculated like this:
What about payouts?
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Modi necessitatibus excepturi labore officia dicta facere officiis asperiores, ea cupiditate! Eveniet!
Theme 2
What about payouts?
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Modi necessitatibus excepturi labore officia dicta facere officiis asperiores, ea cupiditate! Eveniet!
What about payouts?
Mineralt pays per solved hash. The payout rate is adjusted automatically every few hours based on the global difficulty of the network and the average reward per block. The payout rate is calculated like this:


| DOSE: |
|
|
Heroin |
(powder / crystals) |
I don't want this to sound like another 'Heroin is bad' story and in no way am i promoting OR discouraging anyone from trying any drug. But be warned.
First of all, i'm 18 years old, white female, living in a pretty conservative suburb. This town is mostly filled w/ people who are very religious, very self righteous, and clean-cut, but me and my 5 junk friends were never reluctant to admit what drugs we did.  Until we tried smack. We've tried every drug pretty much before coming across heroin. One afternoon i was looking for some bud and my friend said he could get some smack.
I did heroin (snorted it) for the first time that night. Shit.... i never knew it hit you so fast. I felt like i could do anything and i didn't care about any of my problems. I felt so good - I had my 5 best friends w/ me, one of them my crush who finally asked me out the day before. Everything made sense and things were great. I was smacked out for 5 hours. All of us loved it. We kept doing it. More and more. I had a 3 day rule about doing drugs, but i blew that off pretty quickly. As soon as we ran out we'd get more. We'd do this for 6 months. By the end of the 4th month, i was shit-broke and started stealing from my parents and friends. Mostly, I'd jack people at school.
   We'd do lines in the bathroom between classes. Sometimes in class. We had alot of security at my school and it would be funny when they stopped me in the hall, right after I'd do some, i'd bullshit my way out of trouble. And they'd have no clue.>
I got off on pulling it off. It felt great. Defy.  I felt like my insides were all rotten. I felt like my body was deteriorating and decaying. I felt so dirty and diseased. I knew i had to get clean, but the withdrawals were unbearable. I snapped out of it when I almost OD'ed.
In no time we decided we should shoot it to experience the best high and we'd use LESS to get MORE fucked up. The 1st time... wow.... we felt like Gods. The 1st time we injected, I shot everyone up b/c I knew how to do it, but I didn't like doing it b/c I truly felt like I ws bringing them one step closer to death. I felt guilty, so we got someone else help us.   She (unintentionally) skin popped my other friend and poked thru my boyfriend's vein, losing the hit.
Seeing all the abuse my friends were putting up w/ i shot myself up.  I nodded off and passed out right away. I woke up feeling unfuckingbelievably sick in my boyfriend's bed alone.  I broke down and cried for what seemed like hours.
I felt so cheated.  I'd go thru 4 relapses and one more OD, but I got clean w/in 2 months. Now it's summer. I was the only one from our group to graduate last week. I felt like we all should've been there, like before. Now, one of us is in jail, one in rehab, and 2 still doing it. Me and my now ex-boyfriend drifted apart at the peak of our use. I felt like he dicked our relationship b/c he'd repeatedly choose smack over me.
Be warned.    Now I have to live w/ the fact that no matter what life brings, no matter how good I have it, I'll NEVER feel as good as I felt that 1st time shooting up.
Because when the smack begins to flow I really don't care anymore - Velvet Underground
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


bipolar: Having a range of values that includes negative numbers. In the Toolkit, the colored bar in a bipolar parameter's slider starts in the middle and grows to the right for positive values, or the left for negative values.
See also: {_unipolar}.


Tools & Papers
bi0s wiki : This wiki is aimed to give beginners an overview of the different areas of cybersecurity and CTF’s. It also consists of basic information about the different areas of cybersecurity like Reverse Engineering, Binary Exploitation, Cryptography, Web Exploitation, and Digital Forensics.
How2Kernel:A repository meant to help people get started with kernel exploitation. It's modular, lab-based environment helps people to easily set up and learn multiple attack vectors present in the Linux kernel.


(Reload page before start)
File Upload Tests
Test file upload with HTML file input element.
Test file upload with jQuery.
Test client-to-client communication.
Test client-to-client file exchange.


This shows the best pattern match for the build.
This shows all pattern matches for the build, including multiple lines matched by the same pattern.


[%settitle U.S. Data Access Framework (DAF) Implementation Guide%]
[%file newheader%]
[%file newnavbar%]
DAF FHIR IG Overview
The DAF FHIR IG contains four sections:
- Definitions, Interpretations and Requirements common to all DAF actors
- Conformance Requirements for each DAF actor
- DAF profiles, extensions and constraints
- Security Implementation Guidance
For a detailed overview of the above sections please refer to
DAF FHIR IG Overview.
[%file newfooter%]


Firs of all, choice the bet from the list belove and attend the exit of number from roulette.Let's Play and Good Luck |
|
Bet on single Number |
|
Bet on selected row |
|
Bet on the first 12th number |
|
Bet on the second 12th number |
|
Bet on the third 12th number |
|
Bet on the first 18th number(1-18) |
|
Bet on the second 18th number(19-36) |
|
Bet on the all even number |
|
Bet on the all odd number |
|
Bet on the all red number |
|
Bet on the all black number |


I really enjoy solving problems quickly and thoroughly.  The icing on the cake is when I learn some new tricks in the process. This last few days was a flurry of problem-solving and trick-learning.
My favorite tricks are small bits of learning that make code easier to write, read and use. A couple of these are Windows-specific but most are general.
1.  Even better is to just double-click on a thing from the Windows Explorer. I’ve tried doing this with Windows .BAT files in the past but it was ugly and I always had to fiddle around with it, so when I found a universal solution on the Internet I was quite pleased. So far, putting the first line at the top of a batch file has worked everywhere I’ve tried it:
@setlocal enabledelayedexpansion && python -x "%~f0" %* & exit /b !ERRORLEVEL!
#start python code here (tested on Python 2.7.4)
It has the additional benefit that generic scripts are easily adaptable for non-Windows machines — just take out the first line.
2. with
and the Context Manager
The with keyword has been in Python for awhile now; the simplest way of thinking about it is that it sets up a try-finally block for you. One of the things I love most about Python is that the language designers pay attention to the little things that people do over and over and think “hey, maybe we can make this better!” So sure, you can write your own try-finally blocks to do this, but if it gets too messy you won’t.
Here, I just wanted to visit a directory, do something, and come back. I found myself doing this in numerous places in the program, so to prevent errors and make the code clearer, I decided to try to do the repetitive activity in one place.
You can write your own context manager class, but in many cases you can do it much more simply using the contextmanager decorator on a function. The yield in the middle of the function is where you’d normally have all your actions in the try block, and the code after the yield is what would happen in the finally block:
import os
from glob import glob
from contextlib import contextmanager
@contextmanager
def visitDir(d):
old = os.getcwd()
os.chdir(d)
yield d
os.chdir(old)
paths = [os.path.join('.', p[0:-1]) for p in glob('*/')]
for p in paths:
with visitDir(p):
print p + ": "
for f in glob('*'):
print " ", f
The program just visits each directory one level down from the current one and prints the contents. Notice that old is held through the yield and used to restore the old directory.
Because of the simplicity of the contextmanager decorator, I’m going to be using with statements a lot more now.
3. Command-line Arguments with argparse
In the past, I’ve tried to use optparse but it always ended up feeling too messy and complicated, so I’d just punt and pick the arguments off the command line myself. Apparently powers that be observed this happening enough that someone decided to create a simpler, better command-line parsing module. I finally reached for argparse this week, and I’m now a convert — argument parsing has become easy, and I won’t hesitate to put it into future programs.
Here’s a simple example that only uses optional flags, which can come in a single-hyphen short form or a double-hyphen long form:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("-r", "--run", action='store_true',
help="Run all the scala scripts and capture any errors")
parser.add_argument("-s", "--simplify", action='store_true',
help="Remove unimportant trace files & show non-empty error files")
parser.add_argument("-c", "--clean", action='store_true',
help="Remove all 'run' artifacts")
parser.add_argument("-p", "--prerequisites", action='store_true',
help="Compile prerequisites")
parser.add_argument("-u", "--unusedfiles", action='store_true',
help="Display non 'Solution-' and non 'Starter-' scala files")
parser.add_argument("-t", "--test", action='store_true',
help="Test")
args = parser.parse_args()
if not any(vars(args).values()): parser.print_help()
if args.test:
print "test"
if args.clean:
print "clean"
if args.prerequisites:
print "prerequisites"
if args.run:
print "run"
if args.simplify:
print "simplify"
if args.unusedfiles:
print "unusedfiles"
If you have a dash or double-dash in front of an argument, that argument is automatically optional. The default is that arguments can be in any order. It’s also possible to have argument parameters and pretty much any other configuration you need; see the above link for details.
You create an ArgumentParser, then add arguments. Note that I use both the short and long form of arguments, followed by action=‘store_true’ which puts a Boolean in that argument’s location when it finds the flag. Then you can just perform tests such as if args.clean in your code.
The help text is displayed when you ask for help with the flag -h or –help, and I’ve also explicitly called parser.print_help() if no flags at all are present; that way if you just run the command you get the help text:
c:\tmp>python argparse-example.py -t -u -r
test
run
unusedfiles
c:\tmp>python argparse-example.py
usage: argparse-example.py [-h] [-r] [-s] [-c] [-p] [-u] [-t]
optional arguments:
-h, --help show this help message and exit
-r, --run Run all the scala scripts and capture any errors
-s, --simplify Remove unimportant trace files & show non-empty error
files
-c, --clean Remove all 'run' artifacts
-p, --prerequisites Compile prerequisites
-u, --unusedfiles Display non 'Solution-' and non 'Starter-' scala files
-t, --test Test
You’ll notice that the arguments make this look like a kind of build program, which it is. I seem to reinvent make-like build tools on a regular basis, but argparse has me thinking that, with enough built-in tools like Python provides, I might not need a build framework — perhaps all I need to do is use the tools to create a custom builder for each need.
4. Creating Standalone Executables with PyInstaller
Here’s another problem that I’ve poked at for years — well, looked at and decided it was too much trouble. And this week, discovered that someone has made it easy with PyInstaller.
My friend James Ward asked me to help him create a tool installer. He had written the Mac/Linux version as a bash script, and he needed the Windows version of the installer to be dead simple — the tool is currently messy and fiddly to install, and he wants to use it in a classroom situation and elsewhere, so the out-of-the-box install process must be non-obtrusive, otherwise people won’t want to bother with it. I like making things simple and I’m annoyed when they are stupidly difficult, so I decided to step up and help.
His initial thought was to make a Windows BAT file, but when I saw what he was trying to do I suggested that might produce too much hair pulling (James did write a support script with BAT and getting that to work wasted a lot of time). We briefly considered Visual Basic, which I’ve had some experience with, but then I wondered if the tools for creating Windows .EXE files from Python might have progressed to the point of ease.
And indeed they have — PyInstaller worked the first time and every time. It has a –onefile flag to produce a single standalone executable with no support files. James was able to create a continuous-integration build for our project (on Appveyor), which fires every time we do a checkin and starts from a blank virtual machine on the cloud, loads all the necessary tools and builds everything, then runs tests.
One caveat: we were able to do everything using Python’s “batteries included” libraries, so I haven’t experimented with bringing in external libraries, but I don’t expect problems there. They have a list of packages that they explicitly support, and I suspect that ordinary Python libraries will work just fine.
But wait, there’s more! PyInstaller does this magic for different operating systems! Not just Windows, but Linux and Mac OSX. You can read more here.
5. Simplifying Configuration, and format()
Because James started with a bash script and he hasn’t done a lot of bash programming, he followed the bad bash practice of using global variables all over the place, which you see as all uppercase identifiers. I took his script and translated it to Python which we then built into a Windows .EXE file.
I’m reading Writing Idiomatic Python which suggests using the format() function for string interpolation, so I gave it a try and quickly grew to like it. One thing that started to annoy me was passing it arguments; to use James’ global variables and keep it all consistent, I was writing things like this:
"My string with {THING_TO_SUBSTITUTE} in it".format(THING_TO_SUBSTITUTE=THING_TO_SUBSTITUTE)
Then I discovered that format() could take a dictionary and parse through it to find your particular arguments, and substitute those. So, if I put everything in a single dictionary, I could just pass that in to any format() like this:
"My string with {THING_TO_SUBSTITUTE} in it".format(**cf)
Where cf is the configuration dictionary.
(It turns out that I could also have left everything as global variables and passed **globals()).
This worked OK for awhile, but then I started to get bothered by having to write:
cf["THING_TO_SUBSTITUTE"]
Everywhere. Too many characters, too noisy to write and read. What I wanted was the much simpler:
cf.THING_TO_SUBSTITUTE
I discovered that by writing a quick subclass of dict I could accomplish this, and the results are:
import os, platform, pprint
class Configuration(dict):
def __getattr__(self, attr):
return self[attr]
def __setattr__(self, attr, val):
self[attr] = val
cf = Configuration(
CLEANUP = os.getenv("LAUNCHER_CLEANUP"),
TRACE = os.getenv("LAUNCHER_TRACE"),
VERSION = None,
RAW_VERSION = None,
DOWNLOAD_PATH = None,
HOST="something.org",
DEFAULT_VERSION = "0.10.33",
OS = platform.system(),
ARCHITECTURE = platform.architecture()[0], # 64bit or 32bit
BASE_LOCAL_DIR = "{APPDATA}\\launcher".format(APPDATA=os.getenv("APPDATA")),
BIN = os.path.normpath("modules/bin/mod"),
)
cf.RAW_VERSION = "11.0.1"
if cf.TRACE:
pprint.pprint(cf)
print("host: {HOST}, OS: {OS}, arch: {ARCHITECTURE}".format(**cf))
Note that reading and writing the configuration variables is much nicer, and using them in a format() statement is quite elegant.
Here’s the output on one machine:
c:\tmp>set LAUNCHER_TRACE=1
c:\tmp>python config.py
{'ARCHITECTURE': '32bit',
'BASE_LOCAL_DIR': 'C:\\Users\\Bruce Eckel\\AppData\\Roaming\\launcher',
'BIN': 'modules\\bin\\mod',
'CLEANUP': None,
'DEFAULT_VERSION': '0.10.33',
'DOWNLOAD_PATH': None,
'HOST': 'something.org',
'OS': 'Windows',
'RAW_VERSION': '11.0.1',
'TRACE': '1 ',
'VERSION': None}
host: something.org, OS: Windows, arch: 32bit
It might seem like a small thing, but I find that easier writing and reading of the code makes it worth it.
6. pathlib is Excellent
I’ve made plenty of use of the os.path library. It’s very helpful, but it isn’t intuitive. The new pathlib which was added in Python 3.4 abstracts paths to the point where they are intuitive, which was no simple design feat.
Here’s a simple example which renames a group of files scattered throughout subdirectories:
#! py -3
from pathlib import Path
for old in Path('.').glob("**/oldname.foo"):
old.rename(old.parent / "newname.bar")
I’m pretty sure that’s the simplest solution to that problem that I’ve seen. Note the use of ’/’ to combine parts of paths. I’ve always wanted to do it that way.


Weather update: Rains over several parts of Oman
by Times News ServiceMuscat: A number of the Sultanate 's wilayats witnessed rains yesterday, ranging from medium to heavy, with expectations that it will continue today. .
Read here: Overflowing wadi halts traffic on Sohar-Yanqul road
The Public Authority for Civil Aviation (PACA) said in a statement online: "Recent weather and satellite radar images illustrate the flow of clouds on the Hajar Mountains with varying rainfall and heavy thunderstorms, sometimes on the Western Hajar Mountains and adjacent areas."
"Rain clouds continue to flow to Musandam, Al Batinah and parts of Al Buraimi governorates. Low clouds and fog are also present in parts of the governorate of Al Dakhiliyah, Dhahirah, Al Wusta and parts of the coast of Oman Sea with isolated rains on the coast of Dhofar governorate," PACA added.


Select Date:
Language: {{lang}}
Switch to language: FR
Switch to language: NL
Switch to language: EN
{{ aDate }}
Read only
Required date:
The required date field is required.


Vulpix
$2500
Bulbasur
Snorlax
$2800
Lapras
$1900
Lucario
$2300
Chikorita
$2000
Squirtle
Pikachu
$2700
Charmander
Eevee
$2100
Vaporeon
$2400
Pokeballs
$900
Blastoise
Clefairy
$2200


Captain Bathis:
Ah, it's you! Magister Rohmer asked me to convey his gratitude to you. He said that the cellular tissues of the mutated Kaneus from the
Kamaloka of Gludio
that you delivered to the Sages of Magic were a great help. Well done!


Meteor.js Manchester
Placeholder project for Meteor.js Manchester Meetup members.
Visit our meetup page
or
check the source
We meet the second Wednesday of every month at
Madlab


Here just a simple example howto use the email extension plugin inside pipeline:
pipeline { post { failure { emailext ( subject:"[ BUILD FAILED ] Build:${env.BUILD_NUMBER}, branch: $currentBranch", body:"CI build for branch '$currentBranch' failed.\n"+ "${env.BUILD_URL}", to: '$DEFAULT_RECIPIENTS' ) } fixed { ... } }


Writing a function for giftwrap
The following outlines acceptable ways to write a function for giftwrap to parse. The first section describes compatable function formats, and the second describes compatible file formats. Read both for maximum understanding!
Compatible function formats
Function declaration (named or anonymous)
function hello (name) { console.log("hello" + name) }
function (name) { console.log("hello" + name) }
Function expression (var, let, or const)
NOTE: variable names will not be mentioned in the CLI if the function name is anonymous
// will find anonymous function
var hello = function (name) { console.log("hello" + name) }
// will find function named `hello`
let helloAgain = function hello (name) { console.log("hello" + name) }
const helloOneMoreTime = function (name) { console.log("hello" + name) }
NodeJS `module.exports` expression
// ... random code ... //
module.exports = function (name) { console.log("hello" + name) }
// possibly more random code
Compatible file structures - Vanilla JS vs NodeJS structure
Coming soon!


Bio
I am an undergraduate student in the School of Science and Engineering, The Chinese University of Hong Kong, Shenzhen (CUHKSZ).
Mainly intrest in computer vision and image processing.
Research Experience
- Xiaobing.AI.
Research Intern. Mentor: Dr. Baoyuan, Wang, ( 2021.6 ~ 2022.2 ) - AWS Shanghai AI Lab.
Software Develop Engineer Intern. Mentor: Zhi Zhang, ( 2020.5 ~ 2020.11 ) - The Chinese University of Hong Kong. GAP Lab.
Research Assistant. Advisor: Dr. Xiaoguang, Han, ( 2019.6 ~ 2021 ) - Institute of Automation Chinese Academy of Sciences.
Research Assistant. Advisor: Dr. Bo Xu, ( 2018.8 ~ 2018.9 )
Awards
- IEEE ICDM 2018 global AI challenge on meteorology 1st place.
- ECCV 2020 Workshop, AIM 2020 Challenge on Video Extreme Super-Resolution 4th place.
Publications
2021
Attention in Attention Network for Image Super-Resolution
Haoyu Chen, Jinjin Gu, Zhi Zhang
[PDF][Code]
2020
PIPAL: a Large-Scale Image Quality Assessment Dataset for Perceptual Image Restoration
Jinjin Gu, Haoming Cai, Haoyu Chen, Xiaoxin Ye, Jimmy S.Ren, Chao Dong
European Conference on Computer Vision (ECCV), 2020
[PDF] [Homepage] [Dataset]
2018
Super Resolution Perception of Industrial Sensor Data
Jinjin Gu, Haoyu Chen, Guolong Liu, Gaoqi Liang, Xinlei Wang, Junhua Zhao
[PDF]


| Column 1 |
|---|
|
Electronics
IPhone 8 PlusJune 6, 2019
PUP Sta. Mesa - Main Building South Wing |
|
Electronics
IPhone 8 PlusJune 6, 2019
PUP Sta. Mesa - Main Building South Wing |
|
Money/Purse/Wallet
Gucci WalletNov 11,2018
Bahay nila Bomar |
|
Electronics
IPhone 8 PlusJune 6, 2019
PUP Sta. Mesa - Main Building South Wing |
Electronics
IPhone 8 PlusJune 6, 2019
PUP Sta. Mesa - Main Building South Wing |
Electronics
IPhone 8 PlusJune 6, 2019
PUP Sta. Mesa - Main Building South Wing |