quinta-feira, 19 de dezembro de 2019

Organizando melhor os Models dentro do Laravel



Organizando melhor os Models dentro do Laravel

Muitas vezes me eu quero deixar a minha estrutura de projeto mais organizada e o Laravel deixa os Models meio soltos dentro do projeto.

Por padrão, os modelos estão localizados na pasta  App do aplicativo, o que pode se tornar uma bagunça se você estiver trabalhando em um aplicativo grande. 
Então, decidi organizar meus modelos dentro de App\Models

Atualizando o Model User

Para conseguir isso, a primeira coisa que temos que fazer é mover para a App/Models e atualizar o namespace de acordo.
Isso requer que você atualize todos os arquivos que referenciam a App\User. O primeiro é config/auth.php:

  'provider' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\Models\User :: class, // alterado
        ],
    ],
então o config/services.php:
   
'stripe' => [
        'model' => App\Models\User:: class, // alterado
        'key' => env ('STRIPE_KEY'),
        'secret' => env ('STRIPE_SECRET'),
    ],
e por último, mas não menos importante, o database/factories/UserFactory.php

$factory->define(App\Models\User::classe, function(Faker $faker) {
        return [
        'name' => $faker->name,
        'email' => $faker->unique()->safeEmail,
        'email_verified_at' => now(),
        'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password
        'remember_token' => Str::random(10),
    ];
});

Gerando Models daqui para frente


Agora, precisamos alterar para a geração de novos arquivos dentro da pasta Models 

Para corrigir isso, podemos estender o arquivo padrão ModelMakeCommand  
e criar um novo arquivo dentro de App\Console\Commands

<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use App\Console\Commands\ModelMakeCommand;
class AppServiceProvider extends ServiceProvider
{
  /**
    * Bootstrap any application services.
    *
    * @return void
    */
  public function boot()
  {
      //
  }
  /**
    * Register any application services.
    *
    * @return void
    */
  public function register()
  {
      $this->app->extend('command.model.make', function ($command, $app) {
          return new ModelMakeCommand($app['files']);
      });
  }
}

Após isso é só criar uma ligação dentro do App\Providers\AppServiceProvider.php

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
\\Aqui tbm precisa adicionar
use App\Console\ModelMakeCommand\Command;

class AppServiceProvider extends ServiceProvider
{
    /**
    * Register any application services.
    *
    * @return void
    */
    public function register()
    {
        //
    }

    /**
    * Bootstrap any application services.
    *
    * @return void
    */
    public function boot()
    {
        //adicionar essa parte
        $this->app->extend('command.model.make', function ($command, $app) {
            return new ModelMakeCommand($app['files']);
        });
    }
}

quarta-feira, 11 de dezembro de 2019

Resolução da universidade MongoDB -- M103 - Basic Cluster Administration - Mongo University - Respostas

Guia para resolver todos os exercícios da universidade MongoDB


M103 - Basic Cluster Administration - Mongo University - Solutions
==================================================

C:\Users\joefreire\Documents\m103\m103-vagrant-env

============================================================================================================
Chapter 0: Introduction & Setup
================================
vagrant ssh
validate_box
6445a3f8b6f1cc5873cf1ac94194903444602708d4eb189d42b6e65ca594d80d

============================================================================================================
Chapter 1: The Mongod
======================
mongod --dbpath /data/db/ --port 27000 --bind_ip "127.0.0.1,192.168.103.100" --auth

mongo admin --host localhost:27000 --eval '
  db.createUser({
    user: "m103-admin",
    pwd: "m103-pass",
    roles: [
      {role: "root", db: "admin"}
    ]
  })
'

Chapter 1: The Mongod
Lab - Launching Mongod :
-------------------------
validate_lab_launch_mongod
5a21c6dd403b6546001e79c0
-----------------------------------------------------------------------------------------------------------
mkdir /data/logs
vi /data/mongod.conf

storage:
  dbPath: "/data/db"
systemLog:
  path: "/data/logs/mongod.log"
  destination: "file"
net:
  bindIp : "127.0.0.1,192.168.103.100"
  port: 27000
security:
  authorization: enabled
processManagement:
  fork : true

mongod -f /data/mongod.conf

Chapter 1: The Mongod
Lab - Configuration File
--------------------------
validate_lab_configuration_file
5a2f0e41ae3c4e2f7427ee8f
---------------------------------------------------------------------------------------------------------
sudo mkdir -p /var/mongodb/db/
mkdir -p /var/mongodb/db/
sudo kill -9 2400
mongod -f /data/mongod.conf
rm -rf mongodb-27000.sock
sudo chown -R vagrant:vagrant /var/mongodb/db/

storage:
  dbPath: "/var/mongodb/db/"
systemLog:
  path: "/data/logs/mongod.log"
  destination: "file"
net:
  bindIp : "127.0.0.1,192.168.103.100"
  port: 27000
security:
  authorization: enabled
processManagement:
  fork : true

mongo admin --host localhost:27000 --eval '
  db.createUser({
    user: "m103-admin",
    pwd: "m103-pass",
    roles: [
      {role: "root", db: "admin"}
    ]
  })
'

Chapter 1: The Mongod
Lab - Change the Default DB Path
---------------------------------
validate_lab_change_dbpath
5a2f973bcb6b357b57e6bf43
--------------------------------------------------------------
mongo admin --port 27000 -u m103-admin -p m103-pass --eval 'db.shutdownServer()'

storage:
  dbPath: "/var/mongodb/db/"
systemLog:
  path: "/var/mongodb/db/mongod.log"
  destination: "file"
  logAppend: true
net:
  bindIp : "127.0.0.1,192.168.103.100"
  port: 27000
security:
  authorization: enabled
processManagement:
  fork : true
operationProfiling:
  slowOpThresholdMs: 50

