configurar nginx corretamente – Stack Overflow em Português

recentemente decidi mudar do Apache2 p/ o Nginx 100 o mínimo de conhecimento.
deixarei aki o exemplo da configuração do site habilitado para que possam me dizer o que está errado…

objetivo éh mudar o diretório raiz, habilitar index.php, redirecionar p/ https://www. e melhorar o código (y)

sudo nano /etc/nginx/sites-enabled/example.com.conf:

server {
    listen 80;
    server_name www.example.com example.com;
    index index.php;
    root /websites/example.com/
    include snippets/letsencrypt.conf;
    return 301 https://www.$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name www.example.com;
    index index.php
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
    include snippets/ssl.conf;
    include snippets/letsencrypt.conf;
    root /websites/example.com/
    return 301 https://www.example.com$request_uri;
}

server {
    listen 443 ssl http2;
    server_name example.com;
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
    include snippets/ssl.conf;
    include snippets/letsencrypt.conf;
}

procurei livros referente ao Nginx e ñ encontrei nenhum em português se alguém souber informar algum será de grande avalia.
tomei como observação que tutoriais e exemplos parecem ser escassos :

pointers – Buffer Overflow issue in C code

I’ve been writing the following bit of code, and someone had informed me that it runs of the risk of having a buffer overflow.

Now admittedly my knowledge of buffer overflows may be not be as robust as I would like, but I thought that a buffer overflow is when the data being written will not fit within the bounderies of the buffer and will spill over to adjacent memory location.

I assumed that the problem may be related to the fread, that it wouldn’t be a safe function to use, but reading through the documentation doesn’t seem to tell me that its unsafe like say strcpy() is compared to strncpy(). So I’m rather uncertain on where the problem could be located or how to handle it. And also if anyone has any suggestions on where I can go (or what book to read) that would help expand my knowledge on this subject or other vulnerability weaknesses, I would be appreciative.

bool readLong(FILE *f, long *n)
{
    unsigned char *ptr,tmp;

    if (fread(n,8,1,f) != 1)
        return false;

    ptr = (unsigned char *)n;
    tmp = ptr(0);
    ptr(0) = ptr(7);
    ptr(7) = tmp;
    tmp = ptr(1);
    ptr(1) = ptr(6);
    ptr(6) = tmp;
    tmp = ptr(2);
    ptr(2) = ptr(5);
    ptr(5) = tmp;
    tmp = ptr(3);
    ptr(3) = ptr(4);
    ptr(4) = tmp;

    return true;
}

Output inesperado struct C – Stack Overflow em Português

Declarei a seguinte função num arquivos .c separado da main:

int inicializaCompromisso(Compromisso *compromisso, Tipo tipo, Data data, int duracao, char *nome)
{
    static int id = 0;
    compromisso = malloc(sizeof(Compromisso));
    compromisso->tipo = tipo;
    compromisso->duracao = duracao;
    strcpy(compromisso->nome, nome);
    compromisso->adiavel = NAO;
    compromisso->tipo = tipo;
    compromisso->prioridade = tipo;
    compromisso->id = id++ - 1;
    return id;
}

Dentro da main:

    Compromisso* compromisso;
    int a = inicializaCompromisso(compromisso, AULA, data, 60, nome);
    printf("%i", compromisso->id);
    Compromisso* compromisso2;
    int b = inicializaCompromisso(compromisso2, AULA, data, 60, nome);
    printf("%i", compromisso2->id);

Se eu mando printar os valores de a e b, os id’s estão corretos. Porém se eu printo o campo id de um determinado compromisso como no código acima, o output é 0 e 1077940385. Como posso consertar isso?

Animación en flutter.? – Stack Overflow en español

¡Gracias por contribuir en StackOverflow en español con una respuesta!

  • Por favor, asegúrate de responder a la pregunta. ¡Proporciona información y comparte tu investigación!

Pero evita

  • Pedir ayuda o aclaraciones, o responder a otras respuestas.
  • Hacer declaraciones basadas en opiniones; asegúrate de respaldarlas con referencias o con tu propia experiencia personal.

Para obtener más información, consulta nuestros consejos sobre cómo escribir grandes respuestas.

Django | ModelMultipleChoiceField ERROR – Stack Overflow en español

Se pretende que el siguiente modelo de opción a que se pueda seleccionar una o varias opciones de la tabla Employee de entre los resultados del filtro. Pero devuelve error.

Error:

in Preventive
employee_preventive = models.ModelMultipleChoiceField(queryset=Employee.objects.filter(company=”Example123″))
AttributeError: module ‘django.db.models’ has no attribute ‘ModelMultipleChoiceField’

Models.py

