text:
<!--Automatically generated by Pandoc -->

# Private Gems

Stashing private gems in your Gemstash server requires a bit of
additional setup. If you haven't read through the [Quickstart
Guide](../readme.md#quickstart-guide), you should do that first. By the
end of this guide, you will be able to interact with your Gemstash
server to store and retrieve your private gems.

## Authorizing

**IMPORTANT NOTE:** Do not use the actual key value in this document,
otherwise your Gemstash server will be vulnerable to anyone who wants to
try to use the key against your server. Instead of the key value here,
use whatever key is generated from running the commands.

In order to push a gem to your Gemstash server, you need to first create
an API key. Utilize the `gemstash authorize` command to create the API
key:

    $ gemstash authorize
    Your new key is: e374e237fdf5fa5718d2a21bd63dc911

This new key can `push`, `yank`, and `fetch` gems from your Gemstash
server. Run `gemstash authorize` with just the permissions you want to
limit what the key will be allowed to do. You can similarly update a
specific key by providing it via the `--key` option:

    $ gemstash authorize push yank --key e374e237fdf5fa5718d2a21bd63dc911

When no permissions are provided (like the first example), the key will
be authorized for all permissions. Leave the key authorized with
everything if you want to use it to try all private gem interactions:

    $ gemstash authorize --key e374e237fdf5fa5718d2a21bd63dc911

With the key generated, you'll need to tell Rubygems about your new key.
If you've pushed a gem to https://rubygems.org, then you will already
have a credentials file to add the key to. If not, run the following
commands before modifying the credentials file:

    $ mkdir -p ~/.gem
    $ touch ~/.gem/credentials
    $ chmod 0600 ~/.gem/credentials

Add your new key to credentials such that it looks something like this
(but make sure not to remove any existing keys):

``` yaml
# ~/.gem/credentials
---
:test_key: e374e237fdf5fa5718d2a21bd63dc911
```

The name `test_key` can be anything you want, but you will need to
remember it and use it again later in this guide for the `--key` option.

## Creating a Test Gem

You'll need a test gem before you can play with private gems on your
Gemstash server. If you have a gem you can use, move along to the next
section. You can start by instantiating a test gem via Bundler:

    $ bundle gem private-example

You'll need to add a summary and description to the new gem's gemspec
file in order to successfully build it. Once you've built the gem, you
will be ready to push the new gem.

    $ cd private-example
    $ rake build

You will now have a gem at
`private-example/pkg/private-example-0.1.0.gem`.

## Pushing

If your Gemstash server isn't running, go ahead and start it:

    $ gemstash start

Push your test gem using Rubygems:

    $ gem push --key test_key --host http://localhost:9292/private pkg/private-example-0.1.0.gem

The `/private` portion of the `--host` option tells Gemstash you are
interacting with the private gems. Gemstash will not let you push, or
yank from anything except `/private`.

## Bundling

Once your gem is pushed to your Gemstash server, you are ready to bundle
it. Create a `Gemfile` and specify the gem. You will probably want to
wrap the private gem in a source block, and let the rest of Gemstash
handle all other gems:

``` ruby
# ./Gemfile
source "http://localhost:9292"
gem "rubywarrior"

source "http://localhost:9292/private" do
  gem "private-example"
end
```

Notice that the Gemstash server points to `/private` again when
installing your private gem. Go ahead and bundle to install your new
private gem:

    $ bundle

## Yanking

If you push a private gem by accident, you can yank the gem with
Rubygems:

    $ RUBYGEMS_HOST=http://localhost:9292/private gem yank --key test_key private-example --version 0.1.0

Like with pushing, the `/private` portion of the host option tells
Gemstash you are interacting with private gems. Gemstash will only let
you yank from `/private`. Unlike pushing, Rubygems doesn't support
`--host` for yank (yet), so you need to specify the host via the
`RUBYGEMS_HOST` environment variable.

## Protected Fetching

By default, private gems and specs can be accessed without
authentication.

Private gems often require protected fetching. For backwards
compatibility this is disabled by default, but can be enabled via `$
gemstash setup` command.

When protected fetching is enabled API keys with the permissions `all`
or `fetch` can be used to download gems and specs.

On the Bundler side, there are a few ways to configure credentials for a
given gem source:

Add credentials globally:

    $ bundle config my-gemstash.dev api_key

Add credentials in Gemfile:

    source "https://api_key@my-gemstash.dev"

However, it's not a good practice to commit credentials to source
control. A recommended solution is to use Bundler's [configuration
keys](http://bundler.io/man/bundle-config.1.html#CONFIGURATION-KEYS),
e.g.:

    $ export BUNDLE_MYGEMSTASH__DEV=api_key

Behind the scene, Bundler will pick up the ENV var according to the host
name (e.g. mygemstash.dev) and add to `URI.userinfo` for making
requests.

The API key is treated as a HTTP Basic Auth username and any HTTP Basic
password supplied will be ignored.


text:
This app uses ember component to make autocompletion widget without the need for jquery ui autocompletion or other.

[Demo app](http://vysakh0.github.io/hooli)

## Installation

##### Dependencies
- node
- bower
- ember-cli (version: 0.2.3)

Clone the repo, install dependencies, start ember server and visit `localhost:4200`

```bash
git clone https://github.com/vysakh0/hooli.git
cd hooli
npm install
bower install
ember server
```

Note: This project uses ember canary build(ember 1.11.3), so there might be few deprecations and also this has **glimmer**, yay!.

## Components

##### search-box
An extension of `Ember.TextField` checks the user key press. If user presses `up` or `down` key, it invokes `autocomplete-list` component

##### autocomplete-list
- Lists all the autocompletion results (see its template).
- Invoked by `search-box` component
- When focussed, it highlights one of the results and gives the focus back to the `search-box` field.

## Ember addons

- Used `ember-cli-filter-query` to filter the autocomplete results, though the function is fairly simple, the plugin is bit more neat. I saw this plugin from the `ember-addons` github repo :)

- Also used `ember-cli-materialize`, it was fairly easy to use. Do checkout the [materializecss](materializecss.com) project on which this addon is built.

NOTE: Any Similarity to serialis living or dead Is purely coincidental.

redpajama_set_name: RedPajamaGithub


text:
package sortseq

import (
	"io"
	"bufio"
	"fmt"
	"errors"
    	"strings"
	"strconv"
	. "github.com/BrianReallyMany/yomama/seq"
	"github.com/BrianReallyMany/yomama/seq/sequtil"
)

type SeqSorter struct {
	primerMap map[[2]string]string
	barcodeMap map[[2]string]string
	linkers [][2]string
	*SeqSorterOptions
}

type SeqSorterOptions struct {
	bdiffs int
	ldiffs int
	pdiffs int
	checkReverse bool
}

func NewSeqSorterOptions (b, l, p int, checkR bool) *SeqSorterOptions {
	return &SeqSorterOptions{b, l, p, checkR}
}

type SeqSorterError struct {
	Problem string
	Where string
}

func (e *SeqSorterError) Error() string {
	return fmt.Sprintf("SeqSorter error occurred: %s", e.Problem)
}

func NewSeqSorter(reader io.Reader, opts *SeqSorterOptions) (*SeqSorter, error) {
	primerMap := make(map[[2]string]string)
	barcodeMap := make(map[[2]string]string)
	linkers := make([][2]string, 0)
	checkrev := opts.checkReverse

	// Process oligo file line by line
	scanner := bufio.NewScanner(reader)
	for scanner.Scan() {
		line := scanner.Text()
		fields, err := validateOligoLine(line)
		if err != nil {
			return &SeqSorter{}, err
			// TODO better error
		}

		// Don't fail just because you found an empty line
		if len(fields) == 0 {
			continue
		}

		oligotype := fields[0]
		switch oligotype {
		case "":
			continue
		case "barcode":
			oligoSeqs := [2]string{fields[1], fields[2]}
			oligoID := fields[3]
			barcodeMap[oligoSeqs] = oligoID
		case "primer":
			oligoSeqs := [2]string{fields[1], fields[2]}
			oligoID := fields[3]
			primerMap[oligoSeqs] = oligoID
			if checkrev {
				oligoSeqs = [2]string{fields[2], fields[1]}
				primerMap[oligoSeqs] = oligoID
			}
		case "linker":
			if len(fields) == 3 {
				linkers = append(linkers, [2]string{fields[1], fields[2]})
				if checkrev {
					linkers = append(linkers, [2]string{fields[2], fields[1]})
				}
			} else {
				linkers = append(linkers, [2]string{fields[1], ""})
				if checkrev {
					linkers = append(linkers, [2]string{"", fields[1]})
				}
			}
		}
	}
	sorter := &SeqSorter{primerMap, barcodeMap, linkers, opts}
	return sorter, nil
}

func validateOligoLine(line string) ([]string, error) {
	line = strings.Trim(line, "\n ")
	fields := strings.Split(line, "\t")
	switch oligotype := fields[0]; oligotype {
	case "barcode":
		if (len(fields) != 4 || fields[1] == "" || fields[3] == "") {
			return fields, errors.New("bad barcode")
			// TODO better errors
		}
		return fields, nil
	case "primer":
		if (len(fields) != 4 || fields[1] == "" || fields[3] == "") {
			return fields, errors.New("bad primer")
		}
		return fields, nil
	case "linker":
		if len(fields) < 2 {
			return fields, errors.New("bad linker")
		}
		return fields, nil
	default:
		fmt.Printf("Unkown oligo type encountered: %s\n", oligotype)
	}
	return fields, errors.New("Invalid oligo line.")
}

func oligoType(line string) string {
	fields := strings.Split(line, "\t")
	return fields[0]
}

func (s *SeqSorter) ToString() string {
	result := "primerMap: " + strconv.Itoa(len(s.primerMap)) + " entries\n"
	result += "barcodeMap: " + strconv.Itoa(len(s.barcodeMap)) + " entries\n"
	result += "linkers: " + strconv.Itoa(len(s.linkers)) + " entries\n"
	result += "options:\n"
	result += "\tbdiffs=" + strconv.Itoa(s.bdiffs) + "\n"
	result += "\tldiffs=" + strconv.Itoa(s.ldiffs) + "\n"
	result += "\tpdiffs=" + strconv.Itoa(s.pdiffs) + "\n"
	result += "\tcheckReverse=" + strconv.FormatBool(s.checkReverse)
	return result
}

func (s *SeqSorter) SortSeq(seq Seq) (Seq, error) {
	// TODO be flexible; if seq already has sample, skip debarcoding...
	// Find barcode pair with best match
	barcodeKeys := getSliceOfKeys(s.barcodeMap)
	bestBarcodes, mismatches := bestMatch(barcodeKeys, seq.Bases, s.bdiffs+1)
	// Verify acceptable number of mismatches
	if mismatches > s.bdiffs {
		return seq, &SeqSorterError{"Exceeded maximum number of differences between barcode and sequence", "barcode"}
	}
	// Get sample name
	sampleName, ok  := s.barcodeMap[bestBarcodes]
	if !ok {
		return seq, &SeqSorterError{"Couldn't find sample name to match barcode pair. This is strange.", "barcode"}
	}
	// Trim barcodes off seq bases and qual scores
	err := seq.TrimEnds(len(bestBarcodes[0]), len(bestBarcodes[1]))
	if err != nil {
		return seq, &SeqSorterError{"Error trimming ends of seq.", "barcode"}
	}

	// TODO flag for "check reversed linker/primer pairs"?

	// Find linker pair with best match
	bestLinkers, mismatches := bestMatch(s.linkers, seq.Bases, s.ldiffs+1)
	if mismatches > s.ldiffs {
		return seq, &SeqSorterError{"Exceeded maximum number of differences between linker and sequence", "linker"}
	}
	// trim linkers off seq bases and qual scores
	err = seq.TrimEnds(len(bestLinkers[0]), len(bestLinkers[1]))
	if err != nil {
		return seq, &SeqSorterError{"Error trimming ends of debarcoded seq.", "linker"}
	}

	// Find primer pair with best match
	primerKeys := getSliceOfKeys(s.primerMap)
	bestPrimers, mismatches := bestMatch(primerKeys, seq.Bases, s.pdiffs+1)
	if mismatches > s.pdiffs {
		return seq, &SeqSorterError{"Exceeded maximum number of differences between primer and sequence", "primer"}
	}
	locus, ok := s.primerMap[bestPrimers]
	if !ok {
		return seq, &SeqSorterError{"Couldn't find locus name to match primer pair.", "primer"}
	}
	// Trim primers off seq bases and qual scores
	err = seq.TrimEnds(len(bestPrimers[0]), len(bestPrimers[1]))
	if err != nil {
		return seq, &SeqSorterError{"Error trimming ends of delinkered seq.", "primer"}
	}

	// Update seq info and return
	seq.Sample = sampleName
	seq.Locus = locus
	return seq, nil
}

// From a list of barcode pairs, return the pair that matches
// most closely, and the number of bases that don't match
func bestMatch(oligos [][2]string, seq string, maxDiffs int) ([2]string, int) {
	winner := [2]string{"", ""}
	mismatches := len(seq) + 1
	for _, pair := range oligos {
		if misses := sequtil.MatchBeginAndEnd(pair, seq, maxDiffs); misses < mismatches {
			mismatches = misses
			winner = pair
		}
	}
	return winner, mismatches
}

func getSliceOfKeys(m map[[2]string]string) [][2]string {
	mySlice := make([][2]string, len(m))
	i := 0
	for k := range m {
		mySlice[i] = k
		i++
	}
	return mySlice
}


text:
package org.unido.ipmis.converter;

import java.io.Serializable;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.ParameterizedType;

/**
 *
 * @author Timothy Mwangi Gikonyo
 * on 23 May 2016
 *

 * The abstract class is a basis for type converters.
 * This is mainly for the developers' convenience.
 * Saves us the manual work for copying values from
 * one class to the other.
 *

 *
 *
Usage

 *
Annotate your source class, field or
 * getter method with com.trademarkea.annotations.Transferable
 * Then call com.trademarkea.converters.GenericConverter.convert(Object, T)
 *  to copy field values from source to destination class where applicable.

 *
 * @param <T> A class that extends java.io.Serializable
 */
@SuppressWarnings({"all","unchecked"})
public abstract class GenericConverter<T extends Serializable> implements Converter<T> {

	private enum MethodFunction{
		GETTER,SETTER;
	};

	private final Class<T> genericClass;

	public static Converter instance(Class<? extends GenericConverter> desired){
		try {
			return (Converter) desired.getConstructors()[0].newInstance();
		} catch (IllegalArgumentException e) {
			e.printStackTrace();
		} catch (SecurityException e) {
			e.printStackTrace();
		} catch (InstantiationException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		} catch (InvocationTargetException e) {
			e.printStackTrace();
		}
		return null;
	}

	public GenericConverter() {
		this.genericClass = (Class<T>) ((ParameterizedType) getClass()
				.getGenericSuperclass()).getActualTypeArguments()[0];
	}

	/* (non-Javadoc)
	 * @see com.trademarkea.converters.Converter#convert(java.lang.Object, java.lang.Object)
	 */
	@Override
	public T convert(Object source, T destination) throws ConverterException{

		if(source==null)
			throw new ConverterException("Source object is null");

		Field[] fields = source.getClass().getDeclaredFields();

		if(fields==null || fields.length<1)
			throw new ConverterException("There are no declared fields!");
		if(destination==null)
		try {
			Constructor constructor = genericClass.getConstructor();
			destination = (T) constructor.newInstance();
		} catch (Exception e) {
			e.printStackTrace();
			throw new ConverterException(e);
		}

		boolean transfer_classwide = source.getClass().isAnnotationPresent(Transferable.class);
		boolean transfer = true;
		for(Field field: fields){

			try {

				Field field_ = source.getClass().getDeclaredField(field.getName());
				Transferable transferableannotation = field_.getAnnotation(Transferable.class);
				if( !transfer_classwide ){
					transfer = field_.isAnnotationPresent(Transferable.class);
				}

				if(transfer && !field_.isAnnotationPresent(Ignore.class)){
					String getterMethodName = field_.getName();
					String setterMethodName = field_.getName();
					boolean isactualgettermethodname = false;
					boolean isactualsettermethodname = false;
					if(transferableannotation!=null){
						if(transferableannotation.getterMethodName()!=null && !transferableannotation.getterMethodName().isEmpty()){
							getterMethodName = transferableannotation.getterMethodName();
							isactualgettermethodname = true;
						}
						if(transferableannotation.setterMethodName()!=null && !transferableannotation.setterMethodName().isEmpty()){
							setterMethodName = transferableannotation.setterMethodName();
							isactualsettermethodname = true;
						}
					}
					Method getterFromSource = getMethod(isactualgettermethodname,source.getClass(),getterMethodName, MethodFunction.GETTER);
					Method setterFromDestination = getterFromSource!=null ? getMethod(isactualsettermethodname,destination.getClass(),setterMethodName, MethodFunction.SETTER, getterFromSource.getReturnType()) : null;

					if(getterFromSource!=null && setterFromDestination!=null){
						Object source_value = getterFromSource.invoke(source);
						setterFromDestination.invoke(destination, source_value);
					}

				}

			} catch (Exception e) {
				e.printStackTrace();
				throw new ConverterException(e);
			}
		}

		Method[] methods = source.getClass().getMethods();
		transfer = true;
		for(Method method : methods){

			if( !transfer_classwide )
				transfer = method.isAnnotationPresent(Transferable.class);

			if(transfer){

				Transferable transferableannotation = method.getAnnotation(Transferable.class);
				String setterMethodName = method.getName();
				boolean isactualsettermethodname = false;
				if(transferableannotation!=null){
					if(transferableannotation.setterMethodName()!=null && !transferableannotation.setterMethodName().isEmpty()){
						setterMethodName = transferableannotation.setterMethodName();
						isactualsettermethodname = true;
					}
				}

				Method setterFromDestination = method!=null ? getMethod(isactualsettermethodname,destination.getClass(), setterMethodName , MethodFunction.SETTER, method.getReturnType()) : null;
				if(setterFromDestination!=null){
					try{
						Object source_value = method.invoke(source);
						setterFromDestination.invoke(destination, source_value);
					}catch(IllegalArgumentException ie){
						ie.printStackTrace();
					}catch(InvocationTargetException ite){
						ite.printStackTrace();
					}catch(Exception e){
						e.printStackTrace();
						throw new ConverterException(e);
					}
				}
			}

		}

		return (T) destination;
	}

	/* (non-Javadoc)
	 * @see com.trademarkea.converters.Converter#convert(java.lang.Object)
	 */
	@Override
	public T convert(Object source) throws ConverterException{
		return convert(source,null);
	}

	private Method getMethod(boolean literalmethodName, Class<? extends Object> class1, String fieldName,
			MethodFunction getter, Class<? extends Object>... parameters) throws SecurityException {

		if(literalmethodName){
			try{
				if(getter==MethodFunction.GETTER){
					return class1.getMethod(fieldName);
				}
			}catch(NoSuchMethodException nsme){}
			try{
				if(getter==MethodFunction.SETTER)
					return class1.getMethod(fieldName, parameters);
			}catch(NoSuchMethodException nsme){}
		}else{
			try{
				if(getter==MethodFunction.GETTER)
					return class1.getMethod("get"+fieldName.toUpperCase().substring(0, 1)+(fieldName.substring(1,fieldName.length())));
			}catch(NoSuchMethodException nsme){}
			try{
				if(getter==MethodFunction.SETTER)
					return class1.getMethod("set"+fieldName.toUpperCase().substring(0, 1)+(fieldName.substring(1,fieldName.length())), parameters);
			}catch(NoSuchMethodException nsme){}
			try{
				if(getter==MethodFunction.GETTER)
					return class1.getMethod("is"+fieldName.toUpperCase().substring(0, 1)+(fieldName.substring(1,fieldName.length())));
			}catch(NoSuchMethodException nsme){}
		}
		return null;
	}

}


text:
// Copyright Aleksey Gurtovoy 2002-2004
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
//
// See http://www.boost.org/libs/mpl for documentation.

// $Id: unpack_args.cpp 49268 2008-10-11 06:26:17Z agurtovoy $
// $Date: 2008-10-10 23:26:17 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49268 $

#define BOOST_MPL_PREPROCESSING_MODE
#include <boost/config.hpp>
#include <boost/mpl/unpack_args.hpp>


text:
<?xml version='1.0' encoding='UTF-8'?>
<resources>
  <string name="about_device_info">Cihaz detaylarına gözat</string>
  <string name="access_denied">Erişim engellendi</string>
  <string name="access_token_expired_warning">Weibo Hesabının süresi doldu</string>
  <string name="access_token_invalid_warning">Weibo Hesabı geçersiz</string>
  <string name="account">Hesap</string>
  <string name="account_bind_devices">Cihazlar</string>
  <string name="account_bind_new_phone">Yeni telefon ekle</string>
  <string name="account_bind_phone_notice">Güvenlik ayarlarını, hesabınızda oturum açma şifrenizi sıfırlamak veya değiştirmek için bu telefon numarasını kullanabilirsiniz.</string>
  <string name="account_bind_secure_email_title">E-Posta ekle</string>
  <string name="account_bind_secure_phone_title">Telefon numarası ekle</string>
  <string name="account_bind_settings">Hesaplar</string>
  <string name="account_binded_phone">Telefon %d</string>
  <string name="account_crop_user_avatar">Fotoğrafı kırp</string>
  <string name="account_dspt_provision">"Herhangi bir yerden Mi Bulut,Tema Mağazası ve diğer hizmetlere oturum açın. "</string>
  <string name="account_dspt_provision2">Fazlasını Öğren</string>
  <string name="account_empty_user_name">Mi Hesabı kullanıcı adının girin</string>
  <string name="account_error_all_space_user_name">"Sadece boşluk karakterleri isimde giremezsiniz."</string>
  <string name="account_error_invalid_user_name">"İsim şu karakteri içeremez: <, >, /"</string>
  <string name="account_error_longer_user_name">"Ad 20 karakterden uzun olamaz"</string>
  <string name="account_error_shorter_user_name">Ad 2 karakterden uzun olmalıdır</string>
  <string name="account_error_user_birthday">Girdiğiniz doğum tarihi geçersiz</string>
  <string name="account_has_been_set">Değiştir</string>
  <string name="account_learn_more_title">Ücretsiz Mi Hesabı oluşturun</string>
  <string name="account_limit_update_birthday">"Doğum günü şimdi güncellenemedi"</string>
  <string name="account_mipay_info">Mi Ödemesi</string>
  <string name="account_name">Hesap: %1$s</string>
  <string name="account_no_set">Yok</string>
  <string name="account_none">Yok</string>
  <string name="account_none_binded_info">Yok</string>
  <string name="account_none_binded_secure_phone">Telefon numarası yok</string>
  <string name="account_none_user_name">Yok</string>
  <string name="account_protection">Hesap Koruması</string>
  <string name="account_protection_off">Kapalı</string>
  <string name="account_protection_on">Açık</string>
  <string name="account_secure_info_pref_title">Hesap Bilgisi</string>
  <string name="account_security">Hesap Güvenliği</string>
  <string name="account_security_info_pref_title">Güvenlik Bilgisi</string>
  <string name="account_user_avatar">Profil Resmi</string>
  <string name="account_user_avatar_from_album">Fotoğrafı seç</string>
  <string name="account_user_avatar_from_camera">Fotoğraf çek</string>
  <string name="account_user_base_info">Kullanıcı bilgisi</string>
  <string name="account_user_birthday">Doğum Tarihi</string>
  <string name="account_user_details">Kişisel Bilgi</string>
  <string name="account_user_education">Eğitim</string>
  <string name="account_user_email">E-Posta</string>
  <string name="account_user_gender">Cinsiyet</string>
  <string name="account_user_gender_female">Kadın</string>
  <string name="account_user_gender_male">Erkek</string>
  <string name="account_user_id">Mi Hesap Kimliği</string>
  <string name="account_user_income">Gelir</string>
  <string name="account_user_info">Kullanıcı Bilgisi</string>
  <string name="account_user_location">Konum</string>
  <string name="account_user_location_title">Geçerli konumu seçin</string>
  <string name="account_user_name">Adı</string>
  <string name="account_user_name_dialog_title">Kullanıcı adını girin</string>
  <string name="account_user_other_info">Fazla Kaynak</string>
  <string name="account_user_phone">Telefon Numarası</string>
  <string name="account_user_recovery_phone">Telefonu kurtar</string>
  <string name="account_user_region">Bölge</string>
  <string name="account_user_secure_info">Telefon & E-Posta</string>
  <string name="account_user_using_facebook_avatar">Facebook profil resmini kullan</string>
  <string name="account_user_using_qq_avatar">QQ profil resmini kullan</string>
  <string name="account_user_using_weibo_avatar">Sina Weibo profil resmini kullan</string>
  <string name="account_vip_achievements">Arşivler</string>
  <string name="account_vip_level">Hesap</string>
  <string name="account_xiaomi_service">Hizmetler</string>
  <string name="activate_email_notice">24 saat içinde hesabınızı etkinleştirin</string>
  <string name="activity_not_found_notice">"Uygulama bulunamadı"</string>
  <string name="add_account">Hesaba bağlan</string>
  <string name="agree_add_continue">Kabul</string>
  <string name="alert_title_remove_account">Hesap kaldırılsın mı?</string>
  <string name="app_name">Mi Hesabı</string>
  <string name="auth_fail_warning">Oturum süresi doldu, yeniden oturum açın</string>
  <string name="authorize_title">Yetkilendir</string>
  <string name="bad_authentication">Geçersiz kullanıcı adı veya şifre</string>
  <string name="barcode_add_account_prompt">Bir hesaba bağlanmak için, giriş yaptıktan sonra QR kodunu tekrar tarayın.</string>
  <string name="bind_facebook">Facebook hesabına bağlan</string>
  <string name="bind_qq">QQ</string>
  <string name="bind_settings">Hesaplar</string>
  <string name="bind_sina_weibo">Sina Weibo hesabına bağlan</string>
  <string name="bind_sns_description">%s ile oturum aç</string>
  <string name="bind_weibo_description">Sina Weibo\'dan arkadaşlarınızı ekleyin</string>
  <string name="binded">Bağlandı</string>
  <string name="binded_description" formatted="false">%s Mi Hesabınıza bağlandı. Profilinizin %s hesabı güncellendi.</string>
  <string name="btn_return">Geri</string>
  <string name="button_cancel">İptal</string>
  <string name="button_unbind">Bağlantıyı Kes</string>
  <string name="change_activate_email">E-Posta adresini değiştir</string>
  <string name="change_email_address">E-Posta adresini değiştir</string>
  <string name="change_password">Şifreyi değiştir</string>
  <string name="change_phone_number">Telefon numarasını değiştir</string>
  <string name="checking_account">Şifre kontrol ediliyor...</string>
  <string name="checking_input">Kontrol ediliyor…</string>
  <string name="checking_phone_num_availible">Telefon doğrulanıyor ...</string>
  <string name="cloud_service">Mi Bulut</string>
  <string name="cloud_service_dspt">Fotoğraflarınızı, kişileri, notları, uygulamaları ve daha fazlası tüm cihazlarınızla eşitleyin.</string>
  <string name="completed">Tamam</string>
  <string name="confirm">Doğrulama Kodu</string>
  <string name="confirm_activate_email">Doğrulandı</string>
  <string name="confirm_bundled_phone_dialog_title">İlişkili telefon numarasını onayla</string>
  <string name="confirm_delete_app_message">"Bu uygulamayı silindikten sonra, bu numara ile Mi Hesabında oturum açmak isterseniz yeniden etkinleştirmeniz yapmanız gerekir."</string>
  <string name="confirm_delete_browser_message">"Bu tarayıcıyı sildikten sonra bu telefon numarası ile Mi Hesabına girmek isterseniz yeniden etkinleştirme yapmanız gerekir."</string>
  <string name="confirm_delete_device_message">"Bu cihazı sildikten sonra bu telefon numarası ile Mi Hesabına girmek isterseniz yeniden etkinleştirme yapmanız gerekir."</string>
  <string name="confirm_email_address_dialog_message">Doğrulama kodu gönder: %s</string>
  <string name="confirm_email_address_dialog_title">E-Posta adresinizi onaylayın</string>
  <string name="confirm_phone_number_dialog_message">Doğrulama kodu gönderilecek: %s.</string>
  <string name="confirm_phone_number_dialog_title">Telefon numarasını onayla</string>
  <string name="confirm_unbind">Bu hesap bağlantısı kesilsin mi?</string>
  <string name="confirm_unbundled_phone_dialog_message">%1$s telefon numarası %2$s Mi Hesabı ile ilişkilendirildi. Devam ederseniz, artık Mi Hesabı %3$s ile ilişkilendirilmez. Devam edilsin mi?</string>
  <string name="continue_action">Devam</string>
  <string name="cta_declaration_agree_and_continue">Kabul</string>
  <string name="cta_declaration_exit">Çık</string>
  <string name="cta_declaration_ignore">Yoksay</string>
  <string name="cta_declaration_message">"Mi Hesabına oturum açmak için internete bağlanın ve konum ile Mi Bulut özelliğini açın. Kişisel verilerinizi, uygulamanın ihtiyacı olan rehberi, SMS ve MMS mesajları, çağrı geçmişini, kayıtları yedekleyebilirsiniz. Tüm bu işlemleri asla üçüncü partik şahıslarla paylaşmayız. Hesap açıldıktan sonra Mi VIP ve Hizmet numarası internete bağlanacak."</string>
  <string name="cta_declaration_title">Kullanıcı Şartları</string>
  <string name="current_location_title">Geçerli konum</string>
  <string name="data_keep_in_device">Bu cihazda sakla</string>
  <string name="data_wipe_from_device">Bu cihazdan sil</string>
  <string name="delete_action">Sil</string>
  <string name="delete_app">Uygulamayı sil</string>
  <string name="delete_bank_card_failed">Ödeme usulu kaldırılırken hata oldu</string>
  <string name="delete_bank_card_message">Oturumu kapattıktan sonra banka kartı güvenlik nedeniyle silinecektir.</string>
  <string name="delete_bank_card_title">Banka kartınız siliniyor</string>
  <string name="delete_browser">Tarayıcıyı sil</string>
  <string name="delete_device">Cihazı sil</string>
  <string name="delete_device_btn">Kaldır</string>
  <string name="delete_device_failed">"Cihaz kaldırılamadı"</string>
  <string name="delete_device_notice">Cihaz kaldırıldıktan sonra, otomatik olarak Mi Hesabınızdan çıkmış olunacak. Bu fotoğraflara, mesajlara erişmek için cihaz veya hesabınızda saklanan diğer içeriği kullanmak mümkün olmayacak."</string>
  <string name="delete_lock_device_success">Başarıyla silindi</string>
  <string name="device_delete_loading">Bir saniye…</string>
  <string name="device_delete_success_message">"Bu cihazda oturum açamıyorsanız, hemen şifrenizi değiştirin."</string>
  <string name="device_delete_success_title">Oturum kapatıldı</string>
  <string name="device_list__header">Cihazlarım</string>
  <string name="device_list_title">Cihazlarım</string>
  <string name="device_name">Cihaz Adı</string>
  <string name="device_trust_info">Güvenli cihaz</string>
  <string name="email_or_id_hint_text">E-Posta adresi veya Mi Hesabı</string>
  <string name="email_send_verify_code_prompt">"%s adrese E-Posta gönderildi, aşağıya gelen doğrulama kodunu girin"</string>
  <string name="empty_device_list_notice">Cihaz yok</string>
  <string name="error_device_id">Cihaz kimliği alınamadı</string>
  <string name="error_dup_binded_email">Bu E-Posta adresi zaten başka Mi Hesabı ile ilişkilendirilmiş.</string>
  <string name="error_duplicate_answers">"Yüvenlik amaçlı yenilenen cevapları kullanmayın"</string>
  <string name="error_incomplete_question_or_answer">4 soru seçin ve cevaplayın</string>
  <string name="error_invalid_bind_address">Girdiğiniz E-Posta adresi geçersiz.</string>
  <string name="error_invalid_dev_id">Geçersiz Cihaz Kimliği</string>
  <string name="error_longer_answer_length">Cevap en çok 128 karakter içerebilir</string>
  <string name="error_network">Ağ bağlantı hatası</string>
  <string name="error_no_sms_service">SMS göndermek mümkün değil. Mobil ağ mevcut değil.</string>
  <string name="error_server">Sunucu hatası</string>
  <string name="error_shorter_answer_length">Cevap en az 2 karakter uzunluğunda olmalı</string>
  <string name="error_ssl_hand_shake">Sunucuya bağlanmak mümkün olmadı, saat ve tarihi elle ayarlamaya çalışın.</string>
  <string name="error_unknown">Giriş yapılamıyor</string>
  <string name="error_user_name">Geçersiz kullanıcı adı</string>
  <string name="exceed_binded_phone_times_notice">Bu telefon numarası zaten başka Mi Hesabı ile ilişkilendirilmiş.</string>
  <string name="exit">Çık</string>
  <string name="facebook">Facebook</string>
  <string name="failed_dup_secure_phone_number">Bu telefon numarası zaten başka Mi Hesabı ile ilişkilendirilmiş.</string>
  <string name="find_device_access_denied">"Durum alınamadı, erişim engellendi"</string>
  <string name="find_device_account_error">"Durum alınırken hesapta hata oluştu"</string>
  <string name="find_device_activate_account">Hesabı etkinleştir</string>
  <string name="find_device_bad_response_error">Bir sunucu hatası oluştu, bir iki dakika bekleyin ve tekrar deneyin"</string>
  <string name="find_device_display_id">Kilit Açma Numarası: %s</string>
  <string name="find_device_error_password_not_confirmed">"Telefonu Bul açılamadı. Mi Hesabı şifresini yeniden girin."</string>
  <string name="find_device_error_password_recently_changed">"Şifreyi en son 3 gün önce değiştirdiniz. Güvenlik durumundan dolayı Telefonu Bul açılamadı."</string>
  <string name="find_device_interrupted">Faaliyet kesildi, bir iki dakika bekleyin ve tekrar deneyin</string>
  <string name="find_device_io_error">"Ağa bağlanamadı"</string>
  <string name="find_device_locked_account_email" formatted="false">%s,ilişkili e-posta adresi:%s</string>
  <string name="find_device_locked_account_phone" formatted="false">%s,ilişkili telefon numarası:%s</string>
  <string name="find_device_null_credential_error">"Cihaz bilgisi alınamadı, Xiaomi yönetici hizmetine başvurun"</string>
  <string name="find_device_operation_failed_error">Bir sunucu hatası oluştu, bir iki dakika bekleyin ve tekrar deneyin</string>
  <string name="find_device_operation_failed_error_unknown">Bir hata oluştu, sonra yeniden deneyin</string>
  <string name="find_device_remote_exception">RPC Hatası</string>
  <string name="find_device_request_error">"Bir sunucu hatası oluştu, bir iki dakika bekleyin ve tekrar deneyin"</string>
  <string name="find_device_request_prepare_error">"Cihaz durumu alınamadı, sonra yeniden deneyin"</string>
  <string name="find_device_unknown_error">"Cihaz durumu alınamıyor, bir iki dakika bekleyip tekrar deneyin"</string>
  <string name="find_password_on_web_msg">Şifrenizi sıfırlamak için account.mi.com ziyaret edin</string>
  <string name="first_login_time">Önce giriş yapın: %s</string>
  <string name="forget_password">Şifremi unuttum</string>
  <string name="forward_to_bind">Ekle</string>
  <string name="get_back_pwd">Şifreyi sıfırla</string>
  <string name="get_device_list_failed">"Cihaz listesi alınamıyor"</string>
  <string name="get_phone_bind_exceed_limit">"Mi Hesaba 3 kadar bir telefon numarası ile ilişkilendirebilirsiniz. Yeni yeni hesap ekleyemezsiniz."</string>
  <string name="get_email_verifycode_exceed_limit">Çok fazla doğrulama kodu bu numaraya gönderildi. 24 saat bekleyin ve tekrar deneyin.</string>
  <string name="get_phone_verifycode_exceed_limit">Çok fazla doğrulama kodu bu numaraya gönderildi. 24 saat bekleyin ve tekrar deneyin.</string>
  <string name="guest_account_label">Mi Misafir Hesabı</string>
  <string name="i_know">Biliyorum</string>
  <string name="ignore">Şimdi değil</string>
  <string name="input_captcha_hint">Kodu girin</string>
  <string name="input_email_address_notice">"Hesabınızı doğrulamak için bu E-Postayı kullanacağız"</string>
  <string name="input_password_hint">Şifreyi girin</string>
  <string name="input_vcode_hint">Doğrulama kodunu girin</string>
  <string name="internet_statement_message">Dokunarak kabul edin, şartları kabul etmekle uygulamanın internete erişimini sağlarsınız</string>
  <string name="internet_statement_title">Kullanıcının Şartları</string>
  <string name="io_error_title">Ağı doğrulayın</string>
  <string name="just_a_second">Biraz bekleyin...</string>
  <string name="license_host_unreachable">"Ağ bağlantısı kurulamıyor. %s kullanarak siteyi görüntüleyebilirsin."</string>
  <string name="loading">Biraz bekleyin…</string>
  <string name="loading_micloud_sync_data">Biraz bekleyin...</string>
  <string name="local_device">(bu cihaz)</string>
  <string name="locating_current_location">Saptanıyor</string>
  <string name="location_service_not_working">Konum hizmeti çalışmıyor</string>
  <string name="login">Giriş yap</string>
  <string name="login_check_find_device">Cihazın güvenlik bilgisi alınıyor…</string>
  <string name="login_check_find_device_failed_title">Cihazın güvenlik durumu denetlenemedi</string>
  <string name="login_failed">"Giriş yapılamıyor"</string>
  <string name="login_find_device_bind">Bu cihaz Mi Hesap Kimliği (%s) ile bağlantılıdır.</string>
  <string name="login_guard">Mi Güvencesi</string>
  <string name="login_guard_prompt">Bilinmeyen bir uygulama veya cihazla Mi Hesabında oturum açtığınızda doğrulama yapabilmek için telefon numarası gerekir.</string>
  <string name="logout_account">Oturumu kapat</string>
  <string name="login_instead_reg">Bu numarayı kullan</string>
  <string name="login_instead_reg_with_email">Bu E-Postayı kullan</string>
  <string name="login_title">Mi Hesabına giriş yap</string>
  <string name="login_with_email_or_id">E-Posta veya Mi Hesap Kimliğiyle giriş yap</string>
  <string name="logout_failed">"Oturum açılamıyor"</string>
  <string name="mi_account_dspt_provision">"İstediğiniz yerden Mi Bulut, MIUI Tema Mağazası ve diğer servislere oturum açabilirsiniz. "</string>
  <string name="mi_account_identity_title">Kimliğinizi doğrulayın</string>
  <string name="mipay">Öde</string>
  <string name="mipay_balance">Bakiye</string>
  <string name="mipay_bank_card">Banka Kartı</string>
  <string name="mipay_identity">Kimlik</string>
  <string name="mipay_others">Diğer</string>
  <string name="mipay_transit_card">Taşıma Kartı</string>
  <string name="micloud_account_name">Mi Hesabı</string>
  <string name="micloud_area_code_title">Ülke Kodu</string>
  <string name="micloud_delete_account">Oturumu Kapat</string>
  <string name="micloud_error_empty_captcha_code">Captcha Kodu</string>
  <string name="micloud_error_empty_pwd">Şifreyi girin</string>
  <string name="micloud_reg_new">Mi Hesabı oluştur</string>
  <string name="micloud_space_info">%s mevcut</string>
  <string name="micloud_sync_state_need_wifi">WLAN ile eşitle</string>
  <string name="micloud_sync_state_pending">Hazırlanıyor</string>
  <string name="micloud_sync_state_stop">Askıya alındı</string>
  <string name="micloud_sync_state_synced">Eşitlendi</string>
  <string name="micloud_sync_state_syncing">Eşitleniyor</string>
  <string name="mili_center">Mi Kredisi</string>
  <string name="mipay_center">Mi Cüzdanı</string>
  <string name="miui_provision_find_status_text">"Bu cihaz (%1$s) Mi Hesabı ile bağlantılıdır, cihazı doğrulamak için şifreyi girin.
(Kilit Açma Numarası: %2$s)"</string>
  <string name="multi_user_not_show_sync_activity_message_1">"İlk Alandaki Mi Hesabını kullanıyorsunuz gibi."</string>
  <string name="multi_user_not_show_sync_activity_message_2">"Tüm verileriniz İkinci Alana eşitlenecek. Bu esnada Mi Bulut ile eşitlemeyi açmayın."</string>
  <string name="multi_user_not_show_sync_activity_title">Mi Bulut ile eşitlemeyi açma!</string>
  <string name="my_device_title">Geçerli Cihaz:</string>
  <string name="my_favorite">Favorim</string>
  <string name="next">Devam</string>
  <string name="no_network_btn">Yenile</string>
  <string name="no_network_title">"Ağa bağlanılamıyor."</string>
  <string name="no_response_retry">Cevap yok, lütfen tekrar deneyin.</string>
  <string name="no_sim_card">SIM Kart yok</string>
  <string name="no_sim_card_or_unactivated">"SIM Kart yüklenmedi veya etkinleştirilmedi"</string>
  <string name="nobind">Bağlanamadı</string>
  <string name="notify_network_restricted_content_bg_network">"Mi Hesabının internet erişimi kısıtlandı. Dokunup izin verin."</string>
  <string name="notify_network_restricted_content_hidden_state">"Mi Hesabının arkaplan etkinliği kısıtlandı. Dokunup izin verin."</string>
  <string name="notify_network_restricted_content_mobile_network">"Mi Hesabının internet erişimi kısıtlandı. Dokunup izin verin."</string>
  <string name="notify_network_restricted_title">"Mi Hesabı ağa bağlanamadı"</string>
  <string name="oauth_get_scopes_failed">"Hesap bilgisi alınamadı"</string>
  <string name="oauth_getting_scopes">Hesap doğrulanıyor…</string>
  <string name="oauth_scopes_intro"><font color=#%1$s>%2$s</font> şu izinleri istiyor:<br> <br> %3$s</string>
  <string name="oauth_title">Mi Hesabıyla oturum aç</string>
  <string name="other_devices">Diğer Cihazlar</string>
  <string name="other_devices_title">Diğer cihazlar</string>
  <string name="passport_access_denied">Erişim engellendi</string>
  <string name="passport_account_hint_text">E-Posta adresi veya Mi Hesap Kimliği</string>
  <string name="passport_account_identity_title">Kimliğinizi doğrulayın</string>
  <string name="passport_account_label">Mi Hesabı</string>
  <string name="passport_account_name">Hesap: %1$s</string>
  <string name="passport_account_not_activated">"Hesap etkinleştirilmedi"</string>
  <string name="passport_account_not_actived">"Hesabınız etkinleştirilmedi"</string>
  <string name="passport_active_email_visit">%s gelen kutunuzu kontrol edin</string>
  <string name="passport_activing_account">Etkinleştiriliyor…</string>
  <string name="passport_app_name">Mi Hesabı</string>
  <string name="passport_area_code_hot">Sık Kullanılan</string>
  <string name="passport_area_code_title">Ülke kodu</string>
  <string name="passport_auto_generate_pwd">Güvenli bir şifre oluşturun</string>
  <string name="passport_back">Geri</string>
  <string name="passport_bad_authentication">Kullanıcı adı veya şifre hatalı</string>
  <string name="passport_barcode_add_account_prompt">Bir hesaba bağlamak için, oturum açtıktan sonra QR kodunu tekrar tarayın.</string>
  <string name="passport_btn_return">Geri</string>
  <string name="passport_button_cancel">İptal</string>
  <string name="passport_captcha">Kodu Girin</string>
  <string name="passport_change_account">Hesabı değiştir</string>
  <string name="passport_change_phone_number">Numaraları değiştir</string>
  <string name="passport_checking_account">Şifre kontrol ediliyor…</string>
  <string name="passport_checking_input">Giriş kontrol ediliyor…</string>
  <string name="passport_choose_which_one_sim">Telefon numarasını seç</string>
  <string name="passport_click_email_to_valid">"

Hesabınızı etkinleştirmek için, aşağıdaki
 gelen kutunuza gönderilen bağlantıyı takip edin."</string>
  <string name="passport_completed">Tamam</string>
  <string name="passport_confirm">Tamam</string>
  <string name="passport_confirm_recycle_account">Evet</string>
  <string name="passport_copy_message_text_success">Başarıyla kopyalandı</string>
  <string name="passport_copy_message_vcode">Kodu kopyala</string>
  <string name="passport_delete_account">Oturumu kapat</string>
  <string name="passport_downlink_reg">Telefon numarası kullanarak hesap oluştur</string>
  <string name="passport_email">E-Posta adresi</string>
  <string name="passport_email_or_id_hint_text">E-Posta veya Mi Hesap ID</string>
  <string name="passport_email_reg_success_summary">%1$s hesabınız ile bağlandı. Oturum açmak veya şifrenizi sıfırlamak için kullanabilirsiniz.</string>
  <string name="passport_error_device_id">"Cihaz kimliği alınamıyor"</string>
  <string name="passport_error_dup_email">Girdiğiniz E-Posta zaten başka bir hesapla ilişkilendirilmiş.</string>
  <string name="passport_error_dup_phone">Bu telefon numarası zaten başka bir hesapla ilişkilendirilmiş</string>
  <string name="passport_error_email">Girdiğiniz E-Posta adresi geçersiz</string>
  <string name="passport_error_empty_captcha_code">passport_captcha kodunu girin</string>
  <string name="passport_error_empty_email">E-Posta adresini girin</string>
  <string name="passport_error_empty_phone_num">Telefon numarasını girin</string>
  <string name="passport_error_empty_pwd">Şifrenizi girin</string>
  <string name="passport_error_empty_username">Kullanıcı adınızı girin</string>
  <string name="passport_error_empty_vcode">Doğrulama kodunu girin</string>
  <string name="passport_error_illegal_pwd">Geçersiz şifre</string>
  <string name="passport_error_invalid_dev_id">"Cihazınızın kimliği geçersiz."</string>
  <string name="passport_error_invalid_phone_num">Telefon numarası geçersiz</string>
  <string name="passport_error_login">"Oturum açılamıyor"</string>
  <string name="passport_error_network">"Ağa bağlanılamadı"</string>
  <string name="passport_error_no_sms_service">"Kısa mesaj göndermek mümkün değil. Mobil veri etkin değil."</string>
  <string name="passport_error_phone_error">Telefon numarası geçersiz</string>
  <string name="passport_error_server">Sunucu hatası</string>
  <string name="passport_error_sim_not_ready">"SIM kart bulunamıyor"</string>
  <string name="passport_error_ssl_hand_shake">"Sunucuya bağlantı kurulamadı"</string>
  <string name="passport_error_unknown">"Oturum açılamıyor"</string>
  <string name="passport_error_user_name">Girdiğiniz kullanıcı adı geçersiz.</string>
  <string name="passport_error_verify_code">Girdiğiniz kod yanlış.</string>
  <string name="passport_failed_to_send_activate_email">"Etkinleştirme E-Postası gönderilemedi"</string>
  <string name="passport_find_device_activate_account">Hesabı etkinleştir</string>
  <string name="passport_find_device_display_id">Kilidi Açma Numarası: %s</string>
  <string name="passport_find_password_on_web_msg">Şifrenizi sıfırlamak için account.mi.com adresini ziyaret edin.</string>
  <string name="passport_forget_password">Şifremi unuttum</string>
  <string name="passport_forget_password_no_underline">Şifremi unuttum</string>
  <string name="passport_get_back_pwd">Hesap şifresini al</string>
  <string name="passport_get_verify_code">Kodu al</string>
  <string name="passport_getting_verify_code">Alınıyor</string>
  <string name="passport_i_know">Anladım</string>
  <string name="passport_identitfication_expired">Doğrulama kodu süresi doldu, tekrar başlayın</string>
  <string name="passport_imei_permission_denied_message">"Biz cihazınızın IMEI'sini almak için sizden izin talep ediyoruz. Mi Hesabını güvende tutmak için oturum açıldığında IMEI kimliğini kullanırız."</string>
  <string name="passport_imei_permission_denied_title">IMEI izin isteği</string>
  <string name="passport_input_captcha_hint">Kodu girin</string>
  <string name="passport_input_password_for_login">Bu numara, varolan bir hesab ile ilişkilidir, şifrenizi girin</string>
  <string name="passport_input_password_hint">Şifreyi girin</string>
  <string name="passport_input_phone_hint">Telefon numarasını girin</string>
  <string name="passport_input_vcode_hint">Doğrulama kodunu girin</string>
  <string name="passport_input_verify_code_hint">Doğrulama kodunu girin</string>
  <string name="passport_license_host_unreachable">"Ağa bağlanamıyor. %s sayfayı görebilirsiniz."</string>
  <string name="passport_loading">Yükleniyor…</string>
  <string name="passport_login">Oturum aç</string>
  <string name="passport_login_check_find_device">Telefonu Bul durumu kontrol ediliyor…</string>
  <string name="passport_login_check_find_device_failed">"Telefonu Bul durumu doğrulanamadı. Ağ bağlantınızı kontrol edin."</string>
  <string name="passport_login_check_find_device_failed_message">Ağ bağlantısını kontrol edin.</string>
  <string name="passport_login_check_find_device_failed_title">"Telefonu Bul kontrol edilemedi. Ağ bağlantınızı kontrol edin."</string>
  <string name="passport_login_failed">"Oturum açılamıyor"</string>
  <string name="passport_login_find_device_bind">Bu cihaz Mi Hesap ID (%s) ile ilişkilidir. Bu cihazı etkinleştirmek için oturum açın.</string>
  <string name="passport_login_instead_reg">Bu numarayı kullan</string>
  <string name="passport_login_instead_reg_with_email">Bu E-Postayı kullan</string>
  <string name="passport_login_notice">Oturum açılıyor…</string>
  <string name="passport_login_prompt">Tek Mi Hesabı, tüm Mi Hizmetleri.</string>
  <string name="passport_login_short">Oturum aç</string>
  <string name="passport_login_title">Mi Hesabınızda oturum açın</string>
  <string name="passport_login_using_other_ways">Diğer yolla oturum aç</string>
  <string name="passport_login_with_email_or_id">E-Posta adresi veya Mi Hesap ID ile oturum açın</string>
  <string name="passport_message_dialog_title">SMS ile Kodları Doğrula</string>
  <string name="passport_miui_provision_find_status_text">"Bu cihaz kullanılan bir Mi Hesap (%1$s) ile ilişkili, cihazın şifresini girip doğrulayın.
(Kaldırma Numarası: %2$s)"</string>
  <string name="passport_next">Sonraki</string>
  <string name="passport_notification_title">%1$s için oturum açma hatası</string>
  <string name="passport_password">Şifreyi girin</string>
  <string name="passport_password_req_notice">Şifre 8-16 karakter haneli olmalı sayılar ve harfler içermelidir (küçük harfe duyarlı).</string>
  <string name="passport_phone_num_hint_text">Telefon numarası</string>
  <string name="passport_prev">Geri</string>
  <string name="passport_privacy_policy">Gizlilik Politikası</string>
  <string name="passport_pwd_generate_failure">"Şifre oluşturulamadı"</string>
  <string name="passport_pwd_generating">Oluşturuluyor...</string>
  <string name="passport_quick_login_dialog_step2_title">2 adımlı doğrulama</string>
  <string name="passport_quick_login_dialog_title">Şifreyi Doğrula</string>
  <string name="passport_quick_login_step2_title">2 adımlı doğrulama</string>
  <string name="passport_quick_login_title">Şifrenizi girin</string>
  <string name="passport_re_get_verify_code">Kodu tekrar al</string>
  <string name="passport_re_register">Tekrar oturum açın</string>
  <string name="passport_recycle_account_prompt">Bu sizin Mi Hesabınız mı?</string>
  <string name="passport_reg_btn_using_other_phone">Alternatif telefon numarası kullan</string>
  <string name="passport_reg_failed">"Hesabınız ayarlanamıyor"</string>
  <string name="passport_reg_new">Mi Hesabı oluşturun</string>
  <string name="passport_reg_prompt">"Mi Hesabınız yok mu? Ücretsiz bir tane oluşturun,"</string>
  <string name="passport_reg_sms_send_prompt">Doğrulama kodunu şuraya gönder: %s</string>
  <string name="passport_reg_success">Hesabınız oluşturuldu</string>
  <string name="passport_reg_success_summary">%1$s hesabınızla bağlanmıştır. Oturum açmak için veya şifrenizi sıfırlamak için kullanabilirsiniz.</string>
  <string name="passport_reg_type_email">E-Posta adresi kullan</string>
  <string name="passport_reg_type_other_ways">E-Posta adresinizi veya alternatif bir numarayı kullanın</string>
  <string name="passport_reg_type_other_ways_title">Bir Mi Hesap Oluştur</string>
  <string name="passport_reg_using_other_phone">Alternatif telefon numarasını kullan</string>
  <string name="passport_reg_using_other_phone_number_prompt">"Şunu kullanarak yeni hesap oluştur: "</string>
  <string name="passport_reg_using_phone_number_prompt">Telefon numarasını kullanarak hesap oluşturun</string>
  <string name="passport_reg_via_sms_alert">Bu servisi etkinleştirmek için bir SMS mesajı gönderilmesi gerekebilir. Operatörünüz bu mesaj için sizden ücret alabilir.</string>
  <string name="passport_reging">Hesap oluşturuluyor…</string>
  <string name="passport_register">Hesap oluştur</string>
  <string name="passport_register_account_goto_email">Gelen kutusuna git</string>
  <string name="passport_register_account_verified_confirm">Hesap doğrulandı</string>
  <string name="passport_register_by_email">E-Posta adresini kullanarak bir hesap oluştur</string>
  <string name="passport_register_restricted">Bu numara ile ilişkili çok fazla hesap var. Başka birini deneyin</string>
  <string name="passport_register_restricted_title">"Bu telefon numarası kullanılamıyor"</string>
  <string name="passport_registered_phone_user_ID">Kullanıcı ID: %s</string>
  <string name="passport_registered_phone_user_name">Kullanıcı Adı: %s</string>
  <string name="passport_reject_recycle_account">Hayır</string>
  <string name="passport_relogin">Tekrar oturum aç</string>
  <string name="passport_relogin_notice">Tekrar oturum açmanız gerekiyor</string>
  <string name="passport_remove_confirm">Oturumu kapat</string>
  <string name="passport_remove_unactivated_account_notice">"Hesabınız aktif değil."</string>
  <string name="passport_resend_active_email">E-Postayı tekrar gönder</string>
  <string name="passport_reset_fail_title">"Sıfırlanamıyor"</string>
  <string name="passport_reset_password_prompt">Şifre hatalı</string>
  <string name="passport_reset_password_title">Şifreyi sıfırla</string>
  <string name="passport_restart">Tekrar başla</string>
  <string name="passport_restart_register_prompt">Başka bir doğrulama mesajı, hesabınızı oluşturmak için gerekli olabilir.</string>
  <string name="passport_restart_register_title">Mi Hesabı oluştur</string>
  <string name="passport_retry">Yeniden Dene</string>
  <string name="passport_select_reg_ways_title">Diğer yolla oturum aç</string>
  <string name="passport_send_too_many_code">Bu numaraya çok fazla doğrulama kodu gönderildi. 24 saat bekleyin ve tekrar deneyin.</string>
  <string name="passport_setting">Ayarlanıyor…</string>
  <string name="passport_sim_index_info">SIM kart %1$d - %2$s</string>
  <string name="passport_skip_login">Oturum açmayı atla</string>
  <string name="passport_skip_register">Oturum açmayı atla</string>
  <string name="passport_skip_setup_account_msg">Mi Hesabınızı daha sonra Ayarlardan değiştirebilirsiniz.</string>
  <string name="passport_skip_setup_account_title">Kurulumu Atla</string>
  <string name="passport_title_reg">Hesap oluştur</string>
  <string name="passport_trust_device">Bu cihazı doğrulanmış cihazlara ekle</string>
  <string name="passport_trying_read_verify_code_sms">Doğrulama kodu alınıyor…</string>
  <string name="passport_uplink_reg">Telefon numarasını kullan</string>
  <string name="passport_uplink_slot1_reg">SIM 1 Kullan</string>
  <string name="passport_uplink_slot2_reg">SIM 2 Kullan</string>
  <string name="passport_use_generated_pwd_message">Unutmayacağınız bir şifre kullanın. Diğer Mi Hizmetleri içinde aynı şifreyi kullanabilirsiniz.</string>
  <string name="passport_use_generated_pwd_title">Şifrenizi unutmayın!</string>
  <string name="passport_user_agreement"> Kullanıcı Sözleşmesi</string>
  <string name="passport_user_agreement_p1">Kullanıcı Sözleşmesi </string>
  <string name="passport_user_agreement_p2"> ve </string>
  <string name="passport_user_agreement_p3">Gizlilik Politikası\'nı</string>
  <string name="passport_user_agreement_p4">kabul etmiş olursunuz.</string>
  <string name="passport_vcode">Doğrulama Kodu</string>
  <string name="passport_vcode_notification_title">Oturum açma doğrulanması tamamlanamadı</string>
  <string name="passport_vcode_prompt_long">Doğrulama kodunu girin</string>
  <string name="passport_vcode_sms_send_prompt">Doğrulama kodunu %s gönder</string>
  <string name="passport_verification_failed">Kimlik doğrulama başarısız</string>
  <string name="passport_verify">Doğrula</string>
  <string name="passport_wait_for_sms_prompt">Şimdi baştan başlansın mı? Telefonunuz operatörünüzün şebekesi kapsama alanı içinde olduğunda doğrulama mesajlarının teslim edilmesi 10 dakika sürebilir."</string>
  <string name="passport_welcome_skip_login">Atla</string>
  <string name="passport_wrong_captcha">Girilen kod geçersiz</string>
  <string name="passport_wrong_password">Şifre hatalı</string>
  <string name="passport_wrong_phone_number_format">Girdiğiniz telefon numarasının biçimi geçersiz</string>
  <string name="passport_wrong_vcode">Girdiğiniz kod yanlış</string>
  <string name="passport_xiaomi_account_dspt">Her yerden Mi Bulut, MIUI Tema Mağazası ve Mi Mağazasına Mi Hesap ile oturum açabilirsiniz.</string>
  <string name="passport_xiaomi_account_sec_dspt"/>
  <string name="passport_xiaomi_account_sec_dspt2">İnternet bağlantısı Mi Hesabınızda oturum açmak için gereklidir. Konum erişimi ve Mi Bulut otomatik olarak açılacaktır.</string>
  <string name="passport_xiaomi_account_sec_dspt2_vip">İnternet bağlantısı Mi Hesabınızda oturum açmak için gereklidir. Konum erişimi, Mi Bulut ve Mi VIP otomatik olarak açılacaktır.</string>
  <string name="password">Şifreyi girin</string>
  <string name="phone_activated">%s etkinleştirildi</string>
  <string name="phone_send_verify_code_prompt">Doğrulama kodunu şuraya gönder: %s</string>
  <string name="phone_unactivated">Etkinleştirilmedi</string>
  <string name="phone_unknown">Bilinmeyen</string>
  <string name="photoPickerNotFoundText">Resim bulunamadı.</string>
  <string name="push_notification_content">Doğrulama kodunu al</string>
  <string name="push_notification_title">Bilinmeyen bir cihazda, Mi hesabınızla oturum açtınız.</string>
  <string name="push_notify_dialog_message">"Bilinmeyen bir cihazda, Mi Hesabınızla oturum açmak için kullanılır. Bu doğrulama kodunu cihaza girin. Eğer siz o değilseniz, Mi Hesap şifrenizi hemen değiştirin. Doğrulama kodunu başkalarına açıklamayın."</string>
  <string name="push_notify_dialog_title">Hesap Doğrulaması</string>
  <string name="prev">Geri</string>
  <string name="privacy_policy">Veri Koruması</string>
  <string name="provision_skip_login">Bu adımı atla</string>
  <string name="qq">QQ</string>
  <string name="quick_login_dialog_step2_title">2-Adımlı Doğrulama</string>
  <string name="quick_login_dialog_title">Şifreyi Doğrula</string>
  <string name="quick_login_step2_title">2-Adımlı Doğrulama</string>
  <string name="quick_login_title">Şifreyi girin</string>
  <string name="re_register">Ücretsiz Mi Hesabı oluşturun</string>
  <string name="reg_failed">"Hesap oluşturulamadı"</string>
  <string name="reging">Hesap oluşturuluyor...</string>
  <string name="register">Mi Hesabı oluştur</string>
  <string name="register_by_email">Mi Hesabı oluşturmak için E-Posta adresi kullan</string>
  <string name="relogin">Yeniden giriş yap</string>
  <string name="remove_account_notice">Mesajları, kişileri ve diğer verileri Mi Hesabınızla eşitlemek iter misiniz?</string>
  <string name="remove_device_success_notice">Eğer bu cihazı güvenilir cihazlardan kaldırırsanız, yeniden otorum açıp doğrulamanız gerekebilir.</string>
  <string name="remove_trust_btn">Güvenilir cihazlardan kaldır</string>
  <string name="remove_trust_notice">Güvenilir aygıtlardan çıkarın ve oturumu kapatın</string>
  <string name="removing_account">Çıkış yapılıyor...</string>
  <string name="rename_current_device">Cihaz adını değiştir</string>
  <string name="replace_binded_phone">Telefonu değiştirin</string>
  <string name="resend_active_email">Yeniden Gönder</string>
  <string name="resend_email_reach_limit_message">"Çok fazla doğrulama postası isteği oldu. Doğrulama postalarının İstenmeyen (spam) kutusuna gelip-gelmediğinden emin olun."</string>
  <string name="resend_email_reach_limit_title">"E-Posta gönderilemiyor"</string>
  <string name="resend_email_success">E-Postayı yeniden gönder</string>
  <string name="reset_security_question_message">Güvenlik sorularını değiştirmeden önce kimliğinizi doğrulamanız gerekir</string>
  <string name="reset_security_question_title">Güvenlik sorularını sıfırla</string>
  <string name="restart_action">Yeniden Başlat</string>
  <string name="restart_email_bind_message">Onay kodu içeren bir E-Posta adresinize gönderilir</string>
  <string name="restart_email_bind_title">Şifrenizi sıfırlamak için E-Posta adresini değiştir</string>
  <string name="restart_phone_bind_message">Bu SMS\'i almak biraz zaman alabilir. Yine de baştan başlansın mı?</string>
  <string name="restart_phone_bind_title">Kurtarma telefonunu değiştir</string>
  <string name="scan_barcode_title">Mi hesabınıza oturum açmak için QR kodunu taratın</string>
  <string name="search_account_security">Hesap Güvenliği</string>
  <string name="search_account_security_desc">Hesap Ayarları</string>
  <string name="search_account_security_key_words">Telefon Değiştirme, E-posta Değişimi, Hesap Koruması, Hesaplar, Sina Weibo, QQ, Yetkilendirme, Cihazlar</string>
  <string name="search_account_security_path">Ayarlar/Mi Hesabı/Hesap Ayarları</string>
  <string name="search_app_name">Mi Hesabı</string>
  <string name="search_bind_Account">Hesaplar</string>
  <string name="search_bind_Account_desc">Hesaplar</string>
  <string name="search_bind_Account_key_words">Hesaplar,Sina Weibo,QQ,Authorization</string>
  <string name="search_bind_Account_path">Ayarlar/Mi Hesabı/Hesaplar</string>
  <string name="search_devices">Cihazlar</string>
  <string name="search_devices_desc">Cihazlar</string>
  <string name="search_devices_key_words">Cihazlar</string>
  <string name="search_devices_path">Ayarlar/Mi Hesabı/Cihazlar</string>
  <string name="search_logout_account">Oturumu kapat</string>
  <string name="search_logout_account_desc">Mi Hesabı</string>
  <string name="search_logout_account_key_words">Oturumu kapat</string>
  <string name="search_logout_account_path">Mi Hesabı/Hesap Ayarları,Ayarlar/Mi Hesabı/Hesap Ayarları</string>
  <string name="search_mi_account">Mi Hesabı</string>
  <string name="search_mi_account_desc">Mi Hesabı</string>
  <string name="search_mi_account_key_words">Mi Hesabı,Oturum aç,hesap oluştur,Mi Bulut,Mi Kredisi,Mi Cüzdan,Mi Şifre,Mi Sigorta,Hesap Ayarları,Hesap Yönetimi</string>
  <string name="search_mi_account_path">Ayarlar/Mi Hesabı</string>
  <string name="search_user_detail">Kişisel Bilgi</string>
  <string name="search_user_detail_bottom_key_words">Geliri değiştir,Eğitimi değiştir,Konumu değiştir,Bölgeyi değiştir</string>
  <string name="search_user_detail_desc">Kişisel Bilgi</string>
  <string name="search_user_detail_path">Ayarlar/Mi Hesabı/Kişisel Bilgi</string>
  <string name="search_user_detail_top_key_words">Kişisel Bilgi,Profil fotoğrafını değiştir,Kullanıcı adını değiştir,Rumuzu değiştir,Doğum gününü değiştir,Cinsiyeti değiştir</string>
  <string name="security_question">Soru seç</string>
  <string name="security_question_answer">Soruyu cevapla</string>
  <string name="security_question_notice_message">Telefonunuzun şifresini unuttuğunuzda veya sıfırlayacağınız zamanlarda lazım olacağından güvenlik sorularını oluşturun.</string>
  <string name="security_question_notice_title">Telefon Ekle</string>
  <string name="security_question_prompt">"Güvenlik soruları değiştirmek veya şifrenizi sıfırlamak zaman alabilir.
Bu soruların cevaplarını hatırlayacağınızdan olun."</string>
  <string name="select_location_title">Konumunuzu seçin</string>
  <string name="send_email_activate_message">Doğrulama E-Postası gönderildi</string>
  <string name="service_error">Servis hatası</string>
  <string name="set_security_question_title">Güvenlik sorusunu ayarla</string>
  <string name="sina_weibo">Sina Weibo</string>
  <string name="skip_register">Bu adımı atla</string>
  <string name="sms_send_success">Gönder</string>
  <string name="sns_access_token_expired_warning">Hesap oturum açma süresi doldu. Bu hesabı eklemek için tekrar giriş yapın.</string>
  <string name="submit_answers">Gönder</string>
  <string name="success">Tamam</string>
  <string name="theme_store">MIUI Tema Mağazası</string>
  <string name="theme_store_dspt">Görünümü seçin. Özelleştirilebilir ücretsiz yüzlerce tema ile telefonunuzu benzersiz yapın.</string>
  <string name="timeout_retry">İstek zaman aşımına uğradı, lütfen tekrar deneyin.</string>
  <string name="title_reg">Hesap oluştur</string>
  <string name="trusted_browsers">Güvenilir Tarayıcılar</string>
  <string name="trusted_browsers_prompt">Eğer Çerezleri silerseniz, tarayıcınız güvenilir olmaktan çıkar.</string>
  <string name="trying_read_verify_code_sms">Doğrulama kodu alınıyor...</string>
  <string name="turn_off_find_device_failed_title">"Telefonu Bul kapatılamıyor"</string>
  <string name="turning_off_find_device">Telefonu Bul kapatılıyor…</string>
  <string name="unbind_sns_description">"Bu hesabın bağlantısını kestikten sonra, Mi Hesabınızda oturum açmak için %s hesap bilgilerini kullanmak mümkün olmayacaktır."</string>
  <string name="unbind_weibo_description">"Bu hesabın bağlantısını kestikten sonra, Weibo kişilerinizi eşitlemek veya oturum açmak için Sina Weibo Hesabınızı kullanmak mümkün olmayacaktır."</string>
  <string name="unlock_help_notice">"Yardım:
· Eğer şifrenizi unutursanız; id.mi.com adrese gidip sıfırlayın.
· Eğer cihazın kilidini kaldıramazsanız; i.mi.com adrese gidip Telefonu Bul özelliğini kapatın
· Şu kilidi kaldırma numarasını müşteri hizmetlerine söyleyin: %s"</string>
  <string name="update_contacts">Adres defterini güncelle</string>
  <string name="update_contacts_description">Sina Weibo platformlarında kişileri eşitlemek üzere Mi Hesabınızı kullanmasına izin verin</string>
  <string name="update_email_address_dialog_message">Kimliğinizi doğrulamadan önce mail adresinizi güncellemelisiniz.</string>
  <string name="update_email_address_dialog_title">E-Postayı güncelle</string>
  <string name="update_phone_number_notice_message">Kimliğinizi doğrulamadan önce telefon numarasını güncelleyin</string>
  <string name="update_recovery_info_dialog_message">Eğer kimliğinizi kanıtlamak zorunda kalırsanız önce E-Posta adresini güncelleyin.</string>
  <string name="update_recovery_info_dialog_title">E-Posta adresini güncelleyin</string>
  <string name="updated_nothing">Güncellendi</string>
  <string name="user_agreement">Kullanım Şartları</string>
  <string name="user_agreement_p2">Kullanım Şartları</string>
  <string name="user_agreement_p3"> ve </string>
  <string name="user_agreement_p4">Gizlilik Politikası</string>
  <string name="user_agreement_p6">Doğrula: </string>
  <string name="user_avatar_update_title">Profil fotoğrafını değiştir</string>
  <string name="user_avatar_uploading">Biraz bekleyin...</string>
  <string name="vcode">Doğrulama Kodu</string>
  <string name="vcode_notification_title">Doğrulama tamamlanamadı</string>
  <string name="vcode_prompt_long">Doğrulama kodunu girin</string>
  <string name="verification_failed">Kimlik doğrulama başarısız oldu</string>
  <string name="verified_apps">Doğrulanmış Uygulamalar</string>
  <string name="verified_devices">Doğrulanmış Cihazlar</string>
  <string name="verify">Doğrula</string>
  <string name="verify_phone_prompt">Doğrulamak için telefon numarasını seçin</string>
  <string name="verify_phone_title">Telefon Numarası</string>
  <string name="vip_account_settings">VIP Ayarları</string>
  <string name="vip_more_info">Diğer VIP Bilgisi</string>
  <string name="wipe_data_dialog_msg">Eğer devam ederseniz, %s silinecek.</string>
  <string name="wipe_data_dialog_msg_separator">, </string>
  <string name="wipe_data_dialog_title">"Bazı öğeler eşitlenemedi."</string>
  <string name="wrong_captcha">Girdiğiniz kod yanlış</string>
  <string name="wrong_vcode">Girdiğiniz doğrulama kodu yanlış</string>
  <string name="xiao_mi_vip">Mi VIP</string>
</resources>


text:
using System;

namespace Mono.WebServer
{
	public interface IApplicationHost
	{
		string Path { get; }
		string VPath { get; }
		AppDomain Domain { get; }
		IRequestBroker RequestBroker { get; set; }
		ApplicationServer Server { get; set; }
		void Unload ();
		bool IsHttpHandler (string verb, string uri);
	}
}


text:
Listing 2.13 A simple "hello world" web server with Node in TypeScript from the Book Express in Action:

https://www.manning.com/books/express-in-action


text:
def max_profit(prices)
    return 0 if prices.length < 2
    profit = 0
    prices.each_with_index do |p, i|
        profit += prices[i] - prices[i - 1] if i > 0 and prices[i - 1] < prices [i]
    end
    return profit
end


text:
/**
 * @module 101/pluck
 */

var isObject = require('./is-object');
var exists = require('./exists');
var keypather = require('keypather')();

/**
 * Functional version of obj[key], returns the value of the key from obj.
 * When only a key is specified pluck returns a partial-function which accepts obj.
 * @function module:101/pluck
 * @param {object} [obj] - object from which the value is plucked
 * @param {string|array} key - key of the value from obj which is returned
 * @param {boolean} [isKeypath=true] - specifies whether the key is a keypath or key
 * @return {*|function} The value of the key from obj or Partial-function pluck (which accepts obj) and returns the value of the key from obj
 */
module.exports = function (obj, key, isKeypath) {
  if (!isObject(obj)) {
    isKeypath = key;
    key = obj;
    return function (obj) {
      return pluck(obj, key, isKeypath);
    };
  }
  else {
    return pluck(obj, key, isKeypath);
  }
};

function pluck (obj, key, isKeypath) {
  key = Array.isArray(key) ? key[0] : key;
  isKeypath = exists(isKeypath) ? isKeypath : true;
  return isKeypath ?
    keypather.get(obj, key):
    obj[key];
}


text:
class ProjectTransferService
  include Gitlab::ShellAdapter

  class TransferError < StandardError; end

  attr_accessor :project

  def transfer(project, new_namespace)
    Project.transaction do
      old_path = project.path_with_namespace
      new_path = File.join(new_namespace.try(:path) || '', project.path)

      if Project.where(path: project.path, namespace_id: new_namespace.try(:id)).present?
        raise TransferError.new("Project with same path in target namespace already exists")
      end

      project.namespace = new_namespace
      project.save!

      # Move main repository
      unless gitlab_shell.mv_repository(old_path, new_path)
        raise TransferError.new('Cannot move project')
      end

      # Move wiki repo also if present
      gitlab_shell.mv_repository("#{old_path}.wiki", "#{new_path}.wiki")

      # create satellite repo
      project.ensure_satellite_exists

      true
    end
  end
end


text:
package com.facebook.buck.intellij.ideabuck.ui;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;

import com.facebook.buck.intellij.ideabuck.test.util.MockBuckUIManager;
import com.facebook.buck.intellij.ideabuck.test.util.MockDisposable;
import com.facebook.buck.intellij.ideabuck.test.util.MockTestResults;
import com.facebook.buck.intellij.ideabuck.test.util.MockTreeModelListener;
import com.facebook.buck.intellij.ideabuck.test.util.MyMockApplication;
import com.google.common.collect.ImmutableSet;
import com.intellij.mock.Mock;
import com.intellij.mock.MockApplication;
import com.intellij.mock.MockFileDocumentManagerImpl;
import com.intellij.mock.MockProject;
import com.intellij.mock.MockProjectEx;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.extensions.Extensions;
import com.intellij.openapi.fileEditor.FileDocumentManager;
import com.intellij.openapi.vfs.VirtualFileManager;
import com.intellij.openapi.wm.ToolWindowManager;
import java.lang.reflect.Field;
import org.easymock.EasyMock;
import org.junit.Test;

public class BuckEventsConsumerTest {
  @org.junit.Ignore
  @Test
  public void hasBuckModuleAttachReceivedNullTargetThenWeShowNone()
      throws NoSuchFieldException, IllegalAccessException {
    MockProject project = new MockProjectEx(new MockDisposable());
    BuckEventsConsumer buckEventsConsumer = initialiseEventsConsumer(project);

    buckEventsConsumer.attach(null);

    Field privateStringField = BuckEventsConsumer.class.getDeclaredField("mTarget");

    privateStringField.setAccessible(true);

    String fieldValue = (String) privateStringField.get(buckEventsConsumer);
    assertEquals(fieldValue, "NONE");
  }

  public MockProject initProject() {
    Extensions.registerAreaClass("IDEA_PROJECT", null);
    MockProject mockProject = new MockProjectEx(new MockDisposable());
    return mockProject;
  }

  public BuckEventsConsumer initialiseEventsConsumer(MockProject project) {
    MockDisposable mockDisposable = new MockDisposable();

    MockApplication application = new MyMockApplication(mockDisposable);
    ApplicationManager.setApplication(application, mockDisposable);
    application.registerService(
        FileDocumentManager.class, new MockFileDocumentManagerImpl(null, null));
    application.registerService(
        VirtualFileManager.class, EasyMock.createMock(VirtualFileManager.class));
    project.registerService(BuckUIManager.class, new MockBuckUIManager(project));
    project.registerService(ToolWindowManager.class, new Mock.MyToolWindowManager());
    return new BuckEventsConsumer(project);
  }

  public MockTreeModelListener addListeners(MockProject project) {
    BuckUIManager buckUIManager = BuckUIManager.getInstance(project);
    final MockTreeModelListener listener = new MockTreeModelListener();
    buckUIManager
        .getBuckTreeViewPanel()
        .getModifiableModel()
        .addTreeModelListener(_tree -> listener);
    buckUIManager
        .getBuckTreeViewPanel()
        .getModifiableModel()
        .addTreeModelListener(_tree -> new MockTreeModelListener());
    buckUIManager
        .getBuckTreeViewPanel()
        .getModifiableModel()
        .addTreeModelListener(_tree -> new MockTreeModelListener());
    return listener;
  }

  @Test
  public void hasUIWorkBeenDoneOnNonAwtThreadInAttachThenFail() {
    MockProject project = initProject();
    BuckEventsConsumer buckEventsConsumer = initialiseEventsConsumer(project);
    MockTreeModelListener listener = addListeners(project);

    buckEventsConsumer.attach(null);
    assertFalse(listener.calledOnWrongThread);
    assertTrue(buckEventsConsumer.isAttached());
  }

  @Test
  public void hasUIWorkBeenDoneOnNonAwtThreadInConsumeBuckBuildProgressUpdateThenFail() {
    MockProject project = initProject();
    BuckEventsConsumer buckEventsConsumer = initialiseEventsConsumer(project);
    MockTreeModelListener listener = addListeners(project);

    buckEventsConsumer.attach(null);
    assertFalse(listener.calledOnWrongThread);
    assertTrue(buckEventsConsumer.isAttached());

    buckEventsConsumer.consumeBuckBuildProgressUpdate(0, 0);
    assertFalse(listener.calledOnWrongThread);
  }

  @Test
  public void hasUIWorkBeenDoneOnNonAwtThreadInConsumeBuildEndThenFail() {
    MockProject project = initProject();
    BuckEventsConsumer buckEventsConsumer = initialiseEventsConsumer(project);
    MockTreeModelListener listener = addListeners(project);

    buckEventsConsumer.attach(null);
    assertFalse(listener.calledOnWrongThread);
    assertTrue(buckEventsConsumer.isAttached());

    buckEventsConsumer.consumeBuildEnd(0);
    assertFalse(listener.calledOnWrongThread);
  }

  @Test
  public void hasUIWorkBeenDoneOnNonAwtThreadInConsumeBuildStartThenFail() {
    MockProject project = initProject();
    BuckEventsConsumer buckEventsConsumer = initialiseEventsConsumer(project);
    MockTreeModelListener listener = addListeners(project);

    buckEventsConsumer.attach(null);
    assertFalse(listener.calledOnWrongThread);
    assertTrue(buckEventsConsumer.isAttached());

    buckEventsConsumer.consumeBuildStart(0);
    assertFalse(listener.calledOnWrongThread);
  }

  @Test
  public void hasUIWorkBeenDoneOnNonAwtThreadInConsumeBuckProjectGenerationFinishedThenFail() {
    MockProject project = initProject();
    BuckEventsConsumer buckEventsConsumer = initialiseEventsConsumer(project);
    MockTreeModelListener listener = addListeners(project);

    buckEventsConsumer.attach(null);
    assertFalse(listener.calledOnWrongThread);
    assertTrue(buckEventsConsumer.isAttached());

    buckEventsConsumer.consumeBuckProjectGenerationFinished(0);
    assertFalse(listener.calledOnWrongThread);
  }

  @Test
  public void hasUIWorkBeenDoneOnNonAwtThreadInConsumeBuckProjectGenerationProgressThenFail() {
    MockProject project = initProject();
    BuckEventsConsumer buckEventsConsumer = initialiseEventsConsumer(project);
    MockTreeModelListener listener = addListeners(project);

    buckEventsConsumer.attach(null);
    assertFalse(listener.calledOnWrongThread);
    assertTrue(buckEventsConsumer.isAttached());

    buckEventsConsumer.consumeBuckProjectGenerationProgress(0, 0);
    assertFalse(listener.calledOnWrongThread);
  }

  @Test
  public void hasUIWorkBeenDoneOnNonAwtThreadInConsumeBuckProjectGenerationStartedThenFail() {
    MockProject project = initProject();
    BuckEventsConsumer buckEventsConsumer = initialiseEventsConsumer(project);
    MockTreeModelListener listener = addListeners(project);

    buckEventsConsumer.attach(null);
    assertFalse(listener.calledOnWrongThread);
    assertTrue(buckEventsConsumer.isAttached());

    buckEventsConsumer.consumeBuckProjectGenerationStarted(0);
    assertFalse(listener.calledOnWrongThread);
  }

  @Test
  public void hasUIWorkBeenDoneOnNonAwtThreadInConsumeCompilerErrorThenFail() {
    MockProject project = initProject();
    BuckEventsConsumer buckEventsConsumer = initialiseEventsConsumer(project);
    MockTreeModelListener listener = addListeners(project);

    buckEventsConsumer.attach(null);
    assertFalse(listener.calledOnWrongThread);
    assertTrue(buckEventsConsumer.isAttached());

    buckEventsConsumer.consumeCompilerError("", 0, "", ImmutableSet.<String>of());
    assertFalse(listener.calledOnWrongThread);
  }

  @Test
  public void hasUIWorkBeenDoneOnNonAwtThreadInConsumeConsoleEventThenFail() {
    MockProject project = initProject();
    BuckEventsConsumer buckEventsConsumer = initialiseEventsConsumer(project);
    MockTreeModelListener listener = addListeners(project);

    buckEventsConsumer.attach(null);
    assertFalse(listener.calledOnWrongThread);
    assertTrue(buckEventsConsumer.isAttached());

    buckEventsConsumer.consumeConsoleEvent("");
    assertFalse(listener.calledOnWrongThread);
  }

  @Test
  public void hasUIWorkBeenDoneOnNonAwtThreadInConsumeInstallFinishedThenFail() {
    MockProject project = initProject();
    BuckEventsConsumer buckEventsConsumer = initialiseEventsConsumer(project);
    MockTreeModelListener listener = addListeners(project);

    buckEventsConsumer.attach(null);
    assertFalse(listener.calledOnWrongThread);
    assertTrue(buckEventsConsumer.isAttached());

    buckEventsConsumer.consumeInstallFinished(0, "");
    assertFalse(listener.calledOnWrongThread);
  }

  @Test
  public void hasUIWorkBeenDoneOnNonAwtThreadInConsumeParseRuleEndThenFail() {
    MockProject project = initProject();
    BuckEventsConsumer buckEventsConsumer = initialiseEventsConsumer(project);
    MockTreeModelListener listener = addListeners(project);

    buckEventsConsumer.attach(null);
    assertFalse(listener.calledOnWrongThread);
    assertTrue(buckEventsConsumer.isAttached());

    buckEventsConsumer.consumeParseRuleEnd(0);
    assertFalse(listener.calledOnWrongThread);
  }

  @Test
  public void hasUIWorkBeenDoneOnNonAwtThreadInConsumeParseRuleStartThenFail() {
    MockProject project = initProject();
    BuckEventsConsumer buckEventsConsumer = initialiseEventsConsumer(project);
    MockTreeModelListener listener = addListeners(project);

    buckEventsConsumer.attach(null);
    assertFalse(listener.calledOnWrongThread);
    assertTrue(buckEventsConsumer.isAttached());

    buckEventsConsumer.consumeParseRuleStart(0);
    assertFalse(listener.calledOnWrongThread);
  }

  @Test
  public void hasUIWorkBeenDoneOnNonAwtThreadInConsumeParseRuleProgressUpdateThenFail() {
    MockProject project = initProject();
    BuckEventsConsumer buckEventsConsumer = initialiseEventsConsumer(project);
    MockTreeModelListener listener = addListeners(project);

    buckEventsConsumer.attach(null);
    assertFalse(listener.calledOnWrongThread);
    assertTrue(buckEventsConsumer.isAttached());

    buckEventsConsumer.consumeParseRuleProgressUpdate(0, 0);
    assertFalse(listener.calledOnWrongThread);
  }

  @Test
  public void hasUIWorkBeenDoneOnNonAwtThreadInConsumeTestResultsAvailableThenFail() {
    MockProject project = initProject();
    BuckEventsConsumer buckEventsConsumer = initialiseEventsConsumer(project);
    MockTreeModelListener listener = addListeners(project);

    buckEventsConsumer.attach(null);
    assertFalse(listener.calledOnWrongThread);
    assertTrue(buckEventsConsumer.isAttached());

    buckEventsConsumer.consumeTestResultsAvailable(0, new MockTestResults());
    assertFalse(listener.calledOnWrongThread);
    buckEventsConsumer.consumeTestResultsAvailable(1, new MockTestResults());
    assertFalse(listener.calledOnWrongThread);
  }

  @Test
  public void hasUIWorkBeenDoneOnNonAwtThreadInConsumeTestRunCompleteThenFail() {
    MockProject project = initProject();
    BuckEventsConsumer buckEventsConsumer = initialiseEventsConsumer(project);
    MockTreeModelListener listener = addListeners(project);

    buckEventsConsumer.attach(null);
    assertFalse(listener.calledOnWrongThread);
    assertTrue(buckEventsConsumer.isAttached());

    buckEventsConsumer.consumeTestRunComplete(0);
    assertFalse(listener.calledOnWrongThread);
  }

  @Test
  public void hasUIWorkBeenDoneOnNonAwtThreadInConsumeTestRunStartedThenFail() {
    MockProject project = initProject();
    BuckEventsConsumer buckEventsConsumer = initialiseEventsConsumer(project);
    MockTreeModelListener listener = addListeners(project);

    buckEventsConsumer.attach(null);
    assertFalse(listener.calledOnWrongThread);
    assertTrue(buckEventsConsumer.isAttached());

    buckEventsConsumer.consumeTestRunStarted(0);
    assertFalse(listener.calledOnWrongThread);
  }
}


text:
Page Not Found Error 404

The page you requested could not be found, either contact your webmaster or try again. Use your browsers Back button to navigate to the page you have prevously come from

Or you could just press this neat little button:

                 Take Me Home


text:
<?php

namespace Magento\TestModule5\Service\V2;

/**
 * Both SOAP and REST Version TWO
 * @package Magento\TestModule5\Service\V2
 */
interface AllSoapAndRestInterface
{
    /**
     * Retrieve existing item.
     *
     * @param int $id
     * @return \Magento\TestModule5\Service\V2\Entity\AllSoapAndRest
     * @throws \Magento\Framework\Webapi\Exception
     */
    public function item($id);

    /**
     * Retrieve a list of all existing items.
     *
     * @return \Magento\TestModule5\Service\V2\Entity\AllSoapAndRest[]
     */
    public function items();

    /**
     * Add new item.
     *
     * @param \Magento\TestModule5\Service\V2\Entity\AllSoapAndRest $item
     * @return \Magento\TestModule5\Service\V2\Entity\AllSoapAndRest
     */
    public function create(\Magento\TestModule5\Service\V2\Entity\AllSoapAndRest $item);

    /**
     * Update one item.
     *
     * @param \Magento\TestModule5\Service\V2\Entity\AllSoapAndRest $item
     * @return \Magento\TestModule5\Service\V2\Entity\AllSoapAndRest
     */
    public function update(\Magento\TestModule5\Service\V2\Entity\AllSoapAndRest $item);

    /**
     * Delete existing item.
     *
     * @param string $id
     * @return \Magento\TestModule5\Service\V2\Entity\AllSoapAndRest
     */
    public function delete($id);
}


text:
package com.blueconic.browscap.impl;

import com.blueconic.browscap.Capabilities;

/**
 * Instances of this class represent a line of the browscap data. This class is responsible for checking a potential
 * match and for supplying the corresponding browser properties.
 */
class Rule {

    // The properties of the matching pattern
    private final Literal myPrefix;
    private final Literal[] mySuffixes;
    private final Literal myPostfix;

    // The size of the pattern
    private final int mySize;

    // The browser properties
    private final Capabilities myCapabilities;

    /**
     * Creates a new rule.
     * @param prefix The prefix of the matching pattern, potentially null
     * @param suffixes The required substrings separated by wildcards, potentially null to indicate no
     *            wildcards
     * @param postfix The postfix of the matching pattern, potentially null
     * @param pattern The original string representation of the matching pattern
     * @param capabilities The browser properties for this rule
     */
    Rule(final Literal prefix, final Literal[] suffixes, final Literal postfix, final String pattern,
            final Capabilities capabilities) {
        myPrefix = prefix;
        mySuffixes = suffixes;
        myPostfix = postfix;
        myCapabilities = capabilities;
        mySize = pattern.length();
    }

    /**
     * Return the prefix.
     * @return the prefix, possibly null
     */
    Literal getPrefix() {
        return myPrefix;
    }

    /**
     * The required substrings separated by wildcards, potentially null to indicate no wildcards
     * @return The required substrings.
     */
    Literal[] getSuffixes() {
        return mySuffixes;
    }

    /**
     * Return the postfix.
     * @return the postfix, possibly null
     */
    Literal getPostfix() {
        return myPostfix;
    }

    /**
     * Tests whether this rule needs a specific string in the useragent to match.
     * @return true if this rule can't match without the specific substring, false otherwise.
     */
    boolean requires(final String value) {
        if (requires(myPrefix, value) || requires(myPostfix, value)) {
            return true;
        }

        if (mySuffixes == null) {
            return false;
        }
        for (final Literal suffix : mySuffixes) {
            if (requires(suffix, value)) {
                return true;
            }
        }
        return false;
    }

    private static boolean requires(final Literal literal, final String value) {
        return literal != null && literal.requires(value);
    }

    Capabilities getCapabilities() {
        return myCapabilities;
    }

    int getSize() {
        return mySize;
    }

    final boolean matches(final SearchableString value) {

        // Inclusive
        final int start;
        if (myPrefix == null) {
            start = 0;
        } else if (value.startsWith(myPrefix)) {
            start = myPrefix.getLength();
        } else {
            return false;
        }

        // Inclusive
        final int end;
        if (myPostfix == null) {
            end = value.getSize() - 1;
        } else if (value.endsWith(myPostfix)) {
            end = value.getSize() - 1 - myPostfix.getLength();
        } else {
            return false;
        }

        return checkWildCards(value, mySuffixes, start, end);
    }

    // Static for inline (2x)
    static boolean checkWildCards(final SearchableString value, final Literal[] suffixes, final int start,
            final int end) {

        if (suffixes == null) {
            // No wildcards
            return start == end + 1;
        }

        // One wildcard
        if (suffixes.length == 0) {
            return start <= end + 1;
        }

        int from = start;
        for (final Literal suffix : suffixes) {

            final int match = checkWildCard(value, suffix, from);
            if (match == -1) {
                return false;
            }

            from = suffix.getLength() + match;
            if (from > end + 1) {
                return false;
            }
        }

        return true;
    }

    // Return found index or -1
    private static int checkWildCard(final SearchableString value, final Literal suffix, final int start) {
        for (final int index : value.getIndices(suffix)) {
            if (index >= start) {
                return index;
            }
        }
        return -1;
    }

    /**
     * Returns the reconstructed original pattern.
     * @return the reconstructed original pattern
     */
    String getPattern() {
        final StringBuilder result = new StringBuilder();

        if (myPrefix != null) {
            result.append(myPrefix);
        }
        if (mySuffixes != null) {
            result.append("*");
            for (final Literal sub : mySuffixes) {
                result.append(sub);
                result.append("*");
            }
        }
        if (myPostfix != null) {
            result.append(myPostfix);
        }
        return result.toString();
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public String toString() {
        return getPattern() + " : " + myCapabilities;
    }
}


text:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:gravity="center"
              android:orientation="vertical">

    <ImageView
        android:id="@+id/img"
        android:src="@drawable/unnamed"
        android:layout_width="300dp"
        android:layout_height="300dp"
        android:contentDescription="@null"/>

</LinearLayout>


text:
import logging

def configure_logging(console_log_level=logging.INFO,
                      console_log_format=None,
                      file_log_path=None,
                      file_log_level=logging.INFO,
                      file_log_format=None,
                      clear_handlers=False):
    """Setup logging.

    This configures either a console handler, a file handler, or both and
    adds them to the root logger.

    Args:
        console_log_level (logging level): logging level for console logger
        console_log_format (str): log format string for console logger
        file_log_path (str): full filepath for file logger output
        file_log_level (logging level): logging level for file logger
        file_log_format (str): log format string for file logger
        clear_handlers (bool): clear existing handlers from the root logger

    Note:
        A logging level of `None` will disable the handler.
    """
    if file_log_format is None:
        file_log_format = \
            '%(asctime)s %(levelname)-7s (%(name)s) %(message)s'

    if console_log_format is None:
        console_log_format = \
            '%(asctime)s %(levelname)-7s (%(name)s) %(message)s'

    # configure root logger level
    root_logger = logging.getLogger()
    root_level = root_logger.level
    if console_log_level is not None:
        root_level = min(console_log_level, root_level)
    if file_log_level is not None:
        root_level = min(file_log_level, root_level)
    root_logger.setLevel(root_level)

    # clear existing handlers
    if clear_handlers and len(root_logger.handlers) > 0:
        print("Clearing {} handlers from root logger."
              .format(len(root_logger.handlers)))
        for handler in root_logger.handlers:
            root_logger.removeHandler(handler)

    # file logger
    if file_log_path is not None and file_log_level is not None:
        log_dir = os.path.dirname(os.path.abspath(file_log_path))
        if not os.path.isdir(log_dir):
            os.makedirs(log_dir)
        file_handler = logging.FileHandler(file_log_path)
        file_handler.setLevel(file_log_level)
        file_handler.setFormatter(logging.Formatter(file_log_format))
        root_logger.addHandler(file_handler)

    # console logger
    if console_log_level is not None:
        console_handler = logging.StreamHandler()
        console_handler.setLevel(console_log_level)
        console_handler.setFormatter(logging.Formatter(console_log_format))
        root_logger.addHandler(console_handler)


text:
layout: post
title: About
description: "Hello!!! It's me"
tags: [about]
modified: 2016-06-30
image:
  feature: favicon.png
comments: true
---

<figure class="half center">
	<img src="/images/avatar.jpg" alt="">
</figure>

Tran, Viet Cuong
================
* Email: [vietcuong89ks@gmail.com](vietcuong89ks@gmail.com)
* Github: [wwww.github.com/cuongtv89ks](https://github.com/cuongtv89ks)
* PDF file: [CV]()

Profile
=======
* Strategic Planning
* Research & Development
* Teamwork
* Technical Leadership
* Analytical Thinking
* Problem Solving

Embedded Engineer with over 5 years' experience and strong technical/coding background who plays a
key part in developing and documenting embedded software and hardware for prototypes and product
from release to production

Working experience
==================
**Jan '18 – Present: Embedded Engineer at Olive Union, Seoul, Korea (start-up)**

Smart Hearing Aid (www.oliveunion.com): integrated smart sound algorithms and Bluetooth earpiece
technology.
* Wrote maintainable and extensible code for CSR8765 & QCC5120 (Qualcomm audio Bluetooth chips).
* Implemented and modified A2DP profile, HF profile (Classic Bluetooth)
* BLE (smart Bluetooth 4.2 & 5.0): GAIA protocol (communicate between host and device)
* Implemented Noise Reduction Algorithm for hearing aid feature.
* Analyzing hardware features and schematic to apply key principles for designing PCB.
* Supported for Mobile Developers to transfer data between smart phone and smart hearing aid.
* Developed a factory tool to let the end user rapidly flash the firmware onto a compatible PCB
* Audio testing and experimenting for hearing aid
* Developed an in house app for iOS to quickly test and modify features for mobile app.

**Mar '16 – Dec '17: Research Engineer at USNLAB - Keimyung University, Daegu, Korea***

Researched and designed embedded hardware and software systems:
* [Smart wearable controlling system by hand fingers gesture recognition]()
* [Smart Mirror for applying the IoT technology with Artik platform]()
* [Gesture control armband using single EMG and IMU sensor](http://cuongtv.com/project/Gesture-Control-Armband-using-Single-EMG-and-IMU-sensor/)
* [Smart wearable body equilibrium correction system with mobile device](http://cuongtv.com/project/Smart-Wearable-Body-Equilibrium-Correction-System-with-Mobile-Device/)

**Utilized:** OpenCV, Machine Learning, Amazon Cloud AWS, Python, C/C++, Qt (cross platform), Arduino,
Signal Processing, Healthcare Sensors (EMG, PPG, GSR, EEG, ECG, IMU), Linux Embedded Platforms

**Aug '11 - Jul '14: Project Executive at Hanel Professional Electronics JSC, Hanoi, Vietnam**

Consulting, designing, providing solutions:
* Smart City: Lighting management and control system
* Educational Robotics for Thai Nguyen University of Technology: Object sorting ABB Robot based on
shape and color
* Smart language classroom system for University of Technology and Education Ho Chi Minh

Education
=========

**Mar '16 – Feb' 18: M.s in Electrical and Electronics Engineering, Keimyung University**
* **Thesis**: *Smart Wearable controlling system by hand fingers gesture recognition.* [(demo)](https://www.youtube.com/watch?v=xYD6fA76y_g)

**Sep '07 – Jun '11: B.s in Electronics and Telecommunications, Vietnam National University**
* **Thesis**: *Building system measure and control using Power Line Communication technology, Standard Lonworks* [(demo)](https://www.youtube.com/watch?v=JJyp_-AzI58&feature=youtu.be)

Publication
===========

1. **Viet-Cuong Tran**, and Boon-Giin Lee, "Gesture Control Armband using EMG and IMU sensor", *Sensors 2017* (submitted).
2. **Viet-Cuong Tran**, Boon-Giin Lee, "Smart Wearable Controlling System by Hand and Fingers Gesture Recognition", *IEEE Sensors Journal* (processing).
3. Lee Boon Giin, Chong Teak Wei, **Tran Viet Cuong**, and Lee Su Min, "Smart Wearable Body Equilibrium Correction System with Mobile Device", *The International Conference on Computer Science and Application Engineering*, Shanghai, China, 21-23 October 2017.
4. Lee Boon Giin, **Tran Viet Cuong**, and Chong Teak Wei, "Smart Hand device Gesture Recognition with Dynamic Time Warping Method", *International Conference on Big Data and Internet of Things*, London, UK, 20-22 December 2017.

Awards
======
* 2017 --- **Encouragement Prize Award** in 4th Industrial Revolution Talen Cultivation Federation, Korea
* 2016 --- **Third Prize Award** in [Wearable Computing Contest, KAIST, Korea](http://www.ufcom.net/)
* 2014 --- **Korean Government Scholarship Program**, [NIIED](http://www.niied.go.kr/eng/main.do)
* 2011 --- **Encourage academic scholarship** of University of Engineering and Technology.
* 2010 --- **Consolation prizes for research**, Vietnam National University, VNU.

Skills
======
* **Programming:** C/C++, Python, Matlab, Swift, Objective-C, Assembly
* **Research:** Machine Learning, Cloud Computing, IoT, Home Automation, Embedded System, Healthcare Systems
* **platform:** Qt, Kivy
* **PCB design:** Altium Designer
* **3D design:** Autodesk fusion 360
* **Participation:** team work soft skill, mind maps soft skill

Language
========
* **Vietnamese**: Mother Tongue
* **English**: fluently
* **Korean**: TOPIK3, KIIP4