Chapter 1: The Mongod
Lab - Logging to a Different Facility
---------------------------------------
validate_lab_different_logpath
5a32e5835d7a25685155aa61
--------------------------------------------------------------
mongo admin --host localhost:27000 -u m103-admin -p m103-pass --eval '
  db.createUser({
    user: "m103-application-user",
    pwd: "m103-application-pass",
    roles: [
      {role: "readWrite", db: "applicationData"}
    ]
  })
'

Chapter 1: The Mongod
Lab - Creating First Application User
--------------------------------------
validate_lab_first_application_user
5a32fdd630bff1f2fcb87acf
-------------------------------------------------------------
mongoimport --port 27000 -u m103-application-user -p m103-application-pass --authenticationDatabase admin -d applicationData -c products /dataset/products.json

vagrant@m103:/tmp$ mongoimport --port 27000 -u m103-application-user -p m103-application-pass --authenticationDatabase admin -d applicationData -c products /dataset/products.json
2019-01-20T14:59:08.225+0000    connected to: localhost:27000
2019-01-20T14:59:11.212+0000    [###.....................] applicationData.products     14.6MB/87.9MB (16.6%)
2019-01-20T14:59:14.212+0000    [#######.................] applicationData.products     29.0MB/87.9MB (32.9%)
2019-01-20T14:59:17.209+0000    [###########.............] applicationData.products     43.3MB/87.9MB (49.2%)
2019-01-20T14:59:20.209+0000    [###############.........] applicationData.products     57.3MB/87.9MB (65.2%)
2019-01-20T14:59:23.209+0000    [###################.....] applicationData.products     71.7MB/87.9MB (81.5%)
2019-01-20T14:59:26.209+0000    [#######################.] applicationData.products     86.5MB/87.9MB (98.4%)
2019-01-20T14:59:26.470+0000    [########################] applicationData.products     87.9MB/87.9MB (100.0%)
2019-01-20T14:59:26.472+0000    imported 516784 documents

Chapter 1: The Mongod
Lab - Importing a Dataset
--------------------------
validate_lab_import_dataset
5a383323ba6dbcf3cbcaec97
============================================================================================================================================
Chapter 2: Replicaiton
=======================

mongo admin --port 27000 -u m103-admin -p m103-pass --eval 'db.shutdownServer()'

mongod-repl-1.conf
vi mongod-repl-1.conf

storage:
  dbPath: /var/mongodb/db/1
net:
  bindIp: 192.168.103.100,localhost
  port: 27001
security:
  authorization: enabled
  keyFile: /var/mongodb/pki/m103-keyfile
systemLog:
  destination: file
  path: /var/mongodb/db/mongod1.log
  logAppend: true
processManagement:
  fork: true
replication:
  replSetName: m103-repl

cp mongod-repl-1.conf mongod-repl-2.conf
cp mongod-repl-1.conf mongod-repl-3.conf
vi mongod-repl-2.conf
vi mongod-repl-3.conf
mkdir /var/mongodb/db/{1,2,3}

sudo mkdir -p /var/mongodb/pki
sudo chown vagrant:vagrant -R /var/mongodb
openssl rand -base64 741 > /var/mongodb/pki/m103-keyfile
chmod 600 /var/mongodb/pki/m103-keyfile

mongod -f mongod-repl-1.conf
mongod -f mongod-repl-2.conf
mongod -f mongod-repl-3.conf

mongo --port 27001
rs.initiate()
use admin
db.createUser({
  user: "m103-admin",
  pwd: "m103-pass",
  roles: [
    {role: "root", db: "admin"}
  ]
})

exit
mongo --host "m103-repl/192.168.103.100:27001" -u "m103-admin" -p "m103-pass" --authenticationDatabase "admin"
rs.status()
rs.add("m103:27002")
rs.add("m103:27003")

Chapter 2: Replication
Lab - Initiate a Replica Set Locally
-------------------------------------
validate_lab_initialize_local_replica_set
5a4d32f979235b109001c7bc

----------------------------------------------------------------------------------------------------------------
mongo --host "m103-repl/192.168.103.100:27001" -u "m103-admin" -p "m103-pass" --authenticationDatabase "admin"
rs.stepDown()
rs.status()
rs.remove("192.168.103.100:27001")
rs.status()
rs.add("m103:27001")
rs.status()

Chapter 2: Replication
Lab - Remove and Re-Add a Node
--------------------------------
validate_lab_remove_readd_node
5a4fff19c0324e9feb9f60b9

-----------------------------------------------------------------------------------------------------------------
mongod -f mongod-repl-1.conf
mongod -f mongod-repl-2.conf
mongod -f mongod-repl-3.conf

mongo --host "m103-repl/m103:27001" -u "m103-admin" -p "m103-pass" --authenticationDatabase "admin" (or)
mongo --port 27001 -u "m103-admin" -p "m103-pass" --authenticationDatabase "admin"
rs.status()
mongo admin --port 27003 -u "m103-admin" -p "m103-pass" --authenticationDatabase "admin" --eval 'db.shutdownServer()'
use testDatabase
db.new_data.insert({"m103": "very fun"}, { writeConcern: { w: 3, wtimeout: 1000 }})

MongoDB Enterprise m103-repl:PRIMARY> use testDatabase
switched to db testDatabase
MongoDB Enterprise m103-repl:PRIMARY> db.new_data.insert({"m103": "very fun"}, { writeConcern: { w: 3, wtimeout: 1000 }})
WriteResult({
        "nInserted" : 1,
        "writeConcernError" : {
                "code" : 64,
                "codeName" : "WriteConcernFailed",
                "errInfo" : {
                        "wtimeout" : true
                },
                "errmsg" : "waiting for replication timed out"
        }
})

Chapter 2: Replication
Lab - Writes with Failovers
----------------------------
Correct:
1)When a writeConcernError occurs, the document is still written to the healthy nodes.
2)The unhealthy node will have the inserted document when it is brought back online.
Wrong:
1)w: "majority" would also cause this write operation to return with an error.
2)The write operation will always return with an error, even if wtimeout is not specified.

---------------------------------------------------------------------------------------------------------------------------
mongod -f mongod-repl-1.conf
mongod -f mongod-repl-2.conf
mongod -f mongod-repl-3.conf

mongoimport --drop \
--host m103-repl/192.168.103.100:27002,192.168.103.100:27001,192.168.103.100:27003 \
-u "m103-admin" -p "m103-pass" --authenticationDatabase "admin" \
--db applicationData --collection products /dataset/products.json

vagrant@m103:~$ mongoimport --drop \
> --host m103-repl/192.168.103.100:27002,192.168.103.100:27001,192.168.103.100:27003 \
> -u "m103-admin" -p "m103-pass" --authenticationDatabase "admin" \
> --db applicationData --collection products /dataset/products.json
2019-01-22T06:25:25.459+0000    connected to: m103-repl/192.168.103.100:27002,192.168.103.100:27001,192.168.103.100:27003
2019-01-22T06:25:25.471+0000    dropping: applicationData.products
2019-01-22T06:25:28.440+0000    [#.......................] applicationData.products     4.38MB/87.9MB (5.0%)
2019-01-22T06:25:31.440+0000    [##......................] applicationData.products     8.67MB/87.9MB (9.9%)
2019-01-22T06:25:34.439+0000    [###.....................] applicationData.products     13.0MB/87.9MB (14.8%)
2019-01-22T06:25:37.439+0000    [####....................] applicationData.products     17.2MB/87.9MB (19.5%)
2019-01-22T06:25:40.439+0000    [#####...................] applicationData.products     21.4MB/87.9MB (24.3%)
2019-01-22T06:25:43.439+0000    [######..................] applicationData.products     25.6MB/87.9MB (29.1%)
2019-01-22T06:25:46.439+0000    [########................] applicationData.products     29.6MB/87.9MB (33.7%)
2019-01-22T06:25:49.440+0000    [#########...............] applicationData.products     33.7MB/87.9MB (38.4%)
2019-01-22T06:25:52.439+0000    [##########..............] applicationData.products     38.0MB/87.9MB (43.2%)
2019-01-22T06:25:55.439+0000    [###########.............] applicationData.products     42.0MB/87.9MB (47.7%)
2019-01-22T06:25:58.439+0000    [############............] applicationData.products     46.3MB/87.9MB (52.6%)
2019-01-22T06:26:01.439+0000    [#############...........] applicationData.products     50.1MB/87.9MB (56.9%)
2019-01-22T06:26:04.440+0000    [##############..........] applicationData.products     54.0MB/87.9MB (61.4%)
2019-01-22T06:26:07.440+0000    [###############.........] applicationData.products     58.1MB/87.9MB (66.0%)
2019-01-22T06:26:10.439+0000    [################........] applicationData.products     62.2MB/87.9MB (70.8%)
2019-01-22T06:26:13.441+0000    [##################......] applicationData.products     66.6MB/87.9MB (75.7%)
2019-01-22T06:26:16.439+0000    [###################.....] applicationData.products     70.8MB/87.9MB (80.6%)
2019-01-22T06:26:19.439+0000    [####################....] applicationData.products     74.9MB/87.9MB (85.2%)
2019-01-22T06:26:22.439+0000    [#####################...] applicationData.products     79.0MB/87.9MB (89.8%)
2019-01-22T06:26:25.439+0000    [######################..] applicationData.products     83.3MB/87.9MB (94.7%)
2019-01-22T06:26:28.230+0000    [########################] applicationData.products     87.9MB/87.9MB (100.0%)
2019-01-22T06:26:28.230+0000    imported 516784 documents
vagrant@m103:~$

use applicationData
db.products.count()
MongoDB Enterprise m103-repl:PRIMARY> use applicationData
switched to db applicationData
MongoDB Enterprise m103-repl:PRIMARY> db.products.count()
516784

Chapter 2: Replication
Lab - Read Concern and Read Preferences
-----------------------------------------
Correct:
1)secondaryPreferred
2)nearest
3)secondary
4)primaryPreferred
Wrong:
primary
=============================================================================================================================================
Chapter 3: Sharding
====================

1)Bring up the config server replica set (CSRS)

csrs_1.conf
vi csrs_1.conf

sharding:
  clusterRole: configsvr
replication:
  replSetName: m103-csrs
security:
  keyFile: /var/mongodb/pki/m103-keyfile
net:
  bindIp: localhost,192.168.103.100
  port: 26001
systemLog:
  destination: file
  path: /var/mongodb/db/csrs1/mongod.log
  logAppend: true
processManagement:
  fork: true
storage:
  dbPath: /var/mongodb/db/csrs1

cp csrs_1.conf csrs_2.conf
cp csrs_1.conf csrs_3.conf
vi csrs_2.conf
vi csrs_3.conf
mkdir /var/mongodb/db/{csrs1,csrs2,csrs3}

mongod -f csrs_1.conf
mongod -f csrs_2.conf
mongod -f csrs_3.conf

mongo --port 26001
rs.initiate()
use admin
db.createUser({
  user: "m103-admin",
  pwd: "m103-pass",
  roles: [
    {role: "root", db: "admin"}
  ]
})

db.auth("m103-admin","m103-pass")

exit
mongo --host "m103-csrs/192.168.103.100:26001" -u "m103-admin" -p "m103-pass" --authenticationDatabase "admin"
rs.status()
rs.add("m103:26002")
rs.add("m103:26003")

2. Bring up the mongos

mongos.conf
vi mongos.conf

sharding:
  configDB: m103-csrs/192.168.103.100:26001,192.168.103.100:26002,192.168.103.100:26003
security:
  keyFile: /var/mongodb/pki/m103-keyfile
net:
  bindIp: localhost,192.168.103.100
  port: 26000
systemLog:
  destination: file
  path: /var/mongodb/db/mongos.log
  logAppend: true
processManagement:
  fork: true

mongos -f mongos.conf

3. Reconfigure m103-repl

sharding:
  clusterRole: shardsvr
storage:
  wiredTiger:
     engineConfig:
        cacheSizeGB: .1


storage:
  dbPath: /var/mongodb/db/1
net:
  bindIp: 192.168.103.100,localhost
  port: 27001
security:
  authorization: enabled
  keyFile: /var/mongodb/pki/m103-keyfile
systemLog:
  destination: file
  path: /var/mongodb/db/mongod1.log
  logAppend: true
processManagement:
  fork: true
replication:
  replSetName: m103-repl
sharding:
  clusterRole: shardsvr
storage:
  wiredTiger:
     engineConfig:
        cacheSizeGB: .1

vi mongod-repl-1.conf
vi mongod-repl-2.conf
vi mongod-repl-3.conf

mongod -f mongod-repl-1.conf
mongod -f mongod-repl-2.conf
mongod -f mongod-repl-3.conf

4. Add m103-repl as the first shard

mongo --port 26000 -u "m103-admin" -p "m103-pass" --authenticationDatabase "admin"

sh.addShard("m103-repl/m103:27001")
-------------------------------------
Chapter 3: Sharding
Lab - Configure a Sharded Cluster
validate_lab_first_sharded_cluster
5a57de1cb1575291ce6e560a
---------------------------------------

mongod -f csrs_1.conf
mongod -f csrs_2.conf
mongod -f csrs_3.conf

mongod -f mongod-repl-1.conf
mongod -f mongod-repl-2.conf
mongod -f mongod-repl-3.conf

mongos -f mongos.conf

mongo admin --port 26000 -u "m103-admin" -p "m103-pass" --authenticationDatabase "admin" --eval 'db.shutdownServer()'

mongo admin --port 26001 -u "m103-admin" -p "m103-pass" --authenticationDatabase "admin" --eval 'db.shutdownServer()'
mongo admin --port 26002 -u "m103-admin" -p "m103-pass" --authenticationDatabase "admin" --eval 'db.shutdownServer()'
mongo admin --port 26003 -u "m103-admin" -p "m103-pass" --authenticationDatabase "admin" --eval 'db.shutdownServer()'

mongo admin --port 27001 -u "m103-admin" -p "m103-pass" --authenticationDatabase "admin" --eval 'db.shutdownServer()'
mongo admin --port 27002 -u "m103-admin" -p "m103-pass" --authenticationDatabase "admin" --eval 'db.shutdownServer()'
mongo admin --port 27003 -u "m103-admin" -p "m103-pass" --authenticationDatabase "admin" --eval 'db.shutdownServer()'

/var/mongodb/db/1
/var/mongodb/db/csrs1

--------------------------------------
--------------------------------------------------------------------------------------------------------------------------------
mkdir /var/mongodb/db/{4,5,6}

vi mongod-repl-4.conf

storage:
  dbPath: /var/mongodb/db/4
  wiredTiger:
     engineConfig:
        cacheSizeGB: .1
net:
  bindIp: 192.168.103.100,localhost
  port: 27004
security:
  keyFile: /var/mongodb/pki/m103-keyfile
systemLog:
  destination: file
  path: /var/mongodb/db/4/mongod.log
  logAppend: true
processManagement:
  fork: true
operationProfiling:
  slowOpThresholdMs: 50
replication:
  replSetName: m103-repl-2
sharding:
  clusterRole: shardsvr

cp mongod-repl-4.conf mongod-repl-5.conf
cp mongod-repl-4.conf mongod-repl-6.conf
vi mongod-repl-5.conf
vi mongod-repl-6.conf

mongod -f mongod-repl-4.conf
mongod -f mongod-repl-5.conf
mongod -f mongod-repl-6.conf

mongo --port 27004
rs.initiate()
use admin
db.createUser({
  user: "m103-admin",
  pwd: "m103-pass",
  roles: [
    {role: "root", db: "admin"}
  ]
})

db.auth("m103-admin","m103-pass")

exit
mongo --host "m103-repl/192.168.103.100:27001" -u "m103-admin" -p "m103-pass" --authenticationDatabase "admin"
rs.status()
rs.add("m103:27005")
rs.add("m103:27006")

sh.addShard("m103-repl-2/192.168.103.100:27004")

mongoimport --drop /dataset/products.json --port 26000 -u "m103-admin" \
-p "m103-pass" --authenticationDatabase "admin" \
--db m103 --collection products

sh.enableSharding("m103")
use m103
db.products.createIndex({"sku": 1})
sh.shardCollection("m103.products", {"sku" : 1 } ) or
db.adminCommand( { shardCollection: "m103.products", key: { sku: 1 } } )
------------------------------------
Chapter 3: Sharding
Lab - Shard a Collection
Choosing the Correct Shard Key
validate_lab_shard_collection
5a621149d083824c6d889865
------------------------------------
-----------------------------------------------------------------------------------------------------------------------------------

mongod -f csrs_1.conf
mongod -f csrs_2.conf
mongod -f csrs_3.conf

mongod -f mongod-repl-1.conf
mongod -f mongod-repl-2.conf
mongod -f mongod-repl-3.conf

mongod -f mongod-repl-4.conf
mongod -f mongod-repl-5.conf
mongod -f mongod-repl-6.conf

mongos -f mongos.conf

mongo admin --port 26000 -u "m103-admin" -p "m103-pass" --authenticationDatabase "admin"

use config
db.chunks.find().pretty()
----------------------------------------------------------
Chapter 3: Sharding
Lab - Documents in Chunks
validate_lab_document_chunks m103.products-sku_MinKey
5ac28a604c7baf1f5c25d51b
-----------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------

Chapter 3: Sharding
Lab - Detect Scatter Gather Queries
Correct Answers:
1)Query 1 performs a document fetch.
2)Query 1 performs an index scan before the sharding filter.
3)Query 2 performs a collection scan.
Incorrect Answers:
1)Query 2 uses the shard key.
2)Both queries perform a sharding filter before the document fetch.

======================================================================================================================================================
Final Exam
===========
Final: Question 1
------------------
Problem: Which of the following are valid command line instructions to start a mongod? You may assume that all specified files already exist.

Correct:
1)mongod --logpath /var/log/mongo/mongod.log --dbpath /data/db --fork
2)mongod -f /etc/mongod.conf
Incorrect:
1)mongod --dbpath /data/db --fork
2)mongod --log /var/log/mongo/mongod.log --authentication

----------------------------------------------------------

Final: Question 2
------------------

Problem: Given the following config file: How many directories must MongoDB have access to? Disregard the path to the configuration file itself.

storage:
  dbPath: /data/db
systemLog:
  destination: file
  path: /var/log/mongod.log
net:
  bindIp: localhost,192.168.0.100
security:
  keyFile: /var/pki/keyfile
processManagement:
  fork: true

Correct:
1)3
Incoeect:
1)1
2)2
3)4

------------------------------------------------------------

Final: Question 3
------------------

Problem: Given the following output from rs.status().members:

[
  {
    "_id": 0,
    "name": "localhost:27017",
    "health": 1,
    "state": 1,
    "stateStr": "PRIMARY",
    "uptime": 548,
    "optime": {
      "ts": Timestamp(1521038871, 1),
      "t": NumberLong("1")
    },
    "optimeDate": ISODate("2018-03-14T14:47:51Z"),
    "electionTime": Timestamp(1521038358, 2),
    "electionDate": ISODate("2018-03-14T14:39:18Z"),
    "configVersion": 2,
    "self": true
  },
  {
    "_id": 1,
    "name": "localhost:27018",
    "health": 1,
    "state": 2,
    "stateStr": "SECONDARY",
    "uptime": 289,
    "optime": {
      "ts": Timestamp(1521038871, 1),
      "t": NumberLong("1")
    },
    "optimeDurable": {
      "ts": Timestamp(1521038871, 1),
      "t": NumberLong("1")
    },
    "optimeDate": ISODate("2018-03-14T14:47:51Z"),
    "optimeDurableDate": ISODate("2018-03-14T14:47:51Z"),
    "lastHeartbeat": ISODate("2018-03-14T14:47:56.558Z"),
    "lastHeartbeatRecv": ISODate("2018-03-14T14:47:56.517Z"),
    "pingMs": NumberLong("0"),
    "syncingTo": "localhost:27022",
    "configVersion": 2
  },
  {
    "_id": 2,
    "name": "localhost:27019",
    "health": 1,
    "state": 2,
    "stateStr": "SECONDARY",
    "uptime": 289,
    "optime": {
      "ts": Timestamp(1521038871, 1),
      "t": NumberLong("1")
    },
    "optimeDurable": {
      "ts": Timestamp(1521038871, 1),
      "t": NumberLong("1")
    },
    "optimeDate": ISODate("2018-03-14T14:47:51Z"),
    "optimeDurableDate": ISODate("2018-03-14T14:47:51Z"),
    "lastHeartbeat": ISODate("2018-03-14T14:47:56.558Z"),
    "lastHeartbeatRecv": ISODate("2018-03-14T14:47:56.654Z"),
    "pingMs": NumberLong("0"),
    "syncingTo": "localhost:27022",
    "configVersion": 2
  },
  {
    "_id": 3,
    "name": "localhost:27020",
    "health": 1,
    "state": 2,
    "stateStr": "SECONDARY",
    "uptime": 289,
    "optime": {
      "ts": Timestamp(1521038871, 1),
      "t": NumberLong("1")
    },
    "optimeDurable": {
      "ts": Timestamp(1521038871, 1),
      "t": NumberLong("1")
    },
    "optimeDate": ISODate("2018-03-14T14:47:51Z"),
    "optimeDurableDate": ISODate("2018-03-14T14:47:51Z"),
    "lastHeartbeat": ISODate("2018-03-14T14:47:56.558Z"),
    "lastHeartbeatRecv": ISODate("2018-03-14T14:47:56.726Z"),
    "pingMs": NumberLong("0"),
    "syncingTo": "localhost:27022",
    "configVersion": 2
  },
  {
    "_id": 4,
    "name": "localhost:27021",
    "health": 0,
    "state": 8,
    "stateStr": "(not reachable/healthy)",
    "uptime": 0,
    "optime": {
      "ts": Timestamp(0, 0),
      "t": NumberLong("-1")
    },
    "optimeDurable": {
      "ts": Timestamp(0, 0),
      "t": NumberLong("-1")
    },
    "optimeDate": ISODate("1970-01-01T00:00:00Z"),
    "optimeDurableDate": ISODate("1970-01-01T00:00:00Z"),
    "lastHeartbeat": ISODate("2018-03-14T14:47:56.656Z"),
    "lastHeartbeatRecv": ISODate("2018-03-14T14:47:12.668Z"),
    "pingMs": NumberLong("0"),
    "lastHeartbeatMessage": "Connection refused",
    "configVersion": -1
  },
  {
    "_id": 5,
    "name": "localhost:27022",
    "health": 1,
    "state": 2,
    "stateStr": "SECONDARY",
    "uptime": 289,
    "optime": {
      "ts": Timestamp(1521038871, 1),
      "t": NumberLong("1")
    },
    "optimeDurable": {
      "ts": Timestamp(1521038871, 1),
      "t": NumberLong("1")
    },
    "optimeDate": ISODate("2018-03-14T14:47:51Z"),
    "optimeDurableDate": ISODate("2018-03-14T14:47:51Z"),
    "lastHeartbeat": ISODate("2018-03-14T14:47:56.558Z"),
    "lastHeartbeatRecv": ISODate("2018-03-14T14:47:55.974Z"),
    "pingMs": NumberLong("0"),
    "syncingTo": "localhost:27017",
    "configVersion": 2
  },
  {
    "_id": 6,
    "name": "localhost:27023",
    "health": 1,
    "state": 2,
    "stateStr": "SECONDARY",
    "uptime": 289,
    "optime": {
      "ts": Timestamp(1521038871, 1),
      "t": NumberLong("1")
    },
    "optimeDurable": {
      "ts": Timestamp(1521038871, 1),
      "t": NumberLong("1")
    },
    "optimeDate": ISODate("2018-03-14T14:47:51Z"),
    "optimeDurableDate": ISODate("2018-03-14T14:47:51Z"),
    "lastHeartbeat": ISODate("2018-03-14T14:47:56.558Z"),
    "lastHeartbeatRecv": ISODate("2018-03-14T14:47:56.801Z"),
    "pingMs": NumberLong("0"),
    "syncingTo": "localhost:27022",
    "configVersion": 2
  }
]

At this moment, how many replica set members are eligible to become primary in the event of the current Primary crashing or stepping down?

Correct:
1)5
Incorrect:
1)4
2)6
3)7

------------------------------------------------------------
Final: Question 4
------------------

Problem: Given the following replica set configuration:

conf = {
  "_id": "replset",
  "version": 1,
  "protocolVersion": 1,
  "members": [
    {
      "_id": 0,
      "host": "192.168.103.100:27017",
      "priority": 2,
      "votes": 1
    },
    {
      "_id": 0,
      "host": "192.168.103.100:27018",
      "priority": 1,
      "votes": 1
    },
    {
      "_id": 2,
      "host": "192.168.103.100:27018",
      "priority": 1,
      "votes": 1
    }
  ]
}

What errors are present in the above replica set configuration?

Correct:
1)You cannot specify the same host information amoung multiple members.
2)You cannot specify two members with the same _id
Incorrect:
1)You can only specify a priority of 0 or 1, member "_id": 0 is incorrectly configured
2)you cannot have three members in a replica set.

