miércoles, 31 de marzo de 2021

Flutter: StreamBuilder, Pull To Refresh, Pagination

#1

https://medium.com/flutterdevs/pagination-in-flutter-with-firebase-firestore-96d6cc11aef2

#2

#3

https://www.udemy.com/course/flutter-ios-android-fernando-herrera/learn/lecture/14478706#overview

Mi resultado

Esta es mi adaptación aplicada al video anterior + el video 110 StreamBuilder (De la sección 7 Aplicación de películas, del curso de Udemy, flutter-ios-android-fernando-herrera) (ese video es privado) + el tutorial de flutterdevs.

Paginar desde Firebase functions https://fireship.io/lessons/firestore-pagination-guide

const admin = require('firebase-admin');
const pageThree = ref.orderBy(field).limit(10).offset(20);

List view


class DatabasePage extends StatefulWidget {

  static final String routeName = 'pagename';

  @override

  _DatabasePageState createState() => _DatabasePageState();

}


class _DatabasePageState extends State<DatabasePage> {

  ProductsProvider productsProvider = new ProductsProvider();

  ScrollController controller = ScrollController();

  ProductListBloc productListBloc;


  @override

  void initState() {

    super.initState();

    productListBloc = ProductListBloc();

    productListBloc.fetchNextProducts();

    controller.addListener(_scrollListener);

  }


  void _scrollListener() {

    if (controller.offset >= controller.position.maxScrollExtent &&

        !controller.position.outOfRange) {

      print("at the end of list");

      productListBloc.fetchNextProducts();

    }

  }


  @override

  void dispose() {

    productListBloc.dispose();

    super.dispose();

  }


  @override

  Widget build(BuildContext context) {

    return Scaffold(

      appBar: AppBar(

        title: Text('T I T L E'),

        backgroundColor: Color.fromRGBO(92, 171, 115, 50),

        actions: <Widget>[

          IconButton(

            icon: Icon(Icons.add),

            color: Colors.white,

            onPressed: () =>

                Navigator.pushNamed(context, ProductFormPage.routeName)

                    .then((value) {

              setState(() {});

            }),

          )

        ],

      ),

      body: _createList(),

    );

  }


  Widget _createList() {

    return StreamBuilder(

      stream: productListBloc.productStream,

      builder:

          (BuildContext context, AsyncSnapshot<List<ProductModel>> snapshot) {

        if (snapshot.hasData) {

          return ListView.builder(

            controller: controller,

            itemCount: snapshot.data.length + 1,

            itemBuilder: (BuildContext context, int index) {

              if (index < snapshot.data.length) {

                return _createItem(context, snapshot.data[index]);

              } else if (productListBloc.hasMore) {

                return Padding(

                  padding: EdgeInsets.symmetric(vertical: 32.0),

                  child: Center(child: CircularProgressIndicator()),

                );

              } else {

                return Padding(

                  padding: EdgeInsets.symmetric(vertical: 32.0),

                  child: Center(child: Text('Fin de la lista.')),

                );

              }

            },

          );

        } else {

          return Center(child: CircularProgressIndicator());

        }

      },

    );

  }


  Widget _createItem(BuildContext context, ProductModel item) {

    Widget content = ...

    ...

    ...

    ...

    

    return content;

  }


}


BLoC


class ProductListBloc {

  List<ProductModel> documentList = [];

  ProductsProvider productsProvider;

  bool hasMore = true;


  StreamController<List<ProductModel>> _streamController;


  ProductListBloc() {

    _streamController = StreamController<List<ProductModel>>();

    productsProvider = new ProductsProvider();

    hasMore = true;

  }


  Stream<List<ProductModel>> get productStream => _streamController.stream;


  /*This will automatically fetch the next 10 elements from the list*/

  fetchNextProducts() async {

    try {

      List<ProductModel> newDocumentList = (await productsProvider.retrieve(documentList.length));

      documentList.addAll(newDocumentList);

      _streamController.sink.add(documentList);

      hasMore = newDocumentList.length == 30/*page size from backend*/;

    } on SocketException {

      _streamController.sink.addError(SocketException("No Internet Connection"));

    } catch (e) {

      print(e.toString());

      _streamController.sink.addError(e);

    }

  }


