Test for overall association between microbiome composition data with a continuous or dichotomous outcome via phylogenetic kernels. The phenotype can be univariate continuous or binary phenotypes (Zhao et al. (2015) <doi:10.1016/j.ajhg.2015.04.003>), survival outcomes (Plantinga et al. (2017) <doi:10.1186/s40168-017-0239-9>), multivariate (Zhan et al. (2017) <doi:10.1002/gepi.22030>) and structured phenotypes (Zhan et al. (2017) <doi:10.1111/biom.12684>). For all these effect, the microbiome community effect was modeled nonparametrically through a kernel function, which can incorporate the phylogenetic tree information.
| Version: | 1.0.1 |
| Depends: | R (≥ 2.13.0), survival, PearsonDS, GUniFrac, MASS |
| Published: | 2018-04-25 |
| Author: | Haotian Zheng [aut], Xiang Zhan [aut], Anna Plantinga [aut], Michael Wu [aut], Ni Zhao [aut, cre], Jun Chen [aut] |
| Maintainer: | Ni Zhao <nzhao10 at jhu.edu> |
| License: | GPL-2 | GPL-3 [expanded from: GPL (≥ 2)] |
| NeedsCompilation: | yes |
| Materials: | README |
| CRAN checks: | MiRKAT results |
| Reference manual: | MiRKAT.pdf |
| Vignettes: |
MiRKAT |
| Package source: | MiRKAT_1.0.1.tar.gz |
| Windows binaries: | r-devel: MiRKAT_1.0.1.zip, r-release: MiRKAT_1.0.1.zip, r-oldrel: MiRKAT_1.0.1.zip |
| OS X binaries: | r-release: MiRKAT_1.0.1.tgz, r-oldrel: MiRKAT_1.0.1.tgz |
| Old sources: | MiRKAT archive |
Please use the canonical form https://CRAN.R-project.org/package=MiRKAT to link to this page.


kaseyc is not webscale
Kasey Carrothers
Senior SWE @ Google
Los Angeles
Email<EMAIL_ADDRESS>"kc", "kaseyc")
TODO(kaseyc) build website


Table of Contents
The New York Times: Art and Design and RSS Feed
National Weather Service RSS on Mississippi River Conditions


Finally got through the biggest part of my outstanding work. Now for the ugly smaller bits and cleanup.
9/19/2008, 4:40:28 PM
Favs: 0
Retweets: 0
link--- layout: tweet ---
Finally got through the biggest part of my outstanding work. Now for the ugly smaller bits and cleanup.
9/19/2008, 4:40:28 PM
Favs: 0
Retweets: 0
link


Prompt:
Find the quote by Donald Knuth from the following website.
Enter the quote without the quotations!


Form with regex validation
Postcode
Postcode must have a valid format (0000-000)
Email
Email must be valid
Phone number
Phone must be valid (plus sign followed by country code followed by national number)


Legal Notices
Twilio Client for Android makes use of some third-party software. Required legal notices relating to this software appear here.
OpenSSL
This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/).
This product includes cryptographic software written by Eric Young (eay@cryptsoft.com).


Russian goat who made unlikely friends with tiger dies
MOSCOW: A Russian goat named Timur whose unusual friendship with a tiger won him nationwide fame, has died, the director of the safari park where the pair lived, said Friday.
"Timur's heart stopped beating on Nov 5," Dmitry Mezentsev, director of a safari park outside the Pacific port of Vladivostok, told AFP.
The billy goat, believed to be around five years old, was cremated and will be buried "with full honours", his keeper Elvira Golovina said in a statement.
The goat died of natural causes but his health deteriorated following an altercation with a male Siberian tiger he unexpectedly befriended in 2015, Mezentsev said.
In a story that captivated Russia, Timur was sent to the safari park as live prey for Amur the Siberian tiger.
But the tiger did not touch the billy goat when it entered the enclosure in late 2015 because the goat did not show any fear.
The two quickly became inseparable.
Mezentsev, who studies tigers and leopards, at the time described the unlikely friendship as nothing short of a miracle and a "sign from above" for people to be kinder to each other.
Timur and Amur slept in the same enclosure, ate and played together. The tiger attempted to teach the goat how to catch prey. They also playfully head-butted and chased each other.
But the friendship soured as the goat grew more audacious and started challenging the big cat.
"Timur hassled the tiger for about a month," Mezentsev said.
In January 2016 the tiger lost patience after the goat stepped on him. He grabbed Timur and threw him off a hillock.
The frenemies were separated but Timur's health took a turn for the worse.
He started limping and lost some of his zest for life, while remaining "cheeky", Mezentsev said.
The park sent the goat to Moscow for treatment but he never fully recovered from the attack by the tiger, who is still alive and living at the safari park.
The owners now plan to erect a bronze monument on Timur's grave.
Many Russians said online they were saddened by his passing.
"Fearless Timur, you will forever remain in our hearts," said one mourner.


Bad Examples (For Testing Only)
Decorative Icon without Fallback (Nested Text)
If you nest the text, the icon may confuse screen readers (unable to use aria-hidden).
Share on Twitter (Nested Text)


It's behind you! Matt Hancock needs to check what's in the shot when has his picture taken!
by Paul GeaterYou really would have thought West Suffolk MP and Health Secretary Matt Hancock would have learned to look at the image he is trying to portray of himself by now!
He has a bit of a reputation for not always making the best of a photo-opportunity and now he's done it again by not checking the background.
A few years ago he had some election leaflets published which when folded to go through doors split his surname so only half (or to be precise four-sevenths) of his surname appeared above his picture.
Then he managed to be photographed on a bike at the launch of a new skills programme - without noticing that he was pictured in front of some graffiti saying "Sack Cameron."
 Now there's nothing wrong with being photographed with a tree - but the effect in this is just extraordinary. If I'd wanted to hear what he was saying I just couldn't concentrate because the image we have here is just so, well there's no other word for it, hilarious!
He did get a bit of stick on Twitter because of the tree - and to be fair when he set off from the West Midlands the following day he made sure there was no tree behind him . . . even making a point of noting that on his feed!


How To Change MAC Address Of Your Android Device
by Manpreet SinghThe media access control address (MAC address) is a unique identifier assigned to network interfaces for communications on the physical network segment. MAC addresses are used as a network address for most IEEE 802 network technologies, including Ethernet and WiFi. This is used to track the device that is uploading or downloading over the internet. So for private or anonymous browsing not only IP addresses should be hidden but MAC addresses must be also hidden.
In an Android device, you can change your Media Access Control access to make your Android activities private over the WiFi or other wireless networks. Just follow the below post to proceed.
Contents show
Why would you change your Mac Address?
Well, this is one question that would come in your mind as there’s a golden rule that if something isn’t broken why would you try to fix it? Similarly, if there’s no need for changing the MAC address, then why one would want to change.
Let me answer this question in detail. Look, privacy is important nowadays and through the MAC address, one can easily track your device. This is why users often want to change their MAC address after purchasing a smartphone.
Also, if you connect to the Public WiFi network more than often, then it becomes important to change the MAC address at regular intervals. There are actually plenty of reasons behind changing the MAC address, but out of all those, privacy is the most important one.
How To Change MAC Address Of your Android Device
Changing the MAC Address of your smartphone is easy as long as you have a rooted Android device. It’s possible to change the MAC address of a non-rooted device, but there’s no guarantee on whether the method will work or not. Below, we have shared two best methods to change the MAC Address of your Android smartphone.
Check The MAC address Of Your Android Device:
You need to check out your MAC Address first on your Android device, for this, you have to tap on Menu > Settings > About device > MAC Address.
Change MAC Address Of Android:
This method requires rooted Android smartphone to work as you need to run BusyBox and Terminal on Android smartphone. So, if you have a rooted device, follow some of the simple steps given below.
Step 1. First of all, you need to root your Android device, if you have not rooted your Android yet, you can head to the complete rooting process here.
Step 2. Now in your Android, download and install the app BusyBox.
Step 3. Now after installing Busybox, install the Terminal in your Android.
Step 4. Now open the terminal and type su and press enter. It will ask you for superuser access to grant it. If you want to see your current MAC address, then type “busybox iplink show eth0″ and press enter.
Step 5. Now type “busybox ifconfig eth0 hw ether XX:XX:XX:XX:XX:XX” (without quotation marks)
You need to replace XX:XX:XX:XX:XX:XX with your new MAC address, you can write any alternative MAC address that you want to assign to your device.
That’s it! you are done, you have successfully changed your Android MAC address. You can check your new MAC Address by just typing ” busy box link show eth0 ” in Terminal.
Changing Mac Address Using ES File Explorer:
Well, ES File Explorer is removed from the Google Play Store due to several reasons. However, you can download the file explorer from third-party sources to change the MAC address of your Android. This method works on non-rooted Android smartphones also. So, let’s check out how to change Mac Address using ES File Explorer 2019.
Step 1. First of all, you need to root your Android device. Then download and install ES file explorer on your Android smartphone.
Step 2. Now open the ES File Explorer and then enable the option “Show Hidden Files” from the settings panel.
Step 3. Now you need to browse the folder named “EFS.”
Step 4. Now you need to find and open the folder called “WiFi.”
Step 5. Now you will see two folders named “mac.cob” and “mac.info”. Now you need to open the “mac.cob” folder using the text editor.
Step 6. Now you will get to see your mac address, you can edit and after editing, save it.
That’s it! You are done. You will be now using the new MAC address.
So above is all about How To Change MAC Address Of Android. By following the methods given above, one can quickly change the Mac address of any Android device and secure your device on the network from the attackers. Also, you can surf anonymously with this method. I hope you like the article! Don’t forget to share it with your friends and leave a comment below if you are still facing any problem with this.


{{ myCompetencies.length }}
Your competencies
{{ ((filteredCompetencies) ? filteredCompetencies.length : 0 ) + ((watCompetencies) ? watCompetencies.length : 0 )}}
Recommended competencies
No competencies found from WAT
No competencies found
Competencies will be recommended based on your position.
{{comp?.additionalProperties?.competencyType || comp?.competencyType}}
Not enough data