-------------------------------------------------------------------------------------
Final: Question 5
------------------

Problem: Given the following replica set configuration:

conf = {
  "_id": "replset",
  "version": 1,
  "protocolVersion": 1,
  "members": [
    {
      "_id": 0,
      "host": "localhost:27017",
      "priority": 1,
      "votes": 1
    },
    {
      "_id": 1,
      "host": "localhost:27018",
      "priority": 1,
      "votes": 1
    },
    {
      "_id": 2,
      "host": "localhost:27019",
      "priority": 1,
      "votes": 1
    },
    {
      "_id": 3,
      "host": "localhost:27020",
      "priority": 0,
      "votes": 0,
      "slaveDelay": 3600
    }
  ]
}

What is the most likely role served by the node with "_id": 3?

Correct:
1)It serves as a "hot" backup of data in case of accidental data loss on the other members, like a DBA accidentally dropping the database.
Incorrect:
1)It servers to service reads and writes for people in the same geographic region as the host machine
2)It servers as a reference to perform analytics on how data is changing over time
3)It serves as a hidden secondary available to use for non-critical analysis operations

-------------------------------------------------------------------------------------------------------------
Final: Question 6
------------------
Given the following shard key: { "country": 1, "_id": 1 }

Which of the following queries will be routed (targeted)? Remember that queries may be routed to more than one shard.