  void dispose() {

    _streamController.close();

  }

}


sábado, 9 de enero de 2021

CocoaPods could not find compatible versions for pod "FirebaseFirestore"

Seguiste la guía oficial de FlutterFire https://firebase.flutter.dev/docs/overview/#improve-ios-build-times Donde te dice que agregues esta línea a ios/Podfile

  • pod 'FirebaseFirestore', :git => 'https://github.com/invertase/firestore-ios-sdk-frameworks.git', :tag => '6.26.0'

Instalaste Cocoapods https://josevibriezca.blogspot.com/2021/01/instalar-cocoapods-en-macos-1015.html

Y ahora tienes un nuevo error:

  • [!] CocoaPods could not find compatible versions for pod "FirebaseFirestore":
    • In Podfile:
      • FirebaseFirestore (from `https://github.com/invertase/firestore-ios-sdk-frameworks.git`, tag `6.26.0`)
      • cloud_firestore (from `.symlinks/plugins/cloud_firestore/ios`) was resolved to 0.14.4, which depends on
        • Firebase/Firestore (~> 6.33.0) was resolved to 6.33.0, which depends on
          • FirebaseFirestore (~> 1.18.0)

El problema esta en que tenemos instalada una versión diferente a la que especificamos en Pofdile

Para solucionarlo vamos al archivo Podfile (que está en la carpeta ios) del proyecto de Flutter y cambiamos:

  • pod 'FirebaseFirestore', :git => 'https://github.com/invertase/firestore-ios-sdk-frameworks.git', :tag => '6.26.0'

por 6.33.0 (o cualquiera que sea la versión que el error nos indique – en mi caso me dice was resolved to 6.33.0)

  • pod 'FirebaseFirestore', :git => 'https://github.com/invertase/firestore-ios-sdk-frameworks.git', :tag => '6.33.0'

Instalar cocoapods en macOS 10.15 Catalina

Tienes un proyecto en Flutter con Firebase y en Windows+Android funciona todo bien. Cuando lo intentas ejecutar en macOS con el emulador de iPhone falla porque no tienes Cocoapods instalado.

Al tratar de instalar cocoapods desde la terminal con el comando:

sudo gem install cocoapods