This plugin adds several tools to simplifiy the maintenance of your shopware shop. Obviously it is highly recommended to not permanently deploy this plugin to a production environment. The tools are combined in the backend under the configuration / maintenance entry.
This plugin is part of the Github Organization @FriendsOfShopware entwickelt.
Maintainers of this plugin are: David Neustadt and Alexander Wolf
For questions or bugs please create a Github Issue
This tool adds command line window (semi-interactive web shell) to the Shopware backend. It's based on phpbash by Arrexel.
This tool simplifies the reset process of the database for specified modules and deletes all data of the module including the related ones. The code is based on the SQL tips & tricks from shopware.
Modules:


Please enter comma separated Gene names and SRA accessions for each condition. Also enter an email address to get a notification when your job is done, as this tool will take a while to run. deSRA uses human genome assembly GRCh38 and the most recent annotation release for gene sequences. Read our documentation at https://github.com/NCBI-Hackathons/deSRA.
This request will take a long time to process. Once the results are ready, we will send you a link to your email.


Dave
Ayodeji Moronkeji
<EMAIL_ADDRESS>Pending requests
| S/N | Title | Driver | Destination | date | Requester | |
|---|---|---|---|---|---|---|
| 1 | Trip to Obudu ranch | EPIC Transports | Crossriver state, Nigeria | 27th July, 2017 | Psalm David | Accept Reject |
| 2 | Trip to Badagry beach | EPIC Transports | Lagos, Nigeria | 27th Dec., 2017 | Warner bros | Accept Reject |
view activities here


IMP network is constructed
Interface Message Processor network is constructed; linked four nodes: University of California at Los Angeles, SRI (in Stanford),
University of California at Santa Barbara, and University of Utah; first data packets are sent between networked computers.


Gordon Sondland Explains 'Loves Your Ass' Comment as 'Trump-Speak'
Ambassador to the European Union Gordon Sondland confirmed Wednesday he told President Trump that Ukrainian President Volodymyr Zelensky “loves your ass.”
by Charlie SpieringSondland did not dispute recorded testimony from David Holmes, a political counselor at the United States Embassy in Ukraine, who testified that he overheard the comment during a conversation between Sondland and President Trump.
Sondland testified to the House Intelligence Committee detailing the comment as the Democrat counsel questioned him about his conversation with the president.
“Yeah, it sounds like something I would say,” Sondland chuckled. “That’s how President Trump and I communicate, a lot of four-letter words, in this case, three letters.”
Sondland said he did not remember his comments in detail but acknowledged he probably said what Holmes had heard.
“I’m not going to dispute what he did or didn’t hear,” he said, referring to Holmes recollection of the conversation. Holmes said he heard the comment when Sondland was talking with the president about Zelensky on an unsecured line.
Sondland said he was only trying to express to President Trump that Zelensky was willing to work with the United States.
“Putting it in Trump-speak, by saying ‘He loves your ass,’ he’ll do whatever you want, meant that he would really work with us on a whole host of issues,” he said.


Chapter 1 Getting started
1.1 System requirements
Osprey requires MATLAB and has been tested on version 2017a and newer. The following toolboxes are required for full functionality:
- Optimization
- Statistics and Machine Learning
You can check your current MATLAB version and the available toolboxes with the following command at the MATLAB prompt:
>> ver
-----------------------------------------------------------------------------------------------------
: <IP_ADDRESS>9201 (R2018a) Update 6
MATLAB Version: 703789
MATLAB License Number: Mac OS X Version: 10.14.6 Build: 18G4032
Operating System: Java 1.8.0_144-b01 with Oracle Corporation Java HotSpot(TM) 64-Bit Server VM mixed mode
Java Version-----------------------------------------------------------------------------------------------------
9.4 (R2018a)
MATLAB Version 3.5.7 (R2018a)
Curve Fitting Toolbox Version 2.3.4 (R2018b)
GUI Layout Toolbox Version 3.4.4 (R2018a)
Global Optimization Toolbox Version 10.2 (R2018a)
Image Processing Toolbox Version 11.1 (R2018a)
Neural Network Toolbox Version 8.1 (R2018a)
Optimization Toolbox Version 6.12 (R2018a)
Parallel Computing Toolbox Version 8.0 (R2018a)
Signal Processing Toolbox Version and Machine Learning Toolbox Version 11.3 (R2018a)
Statistics 8.1 (R2018a)
Symbolic Math Toolbox Version 5.0 (R2018a)
Wavelet Toolbox Version 1.3.330 (R2019a) Widgets Toolbox Version
1.2 Installing Osprey
Get the latest Osprey code from our GitHub repository:
Clone the repository, or download and extract the contents of the .ZIP file to a directory on your drive.
Add the entire
osprey
directory (with subfolders) to your MATLAB path.Make sure to regularly check the repository for updates, as we frequently commit new features, bug fixes, and improved functions.
To perform voxel co-registration and tissue segmentation, download SPM12 from the University College London website. You will need to provide the SPM team with some information before you can access the download link.
- Extract the downloaded archive so that the
spm12
folder is on the same directory level as theosprey
folder:
- Add the
spm12
folder to your MATLAB path, but without subfolders - during testing, we have found that adding SPM subfolders to the MATLAB path can cause functions to fail.
If you want to use the Osprey Graphical User Interface (GUI), please download the following toolboxes from the MATLAB File Exchange:
GUI Layout Toolbox (David Sampson)
Widget Toolbox (Robin Jackey)
Download both toolboxes in the MATLAB toolbox format (.mltbx). You can double-click to install. MATLAB will automatically add the toolboxes to its path.
1.3 How to organize your raw data
Raw MRS data come in an overwhelming variety of formats, each producing different numbers of files. Osprey does not make a lot of assumptions with regard to your folder structure, since you specify the exact location for each file in a job file prior to each analysis. It is highly recommended, however, that you store different acquisitions in separate folders. Organizing your raw data in a consistent and meaningful way will save you a lot of time and nerves.
To ensure optimal functioning of Osprey, we suggest adapting the folder hierarchy proposed by the BIDS (Brain Imaging Data Structure) initiative:
There are four main levels of the folder hierarchy, these are:
project/
└── subject
└── session
└── acquisition
With the exception of the top-level
project
folder, all sub-folders have a specific structure to their name (described below). Here’s an example of how this hierarchy looks:
myProject/
└── sub-01
└── ses-01
└── anat
An example adaptation of this hierarchy for Philips MRS data could look like this:
myProject/
├── sub-01
│ └── ses-01
│ ├── anat
│ │ └── sub-01_T1w.nii
│ └── mrs
│ ├── sub-01_mega-press_act
│ │ ├── sub-01_mega-press_act.sdat
│ │ └── sub-01_mega-press_act.spar
│ ├── sub-01_mega-press_ref
│ │ ├── sub-01_mega-press_ref.sdat
│ │ └── sub-01_mega-press_ref.spar
│ └── sub-01_press-water
│ ├── sub-01_press-water_act.sdat
│ └── sub-01_press-water_act.spar
├── sub-02
│ └── ses-01
│ ├── anat
│ │ └── sub-02_T1w.nii
│ └── mrs
│ ├── sub-02_mega-press_act
│ │ ├── sub-02_mega-press_act.sdat
│ │ └── sub-02_mega-press_act.spar
│ ├── sub-02_mega-press_ref
│ │ ├── sub-02_mega-press_ref.sdat
│ │ └── sub-02_mega-press_ref.spar
│ └── sub-02_press-water
│ ├── sub-02_press-water_act.sdat
│ └── sub-02_press-water_act.spar
...
...
While adhering to the BIDS standard is a recommendation, it is by no means
binding for most file formats. You can, for example, keep Siemens TWIX files
(.dat
) all in the same folder, and Osprey will be able to handle them, if
you define their paths in the job file accordingly.
*.IMA
, *.DCM
) or single-average Siemens RDA format, it is absolutely necessary to keep every scan in a separate folder.


Properties
Private Optional supertest
supertest: any
Accessors
delete
- get delete(): (Anonymous function)
-
Returns (Anonymous function)
get
- get get(): (Anonymous function)
-
Returns (Anonymous function)
patch
- get patch(): (Anonymous function)
-
Returns (Anonymous function)
post
- get post(): (Anonymous function)
-
Returns (Anonymous function)
put
- get put(): (Anonymous function)
-
Returns (Anonymous function)
Methods
Private findSchema
- findSchema(method: string, path: string): undefined | Schema<any, any>
-
Parameters
-
method: string
-
path: string
Returns undefined
|
Schema<any, any>
Private regTest
- regTest(method: string): (Anonymous function)
-
Parameters
Returns (Anonymous function)
根据请求方法和请求路径查找对应的schema


Home
Pranks
Amazon Prank
Pizza Delivery Prank
Fantasy Sports Prank
Doctor Appointment Prank
About Us
Login
Doctor's Appointment Prank
Please complete the form below to create your prank message.
Person's name:
email :
Doctor's Specialty:
Day of Week:
Hospital Name:
Name of Secretary:
pretend website name:


| Full Moon - Selûne's illuminated side is facing Toril. Selûne appears to be completely illuminated by direct sunlight. | |
| Waning Gibbous - Selûne appears to be more than one-half but not fully illuminated by direct sunlight. The fraction of Selûne's disk that is illuminated is decreasing. | |
| Last Quarter - One-half of Selûne appears to be illuminated by direct sunlight. The fraction of Selûne's disk that is illuminated is decreasing. | |
| Waning Crescent - Selûne appears to be partly but less than one-half illuminated by direct sunlight. The fraction of Selûne 's disk that is illuminated is decreasing. | |
| New Moon - Selûne's unilluminated side is facing Toril. Selûne is not visible (except during a solar eclipse). | |
| Waxing Crescent - Selûne appears to be partly but less than one-half illuminated by direct sunlight. The fraction of the Selûne 's disk that is illuminated is increasing. | |
| First Quarter - One-half of Selûne appears to be illuminated by direct sunlight. The fraction of Selûne 's disk that is illuminated is increasing. | |
| Waxing Gibbous - Selûne appears to be more than one-half but not fully illuminated by direct sunlight. The fraction of Selûne 's disk that is illuminated is increasing. |


