cytopy.flow.gating.density¶
Classes
|
Threshold gating estimated using properties of a Probability Density Function of events data as estimated |
-
class
cytopy.flow.gating.density.
DensityThreshold
(kde_bw: float = 0.01, ignore_double_pos: bool = False, std: float = None, q: float = 0.95, peak_threshold: float = None, **kwargs)¶ Bases:
cytopy.flow.gating.base.Gate
Threshold gating estimated using properties of a Probability Density Function of events data as estimated using Gaussian Kernel Density Estimation
- Parameters
kde_bw (float, (default=0.01)) – Bandwidth to use for gaussian kernel density estimation
ignore_double_pos (bool, (default=False)) – if True, in the case that multiple peaks are detected, peaks to the right of the highest peak will be ignored in the local minima calculation
q (float, optional, (default=0.95)) – if only 1 peak is found, quartile gating is performed using this argument as the quartile
std (float, optional) – alternative to quartile gating, the number of standard deviations from the mean can be used to determine the threshold
peak_threshold (float, optional) – If not None, this decimal value represents what the minimum height of a peak should be relevant to the highest peak found (e.g. if peak_threshold=0.05, then all peaks with a height < 0.05 of the heighest peak will be ignored)
kwargs – Gate constructor arguments (see cytopy.flow.gating.base)
Methods
child_update_1d
(threshold, method)Internal method.
child_update_2d
(x_threshold, y_threshold, method)Internal method.
gate_1d
()Perform density based threshold gating in 1 dimensional space using the properties of a Probability Density Function of the events data as estimated using Gaussian Kernel Density Estimation.
gate_2d
()Perform density based threshold gating in 2 dimensional space using the properties of a Probability Density Function of the events data as estimated using Gaussian Kernel Density Estimation.
generate_chunks
(chunksize)Generate a list of dataframes (chunks) from original data of a target chunksize
generate_polygons
(data)Generate a dictionary of polygon coordinates and shapely Polygon from clustered data
sampling
(data, threshold)For a given dataset perform down-sampling
uniform_downsample
(sample_size, data)Sample associated events data
-
child_update_1d
(threshold: float, method: str) → None¶ Internal method. Given a threshold and method generated from 1 dimensional threshold gating, update the objects child population collection.
- Parameters
threshold (float) – threshold value for gate
method (str) – method used for generating threshold
- Returns
- Return type
None
-
child_update_2d
(x_threshold: float, y_threshold: float, method: str) → None¶ Internal method. Given thresholds and method generated from 2 dimensional threshold gating, update the objects child population collection.
- Parameters
x_threshold (float) – threshold value for gate in x-dimension
y_threshold (float) – threshold value for gate in y-dimension
method (str) – method used for generating threshold
- Returns
- Return type
None
-
gate_1d
() → cytopy.flow.gating.defaults.ChildPopulationCollection¶ Perform density based threshold gating in 1 dimensional space using the properties of a Probability Density Function of the events data as estimated using Gaussian Kernel Density Estimation.
- Returns
Updated child population collection
- Return type
-
gate_2d
() → cytopy.flow.gating.defaults.ChildPopulationCollection¶ Perform density based threshold gating in 2 dimensional space using the properties of a Probability Density Function of the events data as estimated using Gaussian Kernel Density Estimation. KDE and threshold calculation performed on each dimension separately.
- Returns
Updated child population collection
- Return type
-
generate_chunks
(chunksize: int) → list¶ Generate a list of dataframes (chunks) from original data of a target chunksize
- Parameters
chunksize (int) – target size of chunks (might be smaller or larger than intended value depending on the size of the data)
- Returns
List of pandas dataframes, one for each chunk
- Return type
List
-
generate_polygons
(data: pandas.core.frame.DataFrame = None) → dict¶ Generate a dictionary of polygon coordinates and shapely Polygon from clustered data objects
- Parameters
data (Panda.DataFrame, optional) – Optional, if DataFrame given, overwrites call to self.data
- Returns
Dictionary of polygon coordinates and dictionary of Polygon shapely objects
- Return type
dict
-
sampling
(data: pandas.core.frame.DataFrame, threshold: float) → pandas.core.frame.DataFrame¶ For a given dataset perform down-sampling
- Parameters
data (Pandas.DataFrame) – Events data to downsample
threshold (float) – threshold below which sampling is not necessary
- Returns
Down-sampled data
- Return type
Pandas.DataFrame or None
-
uniform_downsample
(sample_size: int = 0.1, data: pandas.core.frame.DataFrame = None) → pandas.core.frame.DataFrame¶ Sample associated events data
- Parameters
sample_size (int or float, (default=0.1)) – fraction or number of events to sample from dataset
data (Pandas.DataFrame, optional) – Optional, if given overrides call to self.data
- Returns
sampled pandas dataframe
- Return type
Pandas.DataFrame


Singaporean Noodles
Rachel Smith
Tonkatsu Curry
Samuel L. Jackson
Kimchi Fried Rice with Egg
Randy McManus
Get food now


Research Grants & Proposals
European Southern Observatory VLT/X-Shooter, 105.20JM Towards a complete chemical history of galaxies: the UV rosetta stone at z=2 (2019)
HST AR-15010 PHAT+MaNGA: Using resolved stellar populations to improve the recovery of star formation histories from galaxy spectra (2017)
HST AR-14283 Detangling Galaxy Spectra: A Baseline Calibration Using Resolved Stars (2015)
Royalties Research Fund Grant Beyond stars: Modeling the light from galaxies (2015)
MaNGA Ancillary Program MaNGA Resolved Stellar Populations (2015)
NSF EAPSI Fellow Refining Stellar Population Synthesis Models (2013)
After-Sloan-IV proposal The Dynamic Ranger: A Multi-Scale Survey of Galaxies (2016)
MUSE Observing Program A systematic multi-tracer study of HII regions in NGC 300 (PI MacLeod, 2016)