Correct:
1)db.customers.find({"country": "Norway", "_id": 54})
2)db.customers.find({"_id": 914, "country": "Sweden"})
3)db.customers.find({"country": { $gte: "Portugal", $lte: "Spain" }})
Incorrect:
1)db.customers.find({"_id": 455})

==============================================================================================================================

segunda-feira, 9 de dezembro de 2019

Sequencia bimestral para plano de aula capoeira

AULA 1:
DISCIPLINA: Educação Física
DURAÇÃO: 50 min
OBJETIVO: Apresentar os conceitos da capoeira para os alunos
Introdução
- Para esta primeira aula leve algumas figuras da capoeira.
Se for possível, apresente o vídeo https://www.youtube.com/watch?v=nngZA7wDS3I
Pergunte para os alunos se conhecem a capoeira; o que acham que faz parte da capoeira; se já assistiram alguma apresentação; se alguém já a vivenciou. Vá montando uma lista com eles sobre tudo o que acham que faz parte do contexto da capoeira para discutir no final da aula.
- Desenvolvimento
- Divida os alunos em duplas. Cada dupla terá um giz nas mãos e irão desenhar, cada um o triângulo do outro, no chão. Cada ponto da base deste triângulo deve ser desenhado onde os pés estiverem na posição de base da ginga: o primeiro aluno fica de pé, com as pernas um pouco afastadas e o outro irá fazer um pequeno círculo em volta de cada um dos pés do primeiro. Em seguida o professor solicita que este aluno desloque uma de suas pernas para trás e tente permanecer em equilíbrio nesta posição. O segundo aluno irá desenhar o terceiro ponto que formará o triângulo. Após todos os alunos terem seus triângulos desenhados o professor ensina a dinâmica da ginga.
- Mostre as figuras da ginga, da bênção e da meia lua de frente. Solicite aos alunos que realizem estes movimentos da maneira que estão percebendo.
Bênção. Faça com os alunos um varal com folhas de rascunho penduradas na altura da cintura. Solicite que, se desloquem lateralmente e tentem, da base da ginga, empurrar as folhas com o pé (chute frontal, pé flexionado). A perna é estendida totalmente, empurrando as folhas.   
Meia-lua-de-frente. peça aos alunos que imaginem desenhar uma meia lua, a sua frente, com a perna que está atrás, vindo para frente e retornando. Agora dificulte um pouco solicitando que ginguem e realizem a meia-lua-de-frente, para os dois lados.
- Faça uma brincadeira de pega-pega, na qual para não serem pegos, eles deverão realizar um dos três movimentos aprendidos.
- Avaliação
Discuta com os alunos sobre tudo o que foi visto e discutido na aula.
Pergunte se acham que o que realizaram na aula faz parte da capoeira; suas opiniões sobre a capoeira ser luta, jogo, brincadeira, etc;
Explique os motivos pelos quais a capoeira comporta estas definições.
Peça aos alunos para elaborarem cartazes sobre uma pesquisa feita sobre capoeira com gravuras e informações relevantes