class Preventive(models.Model):
    #...
    employee_preventive = models.ModelMultipleChoiceField(queryset=Employee.objects.filter(company="Example123"))
    #...
    class Meta:
        verbose_name = 'Mant Preventivo'
        verbose_name_plural = 'Mant Preventivos'
        ordering = ('id')
    
    def __str__(self):
        return str(self.id)

rebuildar lista flutter – Stack Overflow em Português

Boa noite!
Estou tendo problemas para listar categorias em uma pagina específica.
Por exemplo, se estou logado com um usuário, a minha lista funciona normalmente, mas se saio desse usuário e logo com outro, quando entro nessa tela que possui a lista ela mostra a lista do meu usuário anterior, para que essa tela mostre a lista do meu usuário atual tenho que sair completamente do aplicativo, tirar ele de segundo plano e abri-lo novamente, não preciso logar novamente, só abrir o aplicativo novamente, ai a lista e “atualizada” e então mostra a lista correta.

essa é a categoryScreen.dart

import 'package:flutter/material.dart';
import 'package:note_study/model/category/category_manager.dart';
import 'package:note_study/screen/category/components/category_list_tile.dart';
import 'package:provider/provider.dart';

class CategoryScreen extends StatefulWidget {
  @override
  _CategoryScreenState createState() => _CategoryScreenState();
}

class _CategoryScreenState extends State<CategoryScreen> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        elevation: 0,
      ),
      body: Consumer<CategoryManager>(
        builder: (_, categoryManager, __) {
          return ListView.builder(
            itemCount: categoryManager.allCategory.length,
            itemBuilder: (context, index) {
              return CategoryListTile(categoryManager.allCategory(index));
            },
          );
        },
      ),
    );
  }
}

essa é a categoryTile.dart

import 'package:flutter/material.dart';
import 'package:note_study/model/category/category_model.dart';

class CategoryListTile extends StatefulWidget {
  CategoryListTile(this.categoryModel);
  final CategoryModel categoryModel;

  @override
  _CategoryListTileState createState() => _CategoryListTileState();
}

class _CategoryListTileState extends State<CategoryListTile> {
  @override
  Widget build(BuildContext context) {
    return Container(
      decoration: BoxDecoration(
          borderRadius: BorderRadius.circular(16),
          color: Theme.of(context).cursorColor),
      height: 50,
      margin: const EdgeInsets.symmetric(vertical: 10, horizontal: 8),
      child: Center(
        child: Text(
          widget.categoryModel.name,
          style: TextStyle(
              fontSize: 15, fontWeight: FontWeight.bold, color: Colors.white),
        ),
      ),
    );
  }
}

E essa é minha homeScreen.dart

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_speed_dial/flutter_speed_dial.dart';
import 'package:note_study/model/category/category_manager.dart';
import 'package:note_study/model/category/category_model.dart';
import 'package:note_study/model/user/user_manager.dart';
import 'package:note_study/screen/category/category_screen.dart';
import 'package:note_study/screen/login/login_screen.dart';
import 'package:provider/provider.dart';