Firstly, get merged data of one molecular profile value and associated clinical data from TCGA Pan-Cancer dataset.
Secondly, filter data as your wish.
Finally, show K-M plot.
tcga_surv_get( item, TCGA_cohort = "LUAD", profile = c("mRNA", "miRNA", "methylation", "transcript", "protein", "mutation", "cnv"), TCGA_cli_data = dplyr::full_join(load_data("tcga_clinical"), load_data("tcga_surv"), by = "sample") ) tcga_surv_plot( data, time = "time", status = "status", cutoff_mode = c("Auto", "Custom"), cutpoint = c(50, 50), cnv_type = c("Duplicated", "Normal", "Deleted"), profile = c("mRNA", "miRNA", "methylation", "transcript", "protein", "mutation", "cnv"), palette = "aaas", ... )
| item | a molecular identifier, can be gene symbol (common cases), protein symbol, etc. |
|---|---|
| TCGA_cohort | a TCGA cohort, e.g. "LUAD" (default), "LUSC", "ACC". |
| profile | a molecular profile. Option can be one of "mRNA" (default), "miRNA", "methylation", "transcript", "protein", "mutation", "cnv". |
| TCGA_cli_data | a |
| data | a subset of result from |
| time | the column name for "time". |
| status | the column name for "status". |
| cutoff_mode | mode for grouping samples, can be "Auto" (default) or "Custom". |
| cutpoint | cut point (in percent) for "Custom" mode, default is |
| cnv_type | only used when profile is "cnv", can select from |
| palette | color palette, can be "hue", "grey", "RdBu", "Blues", "npg", "aaas", etc.
More see |
| ... | other parameters passing to |
a data.frame
or a plot.
if (FALSE) { # 1. get data data <- tcga_surv_get("TP53") # 2. filter data (optional) # 3. show K-M plot tcga_surv_plot(data, time = "DSS.time", status = "DSS") }


\(\leftarrow\) Back to Chapters
First of all, Lagrange multipliers method can give rigorous proofs. Of course the presentation in 11.6 is not rigorous, but that is a feature of the particular situation and presentation, not a general comment on Lagrange multipliers method.
Secondly, from “modern” perspective we see that the constraints \(E_p[f_k]=F_k\) imply that the cross-entropy
\[H(p, u)=E_p[-\log u]=\] \[E_p[\log Z(\vec{\lambda})]+E_p[\sum \lambda_i f_i]=\] \[\log Z(\vec{\lambda})+\vec{\lambda}\cdot \vec{F}\]
is fixed — and equal to \(H(u)\).
Then
\[H(p)=H(p, u)-D_{KL}(p,u) =\]
\[H(u)-D_{KL}(p,u) \leq H(u)\]
with equality precisely when \(p=u\).
This seems to ignore completely the debate on foundations of quantum mechanics, and such topics as “alternative” formulations of de Broglie–Bohm pilot wave and Everett many world interpretation, as well as the Bell’s theorem. Jaynes’s views on a lot of this are in his paper “Clearing up the mysteries – the original goal”.


about total management?
Total Management is a free, tableless, W3C-compliant web design layout by Template World. This template has been tested and proven compatible with all major browser environments and operating systems. You are free to modify the design to suit your tastes in any way you like.
We only ask you not to remove "Design by Template World" and the link http://www.templateworld.com from the footer of the template.
If you are interested in seeing more of our free web template designs feel free to visit our website, Template World. We intend to add at least 25 new free templates in the coming month.


I am currently an Associate Professor in the Maersk Mc-Kinney Moller Institute at University of Southern Denmark as part of the Game Development and Learning Technologies group.
I have completed my PhD in Affective Music Generation and its Effect on Player Experience as part of the Center for Computer Games Research games at the IT University of Copenhagen.
My PhD research investigated the expression of moods and the affective effect this mood-expressive music can have on the listener and applied this research to games: the final objective was to create a system where, by using a cognitive model of the player, we would be able to identify the player's emotional state and be able to reinforce or manipulate it through the use of mood-expressive music to improve user experience.
What this research hopes to achieve is creating better immersive experiences (reinforcement of current emotional state and playstyle) and help the designers create experiences where the players are put in a specific emotional state (manipulation).
I completed my Master degree in Information Technology through the Media Technology and Games program of IT University of Copenhagen in June 2014. During my master studies I have developed a great interest in Procedural Content Generation for games, especially of music. My research at the time created the basis of what now is my PhD work: the expression of affective meaning through computer-generated music.
I have also developed different types of games (both large and small) during my education and in my spare time. I received my Bachelor degree in Computer Science from the Università Statale di Milano in 2011, in which I specialized in artificial intelligence and mathematical logic.
I am currently teaching game development and continuing research on procedural content generation with, of course, a focus on music generation.
Per Trads Ørskov, Marco Scirea, et al. "Cognitive behavioral therapy with adaptive virtual reality exposure vs. cognitive behavioral therapy with in vivo exposure in the treatment of social anxiety disorder: A study protocol for a randomized controlled trial." in Frontiers in Psychiatry (2022)
Brown Joseph Alexander and Marco Scirea. "Evolving Woodland Camouflage" in IEEE Transactions on Games (2022)
Scirea Marco, Julian Togelius, Peter Eklund, and Sebastian Risi. "Affective Evolutionary Music Composition with MetaCompose" in Genetic Programming and Evolvable Machines PDF
Christiansen Sebastian and Marco Scirea. "Space segmentation and multiple autonomous agents: a Minecraft settlement generator" in IEEE Conference on Games (2022) PDF
Scirea Marco and Andrea Valente. "Boardgames and Computational Thinking: how to identify games with potential to support CT in the classroom." in International Conference on the Foundations of Digital Games (2020) PDF
Scirea Marco. "Adaptive Puzzle Generation for Computational Thinking" in International Conference on Human-Computer Interaction (2020) PDF Presentation
Scirea Marco, Peter Eklund, Julian Togelius and Sebastian Risi. "Evolving in-game mood-expressive music with MetaCompose" in Proceedings of the Audio Mostly conference (2018) [Best Paper Award] PDF Presentation
Joseph Alexander Brown and Marco Scirea. "Procedural Generation for Tabletop Games: User Driven Approaches with Restrictions on Computational Resources" in Proceedings of the Software Engineering for Defence Applications (SEDA) (2018) PDF
Jonas Juhl Nielsen and Marco Scirea. "Balanced Map Generation using Genetic Algorithms in the Siphon Board-game" in Proceedings of the Software Engineering for Defence Applications (SEDA) (2018) PDF
Scirea Marco and Andrea Valente. "Thermal bead 3D printing: easy generation and realization of artistic 3D models for primary school pupils" in Procedural Content Generation Workshop at Foundations of Digital Games (FDG) (2018) [Position paper] PDF Presentation
Scirea Marco, Peter Eklund, Julian Togelius and Sebastian Risi. "Towards an experiment on perception of affective music generation using MetaCompose" in Proceedings of the Genetic and Evolutionary Computation Conference (GECCO) (2018) PDF
Scirea Marco, Peter Eklund, Julian Togelius and Sebastian Risi. "Primal-Improv: Towards Co-Evolutionary Musical Improvisation" in Proceedings of the Computer Science & Electronic Engineering Conference (CEEC) (2017) [Nominated for Best Paper Award] PDF Presentation
Scirea Marco, Peter Eklund, Julian Togelius and Sebastian Risi. "Can You Feel It? Evaluation of Affective Expression in Music Generated by MetaCompose" in Proceedings of the Genetic and Evolutionary Computation Conference (GECCO) (2017) PDF
Scirea Marco, Julian Togelius, Peter Eklund and Sebastian Risi. "MetaCompose: A Compositional Evolutionary Music Composer" in Proceedings of Evolutionary and Biologically Inspired Music, Sound, Art and Design (EvoMusArt) (2016) [Best Paper Award] PDF Presentation
Scirea Marco and Joseph Alexander Brown. "Evolving Four Part Harmony Using a Multiple Worlds Model." in Proceedings of International Conference on Evolutionary Computation Theory and Applications (2015) PDF
Scirea Marco, Gabriella A. B. Barros, Noor Shaker and Julian Togelius. "SMUG: Scientific Music Generator." in Proceedings of International Conference on Computational Creativity (2015) PDF
Scirea Marco, Mark J. Nelson and Julian Togelius. "Moody Music Generator: Characterising Control Parameters Using Crowdsourcing." in Proceedings of Evolutionary and Biologically Inspired Music, Sound, Art and Design (EvoMusArt) (2015) [Nominated for Best Paper Award] PDF
Scirea Marco, Byung Chull Bae, Yun-Gyung Cheong and Mark Nelson "Evaluating musical foreshadowing of videogame narrative experiences." in Proceedings of Audio Mostly (2014). PDF
Scirea Marco, Byung Chull Bae, Yun-Gyung Cheong and Mark Nelson "Mood expression in real-time computer generated music using Pure Data." in Proceedings of the International Conference on Music Perception and Cognition (2014). PDF
Scirea Marco. "Mood dependent music generator." in Proceedings of Advances in Computer Entertainment (2013). PDF


| Class | HashWithIndifferentAccess |
| In: |
vendor/rails/activesupport/lib/active_support/core_ext/hash/indifferent_access.rb
|
| Parent: | Hash |
This class has dubious semantics and we only have it so that people can write params[:key] instead of params[‘key’] and they get the same value for both keys.
| []= | -> | regular_writer |
# File vendor/rails/activesupport/lib/active_support/core_ext/hash/indifferent_access.rb, line 6 6: def initialize(constructor = {}) 7: if constructor.is_a?(Hash) 8: super() 9: update(constructor) 10: else 11: super(constructor) 12: end 13: end
# File vendor/rails/activesupport/lib/active_support/core_ext/hash/indifferent_access.rb, line 109 109: def convert_key(key) 110: key.kind_of?(Symbol) ? key.to_s : key 111: end
# File vendor/rails/activesupport/lib/active_support/core_ext/hash/indifferent_access.rb, line 113 113: def convert_value(value) 114: case value 115: when Hash 116: value.with_indifferent_access 117: when Array 118: value.collect { |e| e.is_a?(Hash) ? e.with_indifferent_access : e } 119: else 120: value 121: end 122: end
# File vendor/rails/activesupport/lib/active_support/core_ext/hash/indifferent_access.rb, line 15 15: def default(key = nil) 16: if key.is_a?(Symbol) && include?(key = key.to_s) 17: self[key] 18: else 19: super 20: end 21: end
Removes a specified key from the hash.
# File vendor/rails/activesupport/lib/active_support/core_ext/hash/indifferent_access.rb, line 95 95: def delete(key) 96: super(convert_key(key)) 97: end
Returns an exact copy of the hash.
# File vendor/rails/activesupport/lib/active_support/core_ext/hash/indifferent_access.rb, line 84 84: def dup 85: HashWithIndifferentAccess.new(self) 86: end
Fetches the value for the specified key, same as doing hash[key]
# File vendor/rails/activesupport/lib/active_support/core_ext/hash/indifferent_access.rb, line 68 68: def fetch(key, *extras) 69: super(convert_key(key), *extras) 70: end
Checks the hash for a key matching the argument passed in:
hash = HashWithIndifferentAccess.new hash["key"] = "value" hash.key? :key # => true hash.key? "key" # => true
# File vendor/rails/activesupport/lib/active_support/core_ext/hash/indifferent_access.rb, line 59 59: def key?(key) 60: super(convert_key(key)) 61: end
Merges the instantized and the specified hashes together, giving precedence to the values from the second hash Does not overwrite the existing hash.
# File vendor/rails/activesupport/lib/active_support/core_ext/hash/indifferent_access.rb, line 90 90: def merge(hash) 91: self.dup.update(hash) 92: end
# File vendor/rails/activesupport/lib/active_support/core_ext/hash/indifferent_access.rb, line 99 99: def stringify_keys!; self end
# File vendor/rails/activesupport/lib/active_support/core_ext/hash/indifferent_access.rb, line 100 100: def symbolize_keys!; self end
Convert to a Hash with String keys.
# File vendor/rails/activesupport/lib/active_support/core_ext/hash/indifferent_access.rb, line 104 104: def to_hash 105: Hash.new(default).merge(self) 106: end
# File vendor/rails/activesupport/lib/active_support/core_ext/hash/indifferent_access.rb, line 101 101: def to_options!; self end
Updates the instantized hash with values from the second:
hash_1 = HashWithIndifferentAccess.new hash_1[:key] = "value" hash_2 = HashWithIndifferentAccess.new hash_2[:key] = "New Value!" hash_1.update(hash_2) # => {"key"=>"New Value!"}
# File vendor/rails/activesupport/lib/active_support/core_ext/hash/indifferent_access.rb, line 45 45: def update(other_hash) 46: other_hash.each_pair { |key, value| regular_writer(convert_key(key), convert_value(value)) } 47: self 48: end
Returns an array of the values at the specified indices:
hash = HashWithIndifferentAccess.new hash[:a] = "x" hash[:b] = "y" hash.values_at("a", "b") # => ["x", "y"]
# File vendor/rails/activesupport/lib/active_support/core_ext/hash/indifferent_access.rb, line 79 79: def values_at(*indices) 80: indices.collect {|key| self[convert_key(key)]} 81: end


This is the abridged version of the report. A full version is also available.
The reference allele for hypervariable region matching is highlighted in yellow. This report only shows the longest protein sequence allele number for synonymous alleles. Select a reference allele from the list or click on a row to set that allele as the reference allele. By default, this report only shows alleles where there are at least 4 hypervariable region matches to the reference allele, but you may toggle this filter on and off.
The IMGT allele database version is ... and the single antigen bead (SAB) reagent lot number is . The session ID is ... (reset session).
This report is for research use only.
| ... | alleles are loaded into memory |
| ... | alleles match filter criteria |
| ... | alleles do not match filter criteria |
reference allele:
| [sort] | [filter=Y] | [filter≥4)] [sort] |
hypervariable region ID |
||||||
|---|---|---|---|---|---|---|---|---|---|
| allele name | SAB | matches | a | b | c | d | e | f | g |
This application is currently using SAB alleles contained in the following two (2) panels:
1. LABScreen Single Antigen HLA Class II - Group 1 (various lots) [LS2A01]
2. LABScreen Single Antigen HLA Class II Supplement (various lots) [LS2ASP01]
The supplemental panel alleles may not be used, depending on which reagent lot is selected.
Copyright © 2018, Geoffrey H. Smith, MD


The objective of this project is to migrate the various life and non-life insurance applications from existing SQL Server 2008 R2 environment to Parallel Data Warehouse (PDW) to have better performance and to save cost in storage for a insurance company in Sweden.
The aim of this project is to integrate new source systems to extract the data and load into main data warehouse and various datamarts to support report users of the insurance compan in Sweden.
The objective of this project is to create the EDW to support report users of the Banking company in Canada.


Individual project completed in 2017.
Implemented physically based rendering, deferred rendering and forward rendering. Features include PBR textures, image based lighting using HDR maps, screen space ambient occlusion, point and directional lights, etc.
Tools used: C++, OpenGL, GLSL, ImGUI, Assimp, Visual Studio
Forward rendering with multiple model loading and skyboxes. Makes use of Assimp library to load models as OBJs. Includes shader ball, dragon, bunny objs. SOIL used to load images.
Deferred rendering for Screen Space Ambient
Occlusion (SSAO).
Physically based rendering using albedo, normal,
metallic, roughness, ambient occlusion, and environment
maps.


Config
Holds all of the configuration variables for the entire site, as well as Module settings.
Summary
| Config | Holds all of the configuration variables for the entire site, as well as Module settings. |
| Variables | |
| $yaml | Holds all of the YAML settings as a $key => $val array. |
| Functions | |
| __construct | Loads the configuration YAML file. |
| set | Adds or replaces a configuration setting with the given value. |
| remove | Removes a configuration setting. |
| current | Returns a singleton reference to the current configuration. |


ComicSourceReborn
Search
Obtain Superpower!
Sign up
Log in
Search for your favorite
Superhero
or villain and learn everything you've ever wanted to know about them!
Search