AULA 2:
DISCIPLINA: Educação Física
DURAÇÃO: 50 min
OBJETIVO: Importância cultural da capoeira e suas músicas
Introdução:
Retome os cartazes da aula anterior e pergunte como foi sua repercussão em casa.
Convide todos para assistirem um filme relacionado ao tema estudado nessa seqüência didática.
Desenvolvimento:
Escolha um filme que fale de algum mestre reconhecido, como por exemplo, Mestre Bimba: A capoeira iluminada.
Faça um roteiro para chamar a atenção dos pontos mais relevantes que o filme apresenta sobre as questões sociais e outras.
Debata com o grupo a importância do canto nessa manifestação cultural. A música é um componente fundamental da capoeira. Ela determina o ritmo e o estilo do jogo que é jogado durante a roda de capoeira.
A música é composta de instrumentos e de canções, podendo o ritmo variar de acordo com o Toque de Capoeira. Registre os pontos levantados por eles. E proponha uma vivência de alguns elementos da capoeira.
- Avaliação: Discuta com os alunos sobre tudo o que foi visto e discutido na aula.
- Materiais
Aparelho de DVD ou vídeo do filme






AULA 3:
DISCIPLINA: Educação Física
DURAÇÃO: 50 min
OBJETIVO: Participação da turma em uma roda de capoeira
Introdução:
Elaboração de um plano para convidar um mestre de capoeira para a turma
Desenvolvimento:
Programe com a turma a vinda de um mestre ou grupo de capoeira para dialogar com a mesma, para isso organize a turma de forma a dividir responsabilidades e ações, como por exemplo:
Elaboração coletiva do convite para o mestre
Elaboração de um roteiro de perguntas da classe
Distribuição de responsabilidades - quem convida, quem pergunta, quem registra (na lousa ou cartaz),quem agradece,quem fotografa
- Avaliação: Discuta com os alunos sobre tudo o que foi visto e discutido na aula.
- Materiais
Cartolina e Material para confecção do convite para o mestre