Biologists often perform clustering analysis to derive meaningful patterns, relationships, and
structures from data instances
and attributes. Though clustering plays a pivotal role in biologists’ data exploration, it takes
non-trivial efforts for biologists to find the best
grouping in their data using existing tools. Visual cluster analysis is currently performed either
programmatically or through menus and
dialogues in many tools, which require parameter adjustments over several steps of trial-and-error.
In this paper, we introduce
Geono-Cluster, a novel visual analysis tool designed to support cluster analysis for biologists who
do not have formal data science
training. Geono-Cluster enables biologists to apply their domain expertise into clustering results
by visually demonstrating how their
expected clustering outputs should look like with a small sample of data instances. The system then
predicts users’ intentions and
generates potential clustering results. Our study follows the design study protocol to derive
biologists’ tasks and requirements, design the
system, and evaluate the system with experts on their own dataset. Results of our study with six
biologists provide initial evidence that
Geono-Cluster enables biologists to create, refine, and evaluate clustering results to effectively
analyze their data and gain data-driven
insights. At the end, we discuss lessons learned and implications of our study


How do you get copd?
There are many different ways to get COPD. Smoking cigarettes, breathing in secondhand smoke, and breathing in chemical fumes, dust, or toxic substances can all cause the disease. In fact, 20-30% of people with COPD can trace their disease to workplace hazards.
what are the symptoms of copd?
People with COPD often experience a chronic cough, wheezing, tightness of the chest, or a feeling that they're out of breath more frequently during activities that were once easy.
If you think you may have COPD, talk to your doctor about receiving a diagnostic pulmonary lung function test.
What resources are out there?
Though we're out to get more funding for research, there are already some helpful resources for those with COPD.
Pulmonary Rehabilitation: Pulmonary rehabilitation is designed to recover some lost lung capacity and preserve what lung capacity remains, to help people withh COPD continue to do things they love. Learn More
The COPD Foundation: The COPD Foundation was established to expand services for COPD and improve the lives of individuals affected by the disease. The foundation focuses on achieving these results through research, education and advocacy programs that will lead to prevention, and, someday, a cure for this disease. Learn More
The Pulmonary Education and Research Foundation (PERF): PERF seeks to help patients with chhronic pulmonary conditions by focusing on short-term, practical projects that center on pulmonary rehabilitation. Learn More
American Respiratory Care Foundation (ARCF): ARCF aims to improve public education on respiratory health, help train health care providers to better serve pulmonary-care patients, and improve the quality of the air we breathe. Learn More


cells stem cell human fields expression gene magnetic cellular effects field EMF differentiation mesenchymal biological electromagnetic activity bone role rhythms specific regulation Bioelectromagnetics. EMFs changes weak shown evidence including molecular {border-style essential genes Med. px;} #ffffff;} cells, Biol extremely frequency geomagnetic growth low neuronal variety body endogenous music signaling significant heart marrow oscillators wide Effects Med brain dynamics information living play protein pulsed recent results study suggesting systems Wang Xue affect circadian electric existence fundamental level life natural neural new solar suggest vitro Kim Sci. blood cytoskeletal dynamic example, functional large modulate modulation oscillatory processes range rat rhythm sound Biol. aqueous basic cardiac chromatin coupled different exposure expression, form intercellular low-frequency mechanisms nonthermal observed oxide rate reported resonance using Cell Electromagn Electromagnetic associated biofield calcium communication coupling demonstrated embryonic frequencies meditation network osteogenic possible power proliferation psychosocial response structures understanding Also, Chen Increased Novikov Zhang action activities activity. adipose-derived biochemical complex correlated cytoskeleton development directly electrical factor function involved medicine. mice nitric occur physical practices psychological px; regulatory research sensitivity studies synchronization treatment use vibration yoga {font-family Acad Chang Earth's Int Nature. Pilla Proc Res. Thus, [Article activation alternating amplitude behaviors biology biophoton cancer central clock decreased effect enhanced experimental feedback font-size function, genetic growing increased interaction interactions intimately ion levels mechanical medicine model nanomechanical nervous notion oscillations patterns rhythms, somite subcellular subjects suggests transcription vibrations Cheng Chinese] EEG Health Human Lett. Life Park Persinger Popp Sci [Epub ability acid activity, acute ahead ambient applied bioeffects bioinformation cells. concept derived determine double; endothelial energy entire expression. factors field. genes, health important influence intracellular knowledge levels, life. light literature markers marrow-derived neurons observations paradigm particular print] radiation rapidly regulating related relevant reports review segmentation signals states static subtle tumor vivo way work –): AFM Biophysics Cell. Cho Del Effect Exp Extremely Gong Lin Magnetic Maioli Mol Natl Nitric Physiol Physiol. Prato Rubin Thomas Ventura alter background based beating border-color border-width breast change chromosome clinical connections cyclotron deep described disease exposures fate field, fields. generated governing healing highly implications intrinsic language level. means mechanism multiple musical myocardial number physiological possibility primary processes, processes. rapid reduction regenerative remarkable rise signal similar skin solid; stimulation stromal summarized theoretical theory therapeutic tool transduction transport view water years, {font-style {font-weight Adv Advances Beloussov Biological Biomed Biophys Brain EMFs. Electric Enhanced Evidence Fesenko Gurwitsch Hes House International Johnson Khan Liu Modulation Neurosci Phys Reduction Review Rinaldi Santaniello Science Seo Sheng Up-regulation Yoon Zhao Zhi. Zhou above, addition adult alternative applying behavior bold capable cell-cell certain clear clearly communicate components condition controlling correlations courier; current decrease dependent develop developing differentiate differentiation, direct disciplines disease. down-regulation em; emotions energies environment exists experiments fields, filament findings fluctuations folding framework frequencies, genomics glutamic growth, high higher holistic increase indicating inhibition ionic key levels. membrane microtubules, mind mind-body mitosis modulates mortality multicellular necessary negative novel nuclear numbers order organismic pain patterning peripheral picture plays point presented properties pt;} rats regulate relationship relaxation release reprogramming resonances result scientific skeletal small sounds sources spectrum state stress substantial support supported temporal time tones turn type world,


Outcomes
- Shared understanding and buy in of
- Needs and benefits
- Governance
- Taxonomy / Categories
- Agreed upon names for problematic components
Agenda
- (5 mins) Recap of what a component library is
- (15 minutes) Report to the group what was heard during interviews, open discussion of new thoughts
- (10 minutes) Governance model, pinpoint cultural change
- (15 minutes) Presentation of categories suggestion, request for feedback
- (10 minutes) Break
- (50 minutes) Group exercises for naming problematic components
- (15 minutes) Next actions, open discussion, Q&A
Interview Results
8 interviews were conducted across our organization to get a larger sense of
- What the benefits could be
- Potential pitfalls
- Ideas to incorporate
Large themes
- Unanimous positive reaction
- Bento could see the most benefit
- .org should be the immediate priority
Unanimous positive reaction
"We've needed this for a long time."
"This is way overdue."
Bento could see the most benefit
Single biggest thing:
Demonstrate what can be done with Bento
Aid in
- Marketing the product
- Preventing support requests
- Easier "drive by" documentation
.org should be the immediate priority
- Higher priority product currently
- Audience is internal
- Would allow for the process to get solidified
What does success look like?
What does success look like?
- An online, public resource that documents all* components
- Provides clear nomenclature
- Actively used by entire digital team
- Kept up to date and is trusted to be so
- Other thoughts?
What does failure look like?
What does failure look like?
- Falls out of date, is abandoned
- Is not trusted, thus is ignored
- Fails to provide central design reference
New thoughts?
Have you worked with a simliar library in the past?
Any new benefits that you can think of?
(Open discussion)
Categories
- Content
- Global
- Personalization
- Social
- Sponsorship
- Search
- Video
- Thoughts?
Group Exercise:
Naming problematic components
Naming problematic components
- Six problematic components
- Two minutes to think of as many names as possible
- Ideas will be gathered
- Emerging names will be voted on with dots
Naming Criteria
Aim for
Avoid
- Aesthetic (e.g. "Red box")
- Context (e.g. "Home Page box")
- Content (e.g. "NOVA Tweets")
#1
- Rotates slides
- Each slide contains multiple different links
- Contains up to 5 slides, possibly unrelated
- May or may not contain branding
#2
- Two variations
- First one has one link per slide
- Second has multiple links, though each is a large target
#3
- Contains one image
- Descriptive text, with supporting meta title
- Single call to action
#4
- Describes a piece of video content
- Contains meta information and features
- Contains shopping / social links
#5
- Also associated with video content
- Contains external links
#6
- Also associated with video content
- Is optional
- Contains external links with thumbnails
Next Actions
- Chip: start building the site
- Chip & Meg: start documenting components
- Everyone: think in components


Malaysia's last Sumatran rhinoceros dies
KUALA LUMPUR (Reuters) - The last Sumatran rhinoceros in Malaysia died on Saturday, leaving the smallest species of rhino, which once roamed across Asia, surviving in small numbers mostly in Indonesia.
The 25-year-old female rhino, named Iman, who has been cared for in a wildlife reserve since her capture in 2014, died of cancer in the state of Sabah on the island of Borneo.
“Iman’s death came rather sooner than we had expected, but we knew that she was starting to suffer significant pain,” said Augustine Tuuga, director of the Sabah Wildlife Department.
The Sumatran rhino was declared extinct in the wild in Malaysia in 2015. Malaysia’s last male Sumatran rhino died in May this year.
The species has now almost disappeared from the wild, and conservationists estimate that only about 30 to 80 Sumatran rhinos survive, mostly on the Indonesian island of Sumatra and on the Indonesian side of Borneo.
Their isolation, caused by habitat loss and poaching, means they rarely breed and may become extinct in a matter of decades, according to conservation group International Rhino Foundation.
Since 2011, Malaysia has tried to breed the species in captivity through in-vitro fertilization, but without success.