s4-Tech-Blog
Well I pretty much get stuck constantly so where to begin. Here, a silly mistake but an important yet simple lesson. I was on Manipulating JavaScript Objects and up to the Add a carson property to the value of the terah children property. carson should be an object with a property name with the value "Carson" done it but on the next one I mixed up the spelling with Carter and just not looking properly at the screen my brain wan't computing somehow I ended up thinking I hadn't passed the carson value.
Long story short I spent a couple hours trying to pass something I had already passed and because I kept trying to pass the Carson property when I should have been doing the Carter property. I noticed it when I started reading carefully back over what I had done and what was being asked of me. The lesson here is pay attention to what your reading and typing focus and concentrate.
-
Pseudocode - It helped a lot to visualise what was supposed to be happening in advance like preparation but I couldn't always figure out how to start.
-
Trying something - Been doing that my whole life.
-
Rubber ducky method - Looks interesting.
-
Reading error messages - I now know a bit more on how to interperet I've found them to be a convenience directing me to what and where my code is wrong but sometimes I get ones that just baffle me.
-
Console.logging - Quite handy.
-
Googling - What can I say. Found alot of good tutorials on youtube and theres free courses of coarse. Really just a giant library.
-
Asking your peers for help - Need to do that more but I wanted to try and do as much as I can so that I know for sure after foundations if this is for me.
I believe so but I will definitely be seeking help and advice at bootcamp plus alot of the time I don't quite know how to phrase what I want to know.
-
Asking coaches for help - That's a bit easiers they can usually see what's wrong without me having to say. Joseph's been great keeping me motivated
-
Improving your process with reflection - I believe whole heartidly in this even before coming to Dev


Summary
The overarching goal of the challenge is to develop image analysis tools to enable the automated diagnosis of melanoma from dermoscopic images. Image analysis of skin lesions is composed of 3 parts:
- Part 1: Lesion Segmentation
- Part 2: Detection and Localization of Visual Dermoscopic Features/Patterns
- Part 3: Disease Classification
This challenge provides training data (~900 images) for participants to engage in all 3 components of lesion image analysis. A separate test dataset (~350 images) will be provided for participants to generate and submit automated results.
Challenge Details
Timeline (subject to change)
- Jan 5: Release initial data (images + ground truth)
- March 18: Release test data for Part 1 (images)
- March 25: Release test data for Part 2-3
- Apr. 1: Part 1, 2, 3 submission deadline
- Apr. 8: Part 2B, 3B submission deadline
- Apr. 14: Winners announced
Challenge Tasks
Part 1: Lesion Segmentation. Participants are asked to submit automated predictions of lesion segmentations from dermoscopic images. Human expert ground truth will be provided as the comparison standard. Performance metrics used will include the dice coefficient, as well as pixel level accuracy, specificity, sensitivity, and average precision at sensitivity of 100%.
Part 2: Lesion Dermoscopic Feature Extraction. Participants are challenged to submit automated predictions of dermoscopic features, including both localization and classification. Expert-annotated dermatological ground truth will be provided as the comparison standard. Performance metrics used will include the dice coefficient, as well as pixel level accuracy, specificity, and sensitivity. Participants will be ranked according to average precision. The chosen features are streaks (incl. starburst pattern) and globules.
Part 3: Lesion Classification. Participants are challenged to extract their own features in order to predict lesion disease state of benign or malignant. Performance metrics will include accuracy, specificity, sensitivity, specificity at 99% sensitivity, and average precision evaluated at sensitivity of 100%. Participants will be ranked according to average precision.
Datasets
The "Skin Lesion Analysis Towards Melanoma Detection" challenge leverages a dataset of annotated skin lesion images from the ISIC Archive, The dataset contains a representative mix of images of both malignant and benign skin lesions, Before release, the challenge dataset was randomly partitioned into both a training and test sets, with ~900 images in the training set and ~350 images in the test set.
Participants are allowed to use prior work and outside data sources, but works must be cited and participants will be placed into a different category for evaluation.
Reference Standard
There will be 3 reference standard annotations for the 3 sub-challenges.
- Segmentation: Lesions have been segmented against background normal skin and miscellaneous structures by expert dermatologists.
- Dermoscopic Features: Lesions have been locally annotated for clinical dermoscopic features by expert dermatologists.
- Disease State: The gold standard for diagnosis of skin lesions is pathology. Images in the ISIC archive have been derived from centers with expert pathology that can be deemed the gold standard. Benign lesions included in the archive without benefit of pathology diagnosis are reviewed by multiple experts and only included in the event of unanimous clinical diagnosis.
Journal Paper & Data Citation
Updated: May 11th, 2016
An article has been posted to arXiv, where we have summarized the dataset, the evaluation protocol, and preliminary analyses of the results. We strongly encourage you to write manuscripts describing your approaches and submit for publication to peer reviewed journals, or to arXiv. As you publish your work, please use the following citation to refer to the challenge:
Gutman, David; Codella, Noel C. F.; Celebi, Emre; Helba, Brian; Marchetti, Michael; Mishra, Nabin; Halpern, Allan. "Skin Lesion Analysis toward Melanoma Detection: A Challenge at the International Symposium on Biomedical Imaging (ISBI) 2016, hosted by the International Skin Imaging Collaboration (ISIC)". eprint arXiv:1605.01397. 2016.
This paper is accessible from the following link: https://arxiv.org/abs/1605.01397
Contact Information
Support for the challenge can be attained by contacting the sponsors at<EMAIL_ADDRESS>Organizers
- The International Skin Imaging Collaboration
- Allan Halpern (Clinical Leader) (Memorial Sloan Kettering Cancer Center, New York, USA)
- Brian Helba (Technical Leader) (Kitware, New York, USA)
- David Gutman (Technical Leader) (Emory University, Atlanta, USA)
- Noel Codella (Image Analysis) (IBM, New York, USA)
- M. Emre Celebi (Image Analysis) (Louisiana State University, Shreveport, Louisiana)


Role Management
With proper permissions,you can manage roles and associated access rights.
On this page, you will find a table with :
- An Add zone on the first line
- the list of existing roles with their informations on the next lines
Within each line, you could :
- Delete a role when you click on
- Modify a role when you click on
When adding or modifying, icons appears.
Enter or modify informations then click on to validate.
You could also click on to cancel, going back to initial values.
A role is defined by only one field :
- its name
- its directory
- the initial context which be applied when user log into the application
- rights applied for this role to a new context.
- rights applied for this role for every existing context
- if role is used with external authentication, the matching group used to choose this role
N.B. : Local directory roles as "NoAccess" and "AdminLocal" are not alterable.
N.B. : See users management to understand the notion of initial context.
New Context :
To define rights applied for this role in case of a new context, you could :
- immediately fill the field with a value between 0 and 255
- use the form by clicking on . This form presents all rights categories for this new context.
Rights Management :
Rights management is not available directly when creating a role. Once a role is created, you could modify rights by clicking on .
A form similar to the one with new context displaying one context per line.
Once you have done, validate by clicking on .
A reminder of rights and what they're used for is present in this form.
LDAP Groups Mapping :
Groups mapping is not available directly when creating a role. Once a role is created, you could choose those mappings.
After user authenticates, within authorize phase, the application look into every role of the directory the user logged into.
For each role, if there is a group mapping, the application checks if the user is a member of one of those groups.
If it is the case, role and rights are applied to the user, cumulatively with the previous ones.
To select a mapping click on wich display another window with groups listing.
You could choose a group by clicking on


| HOME | DOWNLOAD | DOCUMENTATION | FORUM | FAQ |
> Home > Documentation > Localized Spectral Analysis
CURVE2MASK(1) SHTOOLS 2.6 CURVE2MASK(1)
Curve2Mask
Curve2Mask - Given a set of latitude and longitude coordinates representing a closed curve, determine if each node of a gridded mask is inside or outside of the curve.
SYNOPSIS
SUBROUTINE Curve2Mask ( MASK_DH, N, SAMPLING, PROFILE, NPROFILE, NP ) INTEGER MASK_DH (N, N) or (N, 2*N), N, SAMPLING, NPROFILE, NP REAL*8 PROFILE(NPROFILE, 2)
DESCRIPTION
Curve2Mask will take a list of latitude and longitude coordinates that represent a single closed curve, and output a mask MASK_DH that contains 1s and 0s where the grid nodes are inside and outside of the curve, respectively. MASK_DH must be sampled according to the Driscoll and Healy (1994) sampling theorem with N samples in latitude, and either possess N samples in longitude (SAMPLING=1) or 2*N samples in longitude (SAMPLING=2). It is necessary to specify a single point as being inside or outside of the curve, and for this the value at the North pole (90N, 0E) must be specified as either 0 or 1.
ARGUMENTS
DH_MASK (output) INTEGER, DIMENSION (N, N) or DIMENSION (N, 2*N) A Driscoll and Healy (1994) sampled grid describing the concentration region R. All elements on output will either be 1 (for inside the concentration region) or 0 (for outside R). N (input) INTEGER The number of latitudinal samples in DH_MASK. The effective spherical harmonic bandwidth of this grid is L = N/2 - 1. SAMPLING (input) INTEGER For 1, DH_MASK has N x N samples. For 2, DH_MASK has N x 2N samples. PROFILE (input) REAL*8, DIMENSION (NPROFILE, 2) List of latitude (:,1) and longitude (:,2) coordinates in DEGREES specifying a single closed curve. NPROFILE (input) INTEGER The number of coordinates in the curve PROFILE. NP (input) INTEGER The value of the returned mask at the North pole (90N, 0E). If the North pole is outside of the concentration region, set this to 0; if it is inside the concentration region, set this to 1.
NOTES
This routine saves the three-term recursion factors and square roots of the integers the first time being called. If subsequent calls possess the same value of LMAX, these will not be recomputed. If you wish to deallocate this memory, which is an array of length (LMAX+1)*(LMAX+2), recall this routine with LMAX=-1.
REFERENCES
Driscoll, J.R. and D.M. Healy, Computing Fourier transforms and convolutions on the 2-sphere, Adv. Appl. Math., 15, 202-250, 1994.
SEE ALSO
shreturntapersmap(1), computedmap(1) <http://www.ipgp.jussieu.fr/~wieczor/SHTOOLS/SHTOOLS.html>
COPYRIGHT AND LICENSE
Copyright 2009 by Mark Wieczorek<EMAIL_ADDRESS>This is free software; you can distribute and modify it under the terms of the revised BSD license. SHTOOLS 2.6 2009-08-18 CURVE2MASK(1)
> Home > Documentation > Localized Spectral Analysis
| Centre National de la Recherche Scientifique | Institut de Physique du Globe de Paris | © 2011 Mark Wieczorek |


3
4
5
6
7
8
9
10
random
Select difficulty and begin!
Arrow Keys ---- move
r Key ---- restart path
Try to reach the bottom right!


|
Exploration of Schelling's Model
By Will Knez
|
This project presents three popular variations of Thomas Schelling's
(1971) work on residential segregation. The basic premise is as
follows: consider a grid of nxn cells, a certain percentage of
which are vacant and the rest are divided amongst members of two groups.
Each group has a numeric quantity, called the tolerance, that determines
the proportion of same-group members that must be nearby in order for an
agent of that group to consider the neighborhood satisfactory. If there
are too few, the agent becomes unhappy and will try to find a new
location next round. The three variations of these rules are:
- Liquid - in addition to unhappy agents that search for
new places of residence, a "happy" agent may also elect to move
to a location that is equally as satisfactory as her current
location. This allows the model to continue indefinately.
- Solid - only unhappy agents may move to acceptable, vacant
locations.
- Swap - same mechanics as the solid variation but with no
vacant cells. Instead, unhappy agents swap places with each
directly.
Agent groups can be configured using the "Groups" tab and other parameters
such as the neighborhood size, evaluation method, and statistics
tracking can be found on the "Model" tab. Finally, the "Displays" tab
allows access to the statistics window.


Calculated Results
$
Monthly Payments
%
Total Interest
$
Total Amount to be Paid
$
Monthly Payments
%
Total Interest
$
Total Amount to be Paid