La instalación falla con los errores:

  • Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers. Check the mkmf.log file for more details. You may need configuration options.
  • /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/mkmf.rb:467:in `try_do': The compiler failed to generate an executable file. (RuntimeError) You have to install development tools first.

Después de mucho googlear y que nada funciono, la respuesta la encontré en una pregunta de un curso de Fernando Herrera, gracias al alumno Alejandro César Valencia.

La solución está en https://www.udemy.com/course/flutter-ios-android-fernando-herrera/learn/lecture/14717920#questions/12534056 pero no podrás verla si no compraste el curso. A continuación, comparto la solución de Alejandro y si les sirve no se olviden de comprar el curso de Fernando que está muy bueno y agradecer a Alejandro.

  1. Actualiza Ruby a la última versión (en mi caso fue la 2.7.2). Teclea en la terminal:
    • curl -L https://get.rvm.io | bash -s stable
  2. Reinicia la terminal (clic derecho salir y vuelve a abrir)
  3. Ejecuta:
    • rvm install ruby-[version]
    Reemplaza versión por la más actual (sin los corchetes). Esto se tarda un rato.
    (o quita -[version] si no quieres especificar una versión)
  4. Ya que termina de instalar Ruby, ahora instala cocoapods:
    • sudo gem install cocoapods
    y listo. una vez que termine verifica con:
    • pod --version

lunes, 23 de noviembre de 2020

Dar formato a código HTML en NotePad++

Bueno como ya tiene mucho que no uso Dreamweaver aquí esta una versión más reciente de mi entrada antigua (Dar formato al código en Dreamweaver)
  • Menú Plugins / Plugins admin
  • Buscar e instalar XML Tools
  • Presionar la combinación de teclas Ctrl+Alt+Shift+B

viernes, 7 de febrero de 2020

Dynamics 365 - Consult TracingService logs

Steps to follow if you want to view log made by plugins with TracingService. Example:
serviceContext.TracingService.Trace("Test");

  1. Navigate to Settings > Administration > System Settings.
  2. Click Customization tab and locate the drop-down “Enable logging to plug-in trace log” and select “Exceptions” or “All” depending on what you need. Click OK.
  3. Run the plugin.
  4. Navigating to Settings > Plug-in Trace Log.

Dynamics 365 - Debug Plugin using Plugin Registration tool

I found this video on the youTube channel Magnifez Technologies

Dynamics 365 - Plugin development step by step

I found this interesting video on YouTube.

lunes, 20 de enero de 2020

Dynamics 365 - Create tests for 2 different CRMs

This entry is like Dynamics 365 - Install and configure EasyRepro with the difference that you will create two TestBase files reading different keys from app.config. All tests will inherit from one or another TestBase, depending in which namespace are located will point to one or another CRM.

This entry assumes that you have or at least you created a trial for Dynamics 365 CRM and signed in.
You can create a trial here: https://port.crm.dynamics.com/G/TrialInstances/TrialInstancePicker.aspx

You need to be System Administrator and System Customizer.
http://josevibriezca.blogspot.com/2020/01/promote-to-admin.html
http://josevibriezca.blogspot.com/2020/01/add-system-customizer-role.html

  1. Create a project of type Visual C# / Web / ASP.NET Web Application (.NET Framework)".
  2. Select template MVC for the project.
  3. Check "Add unit tests" checkbox.
  4. Open the App.config file located in the test project.
  5. In configuration / appSettings paste the following keys (replace the values with your own credentials).
    <add key="OnlineUsername_A" value="name@name.onmicrosoft.com" />
    <add key="OnlinePassword_A" value="*********" />
    <add key="OnlineCrmUrl_A" value="https://testcrmA.crm.dynamics.com/" />
    <!--.-->
    <add key="OnlineUsername_B" value="name@name.onmicrosoft.com" />
    <add key="OnlinePassword_B" value="*********" />
    <add key="OnlineCrmUrl_B" value="https://testcrmB.crm.dynamics.com/" />
    <!--.-->
    <add key="BrowserType" value="Chrome" />
    <add key="RemoteBrowserType" value="Chrome" />
    <add key="RemoteHubServer" value="http://1.1.1.1:4444/wd/hub" />
  6. Right click the test project and select "Manage NuGet Packages...".
  7. Install "Dynamics365.UIAutomation.Api" and "Selenium.Chrome.WebDriver".
  8. Right click your test project and select Add / New Folder. Name it "CRM_A" (or any name relevant to you).
  9. Download and add to the project (to the new folder CRM_A) the last version of the class TestBase from https://github.com/microsoft/EasyRepro/blob/develop/Microsoft.Dynamics365.UIAutomation.Sample/Web/Entity/TestBase.cs.
  10. Replace the namespace "namespace Microsoft.Dynamics365.UIAutomation.Sample.Web" with your own namespace, example "WebApplication1_EasyRepro_01.Tests.CRM_A". Make sure to end the namespace with the name of the new folder.
  11. Replace the strings "OnlineUsername", "OnlinePassword" and "OnlineCrmUrl" with "OnlineUsername_A", "OnlinePassword_A" and "OnlineCrmUrl_A" for the variables _username, _password and _xrmUri.
  12. Add a new class to the folder "CRM_A". I will call it SomethingToTest.cs but feel free to choose a name that works for you. Use "Microsoft.VisualStudio.TestTools.UnitTesting", add the [TestClass] decorator.
  13. Make sure to use "public" access modiffier for all test classes you create, other wise will not run.
  14. Implement TestSetup method and one method for each test you want to perform.
  15. Repeat steps 8 to 14 but this time use "_B" instead of "_A".

viernes, 17 de enero de 2020

Dynamics 365 - Install and configure EasyRepro

This entry assumes that you have or at least you created a trial for Dynamics 365 CRM and signed in.
You can create a trial here: https://port.crm.dynamics.com/G/TrialInstances/TrialInstancePicker.aspx

You need to be System Administrator and System Customizer.
http://josevibriezca.blogspot.com/2020/01/promote-to-admin.html
http://josevibriezca.blogspot.com/2020/01/add-system-customizer-role.html

  1. Create a project of type Visual C# / Web / ASP.NET Web Application (.NET Framework)".
  2. Select template MVC for the project.
  3. Check "Add unit tests" checkbox.
  4. Open the App.config file located in the test project.
  5. In configuration / appSettings paste the following keys (replace the values with your own credentials).
    <add key="OnlineUsername" value="name@name.onmicrosoft.com" />
    <add key="OnlinePassword" value="*********" />
    <add key="OnlineCrmUrl" value="https://testcrm.crm.dynamics.com/" />
    <add key="BrowserType" value="Chrome" />
    <add key="RemoteBrowserType" value="Chrome" />
    <add key="RemoteHubServer" value="http://1.1.1.1:4444/wd/hub" />
  6. Right click the test project and select "Manage NuGet Packages...".
  7. Install "Dynamics365.UIAutomation.Api" and "Selenium.Chrome.WebDriver".
  8. Download and add to the project the last version of the class TestBase from https://github.com/microsoft/EasyRepro/blob/develop/Microsoft.Dynamics365.UIAutomation.Sample/Web/Entity/TestBase.cs.
  9. Replace the namespace "namespace Microsoft.Dynamics365.UIAutomation.Sample.Web" with your own namespace, example "WebApplication1_EasyRepro_01.Tests".
  10. Download and add to the project the last version of the class TestSettings from https://github.com/microsoft/EasyRepro/blob/develop/Microsoft.Dynamics365.UIAutomation.Sample/TestSettings.cs.
  11. Replace the namespace "namespace Microsoft.Dynamics365.UIAutomation.Sample" with your own namespace, example "WebApplication1_EasyRepro_01.Tests".
  12. Add a new class to the test project. I will call it SomethingToTest.cs but feel free to choose a name that works for you. Use "Microsoft.VisualStudio.TestTools.UnitTesting", add the [TestClass] decorator.
  13. Make sure to use "public" access modiffier for all test classes you create, other wise will not run.
  14. Implement TestInitialize method and one method for each test you want to perform.

jueves, 16 de enero de 2020

Dynamics 365 - Change Unified interface to Legacy interface

This entry assumes that you have or at least you created a trial for Dynamics 365 CRM and signed in.
You can create a trial here: https://port.crm.dynamics.com/G/TrialInstances/TrialInstancePicker.aspx

  1. Navigate to https://admin.powerplatform.microsoft.com
  2. Click Environments
  3. Select the environment you want to change and click the 3 dots
  4. In the context menu click Settings
  5. Click Products / Behavior
  6. Disable "Use Unified Interface only"
  7. Click Save

Dynamics 365 - Add System Customizer role

This entry assumes that you have or at least you created a trial for Dynamics 365 CRM and signed in.
You can create a trial here: https://port.crm.dynamics.com/G/TrialInstances/TrialInstancePicker.aspx

  1. Click the Gear located in the top right corner
  2. Click Advanced Settings
  3. Click Settings and then Security
  4. Click Users
  5. Select the desired user and click Manage Roles
  6. Select System Customizer

Dynamics 365 - Promote to Admin

This entry assumes that you have or at least you created a trial for Dynamics 365 CRM and signed in.
You can create a trial here: https://port.crm.dynamics.com/G/TrialInstances/TrialInstancePicker.aspx

  1. Click the Gear located in the top right corner
  2. Click Advanced Settings
  3. Click Settings and then Security
  4. Click Users
  5. Select the desired user and click Promote To Admin
  6. Click OK

lunes, 3 de julio de 2017

Editar el archivo hosts en Android con Android Studio (detallado)

  • Ejecutar con una consola el emulador con permisos de escritura en /system, para ello ejecutar los siguientes comandos. Nota: la imagen de Nexus (Google Play) no funciono a la hora de hacer remount pero la imagen de Pixel (sin Google Play si funciono).
    Ejemplos:
    C:\Users\NombrePC\AppData\Local\Android\sdk\tools
    emulator -list-avds
    emulator.exe -avd [emulator_name] -writable-system
    emulator.exe -avd Nexus_5X_API_24 -writable-system
    emulator.exe -avd Pixel_API_25_--_2 -writable-system

  • Ejecutar en una segunda consola
    adb root
    adb remount

  • En Android Studio > Tools > Android > Android Device Monitor > File Explorer > /system/etc /hosts descargar el archivo con el botón Pull, editarlo y subirlo con el botón Push
  • Para editar el archivo hosts usar Notepad++, dejar una línea al final y seleccionar Editar/Conversión fin de línea/Convertir a formato UNIX de lo contrario el archivo hosts será ignorado (recomendación en stackoverflow)
  • Si se utiliza la app de Chrome para probar el archivo hosts, seleccionar …/ Reducir datos / Desactivar (recomendación en stackoverflow)
https://www.howtogeek.com/140576/how-to-edit-the-hosts-file-on-android-and-block-web-sites/

https://end0tknr.wordpress.com/2015/07/19/edit-hosts-file-via-android-device-monitor-in-android-studio-and-adb-shell/

https://infosectrek.wordpress.com/2017/03/06/rooting-the-android-emulator/

https://android.stackexchange.com/questions/171442/root-android-virtual-device-with-android-7-1-1/176400#176400

miércoles, 28 de junio de 2017

Editar el archivo hosts en Android con Android Studio


  • En Android Studio > Tools > Android > Android Device Monitor
  • Pestaña File Explorer
  • Seleccionar /system/etc/hosts
  • Presionar "Pull a file from the divice"
  • Editar el archivo en windows
  • Presionar "Push a file onto the device"

Editar el archivo hosts en Android con ADB

Instalar ADB en Windows 10
https://www.howtogeek.com/125769/how-to-install-and-use-abd-the-android-debug-bridge-utility/
Abrir Android Studio > abrir SDK Manager > pestaña SDK Tools > instalar “Android SDK Platform-tools”
En el celular o en el emulador habilitar USB Debugging

Agregar ADB al System PATH
https://www.howtogeek.com/118594/how-to-edit-your-system-path-for-easy-command-line-access/
Window + x > Sistema > Configuración avanzada del sistema > Variables de entorno > Variables del sistema > Path > Editar
Agregar “;C:\Users\NombrePC\AppData\Local\Android\sdk\platform-tools”

Otras formas de abrir la Configuración avanzada del sistema
http://www.softwareok.com/?seite=faq-Windows-10&faq=10

Editar archivo hosts
https://www.howtogeek.com/140576/how-to-edit-the-hosts-file-on-android-and-block-web-sites/

martes, 23 de mayo de 2017

¿Qué hacer después de formatear una computadora (Windows 10)?

Formatear una computadora es solo el principio, en mi caso siempre hay una serie de programas que debo instalar para poder trabajar así como realizar alguna que otra configuración. He decidido hacer esta guía para poder realizar todo el proceso un poco más rápido la próxima vez que formatee una computadora, igual a alguien le sirve también.

#1 – Actualizaciones de Windows.

Configurar de acuerdo a tus gustos, ya sea que se descarguen e instalen, que se descarguen y te pregunte, que solo compruebe actualizaciones. Es tu elección (Tener en cuenta que estoy días hubo mucho revuelo en las noticias por un virus que estaba afectando a mucha gente que no tenia Windows actualizado así que ahora todo mundo recomienda tenerlo actualizado - Por otro lado ser precavidos con las actualizaciones por que a veces provocan fallos).

Mi recomendación seria cambiar la configuración para que no se instalen automáticamente, crear un punto de restauración antes de instalarlas y ahora si instalar las actualizaciones lo mas pronto posible.

Inicio / Configuración de Windows Update / Opciones avanzadas.

#2 – No combinar los elementos de la barra de tareas.

Me gusta tener visible el nombre de las ventanas con las que estoy trabajando así que lo segundo que siempre hago es Clic derecho sobre la barra de tareas / Propiedades / Botones de la barra de tareas / No combinar nunca.

#3 – Instalar Antivirus

Siempre es esencial.

#4 – Instalar Google Chrome, ponerlo como determinado y que IE (o Edge) no vuelva a preguntar.

No puede faltar si eres diseñador o programador de páginas web.

#5 – Establecer www.google.com como página de inicio

Yo lo hago en todos los navegadores que tenga instalados.

#6 – Instalar Acrobat Reader

Tarde o temprano tendremos que leer un PDF y aprovechando que estamos instalando programas es mejor hacerlo ahorita. En la pagina de instalación, desmarcar las casillas que instalan software extra.

#7 – Desanclar la tienda de aplicaciones de la barra de tareas

No hay mucho que explicar, son accesos directos que casi no uso y prefiero ese espacio para otras ventanas ya que no las combino. Para ello simplemente hacer clic derecho sobre estos iconos y seleccionar Desanclar.

#8 – Desanclar del menú Inicio los accesos directos que no gusten y cambiar de tamaño a los que se desea conservar.

#9 – Anclar el Bloc de notas y Calculadora al menú Inicio

Yo creo que después del navegador, el Bloc de notas es el programa que más uso ya sea para anotar cosas o para quitarle el formato al texto enriquecido. Lo mismo con la calculadora.

#10 - Configurar Bloc de notas

En el menu Formato / Ajuste de linea.

#11 – Instalar WinRar

Tarde o temprano se usara.

#12 – Instalar Virtual CloneDrive (opcional)

#13 – Instalar PDF24 (opcional)

#14 – Habilitar Hibernar

Debido a las ventajas de Hibernar, prefiero esta opción en vez de apagar o suspender. Para apagar tengo que cerrar y guardar todo y al iniciar tarda mucho. Suspender en realidad sigue prendida así que sigue consumiendo energía eléctrica además de que si se corta la energía todo tu trabajo se puede perder. Hibernar guarda en disco todo lo que tenías en la RAM y luego se apaga, así que no hay problema si cortas la energía eléctrica además el encendido y apagado es mucho más rápido y todo tu trabajo está ahí para continuar.

Para habilitar la opción de Hibernar ir a Opciones de energía / Elegir la acción del botón de inicio/apagado / Cambiar la configuración actualmente no disponible / Hibernar.

Ya que estas aquí, si tienes un niño pequeño que guste de presionar botones como poseso seguramente querrás cambiar la opción de "Al presionar el botón de inicio/apagado" por "No hacer nada".

#15 - Cambiar la configuración del plan de energía 

Cambiar la configuración del plan de energía para que el monitor se apague a los minutos deseados y para que la PC pase a estado suspendido a los minutos deseados (o nunca si sueles trabajar remotamente).

#16 - Personalizar el System Tray

Agregar o quitar los programas deseados. En Windows 10 clic derecho a la Barra de tareas / Propiedades / Barra de tareas / Personalizar / Seleccionar qué iconos... /

#17 - Establecer el Escritorio como directorio de descargas en todos los navegadores

No me gusta la carpeta Descargas de Windows por que luego se te olvidan los documentos ahí y esa carpeta termina con muchos archivos.

NOTA: en su defecto también se puede mover al escritorio, para ello buscar la carpeta de Descargas / clic derecho / Propiedades / Ubicación y allí cambiar la ubicación

#18 - Instalar y establecer el Escritorio como directorio de descargas en skype (opcional)

Igual que el anterior.

#19 - Instalar OneDrive para windows (opcional)

#20 - Instalar impresora

#21 - Establecer preferencias de impresión de la impresora

En mi caso, tengo una impresora que en modo Borrador imprime super bien, así que con eso me basta y se ahorra tinta.

#22 - Configurar el teclado

Ingles, Español México o Español España según corresponda.
https://www.maestrodelacomputacion.net/como-reconocer-el-tipo-de-teclado/

#23 - Configurar Outlook

#24 - Opciones de carpeta

Configurar "Archivos y carpetas ocultos" y "Ocultar las extensiones de archivo para tipos de archivo conocidos"

#25 - Ocultar Cortana

Clic derecho a la barra de tareas / Búsqueda / Oculto

#26 - Crear una partición para guardar archivos

#27 - Instalar Compare It!

https://www.grigsoft.com/wincmp3.htm

#28 - Instalar WinMerge

https://winmerge.org/?lang=es

#29 - Instalar WinDirStat

https://windirstat.net/

#30 - Instalar Xenu's Link Sleuth

http://home.snafu.de/tilman/xenulink.html

#31 - Instalar Notepad++

https://notepad-plus-plus.org/

domingo, 28 de septiembre de 2014

Windows Forms Events Lifecycle

Muy útil la información que encontré en esta página. El otro día tenía un panel (Dock=Top) como encabezado en un formulario “base” y otros dos paneles (Dock=Fill y Dock=Bottom) en el formulario “derivado”. El panel con Dock=Fill variaba de tamaño en diferentes instancias.

En este caso, el evento Shown, era ideal para saber el tamaño final de este panel con Dock=Fill. El evento Load no me servía por que el panel en este evento contenía el tamaño antes de ajustarse al panel del formulario “base”.


Otra solución para acomodar los controles del panel Dock=Fill es tomar el tamaño del panel en el evento load y usar Anchor en los controles.

http://www.c-sharpcorner.com/uploadfile/mamta_m/windows-forms-events-lifecycle/
  • Move: This event occurs when the form is moved. Although by default, when a form is instantiated and launched, the user does not move it, yet this event is triggered before the Load event occurs.
  • Load: This event occurs before a form is displayed for the first time.
  • VisibleChanged: This event occurs when the Visible property value changes.
  • Activated: This event occurs when the form is activated in code or by the user.
  • Shown: This event occurs whenever the form is first displayed.
  • Paint: This event occurs when the control is redrawn.
  • Deactivate: This event occurs when the form loses focus and is not the active form.
  • Closing: This event occurs when the form is closing.
  • Closed: This event occurs when the form is being closed.

sábado, 22 de marzo de 2014

¿Qué hacer después de formatear una computadora?

Formatear una computadora es solo el principio, en mi caso siempre hay una serie de programas que debo instalar para poder trabajar así como realizar alguna que otra configuración. He decidido hacer esta guía para poder realizar todo el proceso un poco más rápido la próxima vez que formatee una computadora, igual a alguien le sirve también.

#1 – Actualizaciones de Windows.

Configurar de acuerdo a tus gustos, ya sea que se descarguen e instalen, que se descarguen y te pregunte, que solo compruebe actualizaciones. Es tu elección.

#2 – No combinar los elementos de la barra de tareas.

Me gusta tener visible el nombre de las ventanas con las que estoy trabajando así que lo segundo que siempre hago es Clic derecho sobre la barra de tareas / Propiedades / Botones de la barra de tareas / No combinar nunca.

#3 – Instalar Windows 7 Service Pack 1

El archivo de descarga es windows6.1-KB976932-X86.exe y si formateas mucho tu PC o te dedicas a formatear computadoras o desarrollas software o te dedicas a instalar programas que requieren el SP1 es buena idea grabarlo en un disco para no tener que estar descargándolo cada vez.

#4 – Instalar Antivirus

Siempre es esencial tener un buen antivirus y dentro de mas recomendados y gratis en 2015 están Avast, Avira, y AVG. Para Windows 7 esta MS Security Essentials que si bien ya no esta en buenos lugares en los rankings como antes, es gratis y no tiene publicidad. Lo que si no recomiendo por que lo probé y no me funciono es Windows Defender para Windows 8 que si bien parece ser lo mismo que MSSE a mi no me sirvió :(.

#5 – Actualizar IE

Por lo general Windows trae una versión vieja de Internet explorer, ya que tengamos instalado el SP1 podemos actualizar IE.

#6 – Instalar Google Chrome, ponerlo como determinado y que IE no vuelva a preguntar.

No puede faltar si eres diseñador o programador de páginas web.

#7 – Establecer www.google.com como página de inicio

Yo lo hago en todos los navegadores que tenga instalados.

#8 – Instalar Acrobat Reader

Tarde o temprano tendremos que leer un PDF y aprovechando que estamos instalando programas es mejor hacerlo ahorita.

#9 – Desanclar el Reproductor de Windows Media  y el Explorador de Windows de al barra de tareas

No hay mucho que explicar, son accesos directos que casi no uso y prefiero ese espacio para otras ventanas ya que no las combino. Para ello simplemente hacer clic derecho sobre estos iconos y seleccionar Desanclar.

#10 – Anclar el Bloc de notas y Calculadora al menú Inicio

Yo creo que después del navegador, el Bloc de notas es el programa que más uso ya sea para anotar cosas o para quitarle el formato al texto enriquecido. Lo mismo con la calculadora.

#11 – Instalar WinRar

Tarde o temprano lo usaras y mejor ahorita, luego puede que sea urgente descomprimir algo y no halla internet para descargarlo.

#12 – Instalar Virtual CloneDrive (opcional)

#13 – Ajustar el UAC (opcional)

#14 – Instalar PDF24 (opcional)

#15 – Habilitar Hibernar

Debido a las ventajas de Hibernar, prefiero esta opción en vez de apagar o suspender. Para apagar tengo que cerrar y guardar todo y al iniciar tarda mucho. Suspender en realidad sigue prendida así que sigue gastando energía eléctrica además de que si se corta la energía todo tu trabajo se puede perder. Hibernar guarda en disco todo lo que tenías en la RAM y luego se apaga, así que no hay problema si cortas la energía eléctrica además el encendido y apagado es mucho más rápido y todo tu trabajo está ahí para continuar.

Para habilitar la opción de Hibernar ir a Inicio / Panel de control / Opciones de Energía / Cambiar la configuración del plan / Cambiar la configuración avanzada de energía / Suspender / Permitir suspensión hibrida / Desactivar.

En Windows 10 ir a Opciones de energía / Elegir la acción del botón de inicio/apagado / Configuración de apagado / Hibernar.

#16 - Cambiar la configuración del plan de energía 

Cambiar la configuración del plan de energía para que el monitor se apague a los minutos deseados y para que la pc pase a estado suspendido a los minutos deseados (o nunca si sueles trabajar remotamente).

#17 - Personalizar el System Tray

Agregar o quitar los programas deseados.

En Windows 10 clic derecho a la Barra de tareas / Propiedades / Barra de tareas / Personalizar / Seleccionar qué iconos... /

#18 - Establecer el Escritorio como directorio de descargas en todos los navegadores

No me gusta la carpeta Descargas de Windows por que luego se te olvidan los documentos ahí y esa carpeta termina con muchos archivos.

NOTA: Si es Windows 10 buscar la carpeta de Descargas / clic derecho / Propiedades / Ubicación y allí cambiar la ubicación

#19 - Instalar y establecer el Escritorio como directorio de descargas en skype (opcional)

Igual que el anterior.

#20 - Instalar OneDrive para windows (opcional)

#21 - Instalar impresora

#22 - Establecer preferencias de impresión de la impresora

En mi caso, tengo una impresora que en modo Borrador imprime super bien, así que con eso me basta y se ahorra tinta.


#23 - Configurar el teclado

Ingles, Español México o Español España según corresponda.

#24 - Configurar Outlook

#25 - Opciones de carpeta

Configurar "Archivos y carpetas ocultos" y "Ocultar las extensiones de archivo para tipos de archivo conocidos"




sábado, 1 de marzo de 2014

Instalando una impresora de tickets Ojuled o EC Line en Windows 8

Recientemente me toco instalar una impresora de tickets en una computadora con Windows 8. Es una Ojuled térmica de 80 mm, el problema es que el disco de drivers solo trae como máximo hasta Windows 7 y en la página de Ojuled parece que no está ningún driver para descarga.

Intente instalar el driver de Windows 7 pero al finalizar la instalación, la impresora no aparecía en “Dispositivos e impresoras”. Nada parcia funcionar pero sabía que la impresora no estaba fallando porque también la tenía instalada en una computadora con Windows 7 y ahí si funcionaba muy bien.   

Al siguiente día me puse a investigar un poco, parece que el verdadero fabricante de estas (así como las EC line que es una de las más usadas aquí) es una empresa llamada Gainscha. Afortunadamente ellos ya tienen un driver para Windows 8.

Lo primero es entrar a la página http://www.gainscha.com.cn y en la sección “Soporte” podemos encontrar la impresora, en mi caso es la “GP80 Driver V11”. En la descripción se aprecia que ya soporta Windows 8. Una vez descomprimido el archivo .ZIP extraemos el contenido y ejecutamos el instalador. Nos preguntara por nuestro sistema operativo, seleccionamos Windows 8. A continuación nos pregunta el modelo, aquí es donde tuve problemas porque estaban listados muchos modelos y en la impresora solo decía OCPP-802 pero había muchos modelos con “…802..”.  Decidí probar con cada uno, después de instalar como la mitad de ellos y que ninguno funcionaba me di cuenta de que la impresora estaba apagada jejeje, la prendí y todo funciono de maravilla, así que no importa qué modelo escojas, cualquiera parece funcionar.