AULA 4
DISCIPLINA: Educação Física
DURAÇÃO: 50 min
OBJETIVO: Participação da turma em uma roda de capoeira 2
Introdução:
Continuação da aula anterior
Desenvolvimento:
Entrevista com o mestre de capoeira
Perguntas e respostas
Músicas
Jogando capoeira com o mestre
- Avaliação: Discuta com os alunos sobre tudo o que foi visto e discutido na aula.



AULA 5
DISCIPLINA: Educação Física
DURAÇÃO: 50 min
OBJETIVO: Fundamentos básicos da capoeira (Aú (estrelinha)/Equilíbrio Estático e Dinâmico/ Ginga/ Benção)
Introdução:
 Enquanto o professor passa o alongamento este pode questionar os alunos sobre a pergunta da aula anterior, falar sobre a importância de se alongar principalmente antes de praticar uma luta, seja qual for esta. 
Desenvolvimento:
Organizar a turma em duplas e ensinar a ginga, deixar que eles pratiquem enquanto o professor passa pelas duplas corrigindo o movimento. 
Com o auxílio do colega, o aluno deverá realizar o exercício de “parada de mãos” e alternadamente, deverá retirar uma das mãos do chão. Aos poucos o professor deverá estimular seus alunos a realizarem os movimentos sozinhos.
- Avaliação: Discuta com os alunos sobre tudo o que foi visto e discutido na aula.

  
AULA 6
DISCIPLINA: Educação Física
DURAÇÃO: 50 min
OBJETIVO: Vivenciar o rabo-de-arraia, esquiva, rolê e negativa. Discutir/refletir sobre os cânticos da capoeira.
Roda de conversa: discuta com seus alunos sobre o que pesquisaram acerca dos cânticos, seu papel na roda de capoeira, o significado de suas letras.
Vivências: Utilize uma corda grande. Inicie com a brincadeira do relógio, girando a corda e todos devem livrar-se dela com diferentes movimentos de capoeira. Em seguida estique a corda e solicite aos alunos que passem por ela de diversas maneiras.  Sugestões: Somente por cima fazendo bananeira, aú, e os golpes já aprendidos aproveitando para que relembrem de todos os fundamentos. Varie as alturas. Somente por baixo: gingando; vá abaixando a corda. Gingando até chegar na corda, de lado para ela. Para ultrapassá-la deverão se abaixar de lado passando a coluna para o outro lado e desta forma já estarão realizando a esquiva lateral. Da mesma forma vá abaixando e sugerindo que passem para o outro lado com uma das mãos no chão e a outra protegendo o rosto, sem tocar na corda (início do rolê e negativa).
Alunos em dupla. Aluno A, irá desferir somente a meia-lua-de-frente e o aluno B deverá esquivar-se como passou pela corda.
- Negativa e rolê: Dinâmica do morto-vivo. Alunos gingando, espalhados pela sala. Utilize um aparelho de som. Ao parar a música deverão colocar uma das mãos no chão descendo na posição de base da ginga (negativa) como fizeram na corda. Este é o movimento “1”. Logo após faça o mesmo para a posição “2”: partindo da posição 1 irão, abaixados, girar o corpo para o lado da mão que está no chão fazendo um rolê. Em seguida eles deverão ficar atentos ao movimento que o professor irá solicitar. Para variar e desafiar ainda mais, o professor pode trocar: quando falar o número 1 terão que realizar o número 2 e vice-versa.
- Rabo-de-arraia. Divida o movimento em duas fases: inicialmente saindo da base da ginga, com a perna esquerda à frente, os alunos levarão esta perna para a lateral direita do corpo e as duas mãos ao chão. Repita algumas vezes. Em seguida passe para a fase 2: os alunos irão realizar o movimento da fase 1 e passar a perna direita, desenhando um semi-círculo no ar até voltar para a posição inicial da ginga.
Roda Final: Pergunte se alguém conhece alguma música de capoeira, se quer cantá-la. Leve cd’s com diferentes músicas da capoeira. Escolha duas mais fáceis, os cantos corridos; leve a letra e cante com eles procurando acompanhar com as palmas.  
Aproveite para discutir/refletir com eles sobre a discriminação, presente nas letras das músicas, relativa às mulheres capoeiristas, aos próprios negros e sua cultura e o respeito que devemos ter para com estas diferenças.
- Utilizando material reciclável: solicite que levem para a próxima aula garrafas pet de 2L.
  