BOOST_PROCESS_POSIX_API — Defined if running under a POSIX system.
BOOST_PROCESS_POSIX_API
This macro is defined (to no specific value) if Boost.Process is used on a system with POSIX process management semantics. It is not sufficient for the system to provide some common POSIX functions; child processes need to be spawned using fork() and the whole procedure management needs to follow Unix semantics.
| Copyright © 2006 Julio M. Merino Vidal |


Congressmen visit small businesses to promote local shopping
by EndPlayPROVIDENCE, R.I. (AP) - Members of Rhode Island's congressional delegation are visiting small businesses to encourage residents to shop local this holiday season.
U.S. Sens. Jack Reed and Sheldon Whitehouse and U.S. Rep. Jim Langevin are scheduled to visit eight businesses in downtown Westerly Tuesday, to promote Small Business Saturday.
Small Business Saturday, which takes place on the Saturday after Thanksgiving, started in 2010 to encourage consumers to shop in their small local stores rather than national chains.
The Rhode Island Democrats will be joined on the tour by representatives from the U.S. Small Business Administration, Rhode Island Foundation and Ocean Community Chamber of Commerce.
Reed says small businesses are a major part of communities and Rhode Island's economy. He says Small Business Saturday is a great way to celebrate and support local merchants.


ReportsAsSparkline
ReportsAsSparkline enables you to generate sparkline reports from your
model‘s data with very little effort.
Usage
If you hace a User model with created_at and
activated_at columns, you can just add
reports_as_sparkline to it with the following options:
- :date_column - The name of the date column over that the records
are aggregated (defaults to created_at)
- :value_column - The name of the column that holds the values to
sum up when using aggregation :sum
- :aggregation - The aggregation to use (one of :count,
:sum, :minimum, :maximum or :average);
when using anything other than :count, :value_column must
also be specified (If you really want to e.g. sum up the values in the
id column, you have to explicitely say so.); (defaults to
:count)
- :grouping - The period records are grouped on (:hour,
:day, :week, :month); Beware that
reports_as_sparkline treats weeks as starting on monday!
- :limit - The number of reporting periods to get (see
:grouping), (defaults to 100)
- :conditions - Conditions like in ActiveRecord::Base#find;
only records that match the conditions are reported; Beware that when
conditions are specified, caching is disabled!
- :live_data - Specifies whether data for the current reporting
period is to be read; if :live_data is true, you will
experience a performance hit since the request cannot be satisfied from the
cache only (defaults to false)
- :end_date - When specified, the report will only include data for
the :limit reporting periods until this date.
Example:
class User < ActiveRecord::Base
reports_as_sparkline :registrations
reports_as_sparkline :activations, :date_column => :activated_at
reports_as_sparkline :total_users, :cumulate => true
end
This will add the following class methods to your User model:
User.registrations_report
User.activations_report
User.total_users_report
When invoking the report, you can override some of the options you
specified for reports_as_sparkline:
- :grouping - The period records are grouped on (:hour,
:day, :week, :month); Beware that
reports_as_sparkline treats weeks as starting on monday!
- :limit - The number of reporting periods to get (see
:grouping), (defaults to 100)
- :conditions - Conditions like in ActiveRecord::Base#find;
only records that match the conditions are reported; Beware that when
conditions are specified, caching is disabled!
- :live_data - Specifies whether data for the current reporting
period is to be read; if :live_data is true, you will
experience a performance hit since the request cannot be satisfied from the
cache only (defaults to false)
- :end_date - When specified, the report will only include data for
the :limit reporting periods until this date.
Example:
User.registrations_report(:conditions => ['last_name LIKE 'A%'])
User.activations_report(:grouping => :week, :limit => 5)
You can than render sparklines for these reports with sparkline_tag in your
view:
<%= sparkline_tag(User.registrations_report) %>
The sparkline_tag helper takes the following parameters:
- width - The width of the generated image
- height - The height of the generated image
- line_color - The line color of the sparkline (hex code)
- fill_color - The color to fill the area below the sparkline with
(hex code)
- labels - The axes to render lables for (Array of :x,
:y+, :r, :t; this is x axis, y axis, right, top)
Installation
Installation requires 3 simple steps:
get the plugin
From your RAILS_ROOT in Rails >= 2.1, do
./script/plugin install git://github.com/marcoow/reports_as_sparkline.git
If you are on Rails < 2.1, do this from your RAILS_ROOT
git clone git://github.com/marcoow/reports_as_sparkline.git vendor/plugins/reports_as_sparkline
generate migration
./script/generate reports_as_sparkline_migration add_reports_as_sparkline_tables
migrate
rake db:migrate
Performance
To achieve best performance, you should add indices to your tables on the
date columns that are used for grouping the records (see
Simplabs::ReportsAsSparkline::ClassMethods.reports_as_sparkline):
add_index :[table], :[date_column]
If you are on PostgreSQL, you should add functional indices:
add_index :[table], :[date_column], :functional => "date_trunc('hour', [date_column])"
add_index :[table], :[date_column], :functional => "date_trunc('day', [date_column])"
add_index :[table], :[date_column], :functional => "date_trunc('week', [date_column])"
add_index :[table], :[date_column], :functional => "date_trunc('year', [date_column])"
TODOs/ future plans
- support for Oracle and DB2 (and others?) missing
- Limit number of data points to maximum that the google chart api allows
- Make graph styling configurable
If you want to suggest any new features or report bugs, do so at github.com/marcoow/reports_as_sparkline/issues.
Contributors
Author
© 2008-2009 Marco Otte-Witte (simplabs.com), Martin Kavalar, released
under the MIT license


Scale Art Model Services is first and foremost a custom builder service. Our parts
line came about as specific parts or, as in the case of the REA truck; a particular
model was needed to complete requests by clients. The REA truck model is a neat piece
and certainly prototypically ubiquitous from the 20’s through the 70’s, but most
common in the form modeled by us in the 40’s and 50’s. The cowl length delivery truck
was seen everywhere throughout the nation until it was replaced with the increasingly
common step van in the 60’s into the 70’s. The Railway Express Agency became the
REA Express in it’s later years and the company disappeared altogether in the mid-
Our model can be built in four different cowl style suggestive of the 30’s, late
40’s and 50’s. We plan to add some additional cowl styles soon. Each finished model
is hand-
Enjoy the photos of some of the models that have found their way into the hands of some discriminating
collectors and model railroaders. Custom-
This is one of the most recent builds-
This model represents a common style 1930’s era truck although these old vehicles were used well into the 50’s and in some cases even later. This particular model was built for a customer who wanted an entire fleet! In addition to this truck we also built one of each of our available trucks for this customer. It proved to be quite an exercise in patience and made us aware of some needed changes and upgrade to the original kit.
Here is the line up of five, yes; five trucks! We are introducing a new version that
represents a 1938 Ford. It can be seen on the far right of the photo. We are still
working on the master and molds for it, but we can presently provide it as a built-
A close up of the 38 Ford. This version makes for a very iconic model as many photos
of the old REA trucks show this type of cowl along with a ‘41 Ford 3/4-


fun numActiveBlocks(): Int
Counts the number of blocks which are not free. Returns -1 if an error has occurred (aka a corrupted list)


--- title: Full-Stack Engineer company: Grand Rounds location: San Francisco, California dates: Sept 2014 - Dec 2014 category: work technologies: - Ruby On Rails - Slim - SASS - Coffeescript - Bootstrap - RSpec ---
Grand Rounds provides subscribers to their program with access to their network of top physicians from whom they can schedule an office visit or get a second opinion on a previous diagnosis. This job involved front-end and back-end work on the main company website and several internal tools. The engineering team worked under an agile-based development cycle, with a focus on test-driven development.


(.) young partner women South SRP men equity HIV (-. relationship African sexual SRPS ;():–. items gender scale primary associated youth IPV study use []. higher {border-style Health factor health modified px;} #ffffff;} AIDS power violence vs. Sciences Young important sex things time AYAZAZI JewkesR, associations condom including know like loadings men. used women, years Africa Africa. Africa: adaptation adjusted participants research review risk school (e.g. Health. NdunaM, Pathogens Research Sexual differences included studies HIV-risk Ref factors likely make months rural Soweto current education examine high inequities intimate living number people scores study. using Medicine age behaviours cohort construct expects measures perpetration power, scales validity violence, .%, Biology DunkleKL, Gender JewkesRK, Relationship Yes alphas assessed completed data equity. expect experiences gendered jealous look px; related specific {font-family (.% .)* ./.. Cronbach Data Durban, Eastern Life Mean Public Risk University affect behaviour decisions did examined font-size having home item lower n(%) order original partners quite relationships reported score use, (SD (β) -.)** -item ./journal.pone..tTable //. Coefficients EFAs Epub Factor Factors Intimate Social Stepping Unadjusted Violence Viral [], [–]. age, aimed analyses analysis baseline check controlling currently determinants double; education, equity, examining gender-specific gender. global greater increased leave measuring men’s models need older outcomes prevention scales, site, such, time* total unadjusted urban want women. (%CI) (%CI)^ .)*** ./s--- ;:./--- Adjusted Cape DunkleK, Durban GibbsA, Given However, Int Items Partner Results Scale Soc. Stones Using adapted aged agreed association bold border-color border-width comfortable cross-sectional curationFunding different does dynamics employment follow-up growing inequity, infection infections informal men, potential previously properties reduced relevant reliability responses results role say social solid; structural versions wants ways {font-style {font-weight "My (%) (SD) (–) -.)*** -items -month .** Adolescent Africa[], Agree April Behavior Cape, Care. Coefficients(β) Creating Disagree Housing Immunodeficiency Jama JamaN, Lentivirus: LevinJ, Med. Medical Microbial Microbiology One. Organisms Power Prevalence Retroviruses Strongly Table Unit United Viruses Viruses: World ability accurately adjusting al.A approximately assess based beautiful* bothers characteristics children coded conducted courier; details disagree, em; example, exploratory findings gender-based her, him* housing include independently influence interview ironing latent length loading low me* mean measure men: monthly months. partners, pathways psychometric pt;} remained resulted retained safe settings settlements sleep socio-demographic spend statement target transformative trial variable violence. way wear wears youth-engaged


The aim of this web site is to provide of information about microalgae and related organisms in the Nordic area, i.e. the Baltic Sea, the North East Atlantic and lakes, rivers and streams in the area. The content of the site is mainly supplied by the users.
Nordic microalgae and aquatic protozoa is available for smart phones and other smaller devices at http://m.nordicmicroalgae.org and for larger devices at http://nordicmicroalgae.org Information about copyright and links to other information is found at http://nordicmicroalgae.org
Nordic Microalgae is developed and operated by the Swedish Meteorological and Hydrological Institute (SMHI) with funding from the Swedish LifeWatch project.
Please send feedback to info@nordicmicroalgae.org


welcome , Thanks for visiting my page
- My name is Bushra
- I am 24 years old
- I have a Bachelor's degree in Civil Engineering and a lot of courses in this field Currently
- I am studying software development
- My goal is to become a global programmer
The 10 best films of 2020
- The Invisible Man
- Richard Jewell
- Lovers Rock
- Time
- First Cow
- I’m Thinking of Ending Things
- Saint Maud
- Dick Johnson Is Dead
- Never Rarely Sometimes Always
- Nomadland


Welcome, Please enter the name of your pokemon and typing.
Normal
Fire
Water
Electric
Grass
Ice
Fighting
Poison
Ground
Flying
Psychic
Bug
Rock
Ghost
Dragon
Dark
Steel
Fairy
Normal
Fire
Water
Electric
Grass
Ice
Fighting
Poison
Ground
Flying
Psychic
Bug
Rock
Ghost
Dragon
Dark
Steel
Fairy
None
Next


$treeview $search $mathjax
$extrastylesheet
Skip to content
|
Access key help
Search
Advanced search
A–Z
Contact us
Computer Laboratory
Computer Laboratory
Research
Security Group
CTSRD
Temporally Enhanced Security Logic Assertions (TESLA)
API Documentation
$searchbox


{% load static %}
Flossing | keep your teeth clean!
Toothbrush
About
{% block content %} {% endblock %}


Created by YaPi on August 28, 2019
Created by YaPi on August 25, 2019
Created by YaPi on August 24, 2019
Created by YaPi on August 23, 2019
待到秋来九月八 我花开后百花杀


{% load bootstrap3 %} {% load i18n %} {% include 'editor/fragment_modal_close.html' %}
{% with datetime=changeset.created|date:"DATETIME_FORMAT" author=changeset.author %} {% if author %} {% url 'editor.users.detail' pk=changeset.author.pk as author_url %} {% blocktrans %}created at {{ datetime }} by {{ author }}{% endblocktrans %} {% else %} {% blocktrans %}created at {{ datetime }}{% endblocktrans %} {% endif %} {% endwith %} {% with datetime=changeset.last_change.datetime|date:"DATETIME_FORMAT" %} {% blocktrans %}last change at {{ datetime }}{% endblocktrans %} {% endwith %}
{% blocktrans %}These changes are currently pending review.{% endblocktrans %}
{% blocktrans %}As long as the review is pending you can unpropose them to edit them again.{% endblocktrans %}
{% blocktrans %}These changes are currently being reviewed by {{ user }}.{% endblocktrans %}
{% blocktrans %}These changes were rejected by {{ user }} with the followed comment:{% endblocktrans %}
{% blocktrans %}These changes were finally rejected by {{ user }} with the followed comment:{% endblocktrans %}
{% blocktrans %}“{{ comment }}”{% endblocktrans %}
{% blocktrans %}You can now edit your changes and propose them again.{% endblocktrans %}
{% blocktrans %}These changes were applied by {{ user }}.{% endblocktrans %}
{% blocktrans %}In the meantime, if you want to create a new change set, you can do so in your profile.{% endblocktrans %}
{% blocktrans %}If you want to create a new change set, you can do so in your profile.{% endblocktrans %}
{{ changeset.description }}


The pgAdmin Development Team
Version 2.3, 5 March 2009
Purpose
The pgAdmin Development Team exists for 2 reasons:
- To manage and maintain the pgAdmin Project
- To ensure that pgAdmin remains freely available to anyone that wants it.
Structure
The foundation consists of the Project Leader and Members.
- Project Leader: The Project Leader is Dave Page, founder and primary
developer of the software. The Project Leader is also considered a member.
- Members: Members can be any contributor to the project who accepts an
invitation from the existing Development Team.
Division of Responsibilities
Any major decision regarding the Project must be voted on by the Development
Team. Any vote will be made via email through the relevant mailing list.
Responses not received within 2 weeks will be discounted from the vote.
In the case of a hung vote, the Project Leader shall cast the deciding vote.
People
The pgAdmin Development Team includes the following people:
- Dave Page (Project Leader): Project
founder & primary developer.
- Hiroshi Saito: Produced a
Japanese port of pgAdmin II, and countless patches for pgAdmin III.
- RaphaŽl Enrici: Maintains the
Debian port, and helps with numerous other issues.
- Guillaume Lelarge: Manages the
pgAdmin application and website translations, and has added a number of
enhancements to pgAdmin.
- Erwin Brandstetter: Spends
significant amounts of time testing new releases and helping us track down
bugs and behavioural issues.
- Magnus Hagander: Has worked on
numerous features and project infrastructure.
The following people no longer work on the project, but we remain grateful
for their past contributions:
- Mark Yeatman: Works on
controls and consults on UI design.
- Frank Lupo: Has made countless
improvements to the pgAdmin II code from minor bug fixes to major
enhancements.
- Jean-Michel Pourť: translations &
web site management.
- Andreas Pflug: Has written
vast amounts of pgAdmin III code and is responsible for much of its design.
- Adam H. Pendleton: Developed and
maintains the build system, and helps with various porting issues.


Ａ blockchain-powered SaaS mobile ticket
selling solution.
OVERVIEW
True Ticket is a ticket selling platform that provides artists and vendors to sell tickets for
fans. By using blockchain technology, fans can refund or resell
tickets after purchasing. In this project, we helped True Ticket to design the mobile
application for ticket
buyers.
TYPE
EXN Group project
TIMELINE
3 month (Sep-Dec 2018)
TOOLS
Sketch, InVision, Balsamiq
CONTRIBUTION
Design Lead, Prototyping, Visual Design
KICKSTART
Our team started the project by holding a kickoff meeting with Mett and Andrew, the CEO and CTO
of True Tickets. During the meeting, we had gained an understanding of the company and the
product background. The business goal is to use blockchain technology to provide users a
safe way to
sell, refund, and resell tickets. Their target users include sellers (artists and
venues) and buyers
(fans). They already had a web-based service for sellers, so for this project our
goal is to design a mobile-based service for buyers.
RESEARCH
INTERVIEW & BEHAVIOR MAP
Understanding users.
At the discovery phase of this project, we conducted 10 user interviews in
order to have a better understanding of the problem. We started the
interview by asking 2 closed-ended questions to understand their basic
preferences, then asked more relative open-ended questions. Based on
interviews' habits and preferences of buying tickets, we constructed a
behavior map.
The quality of service is more important than the price.
Lack of information causes users need to spend extra
time doing research.
Users sometimes worry that they may not be able to attend the
concert due to unexpected commitments.
PERSONA
Defining target users.
To have a more clear concept of the target customer, we set up a persona
based on the interview and behavior map. With the main information of
background, preferences, and critical needs, we referred to Matt throughout
the entire product development process.
JOURNEY MAP
Thinking from the users' perspective and finding opportunities.
To understand the user journey, we tested users with prototypes and a few
open-ended questions. By observing their feelings and learning from their
feedback,
we analyzed the important characteristics required in the
application.
What opportunities have we found?
Creating a community for each event, so customers can receive the update
information and communicate with artists and other fans.
Providing relevant information such as transportation or parking information
for users to reduce their extra searching time.
Providing exciting offers when users purchase a ticket so that it encourages
the user to book the next event.
People sometimes need to spend extra time to learn how to buy a ticket on
the system. Hence, the process of buying tickets should be as easy and clear
as possible.
"Search" is one of the main functions ticket buyers use.
PROTOTYPE
SKETCH & WIREFRAME
Visualized the idea.
After understanding the key features that are needed in the application,
each of our team members drew a sketch based on our understanding and
thinking. With five versions of the sketch, we then started to express our thoughts and
discuss each page and function. After a lively
discussion, we designed a version that combines all our ideas. And we
turned it into our first wireframe.
What main features have we decided?
Making the ticket purchasing process as simple as possible.
Providing relevant useful information.
Besides the purchasing function, we also designed extra features to
provide resale,
e-ticket, and other relative information.
USABILITY TESTING & ITERATION
Improving the design for a better solution.
We asked target customers to take a usability test. We started the test from a pre-test
questionnaire and we asked them to perform a few tasks using our design. During the
test, they think out loud and share the decision of every choice. Based on the test
results, we redesigned our wireframe and tested it again.
Based on Matt's preferences, we notice him the upcoming events for Maroon
5 and Charlie Puth in the main page and also reminds him through the message. His favorite
artists and events are all showing in his profile.
Event Information
Besides the basic event information, True Tickets also provides relative information. It
saves Matt's time to search for the parking
information. And also Matt's can know whether the ticket is refundable or not before he buys
it.
Booking
To provide a simple and intuitive experience, Matt now can buy the tickets easily within 3
steps.
Ticket Manage
Matt can check all e-tickets for future concerts. The resell and
refund functions are also in this page. To protect other buyers' privilege and prevent from
the
scalper, the resale price is limited from 80%-120% of the original price.
Community
Artists and fans can interact here. Matt can see Charlie Puth's latest
update.
Matt can also communicate with other Charlie Puth's fans and join the next
concert together.
RELECTION
Since this is only a three months project, there are still many things
can be improved. If the time is available, I want to ...
1. Do more interviews before start the project, since the interviews we
had is not enough for clarifying a clear type of target customer. I
would like to spend more time on interviewing more people next time.
2. Think more details of the resale function. Since it is one of the
main features of our platform, I would want to think more detail about
it, such us how do customers set the resale price.
Our team photo with True Ticket's CEO and our course professor.


CardGameViewController Class Reference
| Inherits from | UIViewController |
| Declared in | CardGameViewController.h CardGameViewController.m |
Tasks
Other Methods
Other Methods
-
– gameHistory
-
– game
-
– deck
-
– configureGameSettings
-
– touchCardButton:
-
– updateUI
-
– updateCardButtonUI
-
– updateScoreLabel
-
– updateGameStatusLabel
-
– generateMatchMessage:
-
– useStringToDisplay:
-
– useAttributedStringToDisplay:
-
– dealButton:
Extension Methods
-
deck
property -
game
property -
scoreLabel
property -
gameStatusLabel
property -
cardButtons
property -
gameHistory
property -
isGameConfigured
property
Instance Methods
cardContents:
GameMode Constants
- (id)cardContents:(Card *)card
Declared In
CardGameViewController.h
configureCardButtonUI:withCard:
- (void)configureCardButtonUI:(UIButton *)cardbutton withCard:(Card *)card
createDeck
Protected for subclasses
- (Deck *)createDeck
Return Value
Desired deck of card
Declared In
CardGameViewController.h
generateMatchMessage:
Generate the match message, according to the content of the card. We can find the nature of the card content by interospection. This CardMatchingGame Supports NSString and NSAttributed string content.
- (void)generateMatchMessage:(NSString *)message
Parameters
- message
Message that gets generated along with the card content.
Declared In
CardGameViewController.m
setGameMode
Configure the CardMatchingGame Mode to choose how many cards to match. Default value is MODE_NOT_YET_CHOSEN.
- (int)setGameMode
Return Value
A valid GameMode constant
Declared In
CardGameViewController.h


Working and Volunteering Experience
- Oct 2016
-
MayFundraiser for Terry Fox RunVigorous with volunteering, such as Fundraising for Terry Fox Run and sanatorium's work
- June 2018
-
AugAcademic Tutor at Puxin Education
- July 2019
-
AugData Research Analyst at China Construction Bank (CCB)
- Now


As the National Focal Point and ABSCH Publishing Authority, you have been also tasked to help develop the
legislation regulating the access and utilization of the magic genetic resources and associated magic
knowledge and to publish it in the ABSCH.
YOU MUST CHOOSE:
You develop your ABS legislation that includes provision for mandatory prior informed consent (PIC) and
approval and involvement of elf local communities whenever access to magic genetic resource or associated
magic knowledge is being considered. It also includes the obligation to share benefits with the elf local
communities. All USERs need to obtain PIC and establish MAT prior to any utilization of the magic genetic
resources and associated magic knowledge.
Because of the difficult relationship between the centralized national government and the elf local communities,
in order to save time, you develop ABS legislation without including provisions to consult or distribute benefits
among the local communities when access to the magic genetic resources or associated magic knowledge are concerned.
All Users need to obtain PIC and establish MAT prior to any utilization of the magic genetic resources and
associated magic knowledge.
You decide not to require PIC for accessing magic genetic resources.


In this article we’ll cover various methods that work with regexps in-depth.
The method str.match(regexp)
finds matches for regexp
in the string str
.
It has 3 modes:
If the regexp
doesn’t have flag pattern:g
, then it returns the first match as an array with capturing groups and properties index
(position of the match), input
(input string, equals str
):
```js run let str = “I love JavaScript”;
let result = str.match(/Java(Script)/);
alert(result[0]); // JavaScript (full match) alert(result[1]); // Script (first capturing group) alert(result.length); // 2
// Additional information: alert(result.index); // 7 (match position) alert(result.input); // I love JavaScript (source string) ```
If the regexp
has flag pattern:g
, then it returns an array of all matches as strings, without capturing groups and other details.
```js run let str = “I love JavaScript”;
let result = str.match(/Java(Script)/g);
alert(result[0]); // JavaScript alert(result.length); // 1 ```
If there are no matches, no matter if there’s flag pattern:g
or not, null
is returned.
That’s an important nuance. If there are no matches, we don’t get an empty array, but null
. It’s easy to make a mistake forgetting about it, e.g.:
```js run let str = “I love JavaScript”;
let result = str.match(/HTML/);
alert(result); // null alert(result.length); // Error: Cannot read property ‘length’ of null ```
If we want the result to be an array, we can write like this:
[recent browser=“new”]
The method str.matchAll(regexp)
is a “newer, improved” variant of str.match
.
It’s used mainly to search for all matches with all groups.
There are 3 differences from match
:
Array.from
.str.match
without flag pattern:g
).null
, but an empty iterable object.Usage example:
```js run let str = ""; let regexp = /<(.*?)>/g;
let matchAll = str.matchAll(regexp);
alert(matchAll); // [object RegExp String Iterator], not array, but an iterable
matchAll = Array.from(matchAll); // array now
let firstMatch = matchAll[0]; alert(firstMatch[0]); //```
If we use for..of
to loop over matchAll
matches, then we don’t need Array.from
any more.
Splits the string using the regexp (or a substring) as a delimiter.
We can use split
with strings, like this:
js run alert("12-34-56".split("-")); // array of ['12', '34', '56']
But we can split by a regular expression, the same way:
js run alert("12, 34, 56".split(/,\s*/)); // array of ['12', '34', '56']
The method str.search(regexp)
returns the position of the first match or -1
if none found:
```js run let str = “A drop of ink may make a million think”;
alert(str.search(/ink/i)); // 10 (first match position) ```
The important limitation: search
only finds the first match.
If we need positions of further matches, we should use other means, such as finding them all with str.matchAll(regexp)
.
This is a generic method for searching and replacing, one of most useful ones. The swiss army knife for searching and replacing.
We can use it without regexps, to search and replace a substring:
js run // replace a dash by a colon alert("12-34-56".replace("-", ":")); // 12:34-56
There’s a pitfall though.
When the first argument of replace
is a string, it only replaces the first match.
You can see that in the example above: only the first "-"
is replaced by ":"
.
To find all hyphens, we need to use not the string "-"
, but a regexp pattern:/-/g
, with the obligatory pattern:g
flag:
js run // replace all dashes by a colon alert( '12-34-56'.replace( *!*/-/g*/!*, ":" ) ) // 12:34:56
The second argument is a replacement string. We can use special characters in it:
| Symbols | Action in the replacement string |
|---|---|
$& |
inserts the whole match |
$`</code> | inserts a part of the string before the match | | `$’ |
For instance:
```js run let str = “John Smith”;
// swap first and last name alert(str.replace(/(john) (smith)/i, “$2, $1”)); // Smith, John ```
For situations that require “smart” replacements, the second argument can be a function.
It will be called for each match, and the returned value will be inserted as a replacement.
The function is called with arguments func(match, p1, p2, ..., pn, offset, input, groups)
:
match
– the match,p1, p2, ..., pn
– contents of capturing groups (if there are any),offset
– position of the match,input
– the source string,groups
– an object with named groups.If there are no parentheses in the regexp, then there are only 3 arguments: func(str, offset, input)
.
For example, let’s uppercase all matches:
```js run let str = “html and css”;
let result = str.replace(/html|css/gi, (str) => str.toUpperCase());
alert(result); // HTML and CSS ```
Replace each match by its position in the string:
js run alert("Ho-Ho-ho".replace(/ho/gi, (match, offset) => offset)); // 0-3-6
In the example below there are two parentheses, so the replacement function is called with 5 arguments: the first is the full match, then 2 parentheses, and after it (not used in the example) the match position and the source string:
```js run let str = “John Smith”;
let result = str.replace( /(+) (+)/, (match, name, surname) => ${surname}, ${name}
);
alert(result); // Smith, John ```
If there are many groups, it’s convenient to use rest parameters to access them:
```js run let str = “John Smith”;
let result = str.replace( /(+) (+)/, (…match) => ${match[2]}, ${match[1]}
);
alert(result); // Smith, John ```
Or, if we’re using named groups, then groups
object with them is always the last, so we can obtain it like this:
```js run let str = “John Smith”;
let result = str.replace(/(?
return ${groups.surname}, ${groups.name}
; });
alert(result); // Smith, John ```
Using a function gives us the ultimate replacement power, because it gets all the information about the match, has access to outer variables and can do everything.
This method is essentially the same as str.replace
, with two major differences:
replace
replaces only the first occurence.g
flag, there’ll be an error. With g
flag, it works the same as replace
.The main use case for replaceAll
is replacing all occurences of a string.
Like this:
js run // replace all dashes by a colon alert("12-34-56".replaceAll("-", ":")); // 12:34:56
The method regexp.exec(str)
method returns a match for regexp
in the string str
. Unlike previous methods, it’s called on a regexp, not on a string.
It behaves differently depending on whether the regexp has flag pattern:g
.
If there’s no pattern:g
, then regexp.exec(str)
returns the first match exactly as str.match(regexp)
.
But if there’s flag pattern:g
, then:
regexp.exec(str)
returns the first match and saves the position immediately after it in the property regexp.lastIndex
.regexp.lastIndex
, returns the next match and saves the position after it in regexp.lastIndex
.regexp.exec
returns null
and resets regexp.lastIndex
to 0
.So, repeated calls return all matches one after another, using property regexp.lastIndex
to keep track of the current search position.
In the past, before the method str.matchAll
was added to JavaScript, calls of regexp.exec
were used in the loop to get all matches with groups:
```js run let str = “More about JavaScript at https://javascript.info”; let regexp = /javascript/gi;
let result;
while ((result = regexp.exec(str))) { alert(Found ${result[0]} at position ${result.index}
); // Found JavaScript at position 11, then // Found javascript at position 33 } ```
This works now as well, although for newer browsers str.matchAll
is usually more convenient.
We can use regexp.exec
to search from a given position by manually setting lastIndex
.
For instance:
```js run let str = “Hello, world!”;
let regexp = /+/g; // without flag “g”, lastIndex property is ignored regexp.lastIndex = 5; // search from 5th position (from the comma)
alert(regexp.exec(str)); // world ```
If the regexp has flag pattern:y
, then the search will be performed exactly at the position regexp.lastIndex
, not any further.
Let’s replace flag pattern:g
with pattern:y
in the example above. There will be no matches, as there’s no word at position 5
:
```js run let str = “Hello, world!”;
let regexp = /+/y; regexp.lastIndex = 5; // search exactly at position 5
alert(regexp.exec(str)); // null ```
That’s convenient for situations when we need to “read” something from the string by a regexp at the exact position, not somewhere further.
The method regexp.test(str)
looks for a match and returns true/false
whether it exists.
For instance:
```js run let str = “I love JavaScript”;
// these two tests do the same alert( !/love/i/!.test(str) ); // true alert( str.search(!/love/i/!) != -1 ); // true ```
An example with the negative answer:
```js run let str = “Bla-bla-bla”;
alert( !/love/i/!.test(str) ); // false alert( str.search(!/love/i/!) != -1 ); // false ```
If the regexp has flag pattern:g
, then regexp.test
looks from regexp.lastIndex
property and updates this property, just like regexp.exec
.
So we can use it to search from a given position:
```js run let regexp = /love/gi;
let str = “I love JavaScript”;
// start the search from position 10: regexp.lastIndex = 10; alert(regexp.test(str)); // false (no match) ```
```warn header="Same global regexp tested repeatedly on different sources may fail" If we apply the same global regexp to different inputs, it may lead to wrong result, because
regexp.testcall advances
regexp.lastIndex` property, so the search in another string may start from non-zero position.
For instance, here we call regexp.test
twice on the same text, and the second time fails:
```js run let regexp = /javascript/g; // (regexp just created: regexp.lastIndex=0)
alert( regexp.test(“javascript”) ); // true (regexp.lastIndex=10 now) alert( regexp.test(“javascript”) ); // false
That's exactly because `regexp.lastIndex` is non-zero in the second test.
To work around that, we can set `regexp.lastIndex = 0` before each search. Or instead of calling methods on regexp, use string methods `str.match/search/...`, they don't use `lastIndex`.


Hi, i'm glad to find me...
Here, you've some information to know me better... just enjoy and contact me for more.
Dev, test, analyst, automation tests, ci/cd, tech lead, microservices, cloud computing, integration patterns, APIs, documentations, software design, security, Restful... and a lot of others stuffs :)
Dev, test, analyst, automation tests, ci/cd, tech lead and others stuffs.
Dev, test and something more, learning about what exists under the hood...
Dev and test, a real nooby learning :).
Bachelor in Computer Science.


SimpleSearch¶
SimpleSearch offers a one-step solution for geo-data querying, powered by Solr for example. Giving only one input field which can be directly embedded into the toolbar, it will send the entered search term to a configurable URL where it expects to receive a JSON-formatted data back which includes a label and a geometry attribute for each entry.
Geometry data can be encoded as WKT or in GeoJSON format.
Configuration¶
- Title: Title of the element. The title will be listed in “Layouts” and allows to distinguish between different buttons. It will be indicated if “Show label” is activated.
- Query URL: Solr URL for the search (e.g.
http://localhost:8080/solr/core0/select?wt=json&indent=true
). - Query URL key: The query parameter key to append (e.g.
q
). - Query Whitespace replacement pattern: Pattern for replacing white spaces.
- Query key format: Simple search format (e.g.
%s
). - Token search/ replace (JavaScript regex): Tokenizer split/ search/ replace regexp.
- Token, e.g.:
[^a-zA-Z0-9äöüÄÖÜß]
- Token search, e.g.:
([a-zA-ZäöüÄÖÜß]{3,})
- Token replace, e.g.:
$1*
- Token, e.g.:
- Collection path: Can be a dotted attribute path to extract from the query result (e.g.
response.docs
). - Label attribute: Name of the attribute to use for entry labeling (e.g.
label
). - Geom attribute: Name of the geometry data attribute (e.g.
geom
). - Geom format: geometry data format, can be WKT or GeoJSON (e.g.
WKT
). - Delay: Autocomplete delay. Use 0 to disable autocomplete (e.g.
300
). - Result buffer: buffer result geometry with this (map units) before zooming (e.g.
10
). - Result minscale/ maxscale: scale restrictions for zooming, ~ for none (e.g.
1000
und5000
). - Result icon url: icon to display as result marker (e.g.
http://demo.mapbender3.org/bundles/mapbendercore/image/pin_red.png
). - Result icon offset: Offset x and y for the icon (e.g.
0,0
).
YAML-Definition¶
query_url: http://example.com/solr/core/0/select?wt=json&indent=true&rows=8 # Example Solr URL
query_key: q # The query parameter key to append
query_ws_replace: # Pattern for replacing white spaces.
query_format: '%s' # Simple search format.
token_regex: [^a-zA-Z0-9äöüÄÖÜß] # Tokenizer split regexp.
token_regex_in: ([a-zA-ZäöüÄÖÜß]{3,}) # Tokenizer search regexp.
token_regex_out: '$1*' # Tokenizer replace regexp.
collection_path: response.docs # Can be a dotted attribute path to extract from the query result.
label_attribute: label # Name of the attribute to use for entry labeling
geom_attribute: geom # Name of the geometry data attribute
geom_format: WKT # geometry data format, can be WKT or GeoJSON
delay: 300 # Autocomplete delay. Use 0 to disable autocomplete.
result_buffer: 50 # buffer result geometry with this (map units) before zooming
result_minscale: 1000 # scale restrictions for zooming, ~ for none
result_maxscale: 5000
result_icon_url: http://demo.mapbender3.org/bundles/mapbendercore/image/pin_red.png # icon to display as result marker
result_icon_offset: -6,-38 # Offset x and y for the icon
How to setup Solr¶
Installation¶
Download Apache Solr and extract it to any folder. After successfully extracting the file Solr can be installed as a service in a Linux system by calling solr/bin/install_solr_service.sh.
- Download: http://lucene.apache.org/solr/
- Documentation: http://lucene.apache.org/solr/resources.html#documentation
- Quickstart: http://lucene.apache.org/solr/quickstart.html
Installing Apache Solr via the terminal f.e. in the data directory:
cd /data
wget http://apache.lauf-forum.at/lucene/solr/5.4.1/solr-5.4.1.tgz
tar -zxvf solr-5.4.1.tgz
cd solr-5.4.1/
Apache Solr runs of Java 7 or greater, Java 8 is verified to be compatible and may bring some performance improvements. When using Oracle Java 7 or OpenJDK 7, be sure to not use the GA build 147 or update versions u40, u45 and u51! We recommend using u55 or later.
Start and stop¶
You can start and stop Solr via the terminal by the following commands:
Start Solr:
/data/solr-5.4.1/bin/solr start -s /data/solr-5.4.1/server/solr
Stop Solr:
/data/solr-5.4.1/bin/solr stop -all
- Solr-Administration page:
- for the management of the cores
- http://localhost:8983/solr
Solr-Core¶
The Solr home folder is the area in which the various Solr-Cores for the search are located.
File: solr-5.4.1/server/solr/solr.xml
Enter the following XML-block in the file:
<?xml version="1.0" encoding="UTF-8" ?>
<solr></solr>
The solr.xml identifies the directory as a Solr-folder containing the cores. Here you can store your own Solr cores. However, since we want to operate independently of the Solr version we create a separate directory with the cores. If you want to skip this step, then perform the following instructions in the directory solr-5.4.1/server/solr.
Your Solr-Core¶
For the cores create a folder under data/solr_data and copy the solr.yml from the directory /data/solr-5.4.1/server/solr in this directory (data/solr_data/solr.yml). Then create a new folder for your core. For this documentation we used the core places among data/solr_data/places.
Each core consists of the three configuration files:
- core.properties
- By core.properties the core of Solr is recognized as a core
- solrconfig.xml
- The solrconfig.xml describes the features of the core
- schema.xml
- The schema.xml describes the construction of the index
Copy the configuration files from the directory /data/solr-5.4.1/server/solr/configsets/basic_configs in the directiory of the core under data/solr_data/places or insert it on your own with the following contents:
Adaptation of configuration files under /data/solr-5.4.1/server/solr/configsets/basic_configs/conf:
- core.properties
- data/solr_data/places/core.properties
- Adapting core.properties:
- Put in the following configuration block:
name=places
shard=${shard:}
collection=${collection:places}
config=${solrconfig:solrconfig.xml}
schema=${schema:schema.xml}
coreNodeName=${coreNodeName:}
- solrconfig.xml
- /data/solr_data/places/conf/solrconfig.xml
- Adapting solrconfig.xml:
- Put in the following configuration block:
<?xml version="1.0" encoding="UTF-8"?>
<config>
<luceneMatchVersion>5.4.0</luceneMatchVersion>
<dataDir>${solr.data.dir:}</dataDir>
<schemaFactory class="ClassicIndexSchemaFactory" />
<!-- RequestHandler to use the Index -->
<requestHandler name="/select" class="solr.SearchHandler" />
<!-- RequestHandler to identify Data -->
<requestHandler name="/update" class="solr.UpdateRequestHandler" />
</config>
- schema.xml
- /data/solr_data/places/conf/schema.xml
- Adapting schema.xml:
- Put in the following configuration block:
<?xml version="1.0" encoding="UTF-8" ?>
<schema name="places" version="1.5">
<!-- FIELDS -->
<field indexed="true" multiValued="false" name="id" required="true" stored="true" type="string"/>
<field indexed="true" multiValued="false" name="text" required="true" stored="true" type="string"/>
<uniqueKey>id</uniqueKey>
<!-- FIELD TYPES -->
<fieldType class="solr.StrField" name="string" sortMissingLast="true"/>
</schema>
If you want to save certain words as Stopwords, you can save them as a list in a file under /data/solr_data/places/conf/stopwords.txt.
Now you can restart Solr with your own core. Use the command we mentioned above to stop and then the following customized command to start the with the new Core:
- Start Solr:
/data/solr-5.4.1/bin/solr start -s /data/solr_data
Solr example¶
The directiory /solr-5.4.1/example contains Solr examples. Each example is contained in a separate directory. To run a specific example, do:
bin/solr -e <EXAMPLE> where <EXAMPLE> is one of:
cloud : SolrCloud example
dih : Data Import Handler (rdbms, mail, rss, tika)
schemaless : Schema-less example (schema is inferred from data during indexing)
techproducts : Kitchen sink example providing comprehensive examples of Solr features
To test this function run the following command in the terminal:
/data/solr-5.4.1/bin/solr start -e techproducts
and go to http://localhost:8983/solr.
/data/solr-5.4.1/server/solr:
- Default solr.solr.home directory where Solr will create core directories; must contain solr.xml
/data/solr-5.4.1/server/solr/configsets:
- Directories containing different configuration options for running Solr.
- basic_configs: Bare minimum configuration settings needed to run Solr.
- example is under /data/solr-5.4.1/server/solr/configsets/basic_configs
Indexing Solr XML¶
Use the example data in /solr-5.4.1./example/exampledocs/*.xml or your own data to index the example Solr XML files.
For the indexing, you have two options:
- DataImportHandler
- establishing a PostgreSQL data connection
- UpdateHandler
- to send data via HTTP post directly to Solr
DataImportHandler¶
Import records from a PostgreSQL-database using the Data Import Handler.
Adaptation of the Data Connection in the configutation files under data/solr_data/places/config:
- solrconfig.xml
- data-config.xml
- configurate the PostgreSQL data connection:
<?xml version="1.0" encoding="UTF-8"?>
<dataConfig>
<dataSource
type="JdbcDataSource"
driver="org.postgresql.Driver"
readOnly="true"
autoCommit="false"
transactionIsolation="TRANSACTION_READ_COMMITTED"
holdability="CLOSE_CURSORS_AT_COMMIT"
url="jdbc:postgresql://localhost:5432/databasename"
user="postgres"
password=" " />
<document>
<entity name="places" query="SELECT * FROM schema.tablee">
<field column="gid" name="gid" />
<field column="text" name="text" />
<field column="label" name="label" />
<field column="geom" name="geom" />
</entity>
</document>
</dataConfig>
- download matching PostgreSQL-driver:
- https://jdbc.postgresql.org/download.html
cd /data/solr_data/places/
wget https://jdbc.postgresql.org/download/postgresql-9.1-903.jdbc4.jar
UpdateHandler¶
You must adjust the UpdateHandler in the solrconfig.xml under data/solr_data/places/config, then you can send documents with the following command to Solr.
Example csv:
/opt/solr/bin/post -c places /opt/training/data/germany.csv
Solr-scheme¶
The Solr-scheme consists of the following parts:
- Fields (field)
- Field types (fieldType)
- Specifying an ID-Field by uniqueKey
Secure Jetty¶
In order to secure the Apache Solr outward you must configure the Jetty Security.
- Release of certain IP addresses to access the Jetti
- Configuration under solr/etc/jetty.xml
<Set name="host"><SystemProperty name="jetty.host" /></Set>
<Set name="port"><SystemProperty name="jetty.port" default="8983"/></Set>
Class, Widget & Style¶
- Class: Mapbender\CoreBundle\Element\SimpleSearch
- Widget: mapbender.element.simplesearch.js
HTTP Callbacks¶
- /search: Widget proxy which then queries configured URL. In dev-mode the final query URL will be returned as a x-mapbender-simplesearch-url header for easier debugging.
JavaScript API¶
None.
JavaScript Signals¶
None.


DComposite is
|
|
a public subclass of DO_Collection . . . DO_Object . . . D
Private instance variables
DR_KeyedCollection
storage
where instance variables are stored
Public member functions
Inserting, finding, and removing objects
See also the Composite macrobatics for very useful combinations of these functions
void
add( const
DR_String
& name, const
DRef
& obj,
ref_t
= primary_ref );
add an object to the composite's collection, giving the name as a DR_String, and optionally specifying the kind of reference to make to it.
void
add( const char * name, const
DRef
& obj,
ref_t
= primary_ref );
add an object to the composite's collection, giving the name as a const char *, and optionally specifying the kind of reference to make to it.
void
add(
DR_Object
,
ref_t
= primary_ref );
Inherited from DO_Collection; this version of add is not yet supported because storing an object in a Composite requires a key. Cases when there is no key or any key will do are certainly conceivable, and a future implementation of this function ought to generate a suitably unique key.
DRef
get( const
DR_String
& name );
get an object, specifiying name as DR_String
DRef
get( const char * name );
get an object, specifying name as const char *
DR_void
remove(
DR_String
name );
remove the named object
Composite information and aggregation
void
setStorage(
DR_KeyedCollection
drk,
ref_t
= primary_ref )
Sets the internal storage of the Composite to any DO_KeyedCollection subclass. Allows subclasses to change the default storage, which is DO_Dictionary.
size_t
size( ) const
pass through to
storage->
size
()
to return the number of elements in the Composite's collection of instance variables.
DO_Enumerator
*
elements( )
Standard DO_Collection method. returns
storage->elements()
so that one may traverse the collection of instance variables generically. Used by OStream subclasses, such as ECI_OStream for streaming.
void
init( )
creates/initializes composite storage.
void
destroy( )
dumps composite storage.
DRef
route(
DR_Message
m )
Responds to key messages of Composites by invoking their corresponding member functions.
DR_String
toString( )
Implements simple streaming useful only for debugging. Use OStream for real streaming, such as ECI_OStream.
DRef
deepCopy( ) const
Creates a new object and calls assign().
void
assign( const DRef& obj )
The somewhat unsolved problem with composite assign() is the inability as of yet to connect any DO instance variables to both the composite storage and their native c++ DR declarations...
dcompare_t
compare( const
DRef
& d ) const
inline virtual
DR_Class
DClass( )
{ return Compositeclass; }
static
DR_Class Compositeclass;the class object for generic Composite objects.
Standard DO public member functions
DO_Composite ();
DO_Composite (
DRef
r);
virtual ~DO_Composite();
As illustrated in the design diagram below, object accessiblity (DO_ objects) from two ways - both dynamic and static - presents a synchronization problem. Dumping a DRef declared as a DO_Composite C++ instance variable does not dump it from the Composite's table.
The DO_ objects pointed to by both can be accessed and sent messages of any sort. But to remove one does not remove it from the other; they must be dealt with simultaneously when objects are created or destroyed. This becomes an actual C++ problem when we realize that objects are keyed by name in the composite's storage, which generally corresponds to the name of the C++ variable....
To deal with this situation, several C++ macros are defined. The argument lists are presented as C++ function argument lists, with types indicating what is expected. The actual macro definitions follow.
DC_replacePtr ( DRef dref_what, D* ptr_with )
To be executed in the context of a Composite for which dref_what is a local varable.
- dref_what will be set to point to ptr_with
- the old dref_what is removed from composite storage, using the text of dref_what as the key name
- the new dref_what (that is, ptr_with) is added to the composite storage, using the text of dref_what as the key name.
#define DC_replacePtr(dref_what, ptr_with)\ dref_what.replace(ptr_with);\ DO_Composite::remove( #dref_what );\ DO_Composite::add( #dref_what , dref_what)
DC_replaceRef ( DRef dref_what, DRef dref_with )
Similar to DC_replacePtr, but usesdref_with->unsafe_get()
as the D * to replace the contents of dref_what.#define DC_replaceRef(dref_what, dref_with)\ dref_what.replace(dref_with.unsafe_get());\ DO_Composite::remove( #dref_what );\ DO_Composite::add( #dref_what , dref_what)
DC_dump ( DRef dr )
dumps dr and removes the entry from composite's storage whose key is the text of the argument.#define DC_dump(dr)\ dr.dump();\ DO_Composite::remove( (dr, #dr ) )
DRef DC_get ( DRef var )
Looks up var in the composite storage, using the text of the argument as the key. Returns (evaluates to) a DRef, which if not found, will be null. The actual text of this macro is interesting (see below) because there is only one argument to DO_Composite::get(), which is #var. This is the C++ comma operator, which evaluates the left then the right of the comma and evaluates as an expression to the right. By attempting to reference the actual var DRef, the compiler can check that there is a match between the c++ variable name and the text of its key in the composite storage.#define DC_get( var ) DO_Composite::get( (var, #var ) )
DC_remove ( DRef var )
Same as DC_get, but removes the object and dumps the DRef var.#define DC_remove( var ) DO_Composite::remove( (var, #var ) )
DC_sync ( var )
Replaces the local DRef var with that which is found in the composite's table using the text of var as a key.#define DC_sync( var ) var.replace( get( #var ) )
DC_add ( x )
Similar to DC_get and DC_remove for add.#define DC_add(x) add( #x, x)
|
Instance variables declared in a DO_Composite subclass are DR_ objects; these point to their repsective DO_ implementations. In addition, composite maintains a KeyedCollection for generic access to these variables. |
a public subclass of DR_Collection . . . DRef
Standard DRef public member functions
DR_Composite (D *d=0); DR_Composite (const DRef& ref); virtual ~DR_Composite();
note: not virtual functions
DO_Composite *const_get() const; DO_Composite *safe_get(); DO_Composite *safe_set(D* d); DO_Composite *New(); inline DO_Composite *operator->() { return safe_get(); }


© QTAB.com. Full technical specs are here.
Souq.com launched their QTAB tablet last year. Shaped much like the iPad mini — so much so that a couple of people mistook it for one while it sat on my desk — the QTAB is a barebones Android device that arrives with a couple of hardware quirks.
A closer look of the device and the differences from the standard comparison devices are apparent. For starters, the QTAB has both its hardware buttons at the top — power on the top left, home on the top right. While change is sometimes good, I can’t say this was an easy transition. I often found myself hitting the home button to sleep/wake the device. Similarly the volume buttons are soft touch at the bottom of the screen — something easily forgotten when you want to quickly turn up and down the volume.
Experienced tablet users would be easily annoyed by these changes; however, first time users — and I believe this is where the QTAB is looking to target the market — should just use this as a baseline instead without too much fuss.
The other area where I believe the QTAB has some work to do is boot up. Restarting the device takes some time (and I found myself restarting it fairly often to clear out the wifi connection, for example) — I timed it at 41s during one restart. This is particularly interesting since there didn’t seem to be any bloatware installed on the device. Normally this wouldn’t be a bother; but when the device stayed idle for a few hours, it would refuse to connect to the wifi unless rebooted.
So let’s talk about the market. The official statement is that the QTAB is targeted for the Arab region, and particularly for education. I’m not sure what is special about the QTAB for the market (other than price, but they’re not the only one playing in that range), but I can see the value for education. Souq.com’s backing would mean institutions would be able to setup good warranties compared to some of the other players. The QTAB serves as a basic device that would meet the needs of browsing and reading. There is also a large market in this region for first time, basic tablet users who want to be able to read email, view Facebook and maybe make a Skype call or two — and give them away as gifts to others and kids. From what I’ve seen in that space, if they put the right resources behind it and iron out the quirks, the QTAB should do just fine.


Preparation time
less than 30 mins
Cooking time
less than 10 mins
Serves
Serves 4-6
It’s all in the preparation. Soften the super thin noodles before cooking up a fast stir-fry feast.
Soak the rice noodles in a bowl of warm water for 25 minutes. Then drain them in a colander or sieve. Set them aside until you are ready to use them.
Soak the mushrooms in warm water for 20 minutes. Then drain them and squeeze out the excess liquid. Remove and discard the stems and finely shred the caps into thin strips.
Put the peas in a small bowl and let them thaw. Combine the eggs with sesame oil, salt and pepper and set aside.
In a bowl, mix together all the sauce ingredients and set aside.
Heat a wok or large frying-pan over high heat until it is hot. Add the groundnut oil, and when it is very hot and slightly smoking, add the garlic, ginger and chillies and stir-fry the mixture for 30 seconds. Add the water chestnuts, mushrooms, pork and spring onions and stir-fry for 1 minute. Add the rice noodles, prawns and peas, and stir-fry for 2 minutes.
Add the sauce and cook over high heat for another 5 minutes or until most of the liquid has evaporated. Pour the egg mixture over the noodles. Stir-fry constantly until the egg has set.
Turn the noodles unto a large platter, garnish with the coriander leaves and serve at once.


note: Options which could exist without being documented here are considered as experimental ones. Such experimental options should usually not be used.
| switch | parameter |
| -a | downmix stereo file to mono |
| --abr | average bitrate encoding |
| -b | bitrate (8...320) |
| -B | max VBR/ABR bitrate (8...320) |
| --bitwidth | input bit width |
| -c | copyright |
| --cbr | enforce use of constant bitrate |
| --clipdetect | clipping detection |
| --comp | choose compression ratio |
| --decode | decoding only |
| --disptime | time between display updates |
| -e | de-emphasis (n, 5, c) |
| -f | fast mode |
| -F | strictly enforce the -b option |
| --freeformat | free format bitstream |
| -h | high quality |
| --help | help |
| --highpass | highpass filtering frequency in kHz |
| --highpass-width | width of highpass filtering in kHz |
| --lowpass | lowpass filtering frequency in kHz |
| --lowpass-width | width of lowpass filtering in kHz |
| -m | stereo mode (s, j, f, m) |
| --mp1input | MPEG Layer I input file |
| --mp2input | MPEG Layer II input file |
| --mp3input | MPEG Layer III input file |
| --noasm | disable assembly optimizations (mmx/3dnow/sse) |
| --nohist | disable histogram display |
| --noreplaygain | disable ReplayGain analysis |
| --nores | disable bit reservoir |
| --notemp | disable temporal masking |
| -o | non-original |
| -p | error protection |
| --preset | use built-in preset |
| --priority | OS/2 process priority control |
| -q | algorithm quality selection |
| --quiet | silent operation |
| -r | input file is raw PCM |
| --replaygain-accurate | compute ReplayGain more accurately and find the peak sample |
| --replaygain-fast | compute ReplayGain fast but slightly inaccurately (default) |
| --resample | output sampling frequency in kHz (encoding only) |
| -s | sampling frequency in kHz |
| -S | silent operation |
| --scale | scale input |
| --scale-l | scale input channel 0 (left) |
| --scale-r | scale input channel 1 (right) |
| --silent | silent operation |
| --strictly-enforce-ISO | strict ISO compliance |
| -t | disable INFO/WAV header |
| -V | VBR quality setting (0...9) |
| --vbr-new | new VBR mode |
| --vbr-old | older VBR mode |
| --verbose | verbosity |
| -x | swapbytes |
| -X | change quality measure |


My career began a few years ago, when I was offered an entry level job working with basic HTML templates. I had no idea the level of passion I would develop for engineering. With the help of supportive teams and my deep desire to grow, I have been able to work on many interesting projects that have had a positive impact.
In all things in life, I try to learn as much as I can while promoting growth in others. My ultimate goal in life is to make a difference wherever I can - for people, for companies I work for, and for the causes I believe in supporting.
View ResumeFor side projects at my current company I've done a small write up HERE. While I can't share the code, I've worked on some cool projects that I think have really made a difference. Unfortunately I cannot share the code due to company restrictions.
This was one of my favorite project to work on for a couple of reasons besides my love of cooking. I really liked exploring the AI capabilites as well as learning more about React Hooks when I created this. Personally, I like using a hands on approach to learn, by creating something quick and that I can maybe continue working on as a side project down the line.
REACT | NODE/EXPRESS | CLARIFAI API | REACT HOOKS
I heard a lot of buzz about NextJS and GraphQL. So naturally I decided to build a faux art store to expore the features and functionality. Using another newer backend CMS "Strapi," I spun up a quick environment to begin exploring!
NEXT.JS | GRAPHQL | MONGODB | STRAPI
This was a fun project because it was my first foray into messing with some of the cool AI api's out there. The app can detect a face in the picture. While the interface is fairly simple, I can't wait to explore more using AI api's more in the future and make something that people can really use.
REACT | NODE/EXPRESS | CLARIFAI API | POSTGRES
I enjoyed working on this project, because I think it really helped me understand Redux in a way I never did before. It's pretty simple, but it has a Google Auth, and will send out emails using Sendgrid integration and a test Stripe account to add credits.
REACT/REDUX | NODE/EXPRESS/MONGOOSE/PASSPORT | SENDGRID/STRIPE API | MONGODB
Email<EMAIL_ADDRESS>Send Message


Effortless planning, Plan a travel with just a few taps
Where would you like to go?
Shanghai
Macau
Bangkok
Paris
San Francisco
Hongkong
He is the primary contact for our team in building the website. He actively participates in designing the homepage of our website.He loves travelling
He is responsible for communications management and documentation
He is good at collecting requirements and managing them
He deals with quality and testing management
He effectively communicates with client and collects his inputs
He deals with issue management
Subscribe to our Newsletter
this is contact information