Version control systems are a category of software tools that help a software team manage changes to source code over time. Version control software keeps track of every modification to the code in a special kind of database. If a mistake is made, developers can turn back the clock and compare earlier versions of the code to help fix the mistake while minimizing disruption to all team members.
For almost all software projects, the source code is like the crown jewels - a precious asset whose value must be protected. For most software teams, the source code is a repository of the invaluable knowledge and understanding about the problem domain that the developers have collected and refined through careful effort. Version control protects source code from both catastrophe and the casual degradation of human error and unintended consequences.
Software developers working in teams are continually writing new source code and changing existing source code. The code for a project, app or software component is typically organized in a folder structure or “file tree”. One developer on the team may be working on a new feature while another developer fixes an unrelated bug by changing code, each developer may make their changes in several parts of the file tree.
Version control helps teams solve these kinds of problems, tracking every individual change by each contributor and helping prevent concurrent work from conflicting. Changes made in one part of the software can be incompatible with those made by another developer working at the same time. This problem should be discovered and solved in an orderly manner without blocking the work of the rest of the team. Further, in all software development, any change can introduce new bugs on its own and new software can‘t be trusted until it’s tested. So testing and development proceed together until a new version is ready.
Good version control software supports a developer's preferred workflow without imposing one particular way of working. Ideally it also works on any platform, rather than dictate what operating system or tool chain developers must use. Great version control systems facilitate a smooth and continuous flow of changes to the code rather than the frustrating and clumsy mechanism of file locking - giving the green light to one developer at the expense of blocking the progress of others.
Software teams that do not use any form of version control often run into problems like not knowing which changes that have been made are available to users or the creation of incompatible changes between two unrelated pieces of work that must then be painstakingly untangled and reworked. If you‘re a developer who has never used version control you may have added versions to your files, perhaps with suffixes like “final” or “latest” and then had to later deal with a new final version. Perhaps you’ve commented out code blocks because you want to disable certain functionality without deleting the code, fearing that there may be a use for it later.
Version control is a way out of these problems.Version control software is an essential part of the every-day of the modern software team‘s professional practices. Individual software developers who are accustomed to working with a capable version control system in their teams typically recognize the incredible value version control also gives them even on small solo projects. Once accustomed to the powerful benefits of version control systems, many developers wouldn’t consider working without it even for non-software projects.
Developing software without using version control is risky, like not having backups. Version control can also enable developers to move faster and it allows software teams to preserve efficiency and agility as the team scales to include more developers.
Version Control Systems (VCS) have seen great improvements over the past few decades and some are better than others. VCS are sometimes known as SCM (Source Code Management) tools or RCS (Revision Control System). One of the most popular VCS tools in use today is called Git. Git is a Distributed VCS, a category known as DVCS, more on that later. Like many of the most popular VCS systems available today, Git is free and open source. Regardless of what they are called, or which system is used, the primary benefits you should expect from version control are as follows.
While it is possible to develop software without using any version control, doing so subjects the project to a huge risk that no professional team would be advised to accept. So the question is not whether to use version control but which version control system to use.
There are many choices, but here we are going to focus on just one, Git.
By far, the most widely used modern version control system in the world today is Git. Git is a mature, actively maintained open source project originally developed in 2005 by Linus Torvalds, the famous creator of the Linux operating system kernel. A staggering number of software projects rely on Git for version control, including commercial projects as well as open source. Developers who have worked with Git are well represented in the pool of available software development talent and it works well on a wide range of operating systems and IDEs (Integrated Development Environments).
Having a distributed architecture, Git is an example of a DVCS (hence Distributed Version Control System). Rather than have only one single place for the full version history of the software as is common in once-popular version control systems like CVS or Subversion (also known as SVN), in Git, every developer's working copy of the code is also a repository that can contain the full history of all changes.
In addition to being distributed, Git has been designed with performance, security and flexibility in mind.
The raw performance characteristics of Git are very strong when compared to many alternatives. Committing new changes, branching, merging and comparing past versions are all optimized for performance. The algorithms implemented inside Git take advantage of deep knowledge about common attributes of real source code file trees, how they are usually modified over time and what the access patterns are.
Unlike some version control software, Git is not fooled by the names of the files when determining what the storage and version history of the file tree should be, instead, Git focuses on the file content itself. After all, source code files are frequently renamed, split, and rearranged. The object format of Git's repository files uses a combination of delta encoding (storing content differences), compression and explicitly stores directory contents and version metadata objects.
Being distributed enables significant performance benefits as well.
For example, say a developer, Alice, makes changes to source code, adding a feature for the upcoming 2.0 release, then commits those changes with descriptive messages. She then works on a second feature and commits those changes too. Naturally these are stored as separate pieces of work in the version history. Alice then switches to the version 1.3 branch of the same software to fix a bug that affects only that older version. The purpose of this is to enable Alice's team to ship a bug fix release, version 1.3.1, before version 2.0 is ready. Alice can then return to the 2.0 branch to continue working on new features for 2.0 and all of this can occur without any network access and is therefore fast and reliable. She could even do it on an airplane. When she is ready to send all of the individually committed changes to the remote repository, Alice can “push” them in one command.
Git has been designed with the integrity of managed source code as a top priority. The content of the files as well as the true relationships between files and directories, versions, tags and commits, all of these objects in the Git repository are secured with a cryptographically secure hashing algorithm called SHA1. This protects the code and the change history against both accidental and malicious change and ensures that the history is fully traceable.
With Git, you can be sure you have an authentic content history of your source code.
Some other version control systems have no protections against secret alteration at a later date. This can be a serious information security vulnerability for any organization that relies on software development.
One of Git's key design objectives is flexibility. Git is flexible in several respects: in support for various kinds of nonlinear development workflows, in its efficiency in both small and large projects and in its compatibility with many existing systems and protocols.
Git has been designed to support branching and tagging as first-class citizens (unlike SVN) and operations that affect branches and tags (such as merging or reverting) are also stored as part of the change history. Not all version control systems feature this level of tracking.
Git is the best choice for most software teams today. While every team is different and should do their own analysis, here are the main reasons why version control with Git is preferred over alternatives:
Git has the functionality, performance, security and flexibility that most teams and individual developers need. These attributes of Git are detailed above. In side-by-side comparisons with most other alternatives, many teams find that Git is very favorable.
Git is the most broadly adopted tool of its kind. This is makes Git attractive for the following reasons. At Atlassian, nearly all of our project source code is managed in Git.
Vast numbers of developers already have Git experience and a significant proportion of college graduates may have experience with only Git. While some organizations may need to climb the learning curve when migrating to Git from another version control system, many of their existing and future developers do not need to be trained on Git.
In addition to the benefits of a large talent pool, the predominance of Git also means that many third party software tools and services are already integrated with Git including IDEs, and our own tools like DVCS desktop client SourceTree, issue and project tracking software, JIRA, and code hosting service, Bitbucket.
If you are an inexperienced developer wanting to build up valuable skills in software development tools, when it comes to version control, Git should be on your list.
Git is a very well supported open source project with over a decade of solid stewardship. The project maintainers have shown balanced judgment and a mature approach to meeting the long term needs of its users with regular releases that improve usability and functionality. The quality of the open source software is easily scrutinized and countless businesses rely heavily on that quality.
Git enjoys great community support and a vast user base. Documentation is excellent and plentiful, including books, tutorials and dedicated web sites. There are also podcasts and video tutorials.
Being open source lowers the cost for hobbyist developers as they can use Git without paying a fee. For use in open-source projects, Git is undoubtedly the successor to the previous generations of successful open source version control systems, SVN and CVS.
One common criticism of Git is that it can be difficult to learn. Some of the terminology in Git will be novel to newcomers and for users of other systems, the Git terminology may be different, for example, revert in Git has a different meaning than in SVN or CVS. Nevertheless, Git is very capable and provides a lot of power to its users. Learning to use that power can take some time, however once it has been learned, that power can be used by the team to increase their development speed.
For those teams coming from a non-distributed VCS, having a central repository may seem like a good thing that they don‘t want to lose. However, while Git has been designed as a distributed version control system (DVCS), with Git, you can still have an official, canonical repository where all changes to the software must be stored. With Git, because each developer’s repository is complete, their work doesn‘t need to be constrained by the availability and performance of the “central” server. During outages or while offline, developers can still consult the full project history. Because Git is flexible as well as being distributed, you can work the way you are accustomed to but gain the additional benefits of Git, some of which you may not even realise you’re missing.
Now that you understand what version control is, what Git is and why software teams should use it, read on to discover the benefits Git can provide across the whole organization.
The git init command creates a new Git repository. It can be used to convert an existing, unversioned project to a Git repository or initialize a new empty repository. Most of the other Git commands are not available outside of an initialized repository, so this is usually the first command you’ll run in a new project.
Executing git init creates a .git subdirectory in the project root, which contains all of the necessary metadata for the repo. Aside from the .git directory, an existing project remains unaltered (unlike SVN, Git doesn't require a .git folder in every subdirectory).
Transform the current directory into a Git repository. This adds a .git folder to the current directory and makes it possible to start recording revisions of the project.
Create an empty Git repository in the specified directory. Running this command will create a new folder called <directory> containing nothing but the .git subdirectory.
Initialize an empty Git repository, but omit the working directory. Shared repositories should always be created with the --bare flag (see discussion below). Conventionally, repositories initialized with the --bare flag end in .git. For example, the bare version of a repository called my-project should be stored in a directory called my-project.git.
The git config command lets you configure your Git installation (or an individual repository) from the command line. This command can define everything from user info to preferences to the behavior of a repository. Several common configuration options are listed below.
Define the author name to be used for all commits in the current repository. Typically, you’ll want to use the --global flag to set configuration options for the current user.
Define the author name to be used for all commits by the current user.
Define the author email to be used for all commits by the current user.
Create a shortcut for a Git command.
Define the text editor used by commands like git commit for all users on the current machine. The <editor> argument should be the command that launches the desired editor (e.g., vi).
Open the global configuration file in a text editor for manual editing.
The first thing you’ll want to do after installing Git is tell it your name/email and customize some of the default settings. A typical initial configuration might look something like the following:
The git add command adds a change in the working directory to the staging area. It tells Git that you want to include updates to a particular file in the next commit. However, git add doesn't really affect the repository in any significant way—changes are not actually recorded until you run git commit.
In conjunction with these commands, you'll also need git status to view the state of the working directory and the staging area.
Stage all changes in <file> for the next commit
Stage all changes in <directory> for the next commit
Begin an interactive staging session that lets you choose portions of a file to add to the next commit. This will present you with a chunk of changes and prompt you for a command. Use y to stage the chunk, n to ignore the chunk, s to split it into smaller chunks, e to manually edit the chunk, and q to exit.
The git add and git commit commands compose the fundamental Git workflow. These are the two commands that every Git user needs to understand, regardless of their team’s collaboration model. They are the means to record versions of a project into the repository’s history.
Developing a project revolves around the basic edit/stage/commit pattern. First, you edit your files in the working directory. When you’re ready to save a copy of the current state of the project, you stage changes with git add. After you’re happy with the staged snapshot, you commit it to the project history with git commit.
The git add command should not be confused with svn add, which adds a file to the repository. Instead, git add works on the more abstract level of changes. This means that git add needs to be called every time you alter a file, whereas svn add only needs to be called once for each file. It may sound redundant, but this workflow makes it much easier to keep a project organized.
The staging area is one of Git's more unique features, and it can take some time to wrap your head around it if you’re coming from an SVN (or even a Mercurial) background. It helps to think of it as a buffer between the working directory and the project history.
Instead of committing all of the changes you've made since the last commit, the stage lets you group related changes into highly focused snapshots before actually committing it to the project history. This means you can make all sorts of edits to unrelated files, then go back and split them up into logical commits by adding related changes to the stage and commit them piece-by-piece. As in any revision control system, it’s important to create atomic commits so that it’s easy to track down bugs and revert changes with minimal impact on the rest of the project.
When you’re starting a new project, git add serves the same function as svn import. To create an initial commit of the current directory, use the following two commands:
Once you’ve got your project up-and-running, new files can be added by passing the path to git add:
The above commands can also be used to record changes to existing files. Again, Git doesn’t differentiate between staging changes in new files vs. changes in files that have already been added to the repository.
The git remote command lets you create, view, and delete connections to other repositories. Remote connections are more like bookmarks rather than direct links into other repositories. Instead of providing real-time access to another repository, they serve as convenient names that can be used to reference a not-so-convenient URL.
List the remote connections you have to other repositories.
Same as the above command, but include the URL of each connection.
Create a new connection to a remote repository. After adding a remote, you’ll be able to use <name> as a convenient shortcut for <url> in other Git commands.
Remove the connection to the remote repository called <name>.
Rename a remote connection from <old-name> to <new-name>.
The git fetch command imports commits from a remote repository into your local repo. The resulting commits are stored as remote branches instead of the normal local branches that we’ve been working with. This gives you a chance to review changes before integrating them into your copy of the project.
Fetch all of the branches from the repository. This also downloads all of the required commits and files from the other repository.
Same as the above command, but only fetch the specified branch.
Merging upstream changes into your local repository is a common task in Git-based collaboration workflows. We already know how to do this with git fetch followed by git merge, but git pull rolls this into a single command.
Fetch the specified remote’s copy of the current branch and immediately merge it into the local copy. This is the same as
git fetch <remote> followed by
git merge origin/<current-branch>.
Same as the above command, but instead of using git merge to integrate the remote branch with the local one, use git rebase.
Pushing is how you transfer commits from your local repository to a remote repo. It's the counterpart to git fetch, but whereas fetching imports commits to local branches, pushing exports commits to remote branches. This has the potential to overwrite changes, so you need to be careful how you use it. These issues are discussed below.
Push the specified branch to <remote>, along with all of the necessary commits and internal objects. This creates a local branch in the destination repository. To prevent you from overwriting commits, Git won’t let you push when it results in a non-fast-forward merge in the destination repository.
Same as the above command, but force the push even if it results in a non-fast-forward merge. Do not use the --force flag unless you’re absolutely sure you know what you’re doing.
Push all of your local branches to the specified remote.
Tags are not automatically pushed when you push a branch or use the --all option. The --tags flag sends all of your local tags to the remote repository.
The git commit command commits the staged snapshot to the project history. Committed snapshots can be thought of as “safe” versions of a project—Git will never change them unless you explicity ask it to. Along with git add, this is one of the most important Git commands.
While they share the same name, this command is nothing like svn commit. Snapshots are committed to the local repository, and this requires absolutely no interaction with other Git repositories.
Commit the staged snapshot. This will launch a text editor prompting you for a commit message. After you’ve entered a message, save the file and close the editor to create the actual commit. git commit -m "<message>"
Commit the staged snapshot, but instead of launching a text editor, use <message> as the commit message.
Commit a snapshot of all changes in the working directory. This only includes modifications to tracked files (those that have been added with git add at some point in their history).
Rebasing is the process of moving a branch to a new base commit.
Rebase the current branch onto <base>, which can be any kind of commit reference (an ID, a branch name, a tag, or a relative reference to HEAD).
 In this module, we’re only concerned with the first two configurations.
Checking out a commit makes the entire working directory match that commit. This can be used to view an old state of your project without altering your current state in any way. Checking out a file lets you see an old version of that particular file, leaving the rest of your working directory untouched.
Return to the master branch. Branches are covered in depth in the next module, but for now, you can just think of this as a way to get back to the “current” state of the project.
Check out a previous version of a file. This turns the <file> that resides in the working directory into an exact copy of the one from <commit> and adds it to the staging area.
Update all files in the working directory to match the specified commit. You can use either a commit hash or a tag as the <commit> argument. This will put you in a detached HEAD state.
A branch represents an independent line of development. Branches serve as an abstraction for the edit/stage/commit process discussed in Git Basics, the first module of this series. You can think of them as a way to request a brand new working directory, staging area, and project history. New commits are recorded in the history for the current branch, which results in a fork in the history of the project.
List all of the branches in your repository.
Create a new branch called <branch>. This does not check out the new branch.
Delete the specified branch. This is a “safe” operation in that Git prevents you from deleting the branch if it has unmerged changes.
Force delete the specified branch, even if it has unmerged changes. This is the command to use if you want to permanently throw away all of the commits associated with a particular line of development.
Rename the current branch to <branch>.
Merging is Git's way of putting a forked history back together again. The git merge command lets you take the independent lines of development created by git branch and integrate them into a single branch.
Merge the specified branch into the current branch. Git will determine the merge algorithm automatically (discussed below).
Merge the specified branch into the current branch, but always generate a merge commit (even if it was a fast-forward merge). This is useful for documenting all merges that occur in your repository.
If git revert is a “safe” way to undo changes, you can think of git reset as the dangerous method. When you undo with git reset(and the commits are no longer referenced by any ref or the reflog), there is no way to retrieve the original copy—it is a permanent undo. Care must be taken when using this tool, as it’s one of the only Git commands that has the potential to lose your work.
Remove the specified file from the staging area, but leave the working directory unchanged. This unstages a file without overwriting any changes.
Reset the staging area to match the most recent commit, but leave the working directory unchanged. This unstages all files without overwriting any changes, giving you the opportunity to re-build the staged snapshot from scratch.
Reset the staging area and the working directory to match the most recent commit. In addition to unstaging changes, the --hard flag tells Git to overwrite all changes in the working directory, too. Put another way: this obliterates all uncommitted changes, so make sure you really want to throw away your local developments before using it.
Move the current branch tip backward to <commit>, reset the staging area to match, but leave the working directory alone. All changes made since <commit> will reside in the working directory, which lets you re-commit the project history using cleaner, more atomic snapshots.
Move the current branch tip backward to <commit> and reset both the staging area and the working directory to match. This obliterates not only the uncommitted changes, but all commits after <commit>, as well.
The git clean command removes untracked files from your working directory. This is really more of a convenience command, since it’s trivial to see which files are untracked with git status and remove them manually. Like an ordinary rm command, git clean is not undoable, so make sure you really want to delete the untracked files before you run it.
Perform a “dry run” of git clean. This will show you which files are going to be removed without actually doing it.
Remove untracked files from the current directory. The -f (force) flag is required unless the clean.requireForce configuration option is set to false (it's true by default). This will not remove untracked folders or files specified by .gitignore.
Remove untracked files, but limit the operation to the specified path.
Remove untracked files and untracked directories from the current directory.
Remove untracked files from the current directory as well as any files that Git usually ignores.
The git status command displays the state of the working directory and the staging area. It lets you see which changes have been staged, which haven’t, and which files aren’t being tracked by Git. Status output does not show you any information regarding the committed project history. For this, you need to use git log.
List which files are staged, unstaged, and untracked.
The git log command displays committed snapshots. It lets you list the project history, filter it, and search for specific changes. While git status lets you inspect the working directory and the staging area, git log only operates on the committed history.
Display the entire commit history using the default formatting. If the output takes up more than one screen, you can use Space to scroll and q to exit.
Limit the number of commits by <limit>. For example, git log -n 3 will display only 3 commits.
Condense each commit to a single line. This is useful for getting a high-level overview of the project history.
Along with the ordinary git log information, include which files were altered and the relative number of lines that were added or deleted from each of them.
Display the patch representing each commit. This shows the full diff of each commit, which is the most detailed view you can have of your project history.
Search for commits by a particular author. The <pattern> argument can be a plain string or a regular expression.
Search for commits with a commit message that matches <pattern>, which can be a plain string or a regular expression.
Show only commits that occur between <since> and <until>. Both arguments can be either a commit ID, a branch name, HEAD, or any other kind of revision reference.
Only display commits that include the specified file. This is an easy way to see the history of a particular file.
A few useful options to consider. The —graph flag that will draw a text based graph of the commits on the left hand side of the commit messages. —decorate adds the names of branches or tags of the commits that are shown. —oneline shows the commit information on a single line making it easier to browse through commits at-a-glance.
The git revert command undoes a committed snapshot. But, instead of removing the commit from the project history, it figures out how to undo the changes introduced by the commit and appends a new commit with the resulting content. This prevents Git from losing history, which is important for the integrity of your revision history and for reliable collaboration.
Generate a new commit that undoes all of the changes introduced in <commit>, then apply it to the current branch.
Five basic steps to collaborate with team
A fork is a copy of a repository. Forking a repository allows you to freely experiment with changes without affecting the original project.
Most commonly, forks are used to either propose changes to someone else's project or to use someone else's project as a starting point for your own idea.
A great example of using forks to propose changes is for bug fixes. Rather than logging an issue for a bug you've found, you can:
You might fork a project in order to propose changes to the upstream, or original, repository. In this case, it's good practice to regularly sync your fork with the upstream repository. To do this, you'll need to use Git on the command line. You can practice setting the upstream repository using the same octocat/Your-Repository repository you just forked!
If you haven't yet, you should first set up Git. Don't forget to set up authentication to GitHub from Git as well.
Right now, you have a fork of the Your-Repository repository, but you don't have the files in that repository on your computer. Let's create a clone of your fork locally on your computer.
Now, you have a local copy of your fork of the Your-Repository repository!
When you fork a project in order to propose changes to the original repository, you can configure Git to pull changes from the original, or upstream, repository into the local clone of your fork.
Now, you can keep your fork synced with the upstream repository with a few Git commands. For more information, see "Syncing a fork."
Sync a fork of a repository to keep it up-to-date with the upstream repository.
Before you can sync your fork with an upstream repository, you must configure a remote that points to the upstream repository in Git.
Pull requests are a feature that makes it easier for developers to collaborate using Github. They provide a user-friendly web interface for discussing proposed changes before integrating them into the official project.
In their simplest form, pull requests are a mechanism for a developer to notify team members that they have completed a feature. Once their feature branch is ready, the developer files a pull request via their Bitbucket account. This lets everybody involved know that they need to review the code and merge it into the master branch.
Pull requests can be used in conjunction with the Feature Branch Workflow, the Gitflow Workflow, or the Forking Workflow. But a pull request requires either two distinct branches or two distinct repositories, so they will not work with the Centralized Workflow. Using pull requests with each of these workflows is slightly different, but the general process is as follows:


{% extends 'layouts/application.html' %} {% from 'macros/helpers.html' import sprite %} {% import "items/posts/post-item.html" as item %} {% import "items/posts/posts-control.html" as postscontrol %} {% import "items/posts/posts-list.html" as postsList %} {% import "items/posts/post-header-top.html" as postHeaderTop %} {% block content %}


You First name is required.
You Last name is required.
You Birth Date is required.
Street is required.
Enter a valid email.
Enter a valid 10 digits Phone Number.
This Field is required.
Enter a valid supplier.
Enter a valid IBANK number.
Enter a valid Name
-324 €
-90€
12 Monate
112 €/mo
24 cc/kWn
5 €/mo


The Password Generator
Have you ever wanted a secure password and don't trust the websites, so just make your own.
Copy and Paste. Save with the title anything.bat
Or Download Far Below
@echo off
:Start2
cls
goto Start
:Start
title Password Generator
echo I will make you a new password.
echo Please write the password down somewhere in case you forget it.
echo ----------------------------------------¬-----------------------
echo 1) 1 Random Password
echo 2) 5 Random Passwords
echo 3) 10 Random Passwords
echo Input your choice
set input=
set /p input= Choice:
if %input%==1 goto A if NOT goto Start2
if %input%==2 goto B if NOT goto Start2
if %input%==3 goto C if NOT goto Start2
:A
cls
echo Your password is %random%
echo Now choose what you want to do.
echo 1) Go back to the beginning
echo 2) Exit
set input=
set /p input= Choice:
if %input%==1 goto Start2 if NOT goto Start 2
if %input%==2 goto Exit if NOT goto Start 2
:Exit
exit
:B
cls
echo Your 5 passwords are %random%, %random%, %random%, %random%, %random%.
echo Now choose what you want to do.
echo 1) Go back to the beginning
echo 2) Exit
set input=
set /p input= Choice:
if %input%==1 goto Start2 if NOT goto Start 2
if %input%==2 goto Exit if NOT goto Start 2
:C
cls
echo Your 10 Passwords are %random%, %random%, %random%, %random%, %random%, %random%, %random%, %random%, %random%, %random%
echo Now choose what you want to do.
echo 1) Go back to the beginning
echo 2) Exit
set input=
set /p input= Choice:
if %input%==1 goto Start2 if NOT goto Start 2
if %input%==2 goto Exit if NOT goto Start 2
When it is done it should look like this:
Use Media Fire If You Just Want To Download The File
Hosted here