AULA 6
DISCIPLINA: Educação Física
DURAÇÃO: 50 min
OBJETIVO: Vivenciar a queixada. Discutir/refletir sobre o jogo (cooperativo) de capoeira.
Roda de conversa: Converse com os alunos sobre o jogo da capoeira, se já viram, se há o toque entre os jogadores; questione-os sobre lealdade, respeito mútuo, cooperação. Demonstre vídeos de jogos de capoeira leais, nos quais os capoeiristas se respeitam, brincam e jogam cooperativamente.
Vivências: Utilize as garrafas pet trazidas por eles. Os alunos deverão amarrá-las, pela boca, com um cordão grande e pendurá-las no teto, enfileiradas. Assim elas se tornarão alvos e todos devem ir passando por elas e fazendo um movimento da capoeira tendo as garrafas penduradas como referência. Procure ir variando as direções, alturas e movimentos.
- Queixada: Demonstre a figura da queixada para facilitar seu ensino. Divida a aplicação pedagógica da queixada em 3 fases: Inicie a queixada a partir da posição de base da ginga e ensine somente o movimento inicial dela: a perna da frente se desloca para a frente da outra perna. Repita. Em seguida solicite que acrescentem o movimento da perna de trás: ela avança para frente. Repita. Em seguida o terceiro passo: a perna da frente retorna para trás fazendo um movimento circular.
- Agora em duplas, todos ao mesmo tempo, ao som da música, o aluno A irá somente desferir os golpes e outros movimentos, e o aluno B irá somente esquivar. Depois trocam de função. Em seguida irão jogar capoeira, ou seja, os dois, ao mesmo tempo, vão desferir os golpes e esquivar de acordo com o movimento do outro.
- Solicite aos alunos que se unam em pequenos grupos. Nos grupos irão montar uma pequena sequência que contenha todos os movimentos que já aprenderam. Logo após, cada grupo apresentará sua sequência para a turma e todos deverão realizá-la.
Roda Final: - Discussão: como foi trabalhar em grupo? Houve cooperação? O que preferem? Por quê? Quais as vantagens de se trabalhar em grupo? Sabemos dividir?
A cooperação no jogo da capoeira: para jogar capoeira um precisa do outro, ou seja, irão jogar “com”, e não “contra” o outro. Conscientize-o de que ele pode apenas demonstrar seus golpes, em direção ao seu colega sem atingí-lo, controlando seus movimentos por isso o toque na capoeira não é predominante.




