text:
Simulink and Embedded Coder generates and executes C and C++ from Simulink diagrams, Stateflow charts and MATLAB functions. With MbedTarget the generated code is built on top of MbedOS and executed as a real time application on Mbed compatible microcontroller boards. MbedTarget is an addition to Simulink and Embedded coder. It needs MATLAB versions 2016b. Newer versions may work but are not fully tested.

## MATLAB/Simulink targets for Cortex-M controller

Beside MbedTarget other, similar targets exists:

- Embedded Coder Support Package for STMicroelectronics Discovery Boards (Version 2016b)

  https://de.mathworks.com/help/supportpkg/stmicroelectronicsstm32f4discovery/index.html?s_tid=srchtitle

  https://de.mathworks.com/matlabcentral/fileexchange/43093-embedded-coder-support-package-for-stmicroelectronics-discovery-boards?s_tid=srchtitle

- Simulink Coder Support Package for STMicroelectronics Nucleo Boards (Version 2016b)

  https://de.mathworks.com/help/supportpkg/nucleo/index.html?s_tid=srchtitle

  https://de.mathworks.com/matlabcentral/fileexchange/58942-simulink-coder-support-package-for-stmicroelectronics-nucleo-boards?s_tid=srchtitle

- STM32-MAT/TARGET (Version 4.4.1 and STM32CubeMX 4.22)

  http://www.st.com/en/development-tools/stm32-mat-target.html

- Waijung Blockset (Version 17_03a)

  http://waijung.aimagin.com/