class HomeScreen extends StatefulWidget {
  @override
  _HomeScreenState createState() => _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {
  @override
  void initState() {
    super.initState();

    SystemChrome.setEnabledSystemUIOverlays(SystemUiOverlay.values);
    //Muda a cor da barra de menu no android
    SystemChrome.setSystemUIOverlayStyle(
      SystemUiOverlayStyle(
        //systemNavigationBarIconBrightness: Brightness.light,
        systemNavigationBarColor: Colors.deepPurpleAccent,
      ),
    );
  }

  @override
  Widget build(BuildContext context) {
    return Consumer<UserManager>(
      builder: (_, userManager, __) {
        return Scaffold(
          appBar: AppBar(
            title: Text('Bem vindo ${userManager.userModel?.name ?? ''}'),
            centerTitle: true,
            actions: (
              IconButton(
                icon: Icon(Icons.exit_to_app),
                onPressed: () {
                  userManager.signOut();
                  Navigator.of(context).pushAndRemoveUntil(
                      MaterialPageRoute(builder: (context) => LoginScreen()),
                      (Route<dynamic> route) => false);
                },
              ),
            ),
          ),
          floatingActionButton: SpeedDial(
            animatedIcon: AnimatedIcons.menu_close,
            backgroundColor: Theme.of(context).cursorColor,
            overlayColor: Colors.black87,
            overlayOpacity: 0.3,
            children: (
              SpeedDialChild(
                  onTap: () {
                    createAlertDialog(context);
                  },
                  child: Icon(Icons.category),
                  label: 'Add Categoria',
                  backgroundColor: Theme.of(context).cursorColor),
              SpeedDialChild(
                  onTap: () {},
                  label: 'Add Nota',
                  child: Icon(Icons.note_add),
                  backgroundColor: Theme.of(context).cursorColor),
            ),
          ),
        );
      },
    );
  }

  createAlertDialog(BuildContext context) {
    //final _categoryController = TextEditingController();
    final _formKey = GlobalKey<FormState>();
    CategoryModel categoryModel = CategoryModel();

    return showDialog(
      context: context,
      builder: (context) {
        return Consumer<CategoryManager>(
          builder: (_, categoryManager, __) {
            return AlertDialog(
              shape: RoundedRectangleBorder(
                  borderRadius: BorderRadius.circular(16)),
              title: Text('Nova categoria'),
              content: Form(
                key: _formKey,
                child: TextFormField(
                  //controller: _categoryController,
                  decoration: InputDecoration(
                    //hintText: 'Nome',
                    border: OutlineInputBorder(
                      borderRadius: BorderRadius.circular(16),
                    ),
                    labelText: 'Categoria',
                    filled: true,
                    prefixIcon: Icon(Icons.category),
                  ),
                  autofocus: true,
                  validator: (name) {
                    if (name.isEmpty) return 'Campo obrigatório';
                    return null;
                  },
                  onSaved: (name) => categoryModel.name = name,
                ),
              ),
              actions: (
                MaterialButton(
                  elevation: 5,
                  child: Text('Editar categoria'),
                  onPressed: () {
                    Navigator.of(context).pop();
                    Navigator.of(context).push(
                      MaterialPageRoute(builder: (context) => CategoryScreen()),
                    );
                  },
                ),
                MaterialButton(
                  elevation: 5,
                  child: Text('Cancelar'),
                  onPressed: () {
                    Navigator.of(context).pop();
                  },
                ),
                MaterialButton(
                  elevation: 5,
                  child: Text('Salvar'),
                  onPressed: () {
                    if (_formKey.currentState.validate()) {
                      _formKey.currentState.save();
                      categoryManager.saveDataCategory(
                        categoryModel: categoryModel,
                        onSuccess: () {
                          Navigator.of(context).pop();
                        },
                      );
                    }
                  },
                )
              ),
            );
          },
        );
      },
    );
  }
}

Como posso rebuildar ou atualizar essa lista quando meu usuario é trocado?

Recorrido array múltiples PHP – Stack Overflow en español

Hola que tal amigos que tal tengo problemas como recorrer este json no se si es multiple o dimensional, allí vamos estoy consumiendo una web service y me devuelve ese json donde me muestra 2 array principales y dentro de cada array hay mas arrays 1 o mas para recorrer los arrays principales hago un for y para los secundarios hago otro for pero el tema esta en que cuando tiene solo un array dentro del principales no muestra pero en caso de que tenga mas de 1 uno si, no se si estaré haciéndole bien.

En la imagen muestra el json lo correcto debería ser que el asiento 19473575 solo muestre 1 vez y el otro asiento 15120251 esta mostrando correcto los 3 que tengo dentro.

Alguna sugerencia me vendría de mucha ayuda.

imagen

{"listarAsientosResponse":{"asientos":{"transaccion":13978138,"nroTotalPag":4,"listAsientos":({"idImgAsiento":19473575,"numPag":1,"tipo":"ASIENTO","listPag":{"nroPagRef":4,"pagina":1}},{"idImgAsiento":15120251,"numPag":3,"tipo":"ASIENTO","listPag":({"nroPagRef":1,"pagina":1},{"nroPagRef":2,"pagina":2},{"nroPagRef":3,"pagina":3})})}}}
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
    CURLOPT_URL => "https://ws3.pide.gob.pe/Rest/Sunarp/ListarAsientos?......&out=json",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 0,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "GET",
));
$response = curl_exec($curl);
$ressunartdetalle = json_decode($response, true);
$dato1   = $ressunartdetalle('listarAsientosResponse')('asientos')('listAsientos');
$logitud1 = count($dato1);
?>
<table>
    <?php
    for ($i = 0; $i < $logitud1; $i++) {
        $dato2    = $ressunartdetalle('listarAsientosResponse')('asientos')('listAsientos')($i)('listPag');
        $largo2 = count($dato2);
        for ($k = 0; $k < $largo2; $k++) {
    ?>
            <tr>
                <td class='text-center'><?php echo $dato1($i)('idImgAsiento'); ?></td>
                <td class='text-center'><?php echo $dato1($i)('numPag'); ?></td>
                <td class='text-center'><?php echo $dato1($i)('tipo');  ?></td>
                <td class='text-center'><?php echo $dato2($k)('nroPagRef'); ?></td>
                <td class='text-center'><?php echo $dato2($k)('pagina'); ?></td>
            </tr>
    <?php
        }
    }
    ?>
</table>