AULA 8
DISCIPLINA: Educação Física
DURAÇÃO: 50 min
OBJETIVO: Vivenciar o jogo de capoeira e seus estilos. Discutir/refletir sobre os rituais/regras da roda de capoeira e vivenciá-la. Vertentes de capoeira: angola, regional e contemporânea.
Roda de conversa: Converse com os alunos sobre os diferentes tipos de jogo da capoeira, como o são bento pequeno, angola e são bento grande, mais indicados para iniciantes e o ambiente escolar.
Discuta com eles sobre os rituais da roda para que ela funcione, necessariamente com a cooperação de todos. Converse também sobre as vertentes da capoeira
Vivências: utilizando-se de cd’s demonstre aos alunos os 3 ritmos citados e solicite que se movimentem de acordo com o ritmo tocado e discuta as diferenças do ritmo e o tipo de jogo.
- Todos em duplas jogando são bento pequeno que é um jogo mais recreativo, solto, de ritmo médio. Um ou mais alunos irão tirando um da dupla e jogam com quem ficou, até que todos joguem com todos. Essa é a “compra” do jogo que no final será realizado na roda.
- Faça uma grande roda e vá problematizando com os alunos os rituais básicos da roda de capoeira: início e término do jogo, a compra, o berimbau.
O jogo começa com os alunos abaixados no “pé do berimbau”, pois este é a referência da roda, mesmo que seja imaginário. Não podem iniciar o jogo de outro lugar da roda. Eles devem se cumprimentar e sair em aú (o mais comum), mas também podem fazer uma negativa/rolê, bananeira, dentre outros. Todos devem responder ao coro, bater palmas e tocar os instrumentos. Solicite que realizem os sons dos instrumentos imaginários e troquem sempre as funções, vivenciando todos os momentos da roda. A compra do jogo, ou seja, quando um capoeirista quer jogar com um dos dois que já estão na roda jogando capoeira, ele pede permissão ao mestre ou, na falta deste, ao mais graduado que está comandando a roda (na escola será o professor) para entrar e tirar um dos dois. Este pedido é realizado com gestos, com a linguagem corporal, sem a menção de palavras. Depois de permitido o capoeirista entra na roda, sempre saindo do pé do berimbau, pelo lado direito, e de preferência encosta uma de suas mãos nas costas de quem ele quer que saia. Pode ainda entrar por entre os dois (atento ao momento certo para não ser atingido), fazendo um movimento de esquiva e com um dos braços estendidos, de frente para aquele com quem ele quer jogar.
Para finalizar o jogo, o capoeirista faz um sinal de término com as mãos, cruzando os punhos, ou apenas dando uma das mãos ao outro, cumprimentando-o. Todo jogo deve terminar com um aperto de mãos entre os capoeiristas em sinal de respeito e agradecimento pelo jogo realizado. Após este cumprimento eles devem sair andando de costas, sempre de frente para o centro da roda para evitar qualquer acidente.
Roda Final: Discussão: ética; solidariedade – trocar de lugar com quem está tocando os instrumentos, mesmo imaginários, para que estes possam jogar. Provoque a reflexão e que exponham suas opiniões sobre o fato de se cumprimentarem ao entrar e sair da roda.
- Relembre juntamente com os alunos tudo o que foi aprendido e vivenciado e faça uma avaliação em conjunto com todos sobre os aprendizados, pontos positivos e negativos.