All targets implementing necessary information to use Simulink and Embedded Coder with mostly STM32 microcontroller. Each target has its advantage and disadvantage:

 - Support Package for STMicroelectronics Boards

   - Partial based on the old, no longer supported standard peripheral library, partly based on Mbed&STM32Cube libraries
   - Integrated gcc support
   - F4Discovery:
     - Included blocks: ADC, GPIO, Audio out/in, Interrupt Handler
     - All pins are usable

   - other boards:
     - Included blocks: ADC, GPIO, SPI, I2C, PWM, Audio out/in
     - Pins restricted to Arduino pins
     - Only one Discovery board and a few Nucleo boards are supported

   - running a model is a single step process: generating code in Simulink incorporates compiling, linking and flashing
   - Simple model:

     ![image intro0](https://raw.githubusercontent.com/ATM-HSW/mbed_target/master/doc/images/intro0.png)

 - STM32-MAT/TARGET

   - STM32CubeMX is integrated – each supported STM32 MCU can be used
   - all IDEs/compiler supported by STM32CubeMX: EWARM, Keil MDK V4 and V5, TrueSTUDIO, SW4STM32 and Makefile (GCC)
   - included blocks: ADC, DAC, GPIO, CAN, I2C, SPI, UART, (High Res)Timers, Watchdog
   - a deep support of the hardware block functionality
   - running a model is a twostep process: generating code in Simulink and afterwards compiling/linking the code in an IDE
   - Simple model:

     ![image intro1](https://raw.githubusercontent.com/ATM-HSW/mbed_target/master/doc/images/intro1.png)

 - Waijung Blockset

   - Support STM32F0, STM32F4 and NRF51422/822
   - Supports EWARM, Keil MDK, Makefile (GCC)
   - Commercial product
   - included blocks (STM32F4): ADC, DAC, GPIO, CAN, I2C, SPI, UART, SDIO, TIMER, CRC, DCMI, FLASH, FSMC, RCC, RESET, RTC and additional blocks for several Waijung hardware extensions
   - a deep support of the hardware block functionality
   - Simple model:

     ![image intro2](https://raw.githubusercontent.com/ATM-HSW/mbed_target/master/doc/images/intro2.png)

The main disadvantage of all targets: They are closed source. Own extensions are difficult to realize or even not possible. The supported MCUs depends on the manufacturer, mainly STM32 products are supported.

Mathworks offers some more targets like NXP KL25Z and K64F, Infineon XMC and BBC micro:bit. Although the selection of Cortex-M controllers is huge, the selection of targets is quite restricted.

MbedTarget is completely open from both sides: MATLAB code, templates, configurations etc. as well as the MCU libraries. It is based on MbedOS 5, therefore theoretical all MbedOS 5 compatible microcontroller boards can be used to run Simulink models. It must be said theoretically, since (i) it is tested mostly with STM32 based boards and (ii) it is supporting the port pin naming scheme as used by STM (PA_0, PB_12, …). Wiznet, Realtek and Nuvoton are using the same scheme, MCUs of other vendors use a different scheme. A universal pin naming scheme is planned for the near future.

Because of the Mbed library, the support of the controller hardware is much more general. Mbed offers a generalised view of the controller hardware blocks, please see the documentation there (https://mbed.com).

## Principle of MATLAB/Simulink code generation

The principle workflow when processing a Simulink model to an executable binary is shown in the following figure.

  ![image codegen1](https://raw.githubusercontent.com/ATM-HSW/mbed_target/master/doc/images/SimulinkCodeGeneration1.png)

Simulink or Embedded Coder are generating an rtw file from the model. That is a specific textual representation of the model. Together with tlc files which are part of MATLAB and of the specific Simulink target, the target language compiler generates several c/cpp/h files and a Makefile. The following steps depends on the specific target.

The standard way to use a Simulink target is the model configuration. Under Code Generation a System target file can be chosen. But other ways exist.

## Code generation in MbedTarget

MbedTarget uses the standard way based on selecting a tlc file: mbed.tlc is the option that has to be chosen for the Embedded Coder. A Simulink Coder based System target file is in preparation. The following figure depicts some more MbedTarget specific details of the above depicted procedure:

  ![image codegen2](https://raw.githubusercontent.com/ATM-HSW/mbed_target/master/doc/images/SimulinkCodeGeneration2.png)

The target language compiler offers several hooks to customise the code generation process. Mainly two hooks are used: *before calling make* and *after calling make*. The whole procedure can be described with the following steps:

1. The TLC uses the current MATLAB working path. All generated files are stored in a folder with a name constructed by the Simulink model name and slprj, e.g. blinky_slprj. During this process MATLAB/Simulink tlc files where used for each standard Simulink block. For all Simulink blocks from the MbedTarget Simulink library one tlc file exits. They can be found under mbed_target\blocks\mex\tlc_c. Beside the c/cpp/h files also a makefile is created based on the template makefile mbed.tmf. This makefile needs an additional include file, generated within the next step.

2. During the hook call *before calling make* a target specific folder is created under mbed_taget/targets, e.g. blinky_NUCLEO_F767ZI_slprj. The name is constructed by Simulink model name, target name and slprj. Into this folder all generated files are copied from the original folder under the current MATLAB working path. During the hook an MbedOS 5 specific include file is generated by the Mbed offline tools with the following call:

 `python ..\mbed-os\tools\project.py -m  target  -i simulink --source . --source ..\mbed-os --source ..\libraries`

 This include file is very similar to a standard gcc makefile generated by the gcc_arm exporter, but is adapted to the needs of the Simulink build process. This Simulink exporter is not part of the official MbedOS library but can be incorporated into it by applying a patch.

3. After the hook before calling make make.exe is called and a bin file is created.

4. During the hook *after calling make* depending on the chosen flash method, the bin file is flash to the target MCU. The standard Mbed flash method just copies the bin to the target USB drive.

The following figures depict this process. The Simulink model *board_unspecific_blinky* is built by pressing the Build Model button. MATLAB creates a folder *board_unspecific_blinky_slprj* in the current working path. In this folder all generated files are stored. When this is finished, the first hook is called by MATLAB.

  ![image codegen3](https://raw.githubusercontent.com/ATM-HSW/mbed_target/master/doc/images/SimulinkCodeGeneration3.png)

During this call a new target specific folder is created under mbed_target/target. The original folder name is extended by the target name, e.g. *board_unspecific_blinky_NUCLEO_F446RE_slprj* and *board_unspecific_blinky_NUCLEO_L476RGslprj* for the above model and two different targets NUCLEO_F446RE and NUCLEO_L476RG. All generated files are copied to this folder and a make include file is generated by the Mbed offline tools (target_tools.mk). The first used hook method ends here.

  ![image codegen4](https://raw.githubusercontent.com/ATM-HSW/mbed_target/master/doc/images/SimulinkCodeGeneration4.png)

MATLAB calls make.exe itself. Makefile and make file include (target_tools.mk) can be found under BUILD. Target-specific object files are created into this folder, MbedOS and libraries object files lies in the folder with the same name. This structure is defined by MbedOS export system. The final bin file, e.g. *board_unspecific_blinky.bin* can be found under *BUILD*.

During the second hook, this file is flashed to the target board. When it is an Mbed compatible board, it has a mass storage programming method. That means the bin file can be copied to its USB drive. Other programming methods exits as batch files under mbed_target/targets_flash. The method can be chosen under the Mbed specific options under Code Generation in the model configuration.

## MbedTarget Simulink block usage

This chapter describes shortly the components of an MbedTarget Simulink block. The Digital Output block is one of the simplest blocks:

  ![image codegen6](https://raw.githubusercontent.com/ATM-HSW/mbed_target/master/doc/images/SimulinkCodeGeneration6.png)

With a double click a configuration dialog opens:

  ![image codegen7](https://raw.githubusercontent.com/ATM-HSW/mbed_target/master/doc/images/SimulinkCodeGeneration7.png)

The block has 4 parameters:

- Port Name and Pin Number to choose a GPIO, e.g. PA0
- Output Mode for pull up, pull down, open drain, … - options corresponds to Mbed options of the DigitalInOut class.
- Sample time defines the time period, the GPIO is written. A -1 inherits from the block which writes a value to this one. When every block uses a -1 the global value is chosen, i.e. default value of 1ms. This value can be configured in the model configuration under Solver. A positive value >0 defines the time period for this block. The value has to be multiple of the global step size.

These two parts are everything which is necessary to create Simulink models.

## MbedTarget Simulink block creation

To implement custom Simulink blocks, 4 elements are necessary in the minimum:

1. Block with mask
2. and parameter - both are part of the target Simulink library
3. S-function - C functions
4. TLC file - mixture of target language code and C7C++ code

### 1. Block mask

 The following figure shows three register cards of the mask editor:

  ![image codegen8](https://raw.githubusercontent.com/ATM-HSW/mbed_target/master/doc/images/SimulinkCodeGeneration8.png)

The first defines the outlook of the block as shown in the model editor. Normal MATLAB function can be used within the editor textfield to plot and/or write graphics and text or write input and output labels.

The second card defines the input fields available in the Block Parameters dialog.

The last card defines the block title, a short help text and a command that is called when the help menu item in the context menu of the block is chosen.

### 2. Block parameter

 The following figure depicts the Block Parameter (S-Function) dialog:

 ![image codegen9](https://raw.githubusercontent.com/ATM-HSW/mbed_target/master/doc/images/SimulinkCodeGeneration9.png)

 It can be found in the context menu of the block.

The S-function name is the name of the corresponding mexw64 and tlc file, e.g. digitalOutput.mexw64 and digitalOutput.tlc. The mexw64 is a binary, namely a special DLL, compiled from a corresponding c file. These files can be found under mbed_target\blocks, mbed_target\blocks\mex\sourcen and mbed_target\blocks\mex\tlc_c

### 3. S-function

 In MbedTarget the S-function mainly describes the behaviour of the block: number and type of input and output ports, checks parameter and prepares the transfer of these to the TLC and the tlc file.

### 4. TLC file

 The tlc file is a mixture of tlc code, a script like language, and cpp code, i.e. Mbed cpp code in a form like snippets. The tlc script code controls the usage of the cpp snippets and how and where they appear in the final generated code. The tlc file consist mainly of three part: Setup, Start and Output. Setup controls the inclusion of additional header and c files. Start is executed once to generate initialization code and Outputs is called in every simulation loop. Even if the name is Outputs, the function has to handle also input values.

 In the following Start and Output function are described in detail:

 ```
  %% Function: Start ========================================================
  %function Start(block, system) Output
    %if !SLibCodeGenForSim()
      %assign nPortName = LibBlockParameterValue(PortName, 0)
      %assign nPinNumber = LibBlockParameterValue(PinNumber, 0)
      %assign pname = "P" + FEVAL("char",nPortName+64) + "_" + FEVAL("int2str",nPinNumber-1)
```

 The first two line fetches the variables from the block mask dialog and creates the pin name as used for STM32 microcontroller, e.g. PA_0, and assigns it to the third variable.

```
      %assign name = FEVAL("strrep",LibGetFormattedBlockPath(block),"/","_")
      %assign name = FEVAL("strrep",name," ","_")
      %assign name = FEVAL("strrep",name,"-","_")
```

 These three lines create a unique name based on the complete block path, e.g. *board_unspecific_blinky_LED* for a block LED in a Simulink model *board_unspecific_blinky*. The Simulink path contains '/' for its components (model name, submodel names, block name). This character and spaces and minus characters are replaced by underscore. So all other characters in model name, submodel names and block names has to be compliant to c/c++ naming scheme.

 ```
      %openfile declbuf
      // %<Type> (digitalOutput): '%<Name>'
      DigitalInOut %<name>(%<pname>);
      %closefile declbuf

      %assign srcFile = LibGetModelDotCFile()
      %<LibSetSourceFileSection(srcFile, "Declarations", declbuf)>
 ```

 These lines creates one line in the declaration section. Based on this template:

  `DigitalInOut %<name>(%<pname>);`

 and by substituting the variables *name* and *pname* with the above created values, a code line like:

  `DigitalOut board_unspecific_blinky_Digital_Output(PA_0);`

 is created.

```
      %assign nOutputMode = LibBlockParameterValue(OutputMode, 0)
      %<name>.output();
      %% PullDefault, PullUp, PullDown, PullNone, Repeater, OpenDrain: not every variant is defined in every MbedTarget
      %switch(nOutputMode)
        %case 1
          %<name>.mode(PullDefault);
          %break
        %case 2
          %<name>.mode(PullUp);
          %break
        %case 3
          %<name>.mode(PullDown);
          %break
        %case 4
          %<name>.mode(PullNone);
          %break
        %case 5
          %<name>.mode(Repeater);
          %break
        %case 6
          %<name>.mode(OpenDrain);
          %break
        %default
          %<name>.mode(PullDefault);
          %break
      %endswitch
    %endif
  %endfunction
```

These lines put a single line into the initialize method to configure the output port mode.

```
  board_unspecific_blinky_Digital_Output.output();
  board_unspecific_blinky_Digital_Output.mode(PullDefault);
```

The switch-case, implemented in TLC script code, is interpreted by the TLC but did not appear in the generated c/cpp code.

This block is not enclosed by the openfile - closefile construct as the previous block. Everything in Start without this enclosure is put into the initialize method. With this enclosure other positions can be chosen, e.g. "Declarations" for global variables. Please have a look into the appropriate MATLAB documentation for all possibilities.

```
  %% Function: Outputs ======================================================
  %function Outputs(block, system) Output
   %if !SLibCodeGenForSim()
     %assign u1_val = LibBlockInputSignal(0, "", "", 0)
```

 The code generated by the Outputs function of each block is called once in the step function. So it is called with the period step size as configured in the Solver section of the model configuration or less often when the Sample Time option is used.

 The above line assigns the value at the block input port to the variable *u1_val*.

 ```
    %assign name = FEVAL("strrep",LibGetFormattedBlockPath(block),"/","_")
    %assign name = FEVAL("strrep",name," ","_")
    %assign name = FEVAL("strrep",name,"-","_")
 ```

 To be able to write the value to the instance of DigitalInOut, the instance name is necessary. It is generated identical to the Start method.

 ```
     %%
     %<name> = %<u1_val>;
     %%
   %endif
  %endfunction
```

 These lines put a single line into the step function: the value *u1_val* is written to the instance *name* of DigitalInOut.

 All other blocks are working similar, more or less. For the complete documentation, please have a look into the Matlab documentation and into the source code of the other blocks. The block documentation contains a detailed descriptions of the block, its interface, usage and the code generated by the corresponding tlc files.

## MbedTarget main function

To create the main function, MbedTarget contains a template file: mbed_srmain.tlc. The target supports the single task model of Simulink. For this and the other models please have a look into the appropriate MATLAB documentation.

The cpp file name with the main function is always *ert_main.cpp*.

In MbedOS 5, the real time kernel is always enabled. That's why when choosing MbedOS 5 in the model configuration, RTOS supports is always enabled. When choosing Mbed 2, it is possible to create the main function without using RTOS functions.

Depending on the *UseMbedRTOS* flag, two different main variants are created:

### 1. with RTOS

```c_cpp
  #include "board_unspecific_blinky.h"
  #include "mbed.h"
  #include "rtos.h"
  #define STEP_SIZE_US  1000.0F    // Sample Time in microseconds
  #define STEP_SIZE_MS  1.0F       // and in milliseconds
```

 The step sizes are calculated based on the globally configured model step size.

 ```
  osThreadId step_id;
  Thread step_1_thread;
  Ticker step_1_ticker;

  void step_thread()
  {
    step_id = Thread::gettid();
    while (1) {
      Thread::signal_wait(0x1,osWaitForever);
      board_unspecific_blinky_step();

      // Get model outputs here
    }
  }

  void step_callback()
  {
    osSignalSet(step_id, 0x1);
  }
```

 The main loop of the thread calls the Simulink step function. The Ticker instance creates the correct timing. Both are communicating using an RTOS signal.

 ```
  // with RTOS
  int main(void)
  {
    step_1_thread.start(callback(step_thread));
    step_1_ticker.attach_us(callback(step_callback), (timestamp_t) STEP_SIZE_US);

    // initialize model
    board_unspecific_blinky_initialize();
```

 The initialization function initializes the application.

 ```
  // main task waits forever
  Thread::wait(osWaitForever);
```

 Nothing more to do for the main function.

```
  // deinitialize model
  board_unspecific_blinky_terminate();
```

 The terminate function is not used and never called in MbedTarget.

```
    return 0;
  }
```

### 2. without RTOS

```c_cpp
  #include "board_unspecific_blinky.h"
  #include "mbed.h"
  #define STEP_SIZE_US  1000.0F    // Sample Time in microseconds
  #define STEP_SIZE_MS  1.0F       // and in milliseconds

  Ticker timer;
```

 The correct timing is realized by a Ticker instance.

 ```c_cpp
  // without RTOS
  int main(void)
  {
    // initialize model
    board_unspecific_blinky_initialize();
```

 The initialization function initializes the application.

 ```c_cpp
  timer.attach_us(&board_unspecific_blinky_step, STEP_SIZE_US);
```
 The Ticker instance creates the correct timing.

 ```c_cpp
  while (true);
```

 Nothing more to do for the main function.

```c_cpp
  // deinitialize model
  board_unspecific_blinky_terminate();
```

 The terminate function is not used and never called in MbedTarget.

 ```c_cpp
    return 0;
  }
```


text:
Friedrich-Theodor Hruška (* 13. Februar 1930 in Bergkamen, Kreis Hamm; † 7. November 2013) war ein deutscher Politiker (FDP). Von 1974 bis 1978 sowie von 1982 bis 1994 war er Mitglied des Niedersächsischen Landtages.

Hruška absolvierte im Jahr 1951 das Abitur am König-Wilhelm-Gymnasium in Höxter und studierte danach in Hannover Veterinärmedizin. Das Staatsexamen legte er im Jahr 1956 ab, und er war in der Folge als Tierarzt bestallt. Im Jahr 1958 promovierte er zum Doktor der Veterinärmedizin und wurde 1965 als Tierarzt beamtet. In den Jahren 1966 bis 1968 arbeitete er als Veterinärrat in Syke, danach war er von 1968 bis 1973 in Hannoversch Münden Leiter der Regierungsveterinärratsstelle, ab 1970 zudem Veterinäroberrat. In der Regierungsveterinärratsstelle in Göttingen wurde er ab Januar 1973 als Sachgebietsleiter für Lebensmittelrecht eingesetzt. Er arbeitete von 1978 bis 1982 als Veterinärdirektor, als Leiter des Veterinäramtes von Landkreis und Stadt Göttingen. Seine Anerkennung als Fachtierarzt für Öffentliches Veterinärwesen erhielt er im Jahr 1981. Darüber hinaus absolvierte er eine Zusatzausbildung in der elektronischen Datenverarbeitung bei der Firma Siemens und studierte als Gasthörer Verwaltungsrecht an der Universität Göttingen.

Hruška trat der FDP 1967 bei. Er wurde 1972 Mitglied des Landesvorstandes und 1980 Vorsitzender des Bezirksverbandes Südniedersachsen seiner Partei. Er war Mitglied des Niedersächsischen Landtages in der 8. Wahlperiode (21. Juni 1974 bis 20. Juni 1978) und in der 10. bis 12. Wahlperiode (21. Juni 1982 bis 20. Juni 1994). Er wirkte zudem vom 10. Juli 1974 bis 20. Juni 1978 als Schriftführer des Niedersächsischen Landtages. Stellvertretender Vorsitzender der FDP-Landtagsfraktion war er vom 16. Januar 1978 bis 20. Juni 1978, 21. Juni 1982 bis 20. Juni 1986 und vom 20. Juni 1990 bis 20. Juni 1994.

1996 wurde Hruška das Verdienstkreuz am Bande des Verdienstordens der Bundesrepublik Deutschland verliehen.

Hruška war verheiratet und hatte drei Kinder.

Literatur
 Barbara Simon: Abgeordnete in Niedersachsen 1946–1994. Biographisches Handbuch. Hrsg. vom Präsidenten des Niedersächsischen Landtages. Niedersächsischer Landtag, Hannover 1996, S. 176.

Landtagsabgeordneter (Niedersachsen)
FDP-Mitglied
Politiker (20. Jahrhundert)
Träger des Bundesverdienstkreuzes am Bande
Deutscher
Geboren 1930
Gestorben 2013
Mann

redpajama_set_name: RedPajamaWikipedia


This page has been optimized to fit on your screen in Landscape mode, please tilt your device.
For generations, investors have looked to stock exchanges as a way to participate in the growth of both local and far-reaching economies, drawn by the hope of earning a healthy return on their investment.
As the chart below shows, a hypothetical investment of $10,000 in the S&P 500 in 1926 would have grown to more than $70 million today. The growth was supported by many bull markets that lasted around 7 years with intermittent bear markets that lasted around a year and a half on average.
Source: FactSet, S&P Dow Jones Indices as of December 31, 2018. The index is unmanaged, is not available for investment and does not incur expenses.
Source: MSNBC, FactSet, and S&P Dow Jones Indices. The index is unmanaged, is not available for investment and does not incur expenses. Daily returns are shown for the S&P 500® Index. As of December 31, 2018.
The current bull market is nearly a decade old but the rise has come with some volatility. Despite the length of this bull run, the Consumer Confidence Index is more than 5x higher than it was at the start.
Highlighted returns capture peak to trough corrections of 10% or more during the time period. Source: FactSet. As of December 31, 2018. 1 Source: The Conference Board. The Consumer Confidence Survey® reflects prevailing business conditions and likely developments for the months ahead. This monthly report details consumer attitudes and buying intentions, with data available by age, income, and region. Measurement dates: March 31, 2009, and September 25, 2018. Past performance is no guarantee of future results.
Although the S&P 500 averages 10% return since 1926, the year-to-year returns are rarely in that range.
Source: FactSet, S&P Dow Jones Indices. Data calculated from 1926-2018 using total return.
Looking at the last 20 years, the intra-year swings are dramatic.
Source: FactSet, S&P Dow Jones Indices. The index is unmanaged, is not available for investment and does not incur expenses. Data calculated from 1999-2018 using total return.
While a diversified portfolio has offered a smoother ride for investors.
Diversified Portfolio Allocation: Investment Grade Bonds (IG Bonds): 32%, Municipals (Munis): 5%, U.S. High Yield Bonds (US HYB): 5%, U.S. Large Cap Equity: (US LC): 23%, U.S. Small Cap Equity (USSC): 10%, Foreign Developed Equity (For Dev): 10%, International Small Cap (Intl SC): 5%, Emerging Markets (EM): 5%, U.S. Real Estate (REITs): 5%. Alternatives is 5% of this allocation in every other representation of the diversified portfolio in this presentation. However, daily data is not available for the HFRI Index, so it is omitted from this chart only.
Remaining invested is critical. Missing as few as 10 days can significantly impact returns.
Source: FactSet. As of December 31, 2018.
Source: FactSet. As of December 31, 2018. Past performance is no guarantee of future results.
Diversified Portfolio Allocation: Investment Grade Bonds (IG Bonds): 30%, Municipals (Munis): 5%, U.S. High Yield Bonds (US HYB): 5%, U.S. Large Cap Equity: (US LC): 20%, U.S. Small Cap Equity (US SC): 10%, Foreign Developed Equity (For Dev): 10%, International Small Cap (Intl SC): 5%, Emerging Markets (EM): 5%, U.S. Real Estate (REITs): 5%, and Alternatives (Alts): 5%.
A Diversified Portfolio* has historically smoothed out the ride over the long term without sacrificing returns.
The chart below demonstrates the unpredictable nature of individual asset class returns in a different way. In this chart, U.S. large cap equities are used as the "anchor" asset class. Compared to the anchor, you can see that the performance of some asset classes is erratic; a category that beat U.S. large caps one year can easily underperform in the next year. But when a number of asset classes are combined into one diversified portfolio (the orange rectangles), some of that unpredictability may be removed.
Click here for a list of representative indices. Past performance is no guarantee of future results.
* The diversified portfolio is rebalanced to the original allocation annually.
A diversified portfolio has the potential to smooth the ride while reducing losses.
Source: Barclays, FactSet, Standard & Poor's as of As of December 31, 2018. Past performance is no guarantee of future results.
Bear Market defined as peak-to-trough decline of at least 20 percent.
Source: FactSet, S&P Dow Jones Indices. See disclosures below for representative indices. Past performance is no guarantee of future results.
Standard Deviation (Std. Dev.): A measure of risk; it calculates the variability of returns by comparing the Fund's return in each period with the average Fund return across all periods.
Investments in debt securities are subject to credit and interest rate risk. An increase in interest rates typically causes the value of bonds and other fixed income securities to fall.
The Bloomberg Barclays U.S. Municipal Bond Index (representing U.S. Muni Bonds) is a broad-based benchmark that measures the investment grade, U.S. Dollar-denominated, fixed tax exempt bond market. The index includes state and local general obligation, revenue, insured, and pre-refunded bonds.
The HFRI Fund Weighted Composite Index (Representing Alternatives): is a global, equal-weighted index of over 2,000 single-manager funds that report to HFR Database. Constituent funds report monthly net of all fees performance in U.S. Dollar and have a minimum of $50 Million under management or a twelve (12) month track record of active performance. The HFRI Fund Weighted Composite Index does not include Funds of Hedge Funds.
MSCI World Index Ex USA (Representing International Equity): The MSCI World ex USA Index captures large and mid cap representation across 22 of 23 developed markets countries*—excluding the United States. With 1,021 constituents, the index covers approximately 85% of the free float-adjusted market capitalization in each country.
MSCI Emerging Markets Index (Representing Emerging Market Equity): The MSCI Emerging Markets Index is a free float-adjusted market capitalization index that is designed to measure equity market performance of emerging markets. The MSCI Emerging Markets Index consists of the following 24 emerging market country indices: Brazil, Chile, China, Colombia, Czech Republic, Egypt, Greece, Hungary, India, Indonesia, Korea, Malaysia, Mexico, Pakistan, Peru, Philippines, Poland, Qatar, Russia, South Africa, Taiwan, Thailand, Turkey, and the United Arab Emirates.
The MSCI All Country World Index (ACWI) ex USA Small Cap (representing International Small Cap) captures small cap representation across 22 of 23 Developed Markets (DM) countries (excluding the U.S.) and 24 Emerging Markets (EM) countries*. With 4,329 constituents, the index covers approximately 14% of the global equity opportunity set outside the U.S.


Renae' Van Wagner grew up in the rainy state of Washington; happily working with children for many years. Life events led to sunny Arizona where she enjoys staying home raising both of her beautiful daughters with her husband, Chris. Renae' volunteers at the elementary school where her children attend. She enjoys gardening, and diving into Midrash/ Torah discussions. Midrash gives her the opportunity to listen to everyone else's insightful thoughts. NefeshSoul is her home away from home for Jewish study. She welcomes the personal and spiritual growth that comes from serving a congregation. Let her know how she can serve your needs at Congregation NefeshSoul. Contact Renae' at office@nefeshsoul.org.


We have all struggled with the problem of evil. How do we deal with the fact that evil exist in a universe created by a good God. I want to offer the following treatise on this subject from Augustine of Hippo. I have found this treatment of the subject to be one of the best I have read. I hope that it helps you as well. For those who would like to read the entire little handbook written by Augustine, you can do so here.
12. All of nature, therefore, is good, since the Creator of all nature is supremely good. But nature is not supremely and immutably good as is the Creator of it. Thus the good in created things can be diminished and augmented. For good to be diminished is evil; still, however much it is diminished, something must remain of its original nature as long as it exists at all. For no matter what kind or however insignificant a thing may be, the good which is its "nature" cannot be destroyed without the thing itself being destroyed. There is good reason, therefore, to praise an uncorrupted thing, and if it were indeed an incorruptible thing which could not be destroyed, it would doubtless be all the more worthy of praise. When, however, a thing is corrupted, its corruption is an evil because it is, by just so much, a privation of the good. Where there is no privation of the good, there is no evil. Where there is evil, there is a corresponding diminution of the good. As long, then, as a thing is being corrupted, there is good in it of which it is being deprived; and in this process, if something of its being remains that cannot be further corrupted, this will then be an incorruptible entity [natura incorruptibilis], and to this great good it will have come through the process of corruption. But even if the corruption is not arrested, it still does not cease having some good of which it cannot be further deprived. If, however, the corruption comes to be total and entire, there is no good left either, because it is no longer an entity at all. Wherefore corruption cannot consume the good without also consuming the thing itself. Every actual entity [natura] is therefore good; a greater good if it cannot be corrupted, a lesser good if it can be. Yet only the foolish and unknowing can deny that it is still good even when corrupted. Whenever a thing is consumed by corruption, not even the corruption remains, for it is nothing in itself, having no subsistent being in which to exist.
anyone says that simply to be a man is evil, or that to be a wicked man is good, he rightly falls under the prophetic judgment: "Woe to him who calls evil good and good evil." For this amounts to finding fault with God's work, because man is an entity of God's creation. It also means that we are praising the defects in this particular man because he is a wicked person. Thus, every entity, even if it is a defective one, in so far as it is an entity, is good. In so far as it is defective, it is evil.
an incorruptible entity, it is a great good. But even if it is a corruptible entity, it still has no mode of existence except as an aspect of something that is good. Only by corrupting something good can corruption inflict injury.
15. But when we say that evil has its source in the good, do not suppose that this denies our Lord's judgment: "A good tree cannot bear evil fruit." This cannot be, even as the Truth himself declareth: "Men do not gather grapes from thorns," since thorns cannot bear grapes. Nevertheless, from good soil we can see both vines and thorns spring up. Likewise, just as a bad tree does not grow good fruit, so also an evil will does not produce good deeds. From a human nature, which is good in itself, there can spring forth either a good or an evil will. There was no other place from whence evil could have arisen in the first place except from the nature — good in itself — of an angel or a man. This is what our Lord himself most clearly shows in the passage about the trees and the fruits, for he said: "Make the tree good and the fruits will be good, or make the tree bad and its fruits will be bad." This is warning enough that bad fruit cannot grow on a good tree nor good fruit on a bad one. Yet from that same earth to which he was referring, both sorts of trees can grow.
You are currently browsing the St. Augustine of Hippo category at The Reformed Christian Muse.


Based in the heart of Leeds, Thackray Museum is one of the country's leading medical museums specialising in early X-ray equipment and also the use of early electrical operation instruments.
Specialised Movers over the last 2 years have visited the site and moved exhibits and pieces of large, fragile, and heavy early X- ray equipment. Sterile areas are prepared by Specialised Movers pre-move due to the fact that areas of movement are still open to the public. All removal services are offered during normal working hours, thus reducing costs to the client.Specialised Movers' Lifting Division have moved the largest of exhibits within the building after spending time to wrap, secure and rig the load. Scoots, Pal Bac and other heavy lifting equipment were used during the removal process. The visitors to the museum were more interested with the removal process rather than the exhibits currently on show.
Specialised Movers have introduced a special capped rate which allows the curator of the museum to email at short notice for the provision of removal services.
Specialised Movers' continuing relationship with the client is a success story for our company.


text:
Skip to main content Opinions Editorials Columns Guest opinions Cartoons Submit a guest opinion
Trump could smash the old world order — and replace it with what?
A military surplus store located across from the U.S. Embassy in Moscow is offering a 10 percent discount on Jan. 20 for embassy staff and U.S. citizens to mark the inauguration of Donald Trump. (David Filipov/The Washington Post)
By David Ignatius
Columnist covering foreign affairs
Email Bio Follow
Donald Trump's inauguration marks a global inflection point: He takes office at a moment when many analysts see a transition to a new economic and political order — one where the risks for the United States and its allies are likely to increase.
Trump's promise to "make America great again" resonated with many disaffected voters at home. But abroad, it created fear that the United States' global power is receding, with China and Russia moving to fill the vacuum. Analysts forecast a new era in which the U.S.-led, post-1945 global order, which brought unparalleled economic growth, will be replaced by a structure whose rules and rewards aren't yet clear.
Financial markets have so far been surprisingly steady, given the rising uncertainty and risk levels. But outgoing Treasury Secretary Jack Lew cautioned in a recent interview: "In an economy where confidence is one of the factors that leads to investment, and uncertainty and political instability undermine confidence, there is a real risk that the cumulative amount of political instability in the world slows down investment."
Trump has embraced the breakup of the old order. He has criticized NATO as "obsolete" and predicted the European Union's demise — challenging two crucial allies in America's network of power. He has talked of imposing tariffs on imports not just from China, but from Germany, too, raising fears of a global trade war. He has promised a revival of U.S. manufacturing jobs that many economists argue can't be restored without disrupting other parts of the economy.
"Wait and see" is always a good rule on Inauguration Day, but we've never had a president quite like Trump, with so many disruptive ideas and so little experience. Change is his political brand. If he carries through on what he has talked and tweeted about, he will reshape the framework of global economic and security relationships — for the worse, I fear.
(Jenny Starrs, David Filipov, Julie Vitkovskaya / The Washington Post)
Trump was elected with a minority of the popular vote, and his behavior since Election Day has lowered his popularity. But with Republican control of the House and Senate, he'll probably be able to enact major changes quickly. He has proposed big infrastructure spending but also large tax cuts. The result could produce a sharp increase in the deficit similar to what happened during the early Ronald Reagan years.
Lew cautions about the financial consequences of such populist economics: "We know from history that decisions that are made to pursue a less disciplined path can sometimes take place very quickly, but they tend to have very long tails." Restoring discipline requires a bipartisan cooperation in Congress that was present during Reagan's tenure but has now disappeared.
Trump's vision that the old order is cracking is shared by many leading foreign policy analysts. But they're less sanguine about its consequences. The revolt against economic globalization has boosted right-wing nationalist politicians in the United States and Europe. The real beneficiaries may be Russia and China, which seek to replace the U.S.-led system.
This theme of risky transition was explored in "Global Trends," a report published this month by the National Intelligence Council. "The next five years will see rising tensions within and between countries. . . . An era of American dominance following the Cold War [is ending]. So, too, perhaps, is the rules-based international order that emerged after World War II. It will be much harder to cooperate internationally and govern in ways publics expect."
A similar grim assessment was offered this month by the Rand Corp. In a study titled "Strategic Choices for a Turbulent World," Rand described a global tipping point: "The post-Cold War period is over. While historians may argue about the timing, it has become clear to most foreign-policy practitioners that the world has entered a new era, a complex age of turbulence and opportunity."
A "Come Home America" strategy similar to what Trump proposes would narrow U.S. goals and influence "in exchange for limiting U.S. exposure to a more unstable world," the Rand report argued. Russia and China would seek to benefit, and although Russia has long-term economic troubles, "declining powers can sometimes be the most dangerous."
Trump has a big vision of deals with Russia, China and Europe that could redraw the terms of trade and rebalance an unstable world, to America's benefit. And he's the leader, now, of a worldwide movement against a globalization that disproportionately benefited elites in the United States and Europe. But as Lew says, this "anti-expert, anti-elite mood . . . doesn't change classical economics."
Trump now owns responsibility for shaping a world in turmoil. And the United States owns the stark reality that Trump is president.
Read more from David Ignatius's archive, follow him on Twitter or subscribe to his updates on Facebook.
Robert J. Samuelson: The new world order, 2017
The Post's View:Trump's Cabinet knows NATO is important. It's not clear he agrees.
Barton Swaim: How might Nixon's 'madman theory' apply to Trump?
Catherine Rampell: Trump's unpredictability may be useful against enemies. But it's deadly to allies.
David Ignatius: What President Trump's foreign policy will look like
David Ignatius David Ignatius writes a twice-a-week foreign affairs column for The Washington Post. His latest novel is "The Paladin." Follow

redpajama_set_name: RedPajamaCommonCrawl


Some enrollees qualify for a "premium tax credit" that lowers the amount of premium they pay each month to their insurance plan. The amount of the tax credit depends on the estimate household income for the year on you Marketplace application.
Tax credits can be applied to the monthly insurance premium payment in advance. The Marketplace will send the tax credit directly to your insurance company, so you will pay less each month.
If your income goes up or you lose a member of your household, you will likely qualify for a lower tax credit. In order to avoid taking more credits that you qualify for, it is necessary to reduce the amount of tax credits that you in advance each month.
If your income goes down or you gain a household member, you will likely qualify for an higher tax credit. In order to take advantage of this tax credit against you premium, you will need to increase the mount of tax credit you take.
At the end of the year, if you have taken more or less premium tax credits than your eligible for, your federal income tax return will be adjusted. This is referred to as reconciling.
Lower copayments or coinsurance: These are the payments that are made every time you get care. For example, if your plan as a $30 copayment for a doctors visit, with a Cost Share Reduction you may pay only $15 or $20.
Lower deductible: A deductible is the portion of costs that an individual must pay out-of-pocket before insurance begins to cover healthcare costs. Cost-sharing reductions can decrease deductibles from $750 annually to $500 or $300.
Low Out-of-Pocket Maximum: The total amount of out-of-pocket expenses that are paid annually. Instead of a maximum of $5,000 in out-of-pocket expenses, a plan may be capped at $3,000.
After applying for Marketplace coverage, check the Eligibility Determination Notice. If the notice says "choose a health plan with lower copayments, coinsurance and deductibles" and is follow by a (04), (05) or (06), you qualify for income based savings, if you pick the Silver plan.


On August 22 we celebrated the second anniversary of Futuro Brillante.
The past two years have been full of many successful projects and collaborations with local government, public and private institutions, and volunteers. We are so thankful to the community of Matapalo for all of the support and participation in our projects during the last two years.
Many thanks to all who helped us celebrate our anniversary – we hope to be able to celebrate many, many more!


text:
license: >
    Licensed to the Apache Software Foundation (ASF) under one
    or more contributor license agreements.  See the NOTICE file
    distributed with this work for additional information
    regarding copyright ownership.  The ASF licenses this file
    to you under the Apache License, Version 2.0 (the
    "License"); you may not use this file except in compliance
    with the License.  You may obtain a copy of the License at

        http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing,
    software distributed under the License is distributed on an
    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    KIND, either express or implied.  See the License for the
    specific language governing permissions and limitations
    under the License.

title: L'interfaccia della riga di comando
---

# L'interfaccia della riga di comando

Questa guida viene illustrato come creare applicazioni e distribuirle in varie piattaforme mobile nativi utilizzando il `cordova` interfaccia della riga di comando (CLI). Questo strumento consente di creare nuovi progetti, costruirli su diverse piattaforme ed eseguire su dispositivi reali o all'interno di emulatori. Il CLI è lo strumento principale da utilizzare per il flusso di lavoro multi-piattaforma (vedere il prospetto per una descrizione dei vari flussi di lavoro.) Tuttavia, è possibile utilizzare anche la CLI per inizializzare il codice del progetto, dopo di che è possibile utilizzare vari platforms SDK e shell strumenti per costante sviluppo.

## Prerequisiti

Prima di eseguire eventuali strumenti da riga di comando, è necessario installare il SDK per ogni piattaforma che si desidera fare riferimento. (Vedi le guide di piattaforma per maggiori dettagli).

Per aggiungere il supporto o ricostruire un progetto per qualsiasi piattaforma, è necessario eseguire l'interfaccia della riga di comando dalla stessa macchina che supporta SDK la piattaforma. CLI supporta le seguenti combinazioni:

*   iOS (Mac)
*   Amazon fuoco OS (Mac, Linux, Windows)
*   Android (Mac, Linux)
*   BlackBerry 10 (Mac, Linux, Windows)
*   Windows Phone 7 (Windows)
*   Windows Phone 8 (Windows)
*   Windows 8 (Windows)
*   Firefox OS (Mac, Linux, Windows)

Su Mac, la riga di comando è disponibile tramite l'applicazione *terminale* . Sul PC, è disponibile come *Prompt dei comandi* sotto *accessori*.

Il più probabile è che si esegue CLI da macchine diverse, più ha senso mantenere un repository di codice sorgente remota, la cui attività si tira per le directory di lavoro locale.

Per installare il `cordova` della riga di comando strumento, attenersi alla seguente procedura:

1.  Scaricare e installare [node. js][1]. Dopo l'installazione, si dovrebbe essere in grado di richiamare `node` o `npm` sulla riga di comando.

2.  Installare il `cordova` utilità. In Unix, prefisso aggiuntiva `sudo` comando potrebbe essere necessario installare l'utilità di sviluppo altrimenti limitato le directory:

        $ sudo npm install -g cordova

    Il log di installazione può produrre errori per qualsiasi disinstallato platform SDK. Dopo l'installazione, si dovrebbe essere in grado di eseguire `cordova` sulla riga di comando.

    **Nota**: il `-g` bandiera sopra dice npm installare cordova a livello globale. Potrebbe essere necessario aggiungere la directory npm al tuo percorso al fine di richiamare globalmente installati moduli npm. Su Windows, npm di solito può essere trovato alla `C:\Users\username\AppData\Roaming\npm` e su Unix presso`/usr/local/share/npm`.

 [1]: http://nodejs.org/

## Creare l'applicazione

Andare nella directory dove si mantiene il codice sorgente ed eseguire un comando analogo al seguente:

        $ cordova create hello com.example.hello HelloWorld

Esso può richiedere molto tempo per completare il comando, quindi siate pazienti. Esegue il comando con il `-d` opzione Visualizza informazioni sui suoi progressi.

Il primo argomento *Ciao* specifica una directory ad essere generato per il progetto. Questa directory non dovrebbe già esistere, Cordova si creerà per voi. Sua `www` sottodirectory ospita la pagina iniziale dell'applicazione, insieme a diverse risorse sotto `css` , `js` , e `img` , che seguono le convenzioni di denominazione dei file del sviluppo web comuni. La `config.xml` file contiene metadati importanti necessari per generare e distribuire l'applicazione.

Il secondo argomento `com.example.hello` fornisce il tuo progetto con un identificatore di dominio-stile reverse. Questo argomento è facoltativo, ma solo se si omette anche il terzo argomento, poiché gli argomenti sono posizionali. È possibile modificare questo valore successivamente nella `config.xml` del file, ma essere consapevoli che ci può essere un codice generato di fuori di `config.xml` utilizzando questo valore, ad esempio nomi di pacchetto Java. Il valore predefinito è `io.cordova.hellocordova` , ma è consigliabile che si seleziona un valore appropriato.

Il terzo argomento `HelloWorld` fornisce il titolo di visualizzazione dell'applicazione. Questo argomento è facoltativo. È possibile modificare questo valore successivamente nella `config.xml` del file, ma essere consapevoli che ci può essere un codice generato di fuori di `config.xml` utilizzando questo valore, ad esempio i nomi delle classi di Java. Il valore predefinito è `HelloCordova` , ma è consigliabile che si seleziona un valore appropriato.

## Aggiungi piattaforme

Tutti i comandi successivi devono essere eseguito all'interno della directory del progetto, o qualsiasi sottodirectory all'interno del proprio ambito:

        $ cd hello

Per poter compilare il progetto, è necessario specificare un insieme di piattaforme di destinazione. La capacità di eseguire questi comandi dipende se la macchina supporta ogni SDK, e se avete già installato ogni SDK. Eseguire uno di questi da un Mac:

        $ cordova platform add ios
        $ cordova platform add amazon-fireos
        $ cordova platform add android
        $ cordova platform add blackberry10
        $ cordova platform add firefoxos

Eseguire una qualsiasi di queste da una macchina Windows, dove *wp* si riferisce a diverse versioni del sistema operativo Windows Phone:

        $ cordova platform add wp7
        $ cordova platform add wp8
        $ cordova platform add windows8
        $ cordova platform add amazon-fireos
        $ cordova platform add android
        $ cordova platform add blackberry10
        $ cordova platform add firefoxos

Eseguire questo per controllare il set corrente di piattaforme:

        $ cordova platforms ls

(Nota del `platform` e `platforms` comandi sono sinonime.)

Eseguire uno dei seguenti comandi per rimuovere una piattaforma sinonimi:

        $ cordova platform remove blackberry10
        $ cordova platform rm amazon-fireos
        $ cordova platform rm android

Esecuzione di comandi per aggiungere o rimuovere colpisce piattaforme il contenuto della directory del progetto *piattaforme* , dove ogni piattaforma specificata appare come una sottodirectory. La directory di origine *www* è riprodotta all'interno di sottodirectory su ogni piattaforma, apparendo ad esempio `platforms/ios/www` o `platforms/android/assets/www` . Perché CLI costantemente copia i file dalla cartella sorgente *www* , è consigliabile modificare solo questi file e non quelli situati sotto le sottodirectory di *piattaforme* . Se si utilizza il software di controllo versione, è necessario aggiungere questa cartella *www* di origine, insieme con la cartella *si fonde* , al sistema di controllo di versione. (Ulteriori informazioni sulla cartella *si fonde* possono essere trovati nella sezione Personalizza ogni piattaforma sottostante).

**AVVERTENZA**: quando si utilizza la CLI per compilare l'applicazione, si è fortemente scoraggiato dalla modifica di qualsiasi file nella `/platforms/` cartella se non sai cosa stai facendo o sono specificamente detto diversamente nella documentazione. Questo è perché i file nella `/platforms/` direcotry verranno sovrascritti a preparare o reinstallazione del plugin.

Se volete a questo punto, è possibile utilizzare un SDK come Eclipse o Xcode per aprire il progetto creato. Devi aprire il set derivato dei beni dalla `/platforms/` directory per sviluppare con un SDK. Questo è perché sono archiviati i file di metadati specifici SDK all'interno l'appropriato `/platform/` sottodirectory. (Vedi le guide di piattaforma per informazioni su come sviluppare applicazioni all'interno di ogni IDE). Utilizzare questo approccio se si desidera semplicemente inizializzare un progetto utilizzando la CLI e poi passare a un SDK per lavoro nativo.

Leggere se si desidera utilizzare l'approccio del flusso di lavoro multi-piattaforma (CLI) per il ciclo di sviluppo intero.

## Costruire l'App

Per impostazione predefinita, il `cordova create` script genera una scheletrica applicazione web-based in cui home page è il progetto `www/index.html` file. Modificare questa applicazione, tuttavia si desidera, ma qualsiasi inizializzazione deve essere specificato come parte della `[deviceready](../../cordova/events/events.deviceready.html)` gestore di eventi, a cui fa riferimento predefinito da`www/js/index.js`.

Eseguire il comando seguente per costruire in modo iterativo del progetto:

        $ cordova build

Questo genera il codice specifico della piattaforma nell'ambito del progetto `platforms` sottodirectory. Facoltativamente, è possibile limitare l'ambito della compilazione per specifiche piattaforme:

        $ cordova build ios

Il `cordova build` comando è una forma abbreviata per i seguenti, che in questo esempio si rivolge anche a una singola piattaforma:

        $ cordova prepare ios
        $ cordova compile ios

In questo caso, una volta si esegue `prepare` , è possibile utilizzare Apple Xcode SDK come alternativa per modificare e compilare il codice specifico della piattaforma Cordova generato all'interno di `platforms/ios` . È possibile utilizzare lo stesso approccio con SDK altre platforms.

## Testare l'applicazione su un emulatore o un dispositivo

SDK per piattaforme mobili, spesso in bundle con emulatori che eseguire un'immagine del dispositivo, in modo che è possibile lanciare l'applicazione dalla schermata iniziale e vedere come esso interagisce con molte caratteristiche di piattaforma. Eseguire un comando come ad esempio il seguente per ricostruire l'app e si mostra all'interno dell'emulatore su una piattaforma specifica:

        $ cordova emulate android

Alcune piattaforme mobili emulano un particolare dispositivo per impostazione predefinita, come l'iPhone per i progetti di iOS. Per altre piattaforme, è necessario prima di associare un dispositivo con un emulatore.

Nota: Supporto emulatore non è attualmente disponibile per OS fuoco Amazon

(Vedi le guide di piattaforma per dettagli). Ad esempio, si può in primo luogo eseguire il `android` comando per lanciare il SDK di Android, quindi eseguire un'immagine particolare dispositivo, che lancia il secondo il comportamento predefinito:

![][2]

 [2]: {{ site.baseurl }}/static/img/guide/cli/android_emulate_init.png

Seguente in su con il `cordova emulate` comando aggiorna l'immagine di emulatore per visualizzare l'applicazione più recente, che è ora disponibile per il lancio dalla schermata iniziale:

![][3]

 [3]: {{ site.baseurl }}/static/img/guide/cli/android_emulate_install.png

Alternativamente, è possibile collegare il telefono al computer e testare le app direttamente:

        $ cordova run android

Prima di eseguire questo comando, è necessario impostare il dispositivo per la prova, seguendo procedure che variano per ogni piattaforma. Nei dispositivi Android e Amazon fuoco OS, dovete abilitare un'opzione di **debug USB** sul dispositivo e magari aggiungere un driver USB a seconda del vostro sviluppo di Francia. Vedere piattaforma guide per informazioni dettagliate sui requisiti di ogni piattaforma.

## Aggiungere funzionalità di Plugin

Quando si compila e Mostra un nuovo progetto, l'applicazione predefinita che appare non fa molto molto. È possibile modificare l'applicazione in molti modi per sfruttare tecnologie web standard, ma per le app comunicare strettamente con varie funzionalità a livello di dispositivo, è necessario aggiungere plugins che forniscono accesso al nucleo Cordova APIs.

Un *plugin* è un po ' di codice del componente aggiuntivo che fornisce un'interfaccia per i componenti nativi. È possibile progettare la propria interfaccia plugin, per esempio, quando si progetta un'applicazione ibrida che mescola una Cordova WebView con componenti nativi. (Vedere visualizzazioni Web Embedding e guida allo sviluppo di Plugin per dettagli). Più comunemente, è necessario aggiungere un plugin per abilitare una delle caratteristiche fondamentali di Cordova dispositivo-livello dettagliati in riferimento all'API. Un elenco di questi plugin, tra cui il plugin aggiuntivi forniti dalla Comunità, può essere trovato alla [plugins.cordova.io][4]. È possibile utilizzare la CLI per la ricerca di plugin da questo registro. Ad esempio, alla ricerca di `bar` e `code` produce un singolo risultato che corrisponde a entrambi i termini come minuscole sottostringhe:

 [4]: http://plugins.cordova.io/

        $ cordova plugin search bar code

        com.phonegap.plugins.barcodescanner - Scans Barcodes

Cercando solo il `bar` termine rendimenti e risultati aggiuntivi:

        org.apache.cordova.statusbar - Cordova StatusBar Plugin

Il `cordova plugin add` comando richiede di specificare il repository per il codice del plugin. Si prega di notare che quando si seguire il flusso di lavoro di Web progetto Dev e utilizzare la CLI, CLI si prenderà cura di aggiungere il codice del plugin nel posto appropriato per ogni piattaforma. (Se si segue il flusso di lavoro nativo progetto Dev, si dovrà aggiungere il plugin utilizzando Plugman (guida link qui), più volte per ogni piattaforma.)

Ecco alcuni esempi di come si potrebbe utilizzare la CLI per aggiungere funzionalità per l'app:

*   Informazioni di base del dispositivo (dispositivo API):

        $ cordova plugin add org.apache.cordova.device

*   Connessione di rete e batteria eventi:

        $ cordova plugin add org.apache.cordova.network-information
        $ cordova plugin add org.apache.cordova.battery-status

*   Accelerometro, bussola e geolocalizzazione:

        $ cordova plugin add org.apache.cordova.device-motion
        $ cordova plugin add org.apache.cordova.device-orientation
        $ cordova plugin add org.apache.cordova.geolocation

*   Macchina fotografica, la riproduzione multimediale e cattura:

        $ cordova plugin add org.apache.cordova.camera
        $ cordova plugin add org.apache.cordova.media-capture
        $ cordova plugin add org.apache.cordova.media

*   Accedere ai file sul dispositivo o rete (File API):

        $ cordova plugin add org.apache.cordova.file
        $ cordova plugin add org.apache.cordova.file-transfer

*   Notifica tramite la finestra di dialogo o vibrazione:

        $ cordova plugin add org.apache.cordova.dialogs
        $ cordova plugin add org.apache.cordova.vibration

*   Contatti:

        $ cordova plugin add org.apache.cordova.contacts

*   Globalizzazione:

        $ cordova plugin add org.apache.cordova.globalization

*   Splashscreen:

        $ cordova plugin add org.apache.cordova.splashscreen

*   Finestre aperte del browser nuovo (InAppBrowser):

        $ cordova plugin add org.apache.cordova.inappbrowser

*   Console di debug:

        $ cordova plugin add org.apache.cordova.console

Uso `plugin ls` (o `plugin list` , o `plugin` da sola) alla Mostra attualmente installato il plugin. Ognuno viene visualizzato tramite il relativo identificatore:

        $ cordova plugin ls    # or 'plugin list'
        [ 'org.apache.cordova.console' ]

Per rimuovere un plugin, si riferiscono ad esso dall'identificatore stesso che compare nell'elenco. Ad esempio, ecco come si vuoi rimuovere il supporto per una console di debug da una versione di rilascio:

        $ cordova plugin rm org.apache.cordova.console
        $ cordova plugin remove org.apache.cordova.console    # same

È possibile rimuovere-lotto o aggiungere plugins specificando più argomenti per ogni comando:

        $ cordova plugin add org.apache.cordova.console org.apache.cordova.device

## Opzioni avanzate del Plugin

Quando si aggiunge un plugin, diverse opzioni consentono di specificare da dove scaricare il plugin. Gli esempi sopra utilizzano un noto `registry.cordova.io` Registro di sistema e il plugin è specificato dal `id` :

        $ cordova plugin add org.apache.cordova.console

Il `id` può anche includere il numero di versione del plugin, dopo un `@` personaggio. Il `latest` versione è un alias per la versione più recente. Ad esempio:

        $ cordova plugin add org.apache.cordova.console@latest
        $ cordova plugin add org.apache.cordova.console@0.2.1

Se il plugin non è registrato presso `registry.cordova.io` , ma si trova in un altro repository git, è possibile specificare un URL alternativo:

        $ cordova plugin add https://github.com/apache/cordova-plugin-console.git

Git esempio precedente recupera il plugin dalla fine del ramo principale, ma può essere aggiunto un git-rif alternativo come ad esempio un tag o ramo dopo un `#` personaggio:

        $ cordova plugin add https://github.com/apache/cordova-plugin-console.git#r0.2.0

Se il plugin (e la sua `plugin.xml` file) è in una sottodirectory all'interno della repo git, è possibile specificare con un `:` personaggio. Si noti che il `#` personaggio è ancora necessaria:

        $ cordova plugin add https://github.com/someone/aplugin.git#:/my/sub/dir

È inoltre possibile combinare il git-ref sia nella sottodirectory:

        $ cordova plugin add https://github.com/someone/aplugin.git#r0.0.1:/my/sub/dir

In alternativa, specificare un percorso locale plugin nella directory che contiene il `plugin.xml` file:

        $ cordova plugin add ../my_plugin_dir

## Utilizzando *si fonde* a personalizzare ogni piattaforma

Mentre Cordova consente di implementare facilmente un app per molte piattaforme diverse, a volte è necessario aggiungere personalizzazioni. In tal caso, non si vuole modificare i file di origine in varie `www` directory all'interno del primo livello `platforms` directory, perché essi stanno regolarmente sostituiti con il primo livello `www` source multipiattaforma della directory.

Invece, il primo livello `merges` directory offre un posto per specificare i beni da distribuire su specifiche piattaforme. Ciascuna sottodirectory specifiche della piattaforma all'interno `merges` rispecchia la struttura di directory del `www` albero dei sorgenti, consente di sovrascrivere o aggiungere i file come necessario. Ad esempio, ecco come si potrebbero usi `merges` per aumentare la dimensione del carattere predefinita per dispositivi Android e Amazon fuoco OS:

*   Modificare il `www/index.html` file, aggiungendo un link al file CSS aggiuntivo, `overrides.css` in questo caso:

        <link rel="stylesheet" type="text/css" href="css/overrides.css" />

*   Se si desidera creare un vuoto `www/css/overrides.css` file che vuoi applicare per tutte le build di Android non, impedendo un errore del file mancante.

*   Creare un `css` sottodirectory all'interno di `merges/android` , quindi aggiungere un corrispondente `overrides.css` file. Specificare CSS che esegue l'override la dimensione del carattere di 12 punti predefiniti specificata all'interno di `www/css/index.css` , ad esempio:

        body { font-size:14px; }

Quando si ricostruisce il progetto, la versione di Android presenta la dimensione del carattere personalizzato, mentre gli altri rimangono invariati.

È inoltre possibile utilizzare `merges` per aggiungere file non presenti nell'originale `www` directory. Ad esempio, un'app può incorporare una grafica del *pulsante indietro* nell'interfaccia di iOS, memorizzato `merges/ios/img/back_button.png` , mentre la versione di Android invece può catturare `[backbutton](../../cordova/events/events.backbutton.html)` eventi dal corrispondente pulsante hardware.

## Aiuto comandi

Cordova dispone di un paio di comandi globali, che possono aiutarvi se rimani bloccato o un problema di esperienza. Il `help` comando consente di visualizzare tutti i comandi disponibili di Cordova e la loro sintassi:

    $ cordova help
    $ cordova        # same

Il `info` comando produce un elenco di dettagli potenzialmente utili, quali piattaforme attualmente installate e plugins, versioni SDK per ogni piattaforma e versioni di CLI e `node.js` :

    $ cordova info

Esso presenta le informazioni a schermo e catturare l'output in un locale `info.txt` file.

**Nota**: attualmente sono disponibili solo i dettagli su piattaforme Android e iOS.

## Aggiornamento di Cordova e progetto

Dopo aver installato il `cordova` utilità, si può sempre aggiornare all'ultima versione eseguendo il seguente comando:

        $ sudo npm update -g cordova

Per installare una versione specifica, utilizzare questa sintassi:

        $ sudo npm install -g cordova@3.1.0-0.2.0

Eseguire `cordova -v` per vedere quale versione è attualmente in esecuzione. Eseguire il `npm
info` comando per un elenco più lungo che include la versione corrente, insieme ad altri numeri di versione disponibile:

        $ npm info cordova

Cordova 3.0 è la prima versione a supportare l'interfaccia della riga di comando descritta in questa sezione. Se si sta aggiornando da una versione precedente alla 3.0, è necessario creare un nuovo progetto, come descritto sopra, poi copiare risorse dell'applicazione più anziani nel primo livello `www` directory. Dove applicabile, maggiori dettagli sull'aggiornamento a 3.0 sono disponibili nelle guide piattaforma. Una volta che si aggiorna alla `cordova` interfaccia della riga di comando e uso `npm update` per rimanere attuale, richiede più tempo procedure descritte ci non sono più pertinenti.

Cordova 3.0 + possa ancora richiedere varie modifiche alle strutture di directory a livello di progetto e altre dipendenze. Dopo aver eseguito il `npm` comando sopra per aggiornare Cordova stessa, potrebbe essere necessario per assicurare le risorse del progetto conformano ai requisiti dell'ultima versione. Eseguire un comando simile al seguente per ogni piattaforma che si sta costruendo:

        $ cordova platform update android
        $ cordova platform update ios
        ...etc.

redpajama_set_name: RedPajamaGithub


text:
Q: Android Devices not connecting to php server I am trying to connect to my phpmyadmin server using volley, i managed to access my sql database and send/receive data from the server using the emulator: yet this somehow doesnt seem to work on android devices (tried multiple ones)
Any idea on how to solve this?
*Code attached below
package com.example.databasehelper452;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;

import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.HashMap;
import java.util.Map;

public class Main22Activity extends AppCompatActivity {

    TextView textViewdisplaydata;
    com.android.volley.RequestQueue requestQueue;
   // String insertUrl = "http://192.168.16.4:80/DevicesServer/insertEntry.php";  //in order to contain the url for our php files
  //  String showUrl = "http://192.168.16.4:80/DevicesServer/displayEntry.php";

    String insertUrl = "http://10.168.46.13:80/DevicesServer/insertEntry.php";
    String showUrl = "http://10.168.46.13:80/DevicesServer/displayEntry.php";

    EditText plaintxtmacmaster,plaintxtmacconnected;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main22);

        plaintxtmacconnected = (EditText) findViewById(R.id.plaintxtmacconnected);
        plaintxtmacmaster = (EditText) findViewById(R.id.plaintxtmacmaster);

        textViewdisplaydata =(TextView)findViewById(R.id.textViewdisplaydata);

        requestQueue = Volley.newRequestQueue(getApplicationContext());
    }
    String Result = "";

    public void onbtnclickshowall(View view) {
        Result = "";
        JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, showUrl, new Response.Listener<JSONObject>()
        {
            public void onResponse(JSONObject response)
            {
                try {
                    JSONArray posts = response.getJSONArray("devices");
                    for (int i = 0; i < posts.length();i++) {

                        JSONObject post = posts.getJSONObject(i);

                        String MACConnected = post.getString("MACConnected");
                        String MACMasterDevice = post.getString("MACMasterDevice");
                        String DeviceName = post.getString("DeviceName");
                        String DateLastDetection = post.getString("DateLastDetection");
                        String FrequencyDetection = post.getString("FrequencyDetection");
                        String CumulativeDetection = post.getString("CumulativeDetection");
                        String MasterName = post.getString("MasterName");

                        Result = Result + "\n"+ MACConnected+ " " + DeviceName + " " + DateLastDetection+" "+FrequencyDetection+" "+ CumulativeDetection+" " + MACMasterDevice+" "+MasterName+" ";
                        String result2 = Result;
                        textViewdisplaydata.setText(Result);

                    }

                }
                catch (JSONException e)
                {
                    e.printStackTrace();

                }
            }
        }, new Response.ErrorListener()
        {
            public void onErrorResponse(VolleyError error)
            {

            }
        });
        requestQueue.add(jsonObjectRequest);

    }

    public void onbtnclickinsertall(View view) {

            StringRequest request = new StringRequest(Request.Method.POST, insertUrl, new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {

                    System.out.println(response.toString());
                }
            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {

                }
            }) {

                @Override
                protected Map<String, String> getParams() throws AuthFailureError {
                    Map<String,String> parameters  = new HashMap<String, String>();
                    parameters.put("MACConnected",plaintxtmacconnected.getText().toString());
                    parameters.put("MACMasterDevice",plaintxtmacmaster.getText().toString());
                    parameters.put("DeviceName","JAD");
                    parameters.put("DateLastDetection","1234567");
                    parameters.put("FrequencyDetection","12");
                    parameters.put("CumulativeDetection","12345");
                    parameters.put("MasterName","Master Test");

                    return parameters;
                }
            };
            requestQueue.add(request);
        }

}

    <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.databasehelper452">

    <uses-permission android:name="android.permission.INTERNET" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".Main22Activity"></activity>
    </application>

</manifest>

redpajama_set_name: RedPajamaStackExchange


text:
Q: Early 2015 Macbook Air (A1466) Not Charging I have searched far and wide to try and solve this issue but have had 0 luck.
I have an early 2015 MacBook Air (A1466) that I've kept in great condition over the years. It's never really left my room/desk and I've gone far out of my way to keep it in this condition because of how much I like this computer.
So, it had been a few months since I last used it (new job, work computer, travel all the time) and I realized the charger had been disconnected at some point meaning the battery had been likely sitting there completely dead for days, weeks, possibly months which I understand is not great for a Lithium-Ion battery?
I just tried to power it on for the first time the other day and it boots up, while plugged in, and loads seemingly normal but when the computer is finally completely started up the battery is indicated as "not charging" when clicking on the icon from the taskbar and the percentage is stuck at 1%.
The orange light on the MagSafe charger is on when plugged in.
The steps I've taken so far.

*

*Reset SMC a few times

*Reset PRAM a few times

*Option + clicked on the battery to see a report and it shows as
"normal"

*Downloaded coconut battery and that also shows as "normal"

*Checked the cycle count which is currently sitting at about ~310
which seems well under the expected failure point

*Removed my battery and checked the inside of my computer for
corrosion or any other type of damage found nothing

*Inspected the battery for any oddities or swelling, found nothing.

*Tried multiple MagSafe chargers  Charged another Macbook using my
MagSafe charger

A friend of mine had me take some photos of the IO board to see if he could figure it out and isn't sure but seems to think there might be something up with that? https://imgur.com/a/sXTcq8J - IO board pictures.


The primary mission of FISH of Greater New Haven, Inc., is to provide grocery assistance to the home-bound in the New Haven area. We deliver free bags of nutritionally sound groceries to households in New Haven. The households include families with children, elderly, sick, disabled, veterans, unemployed and underemployed individuals. Our clients are often unable to travel walk-in or mobile pantries and cannot afford an adequate supply of food. FISH is the only agency in the area to deliver free food to its (unfortunately) growing clientele. FISH of Greater New Haven remains a social service organization that is non-profit and non-denominational. FISH is an organization sustained by volunteers who are active service providers, financial supporters, planners and evaluators.
FISH is a private, nonprofit and non-denominational social service organization. The idea of FISH started from a network of neighbors helping neighbors that started in 1961 in Oxford, England. The fish emblem that they chose is an ancient symbol of concern and caring. We remain committed to helping our neighbors.
FISH came to New Haven in 1968. It was organized by a group of concerned members of Saint John's Episcopal Church in North Haven, Dunbar United Church in Hamden, and Christian Community Action Agency in New Haven. These individuals wished to begin a program for serving the needy in the community so FISH became formally incorporated on February 21, 1968, at a meeting held in the storefront of Christian Community Action.
In the beginning, volunteers provided hot meals, transportation to medical appointments, baby-sitting and accommodations in emergency situations. Volunteers offered help 24 hours a day through a telephone answering service. Since other agencies now provide many of these services, FISH continues its services by providing free bags of non-perishable groceries directly to the homes of people in need of our assistance.
39% of our clients are senior citizens, and 26% are children.
We leverage each dollar donated for maximum effect: purchasing through the Ct. Food Bank and organizing food drives with local partners and businesses.


text:
Home Business Media What Happens in an Internet Minute
What Happens in an Internet Minute
Just a month ago, it was revealed that Facebook has more than two billion active monthly users. That means that in any given month, more than 25% of Earth's population logs in to their Facebook account at least once.
This kind of scale is almost impossible to grasp.
A smaller window
The scale of the internet is so great, that it doesn't make sense to look at the information on a monthly basis, or even to use daily figures.
Instead, let's drill down to just what happens in just one internet minute:
Image: Visual Capitalist
Created each year by Lori Lewis and Chadd Callahan of Cumulus Media, the above graphic shows the incredible scale of e-commerce, social media, email, and other content creation that happens on the web.
If you're using emojis at work you need to stop. This is why
These are the top 10 emerging technologies of 2017
Content competition
If you've ever had a post on Facebook or Instagram fizzle out, it's safe to say that the above proliferation of content in our social feeds is part of the cause.
In a social media universe where there are no barriers to entry and almost infinite amounts of competition, the content game has tilted to become a "winner take all" scenario. Since people don't have the time to look at the 452,200 tweets sent every minute, they naturally gravitate to the things that already have social proof.
People look to the people they trust to see what's already being talking about, which is why influencers are more important than ever to marketers.
For those that are able to get the strategy and timing right, the potential spoils are salivating:
The never-ending challenge, however, is how to stand out from the crowd.
Abu Dhabi Government Media Office Launches Abu Dhabi Story
UAE Android Users Alert: Scams Associated With Mobile Apps
LinkedIn to Help Small Businesses and Freelancers Grow their Business
Freej-themed Social Media Filters for UAE National Day
Twitter Seeks Public Input on Synthetic and Manipulated Media
Twitter lights up Timelines with 'lights on' emoji for Diwali 2019
Are Millennials Resetting the Flavours of the F&B Industry?
What Facebook's Privacy Pivot & Cryptocurrency Might Mean for Your Business
UAE invests in $2.15 bn in AI
LinkedIn's 2nd Together Campaign Highlights Social Media Habits of UAE Residents
Harness your creative side at Bluewaters Open Gallery
2019 UAE Property Market Report
Prices and rents extend decline but select communities buck the trend Average apartment prices in Dubai declined by 15% between Q4 2018 and Q4...


Zoya Nail Polish in Maria-Luisa can be best described as gold cellophane accent topper (Originally designed for Rafael Cennamo/AW13). Layer to desired effect.
Zoya Nail Polish in Dream can best be described as a full-coverage, deep space blue with holographic glitter.
Zoya Nail Polish in Giovanna can be best described as a stunning emerald green metallic. The "IT COLOR" right now (Originally designed for Zang Toi/AW13).


text:
Rights in Exile Newsletter
Causes of Displacement
Rights in Exile
Resolving Displacement
North and Horn of Africa
IRRI Blog
African leaders should raise concerns about Tanzania's pressure on refugees to return to Burundi
Joint civil society statement
Ahead of the African Union (AU) High-Level Dialogue on displacement taking place from 4-6 December in Uganda, 15 African and international NGOs call on African leaders and regional organisations to urge the government of Tanzania to stop pressuring 163,000 refugees and asylum seekers into returning to Burundi, where there are ongoing serious human rights violations against real or perceived opposition supporters, including returning refugees.
Hundreds of thousands of refugees fled Burundi after a political crisis erupted in 2015 and led to political violence and serious human rights violations. Tanzania currently hosts the largest group of those refugees and should be commended for having opened its doors to them.
However, senior Tanzanian government officials have repeatedly pressured Burundian refugees to go back to Burundi. One of these calls came from President John Pombe Magufuli, who said on October 11 that Burundian refugees should "go home." An August 24 agreement between Tanzania and Burundi also says these refugees "are to return to their country of origin whether voluntarily or not" by December 31. To date, around 80,000 have returned with UNHCR's financial and logistical assistance under a September 2017 "voluntary repatriation" agreement between Burundi, Tanzania and the United Nations High Commissioner for Refugees (UNHCR).
The Tanzanian government has seriously restricted asylum space, freedom of movement and economic opportunities for Burundian refugees. Those who venture outside of the Nyarugusu, Nduta and Mtendeli camps to meet their daily needs have at times been arrested and detained by Tanzanian security forces. Many returnees in Burundi cite the difficult humanitarian conditions in Tanzania as one of the reasons they left. UN agencies and non-governmental organisations have seen their ability to operate seriously restricted in both countries and face challenges in independently verifying the voluntary nature of the repatriation process.
These moves by Tanzanian authorities follow similar restrictions put in place for around 38,000 Burundians living in Mtabila camp who fled Burundi in the nineties and whose refugee status was revoked in 2012. This was followed by forced returns to Burundi. Some officials have recently threatened to use similar measures against those who currently refuse to return to Burundi.
The 1951 UN Refugee Convention and the 1969 African Refugee Convention prohibit refoulement, the return of refugees in any manner whatsoever to places where their lives or freedom would be threatened. UNHCR has said that refoulement can occur not only when a government directly rejects or expels a refugee, but also when indirect pressure is so intense that it leads people to believe they have no option but to return to a country where they face a serious risk of harm.
Despite positive examples of solidarity in Burundi, returnees have faced exclusion and abuses at the hands of local authorities or members of the Imbonerakure, the ruling party's youth wing. Research found that returning refugees are likely to be viewed as opposition supporters because they had previously fled. Accountability for abuse is virtually non-existent, and there are few avenues for returnees to express grievances, given overall restrictions on public freedoms, in particular in the run-up to the 2020 elections. The limited humanitarian and development support for returnees creates additional practical obstacles to re-integration.
So far, there have been no public statements by the African Union, the East African Community, the International Conference on the Great Lakes Region or African governments requesting the governments of Tanzania and Burundi to ensure that any returns are genuinely voluntary and conducted in safety and with dignity.
The High-Level Dialogue on the AU's theme of the year on "Refugees, Returnees and Internally Displaced Persons: Towards Durable Solutions to Forced Displacement in Africa" is a good opportunity to break this silence.
Representatives of African regional organisations and governments should seize on the opportunity that the High-Level Dialogue offers to make the AU's theme of the year a tangible reality for Burundian refugees. They should seek assurances from the Tanzanian government that it will guarantee the voluntary nature of the return process, keep asylum space open and desist from using any coercion against those refugees who want to stay. The AU and sub-regional bodies should call on African and international actors to support refugees who decide to stay in exile, as well as those who want to return and reintegrate in Burundi.
Speaking out on the situation in Tanzania would demonstrate that 50 years after the adoption of the African Refugee Convention, African institutions do not look away when the rights of refugees or returnees are at risk.
Action des Chrétiens pour l'Abolition de la Torture – Burundi (ACAT-Burundi)
AfricanDefenders (the Pan-African Human Rights Defenders Network)
African Youth Action Network
Association Burundaise pour la Protection des Droits Humains et des Personnes Détenues (APRODH)
Collectif des Avocats pour la Défense des Victimes de Crimes de Droit International Commis au Burundi (CAVIB)
East African Centre for Forced Migration
Forum pour le Renforcement de la Société Civile au Burundi (FORSC)
International Refugee Rights Initiative
National Coalition of Human Rights Defenders – Burundi (CBDDH)
Observatoire de la Lutte contre la Corruption et les Malversations Économiques (OLUCOME)
Réseau des Citoyens Probes (RCP)
SOS-Torture/Burundi
Ligue Iteka
Réseau des Défenseurs des Droits Humains en Afrique Centrale (REDHAC)
Réseau Ouest Africain des défenseurs des droits humains (ROADDH)
Eurac
Programmes: Rights in Exile
Regions: Great Lakes Region, Burundi
Type: Advocacy
The Return Dynamics of Refugees and IDPs in the Provinces of Bujumbura, Cibitoke and Muyinga
Summary of the research on the dynamics of refugee and IDP returns and reintegration in Burundi
Choiceless Departures and Involuntary Immobility: Forced Migration from the Gulf States to Africa
Thirty-nine organisations call on governments to ensure access to asylum seekers during COVID-19 pandemic
Self-reliance as a contemporary 'durable solution' to forced displacement
Citizenship Rights in Africa Initiative
Sudan Consortium
Marketing Permissions Please select all the ways you would like to hear from irrinews:
© 2021 Copyright International Refugee Rights Initiative.


The collection of "positive thinking" quotes will help you to stay positive and achieve a new destination in everyday life.
Could you believe that you can increase the opportunities of succeeding in anything you want to do by only thinking positively? In order to make your life happy and full of joy, you must have to be optimistic and hopeful. Most of the psychologists recommend positive thinking for good life and health.
One of the best pros of positive thinking is that it helps to boost your confidence and improves the relationship with others you have. There are many roads to improve your positive thinking and one of them is to build relationships with positive people. People with positive attitude are called positive people, these people inspire you more and more to alive you and helps to thinking positively.
In addition, reading of uplifting quotes is also one of the way that can inspire you. In that order, below are the list of some renowned inspiring positive thinking quotes and positive thinking proverbs to help you thinking positively.


I've seen a lot of misinformation recently about "no-agent annuities." I thought it was important to correct these half-truths.
You can't buy an annuity without an agent. Any company that is telling you they have "no-agent" annuities is misleading you (or breaking the law). The truth is that digital brokerages, like ours, are agents, too. If we weren't, it wouldn't be legal for us to sell you these products. It's not insurance agents that are the problem. It's the way most of them try too hard to sell you something you don't need and don't have an array of products from across the market.
You can buy an annuity online in a new way that cuts out all of the hassle. You can purchase an online annuity through an digital agency that offers products from the majority of carriers, discloses their commissions on each product, and is focused on giving you sound, data-driven advice rather than a sales pitch. This is a different process than the way a traditional insurance agent operates.
You can use a tool to determine if and which annuities are right for you. An online platform for learning about annuities, getting advice about whether to purchase and then seeing quotes in real-time exists (you're looking at it). On the Blueprint Income platform, you can talk to an agent if you'd like, but you don't have to if you don't want to. At no point will an agent pressure you into a sale.
You can actively choose to buy. There's a big difference between the type of buying process where someone is trying to sell you something versus seeking information and advice about whether you should purchase a financial product like an income annuity that you independently thought about buying. Be careful you don't end up getting sold instead of actively choosing to buy. This is a subtle but important difference.
You can see annuity quotes online without jumping through hoops. Most annuity "websites" today don't actually offer you the ability to see quotes online. These websites might take the information you provide and sell it to a third party, or, at best, email you quotes. In some cases, these sites are even worse than an annuity agent, so be careful.


from Mother Mary Francis, P.C.C.
In filial love and happy humility, our community and our federation of monasteries give thanks for your convoking the Synod of Bishops on the Consecrated Life which concluded on October 30, 1994, and from which we now look for continuing understanding and inspiration for our elected enclosed contemplative life.
Deeply appreciative of the fostering and safeguarding of our highly particularized way of religious life by Holy Church and the Supreme Pontiffs through the centuries and expressed anew by some speakers at the recent Synod, we are likewise painfully aware that there are those whose doubtless good intentions are not equaled by their understanding of our ancient and ever-new manner of living. One could wonder at the intensity with which some, even while expressing sincere appreciative love and admiration for contemporary religious life, at the same time wish to give it a bill of divorce from the enclosure known through the centuries as "papal," and remove from it the very practices and safeguards that insure continuance in its own specific integrity.
That all Christians are called to a degree of contemplative life and prayer, one would trust to be self-evident. The best service of men and women to all mankind must find its depth and endurance in the contemplation of God in prayer. One would expect it to be at least equally self-evident that those called by God to worship Him and serve mankind in an exclusively contemplative expression must needs "come apart." And stay apart.
It would seem strange indeed that anyone holding particular offices of service in Holy Church, much less certain cloistered religious themselves, would not understand that it is precisely their total stepping back from (and in no way apart from) the sufferings and needs of this world that brings lay folk on unending pilgrimages of faith to the doors of cloisters. It is not the laity who say to us: "Come out!" It is, in fact, they who grieve at the increasing exodus of cloistered nuns from their enclosures. It is that which wounds the laity who often enough understand the enclosed way of contemplative life better than do some contemplatives.
It is now a quarter century and more since Holy Church gave to us cloistered nuns the peerless document, Venite Seorsum, on which I was asked by a religious periodical in our country to write a commentary. In the profound gratitude of my heart for this inspiring instruction, I happily did so, and enclose a copy of it here. Obviously, your Holiness has not the time to read my little commentary, but perhaps one of your secretaries might wish to do so. It still expresses our mind and our gratitude and that of our federation which I have been privileged to serve as federal abbess for sixteen years.
Assuredly it is possible to be a contemplative on the highways and in the marketplace and under the constant pressure of worldly affairs. Your Holiness is alone more than sufficient proof of this! But for those whom God has called to the enclosed contemplative life in the cloister, it is necessary to live that contemplative life in the cloister. When this necessity is forgotten, debated and sometimes even derided and belittled, it needs no folio of proofs to demonstrate what eventuates. This is certainly readily demonstrable in our own country of the United States of America. Where nuns in the contemplative life, as described in Venite Seorsum, have lost awareness of the religious genius of papal enclosure, they no longer attract others to join them. Young girls do not come. Communities decline, decrease, and eventually die.
It is vital that we offer young people a clear and uncompromising modus vivendi as the enclosed contemplative nuns whom we have been called by God to be. From our own humble beginnings in a little white farmhouse which served us as monastery, in this small town unknown even to many Americans (including the foundresses at the time of foundation!), have come two restorations and three foundations of new monasteries, the most recent one in Holland.
What we have to offer the young who seek us out is nothing "active" or "useful" or "modern" as the world might reckon it. It is, rather, the intense interior activity of contemplation which calls us not out of our enclosure but deeply into it from which alone is our religious calling answered. We can reach the whole world in the "activity" of prayer and compassion and sacrificial love. Young people readily understand that the enclosed contemplative life is "useful" to the Church, to your Holiness, and to the world. We desire to preserve the charism of our own calling, ever deepening our understanding of it. These modern young folk, whom your Holiness so particularly loves, find our ancient way of life an inviting mystery which demands the whole of their modernity to fathom.
Our Poor Clare monasteries from the time of our glorious foundress St. Clare, whose eighth centenary of earthly birth your Holiness celebrated with us last year and about which you wrote us a letter, have been autonomous communities, each a distinct family of enclosed contemplatives happily adjoined to one another in federations, each preserving its specific charism and contributing to the larger charism of the whole family of federation. The "central government" which some are urging be imposed has never been the way of our foundress nor of her great daughter, St. Colette, who restored the primitive ideal in so many places in the early fifteenth century where it had fallen into ruins precisely where enclosure and that poverty of "the little ones of the Lord" (as St. Francis and St. Clare loved to describe themselves) were no longer observed.
To take a different path would be to depart from the genius of St. Clare and St. Colette. Our enclosure has always been called "papal" and we pray that it always will be, for we belong in a very specific way to your Holiness. And we know ourselves well-guarded and well-guided by you for whom we daily offer the witness and the sacrifice of our lives.
As we cherish our consecrated brideship with Christ in the intimacy of our enclosed contemplative lives, we humbly beg for your blessing and your continued guarding of our ancient and proven way of life against those who, doubtless well-intentioned, are laying threat to our life because they do not understand it.