--- date: "2007-09-17T00:00:00Z" meta: _edit_last: "2" published: true status: publish categories: - Programming tags: - .NET title: Desert Code Camp 2007 Code & PowerPoint type: post ---
For those who are interested, I put the PowerPoint slides and code from my Intro to Test Driven Development and Unit Test talk at Desert Code Camp 2007 here.
The presentation is in PowerPoint 2007. If you need me to convert it to another format (PowerPoint 2003, OpenOffice Impress), let me know.


2019-07-09 10:40:02 HTTP: starting 4 worker threads
2019-07-09 10:40:02 Using wallet wallet.dat
2019-07-09 10:40:02 init message: Verifying wallet...
2019-07-09 10:40:02 CDBEnv::Open: LogDir=/home/dev/.komodo/database ErrorFile=/home/dev/.komodo/db.log pathIn.(/home/dev/.komodo)
2019-07-09 10:40:02 Block index database configuration:
2019-07-09 10:40:02 * Using 1000 max open files
2019-07-09 10:40:02 * Compression is enabled
2019-07-09 10:40:02 Cache configuration:
2019-07-09 10:40:02 * Max cache setting possible 16384MiB
2019-07-09 10:40:02 * Using 56.2MiB for block index database
2019-07-09 10:40:02 * Using 106.4MiB for chain state database
2019-07-09 10:40:02 * Using 287.3MiB for in-memory UTXO set
2019-07-09 10:40:02 Opening LevelDB in /home/dev/.komodo/blocks/index
2019-07-09 10:40:02 Opened LevelDB successfully
2019-07-09 10:40:02 init message: Loading block index...
2019-07-09 10:40:02 Opening LevelDB in /home/dev/.komodo/blocks/index
2019-07-09 10:40:02 Opened LevelDB successfully
2019-07-09 10:40:02 Opening LevelDB in /home/dev/.komodo/chainstate
2019-07-09 10:40:02 Opened LevelDB successfully
2019-07-09 10:40:02 Opening LevelDB in /home/dev/.komodo/notarisations
2019-07-09 10:40:02 Opened LevelDB successfully
2019-07-09 10:40:02 LoadBlockIndexDB: start loading guts
smk762 - dracocanis ominator09-Jul-19 10:41 AM
yep, created address, logged in. only "issues" was no right click to copy/paste, and balance when sending didnt take fee into account. Also, balance didnt change after sent (until confirmed I assume), so wansnt sure I sent and tried 2x
was no right click to copy/paste, - aha, there is no implementation of it in this simple framework, need to write some code for it. But Ctrl+C Ctrl+V should work
balance when sending didnt take fee into account - Aha, I see what you mean, I'll add fees on confirmation popup and actual sum which I'll broadcast will be input + fee
balance didnt change after sent - and will update balance right after sending too
thank you for feedback!
jl777c09-Jul-19 10:45 AM
it is just that you are currently trusting the fullnode for the interest calc. that is last validation i need to add
smk762 - dracocanis ominator09-Jul-19 10:45 AM
I'll send some and let it sit until acrued.
ctl-c, ctl-v worked
if no rightclick, maybe a copy button?
it it tkinter?
TonyL09-Jul-19 10:47 AM
yeah tkinter
easiest what I found to make wallet in one night without OOP at all
smk762 - dracocanis ominator09-Jul-19 10:48 AM
havent used that for a couple years lol, but it is handy
maybe also autorefresh every 30sec
TonyL09-Jul-19 10:52 AM
yes, it's worth to add. just need to solve microfreezes on RPC calls
to refresh balance you need to call listunspent and response taking ~1sec
hyperDEX09-Jul-19 10:53 AM
@TonyL got it working, what should i do on it?
TonyL09-Jul-19 10:53 AM
and now app became unresponsible until get response - but it's solvable for sure
jl777c09-Jul-19 10:53 AM
dont spend time on removing 1 sec delays!
TonyL09-Jul-19 10:53 AM
@hyperDEX you can try to generate new addy, broadcast some tx
jl777c09-Jul-19 10:53 AM
this is just a testers gui and it is taking 1 second or 3, let the testers feel this delay
hyperDEX09-Jul-19 10:54 AM
Ok will fund it and do some stupid things to try to break it
jl777c09-Jul-19 10:54 AM
the real GUI will multithread things, and remove such delays
TonyL09-Jul-19 10:54 AM
point is to feel how easy to use nSPV I believe rather than break my shitty GUI
jl777c09-Jul-19 10:55 AM
rpc calls take seconds if it calls the p2p network, to mask this you need to put it in a totally different thread
pushed a version that should properly validate presapling notarizations. the way to verify this is to spend a utxo that is older than last dec 15th
spends will now take about 3 seconds per utxo
TonyL09-Jul-19 10:55 AM
yes, by adding threading freezes solvable. and good that 1sec limitation is for same messages, not in general
jl777c09-Jul-19 10:56 AM
so this should be queued and processed in the background
yes, once we get more fullnodes, the 1 sec delay will go away
it is 1 sec delay per peer per message
and GUI delays, responsiveness, etc. it takes a lot of work to make it smooth, but that has nothing to do with finding rpc level bugs
hyperDEX09-Jul-19 10:58 AM
What happens when the wif expires?
Are funds within that address gone?
jl777c09-Jul-19 10:59 AM
?
how would that even be possible. the coins are in the blockchain
when the wif expires, it is deleted from memory, autologout
hyperDEX09-Jul-19 11:00 AM
Oh
So i just need to log back in
Sorry dealing with a dummy here
jl777c09-Jul-19 11:01 AM
currently superlite client uses no permanent storage. it is stateless and starts from scratch each time
still nothing, i clicked login using the wif as well, no change to the balance
though the expire timer changes
TonyL09-Jul-19 11:05 AM
try to check in cli ./komodo-cli nspv_listunspent(edited)
actually refresh button calling it and fetching balance from this call output
hyperDEX09-Jul-19 11:06 AM
./komdoo-cli nspv_listunspent
bash: ./komdoo-cli: No such file or directory
That is weird
TonyL09-Jul-19 11:07 AM
there was a typo in initial command I wrote
./komodo-cli
hyperDEX09-Jul-19 11:07 AM
hahah
./komodo-cli nspv_listunspent
{
"result": "error",
"error": "no utxos result"
So it isnt the GUI not displaying that
jl777c09-Jul-19 11:08 AM
let me update my fullnode
smk762 - dracocanis ominator09-Jul-19 11:19 AM
just noticed coutdown refresh doesnt seem to work if timed out
so says 300 sec to go, but click refresh it still says 300 sec to go(edited)
hyperDEX09-Jul-19 11:22 AM
Mine keeps going to 0, after i refresh it still doesnt mention that i have logged out.
Is that meant to be the case?
smk762 - dracocanis ominator09-Jul-19 11:24 AM
Exception in Tkinter callback
Traceback (most recent call last):
File "tkinter/__init__.py", line 1553, in __call__
File "main.py", line 120, in refresh
KeyError: 'wifexpires'
TonyL09-Jul-19 11:24 AM
Aha, it's GUI problem - checking wifexpires value on refresh but not checking if it presists in general or not. It's a visual issue - will fix
on timeout key just "dissapears" from nspv_getinfo call output so should handle it
Now trying to gentle ask windows to not take console stream on komodo start
on windows even with -daemon param it starting not in background(edited)
jl777c09-Jul-19 11:27 AM
reproduced missing balance issue, i think it is an issue with my node. still rebuilding, will check when it is updated
1
TonyL09-Jul-19 11:30 AM
pushed fix for expired timer on refresh, in 777 seconds will be able to test


John Doe
Email<EMAIL_ADDRESS>Phone no. : +91<PHONE_NUMBER>
Education
Muthoot Institute of Technology and Science, Puthencruz
Bachelor of Technology in Computer Science and Engineering with 8.7 CGPA
2018 -
present
Rajagiri public School, Kalamasserry
Till 10th with 8.7 CGPA
2006 - 2016
Work Experience
Undergraduate Research Assistant
Institute of Aeronautical Engineering
- Research on software development life cycles, requirement analysis methods, and compilers.
- Integration of 30+ programming languages to a single platform, following agile development cycles with consistent testing and bug report analysis.
- The platform enables 6000+ students to practice DSA problems every day.
Blockchain Developer Intern
Activa Incorporation
- Research of blockchain-based supply-chain and asset management applications in the R&D lab.
- Worked with clients from the UAE, UK, and India to develop blockchain apps customized to their needs, using Node.js, Golang, and Hyperledger Fabric.
Projects
Fellowcomb
React, Node.js, Apollo, GraphQL, PostgreSQL, Prisma, Git
- An online platform designed around the fellows of MLH, helping the large community discover fellows and stay connected. Scrapes the MLH Discord server for insights on user interests and categorizes them accordingly.
Foodshare
React, React-Bootstrap, Redux, Node.js
- Bridges the gap between needy people and food donors, and facilitates easy communication between both parties. Provides navigation to a meet-up point once the connection is agreed upon by both parties
Technical Skills
Languages
- Python
- JavaScript
- TypeScript
- SQL
- NoSQL
Frameworks
- React
- Node.js
- Jest
- GraphQL
- EJS
Non Technical Skill
- Microsoft Word
- Microsoft Powerpoint
- Microsoft Excel
- GraphQL
- EJS


{include="style"}
{include="header"}
This Page is Not Found.
很抱歉，找不到此页。
返回首页
{include="footer"} {include="js"}


suparnatural-fs
/
com.suparnatural.core.fs
/
Path
/
relativePath
relativePath
var
relativePath
:
PathComponent
?
Relative Path to the resource


Shipping Method:
Shipping Method Name
Card Holder Name:
Card Number:
CVC:
Expiration Date:
Month:
Year:
By clicking this button, you are agree to my
Policy Terms and Conditions.


+1<PHONE_NUMBER>
Care hours
M-F 10:00AM–6:00PM, Sat 9:00AM-2:00PM
PACE PHYSICAL THERAPY
HOME
CONTACT US
APPOINTMENT
Walk-Ins available with wait time. Call Us.


The narrative from our 'leaders' has turned from "We're all in this together" to "Every man for themselves". If you're in a position to order takeaway or duck into your favourite places, please do so. Birthday and milestones coming up? Try a voucher from a lovely bar or restaurant.
 The fear that's been drilled into the public from media through to senior leaders continues to permeate and ripple. Education is a powerful tool. We — unfortunately — must do the part our government enjoys shirking.
We'll be more active on socials.
We'll poll for content and feature ideas that might help people.
The path forward is together and we firmly believe this.
Kindness costs nothing.
During these crazy Corona virus times, bars are looking at ways they can bring in some money without punters actually stepping foot in the venue
The way the marketplace has been set up means it’s up to the venues to fulfil their own orders, while Chau and TJ can help get them a digital footprint and a way to start selling straight away.
Tran and her brother are working on the project, and they’re working on it for free. Let us reiterate that: Hospothreads is a not for profit.
One of those inspirational creations is Hospo Threads, a non-profit marketplace that acts as a one-stop-shop for people to find local venues they can support during this rough time.


DfE enquiries
Central newsdesk 020 7783 8300
General enquiries 0370 000 2288
Press release
Primary schools receive fresh funding boost of over £150 million to improve PE lessons as part of the PE and sport premium.
Headteachers have already used the PE and sport premium to recruit hundreds of extra specialist PE teachers, to buy new equipment and to offer a wider selection of sports, and free after-school clubs.
Research has shown that 9 out of 10 schools have already improved the quality of their PE lessons as a result of the funding - and more than 90% reported improvements in children’s health, behaviour and lifestyle.
As a result, figures show that on average primary school pupils are spending more time in PE lessons. Last year pupils spent an average of 122 minutes every week doing PE - up by 13 minutes from the previous year.
Minister for Children and Families Edward Timpson said that primary schools were delivering better quality lessons as a result of the extra money, and devoting more time to PE .
A typical primary school with 250 pupils will receive £9,000 following today’s announcement - which is equivalent to the cost of employing a specialist sports coach for 2 days each week.
Announcing the latest allocations, Edward Timpson visited Vauxhall Primary School in London today (3 November 2014), where he took part in a PE lesson and watched a football match.
Minister for Children and Families Edward Timpson said:
As part of our plan for education, we want all children to get into the habit of playing and enjoying sport in primary school as it can help instil confidence, discipline and determination.
Thanks to our PE and sport premium, primary schools are offering more and better quality sport programmes - and this funding boost will help headteachers go further.
Whether a child is a potential future Olympic champion or a keen amateur like me, I want them all to be given the chance to fulfill their sporting potential.
The latest PE and sport premium allocation is the second of 3 annual payments worth a total of over £450 million which this government is committed to giving to schools.
The funding, introduced in 2013, goes directly to primary school headteachers so that they can decide how best to use it to provide PE and sporting activities for pupils.
Vauxhall Primary School has used its PE and sport premium funding to extend the range of after-school clubs, replace sports equipment and increase participation in competitions.
Vauxhall Primary School headteacher Mr Edison David said:
The sports premium has enabled us to create opportunities for pupils to receive specialist training and to access competitive sports.
Its benefits range from our pupils’ heightened sense of competition and achievement, healthy camaraderie, teamwork, and high levels of social skills developed through exposure to numerous sports competitions throughout the year.
This year’s funding will be used to continue providing our pupils with specialist coaching in various sports, access inter-school and pan-London competitions, and to fund enrichment activities aimed at improving pupils’ fitness and physical wellbeing.
Sue Wilkinson, from the Association for Physical Education (afPE), said:
We are extremely pleased that headteachers are using their funding to increase the amount of time spent on curriculum physical education, and improving learning opportunities for teachers so they can deliver the very best quality lessons.
Since the initial investment, evidence demonstrates a transformational shift with physical education and sport driving whole school improvement and making a significant contribution to young peoples’ health and wellbeing.
We hope that with the continued investment, schools will continue to create a sustainable legacy for PE and sport.
See a school-by-school breakdown of PE and sport premium funding allocations for academic year 2014 to 2015 .
The research report ‘ PE and sport premium: an investigation in primary schools ’ was based on a survey of primary schools between April and July 2014. It looked at how headteachers have spent the money and the impact of that spending on schools.
Central newsdesk 020 7783 8300
General enquiries 0370 000 2288
Published: 3 November 2014
From: Department for Education Edward Timpson MP
Part of: Sports participation


Some people think that the quality of all books cannot be perfectly quantified, so an attempt should not even be made.
These people will probably not enjoy thebestbooksofalltime.com very much.
It's okay, we probably wouldn't have liked them very much either.
So who is this site for?
This site is for the dreamers, the numerical fantasists, the ebullient quantifiers, the dangerously rigorous thinkers with a healthy dollop of IDGAF, and most importantly, the ones who ask SEO goldmine questions like:
Our site works on a simple idea. We take a seed set of books, find their quantitative ratings -- without treating anyone's rating as intrinsically more valuable as anyone else's, no matter what the USNWR ranking of their pre-school was -- adjust those ratings using some Bayesian secret sauce, and present them for your browsing pleasure.
We're constantly adding new categories with new sets of books that actually make sense -- e.g., you will find science books in the science category, not books about popular culture with a mere tangential link to science.
Want to learn more about us? Read about updates to our site and cool books on our blog.
Is the very idea of this site anathema to you? Please contact us and we'll gladly post your hate mail on our blog.
Thanks for reading!


A spammy email notified me the .com flavor of my .net domain just freed up. Purchased through my usual registrar. Hurray!
6/5/2011, 11:20:53 PM
Favs: 0
Retweets: 0
link--- layout: tweet ---
A spammy email notified me the .com flavor of my .net domain just freed up. Purchased through my usual registrar. Hurray!
6/5/2011, 11:20:53 PM
Favs: 0
Retweets: 0
link


Before Change
Returns:
A subset of haplotype/genotype tuples, as a list, without duplicates.
haplotypes_and_genotypes = list(haplotypes_and_genotypes)
return [
(vh1, vg1)
for i, (vh1, vg1) in enumerate(haplotypes_and_genotypes)
if not any(vh1 == vh2 for (vh2, _) in haplotypes_and_genotypes[i + 1:])
]
// redacted
// variants and truths, and yields information about each variant and
After Change
Dict[Haplotypes, Genotypes].
retval = {}
for haplotypes, genotypes in haplotypes_to_genotypes_dict.items():
// Keep the last element in the dedup process. The reason is for the
// behavior to be the same as the previous implementation using list.
retval[haplotypes] = genotypes[-1]
return retval
// redacted


Great Forest [am30], forest, in Mandoria, peasants: 155
Last updated Turn #134
Great Forest [am30], forest, in Mandoria, peasants: 155
------------------------------------------------------------------------
29: New noble [d7z], refugee, arrived from the south.
30: The population grows by one peasant.
Routes leaving Great Forest:
North, forest, to Great Forest [al30], 8 days
Garrison [ay0x], garrison, uncontrolled, with ten peasants
East, plain, to Plain of Tears [am31], 7 days
Garrison [dg4t], garrison, Mandor Confederacy, with ten peasants
Border closed.
South, forest, to Great Forest [an30], 8 days
Garrison [gp5w], garrison, uncontrolled, with four peasants
West, forest, to Great Forest [am29], 8 days
Seen here:
Garrison [dx9j], garrison, uncontrolled, with ten peasants
New noble [d7z], refugee


Weather App
Favorite city:
You can pin a maximum of 10 locations.
Today
Humidity:
Wind Speed:
UV Index:
5 day Forecast
UV Index:
UV Index:
UV Index:
UV Index:
UV Index:


Elias A
Student
This is my first website created for this class
Will be learning how to:
Write HTML
Use React
Code JavaScript
Set up Mongo Data Base


🔙 bk
🔝 top
📂 dir
⏫ up
home
/
programming
/
comparative
Comparison of Python and JavaScript
Table of Contents
Lists/Arrays
Strings
Lists/Arrays
Strings
🔙 Back
🔝 Top
📂 Dir list
⏫ Up


JavaScript Development Primer
Objective
In this section, you will take a brief look at JavaScript development and the resources you might explore to expand your JavaScript skills.
Contents
JavaScript is a lightweight, dynamic, and object-oriented programming language. It's also one of the most widely deployed programming languages in the world. Its overwhelming presence is due to the fact that its installed in almost every web browser in the world. Because of the large and diverse communities of programmers that build client applications for the browser, JavaScript is also one of the most widely known programming languages in the world - making it an excellent match for a cross-platform development tool like Titanium.
While Javascript's popularity stems from its strong web browser presence, it has become much more than a tool for web interactivity. Many are building servers, games, productivity tools, and every other type of app conceivable with Javascript. here's a short list of what Javascript has been doing lately.
-
Nearly every web browser supports JavaScript, most supporting one of the standardized ECMAScript versions
-
node.js is an event-driven I/O server-side JavaScript implementation
-
ActionScript is a superset of ECMAScript originally developed by Macromedia (now part of Adobe) for scripting Flash animations
-
OpenOffice supports JavaScript (among other languages) for scripting the suite's applications
-
Various supersets of JavaScript or higher-level languages seek to standardize programming patterns, add advanced features, and so forth. Systems like CoffeeScript, Objective-J, Quby, and more "compile" to JavaScript for broadest possible support in the web browser.
-
Titanium Mobile is, of course, a JavaScript framework for mobile app development
Here are a few of the features of the language that make it a favorite among its developers:
-
Dynamic typing (which allows Duck typing)
-
Convenient object literal notation
-
A small set of standard functions and syntactical elements - learn the whole language in a day!
-
Closures
A few best practices
There's a large number of good references on JavaScript best practices out there today. For developers coming to Titanium with a limited background in JavaScript, though, we'd like to share the most important practices for developing high quality JavaScript applications.
Don't pollute the global scope!
In an execution context, by default all variables are global. The only means of scoping variables in JavaScript is to place them inside of a function. A much better approach than global variables/functions is to enclose all your application's API functions and properties into a single variable (namespace). This will minimize the chances of your code colliding with other code or libraries you include in the context later.
//app.js
//------
// BAD - we put five variables in the global scope which could be clobbered
var key = 'value',
foo = 'bar',
charlie = 'horse';
function helper() {
//help out
}
function info(msg) {
helper(msg);
Ti.API.info(msg);
}
// Better - define a single namespace to hold all your variables
var myapp = {}; // namespace and only global variable
myapp.key = 'value';
/* Or, define the namespace and a few variables all at once with
var myapp = {
key: 'value',
foo: 'bar',
charlie: 'horse'
};
*/
// add a function to your namespace
myapp.dosomething = function(foo) {
// do something
};
// extend and encapsulate by using self-calling functions
(function() {
function helper() {
// this is a private function not directly accessible from the global scope
}
myapp.info = function(msg) {
// added to the app's namespace, so a public function
helper(msg);
Ti.API.info(msg)
};
})();
// you could then call your function with
myapp.info('Hello World');
Use === and !== instead of == and !=
JavaScript will automatically convert values in a conditional test unless you tell it not to.
var testme = '1';
if(testme == 1) {
// this will be executed because '1' is converted to an integer!
 operator, === performs what a == operator might in other languages. If the two operands are equal in both type and value, === will return true and !== will return false, which is almost always what you mean. This is a common gotcha and fits nicely in the category of JavaScript language quirks.
var testme = '1';
if(testme === 1) {
// this will not be executed
}
The ternary operator
JavaScript's ternary operator is a handy way of turning a conditional block into a single statement. This lets you conditionally assign a value to a variable or object property. The value after the ? is assigned if the conditional statement is true. The value after the : is assigned if the conditional statement is false.
// You could do this
if(somecondition === somevalue) {
var xyz = 'abc';
} else {
var xyz = '123';
}
// but this is more compact
var xyz = (somecondition === somevalue) ? 'abc' : '123';
Lots of variables? Use a comma
You don't need to put var in front of every variable - you can use commas to replace:
var foo = true;
var me = 'awesome';
with:
var foo = true, me = 'awesome';
Efficient loops
In most situations, checking the length of an array during every iteration can be slow. This is even more the case when working with Titanium proxy objects (that represent some native structure). So rather than writing:
var names = ['Jeff','Nolan','Marshall','Don'];
for(var i=0;i<names.length;i++){
process(names[i]);
}
It is better to only get the length of the array only once, as in:
var names = ['Jeff','Nolan','Marshall','Don'];
for(var i=0,j=names.length;i<j;i++){
process(names[i]);
}
Wrap self-calling functions in parenthesis
Self-calling functions are a useful pattern for encapsulating private variables and functions in JavaScript. As you start to realize the utility of self-calling functions, you may be tempted to write a self-calling function as:
var myValue = function() {
//do stuff
return someValue;
}();
While syntactically correct, someone reading this code (missing the () at the end of the function declaration) might think you are assigning a function to myValue, rather than the return value of the function. A better way to write this is with wrapping parentheses:
var myValue = (function() {
//do stuff
return someValue;
})();
In this case it is clear that myValue is not a function, but the return value of the function.
Avoid deep nesting
On Android, Rhino will occasionally cause your app to run out of memory if you have several levels of recursion or iteration in a function. If you run into a "recursion too deep" error, try and flatten out your code in areas where you have several levels of nested loops or recursive code. If that's not a viable solution, you can also increase the size of the thread stack.
JavaScript Resources
JavaScript can be a truly powerful tool when you've learned to how to master it. Here are a few resources to help you get started.
Online Resources
There are a number of freely available JavaScript resources on the web you can check out right now, and will likely want to refer back to as you build your Titanium application.
-
Eloquent JavaScript is an excellent learning resource that is available as an interactive web site, downloadable HTML file, or printed book
-
appendTo is a free, interactive JavaScript tutorial site that covers a lot of browser-based JavaScript, which isn't directly applicable to Titanium, but the Javascript learning material is excellent.
-
Codecademy is a free, interactive scripting tutorial site
-
Mozilla maintains an excellent JavaScript documentation site, which very conveniently leaves out the DOM-specific programming tasks (which you'll rarely use in a native Titanium application). The MDC JavaScript site provides two key elements - an API doc source for JavaScript object types and an introduction to programming JavaScript in general. The JavaScript Guide will contain some browser-specific items that aren't included in the Titanium JavaScript environment, but the core techniques will be the same.
-
Considered by many to be the premier JavaScript expert in the world, Douglas Crockford maintains a listing of JavaScript resources on his personal website, all of which are definitely worth checking out. Many technologies pioneered by Crockford are embedded in Titanium in one way or another, including his JSLint code validator and public domain JSON serialization library.
-
JavaScript in 10 minutes is terse and dense guide to advanced JavaScript. It's not for the beginner, but it's packed full of tips, tricks, and inside-knowledge for the more advanced JavaScripter.
-
Google, a major purveyor of JavaScript awesomeness, has published a set of JavaScript code style guidelines. Following these guidelines is sure to make your Javascript code more effective and maintainable.
Books
Here are a few good books to get you started. These should be considered required reading for those serious about fully understanding Javascript and leveraging it to its full capacity.
-
JavaScript: The Good Parts, by Douglas Crockford
-
JavaScript: The Definitive Guide, by David Flanaghan
-
JavaScript Patterns, by Stoyan Stefanov
References and Further Reading
In addition to the many resources provided above, you might check out our other wiki guides as well:
Summary
In this section, you briefly looked at JavaScript development and the resources you might explore to expand your JavaScript skills. This was a lightning fast assessment of coding style and practices that will aid in becoming a better Javascript developer. It is far from a comprehensive list, though, and is not meant to be training material per se. It is highly recommended that you go out and get at least one, if not all of the books mentioned in order to gain a true understanding of the scope and power of the language.


Ali - Lipsync Test
A JavaScript-only Demo
by
Paul Brady
.
Images © 2005-2016 Cartoon Solutions
PLAY
STOP
Your browser does not support the Audio element. Please update your browser.


A: Pka-Wizard is a little tool that allows the user to upload any PacketTracer 7 (.pka) file to then read or overwrite its original content.
Q: Can I do anything cool with it?
A: Yes, it is possible to exploit the .pka file by inject JavaScript into the file, resulting in execution of the code for whoever opens the infected file.