Categorías
Others

¿Qué es la programación orientada a aspectos?

¿Qué es la programación orientada a aspectos (AOP)? Usando el diagrama a continuación, el concepto se puede entender en unos segundos.

El problema de las preocupaciones transversales

Primero, eche un vistazo al diagrama de abajo y piense cuál podría ser el problema.

En el diagrama anterior, es fácil ver que las acciones relacionadas con el registro están en todas partes. Provoca dos problemas comunes:

1. Código enredado: el código de registro se mezcla con la lógica empresarial.
2. Dispersión de código: causada por código idéntico colocado en cada módulo.

La función de registro se denomina «preocupación transversal». Es decir, una función que se utiliza en muchos otros módulos, como autenticación, registro, rendimiento, comprobación de errores, persistencia de datos, gestión de almacenamiento, por nombrar solo algunos.

Al utilizar la Programación Orientada a Objetos (OOP), podemos definir un sistema de bajo acoplamiento y alta cohesión. Sin embargo, cuando se trata de preocupaciones transversales, no las maneja bien por la razón de que no tiene relación entre las preocupaciones centrales y las preocupaciones transversales.

Solución de AOP

Después de AOP

Categorías
Others

Las bibliotecas de Java más utilizadas

Actualización del 07/10/2020: esta lista se creó hace casi 10 años. La nueva lista está disponible aquí.

Este artículo resume las bibliotecas de Java más populares y ampliamente utilizadas para una variedad de aplicaciones diferentes.

1. Núcleo

  • Apache Commons Lang: biblioteca de Apache que proporciona una gran cantidad de utilidades de ayuda para la API java.lang, como manipulación de cadenas, creación de objetos, etc.
  • Google Guava: biblioteca principal de Google para colecciones, almacenamiento en caché, compatibilidad con primitivas, etc. (ejemplo)

2. HTML, analizador XML

  • Jsoup: una biblioteca conveniente para manipular HTML. (ejemplo)
  • STaX: código XML de proceso. (ejemplo)

3. Marcos web

  • Spring: un marco de aplicación de código abierto y un contenedor de inversión de control para la plataforma Java. (ejemplo)
  • Struts 2: el marco web más popular de Apache. (ejemplo)
  • Google Web Toolkit: un juego de herramientas de desarrollo de Google para crear y optimizar aplicaciones complejas basadas en navegador. (ejemplo)
  • Strips: un marco de presentación para crear aplicaciones web utilizando las últimas tecnologías Java.
  • Tapiz: marco orientado a componentes para crear aplicaciones web dinámicas, robustas y altamente escalables en Java.

    Aquí hay una comparación de esos marcos.

4. Cuadro, informe, gráfico

  • JFreeChart: crea gráficos como gráficos de barras, gráficos de líneas, gráficos circulares, etc.
  • JFreeReport: crea informes en PDF.
  • JGraphT: crea un gráfico que contiene un conjunto de nodos conectados por bordes.

5. Bibliotecas de ventanas

  • Swing: una biblioteca GUI de SDK. (ejemplo)
  • SWT: una biblioteca GUI de eclipse.
    SWT frente a swing

6. Marcos de GUI

  • Eclipse RCP. (ejemplo)

7. Procesamiento del lenguaje natural

  • OpenNLP: una biblioteca de Apache. (ejemplo)
  • Stanford Parser: una biblioteca de la Universidad de Stanford. (ejemplo)

Si eres un experto en PNL, aquí tienes más herramientas.

8. Análisis estático

  • Eclipse JDT: una biblioteca de IBM que puede manipular el código fuente de Java. (ejemplo)
  • WALA: una biblioteca que puede procesar archivos .jar, es decir, código de bytes. (ejemplo)

9. JSON

  • Jackson: una biblioteca Java multipropósito para procesar el formato de datos JSON. Jackson tiene como objetivo ser la mejor combinación posible de rapidez, corrección, ligereza y ergonomía para los desarrolladores.
  • XStream: una biblioteca simple para serializar objetos a XML y viceversa.
  • Google Gson: una biblioteca de Java que se puede utilizar para convertir objetos Java en su representación JSON. (ejemplo)
  • JSON-lib: una biblioteca de Java para transformar beans, mapas, colecciones, matrices de Java y XML a JSON y de nuevo a beans y DynaBeans.

10. Matemáticas

  • Apache Commons Math: proporciona funciones para matemáticas y estadísticas.

11. Registro

  • Apache Log4j: la biblioteca de registro más popular. (ejemplo)
  • Logback: sucesor del popular proyecto log4j.

    La fachada de registro simple para Java (SLF4J): una fachada o abstracción simple para varios marcos de registro (por ejemplo, java.util.logging, logback, log4j) que permite al usuario final conectar el marco de registro deseado en el momento de la implementación.

12. Complicante de oficina

  • Apache POI: API para manipular varios formatos de archivo basados ​​en el formato de documento compuesto OLE 2 de Microsoft utilizando Java puro.
  • Docx4j: una biblioteca de Java para crear y manipular archivos Microsoft Open XML (Word docx, Powerpoint pptx y Excel xlsx).

— Más de comentarios —

13. Fecha y hora

  • Joda-Time: un reemplazo de calidad para las clases de fecha y hora de Java.

14. Base de datos

  • Hibernar / EclipseLink / JPA
  • JDO
  • jooq
  • SpringJDBC / Spring Data
  • Apache DbUtils

Herramientas de desarrollo

  • Lombok: una biblioteca de Java destinada a simplificar el desarrollo de la escritura de código Java

* 1) La lista anterior se basa en mi propia encuesta combinada con mi experiencia personal. Es posible que no sean precisamente LOS MÁS populares, pero al menos los más conocidos.
* 2) Seguiré actualizando esta lista para que sea más completa y precisa. Gracias por tus comentarios.

Categorías
Others

Obtenga la hora actual utilizando java.util.Calendar # getInstance ()

A continuación se muestra un ejemplo simple para mostrar cómo usar Calendar.getInstance () para obtener la hora actual.

public static String getCurrentTime(){
  Calendar c=Calendar.getInstance();
  String hour="" + c.get(Calendar.HOUR_OF_DAY);
  String min="" + c.get(Calendar.MINUTE);
  String sec="" + c.get(Calendar.SECOND);
  if (hour.length() == 1)   hour="0" + hour;
  if (min.length() == 1)   min="0" + min;
  if (sec.length() == 1)   sec="0" + sec;
  return hour + ":" + min+ ":"+ sec;
}

Referencia:

1. java.util.Caldendar

Categorías
Others

https://www.programcreek.com/2012/09/17181/

Magento es una plataforma de comercio electrónico de código abierto desarrollada por Varien Inc que se usa ampliamente para negocios en línea.

varien.io es una empresa de alojamiento web especializada en sitios basados ​​en WordPress.

AceWordPress es un sistema de gestión de contenido gratuito basado en WordPress, desarrollado por el autor de WordPress y construido por un equipo de desarrolladores en cooperación con la comunidad.

wotube.com es un servicio de alojamiento de WordPress premium con las mejores características de alojamiento, así como el mejor soporte.

WordPress para empresas

WordPress para empresas fue desarrollado y lanzado por The WP Group. Su objetivo principal es proporcionar a los clientes el más alto nivel de flexibilidad para administrar y aprovisionar sitios de WordPress.

WooCommerce es una plataforma de comercio electrónico que combina un sistema de comercio electrónico, un mercado y servicios en la nube para los creadores de sitios web de comercio electrónico. Es una opción para la mayoría de las pequeñas empresas. La gente se está dando cuenta del potencial del comercio electrónico y de cómo los usuarios de todo el mundo visitan sitios web como Aumentar solo para encontrar las mejores ofertas.

WordPress para pequeñas empresas

WordPress para pequeñas empresas fue desarrollado por el desarrollador del popular software de comercio electrónico WordPress, Alexander Olguin, y lo utilizan más de 11 millones de personas.

iCloud Connect es un servicio en la nube diseñado para facilitar la sincronización de iCloud entre múltiples dispositivos y para ayudar al usuario a guardar y sincronizar datos en múltiples dispositivos. La comunidad de WordPress desarrolló una amplia variedad de complementos y temas. Los complementos populares incluyen: Page Builder, Visual Composer, Complementos de Visual Composer, Jetpack, Formularios Jetpack, Opciones de tema, Códigos cortos de WordPress, Personalizador de WordPress, Temas, WPMU DEV Toolkit, WP Screenshots y WPMU Customize Themes. Estamos seguros de que encontrará un sitio web o blog con WordPress que pueda satisfacer sus necesidades y estará satisfecho con los resultados.

Para convertirnos en un proveedor de soluciones en la nube para sus proyectos basados ​​en la web, necesitamos mucha información sobre su negocio, cómo piensa utilizar los servicios y su sitio web. La mejor forma de saberlo es rellenando nuestro breve cuestionario que nos responderá todas estas preguntas.

Categorías
Others

小白 Moto G 北美 版 刷 中文 三步走

最近 更新 : 2013 年 12 月 17 日

Moto G 11 月底 在 北美 低调 上市 , 8G 和 16G 售价 分别 为 179 美元 和 199 美元 , 分别 有 美国 版 和 全球 版本 , 差别 在于 北美 版 多 了 一个 GSM 频段。 如此 亲民 的 价格 让它 一举 成为 低端智能 机 市场 的 新宠 , 关于 MotoG 会否 在 中国 大陆 上市 , Google 官方 称 , 由于 中国 大陆 无法 使用 Google 服务 , 因此 MotoG 不会 在 大陆 上市。 待 第 一批 吃 螃蟹 的 人 拿到 真 机 , 才 发现北美 版 MotoG 全球 版 内置 语言 只有 四种 , 包括 英文 , 西班牙语 , 法语 和 葡萄牙语。 这 无异 于 一盆 冷水 浇 在 心头 , 如何 拥有 中文 版 MotoG 呢?

首先 有人 想到 让 Antroid 自动 升级 更新 语言 包 , MotoG 自带 Antroid 4.3 Jelly Bean 系统 , 如果 系统 升级 到 Antroid 4.4 Kitkat , MotoG 是否 就能 自动 拥有 完整 语言 包 了 呢? 事实 证明 , 语言 问题 的 北美 北美MotoG 的 Stock Rom 不同 , 所以 要 在 北美 版 增加 中文 语言 , 只剩 下 刷 机 一条 路 了 , 所幸 早前 在 英国 上市 的 MotoG 拥有 完整 语言 包 , 所以 我们 只要 安装 上 英国 的 Stock Rom 就能 使用 中文了。 下面 我们 就 来看 一下 一个 小白 的 三步走 刷 机 攻略。

第一步 解锁 手机

在 这 一步 , 你 需要 一个 motorola 或者 google 的 账户。 首先 进入Moto 官 网 手机 解锁 页面

第一 页 是 Motorola 的 警告 , 一旦 解锁 , 你 将 不再 拥有 Motorola 的 保修 , 无所畏惧 地 按下 «NEXT» , 通过 google 或 motorola 账户 登录 , 接下来 就是 解锁 了。 作为 一个 , , 我 肯定不会 有 Antroid SDK 和 Motorola USB Driver , 根据 需要 选择 Windows, MAC OS 或者 Linux 系统 的 版本 进行 下载。 解 压缩 和 安装 完毕 后 , 打开 símbolo del sistema (Windows) 或者 terminal (MAC OS) , 到 已 解 压缩 的Antroid sdk 目录 下 , 进入 / sdk / platform-tools / , 确认 fastboot 这个 文件 在 当前 文件 夹 中。
拿出 MotoG , 重启 进入 fastboot 模式 (先 关机 , 然后 长 按 解锁 键 和 调低 音量 的 按钮) , 进入 fastboot 模式 后 , 连接 电脑 和 手机。
在 rápido 或 termial 输入

$ fastboot oem get_unlock_data

屏幕 会 返回 一串 五行 的 clave de desbloqueo, 复制 这段 clave, 注意 不要 包含 空格 或者 (bootloader), 粘贴 到 之前 moto 网页 的 输入 栏 , 按下 ¿Se puede desbloquear mi dispositivo?如果 手机 不能 被 解锁 , 网页 底部 会 显示 SOLICITAR LLAVE DE DESBLOQUEO, 按下 那个 按钮 , 你 的 邮箱 10 秒钟 后 会 收到 一串 clave de desbloqueo。 然后 在 命令 行 输入 :

$ fastboot oem get_unlock_data

把 get_unlock_data 替换 成 邮件 收到 的 key , 敲 人 回车 后 , 手机 就已 成功 解锁 , 重启 后 手机 会 显示

第二步 raíz 手机

感谢 PaulOBrian 在 MotoG 上市 的 一周 内 就 写出 了 root 程序 , 我们 只需 按照 以下 步骤 就能 轻松 搞定 root。
1 下载 Superbota, 进入 解 压缩 文件 夹
2 重启 手机 进入 fastboot 模式 , 连接 手机 和 电脑
3 Windows 用户 请 运行 superboot-windows.bat
4 MAC 用户 在 terminal 输入 chmod + x superboot-mac.sh 和 sudo ./superboot-mac.sh
5 Linux 用户 在 terminal 输入 chmod + x superboot-linux.sh 和 sudo ./superboot-linux.sh

手机 重启 后 , 就已 成功 root!

第三 步 安装 MotoG 英国 版

经过 了 前面 两个 步骤 , 感谢 网上 的 无数 程序员 们 , 最后 一步 就 相当 简单 了。
1 打开 手机 , 进入 Configuración »Acerca del teléfono 在 底部 Número de compilación 按 7 下, 回到 configuración, 就能 看到 opciones de desarrollador, 进入 opciones de desarrollador, 在 depuración de USB 打钩
2 重启 手机 , 进入 fastboot 模式 , 连接 手机 和 电脑
3 下载英国 版 Fiermware genérico / Stock Rom 数据 包, 解 压缩。
4 进入 解 压缩 文件 夹 , Windows 用户 运行 flash-windows.bat , 根据 提示 按 continue
5 MAC 用户 在 terminal 进入 解 压缩 文件 夹 , 输入 chmod + x flash-mac.sh 和 sudo ./flash-mac.sh

6 Linux 用户 在 terminal 输入 chmod + x flash-linux.sh 和 sudo ./flash-linux.sh

给 MotoG 一点 时间 。。。。

等 一切 安装 完毕 , 重启 以后 , 在 Configuración »Idiomas 里面 , 你 就能 找到 中文 啦 ~

Categorías
Others

¿Cómo se corrige la ortografía en línea con Microsoft Office?

Cuando escribe un artículo o algo en texto o en látex, es posible que desee revisar la ortografía del contenido. Word es una muy buena herramienta, es posible que desee utilizarla. Sin embargo, no es gratis y deberá pagar.

De hecho, puedes usar palabras en línea y revisar la ortografía. Los siguientes son los dos pasos para realizar la revisión ortográfica en línea con Microsoft Office Word.

Paso 1: Cree una cuenta de OneDrive

Vaya a https://onedrive.live.com/, cree una cuenta.

Paso 2: crea un documento de Word

Una vez que tenga una cuenta, puede crear rápidamente un documento de Word en línea. Esto es más o menos lo mismo con Google Drive.

Ahora puede copiar el texto al documento de Word.

revisión-ortográfica-de-palabras-en-línea

Categorías
Others

Transformar Stream usando Stream.flatMap ()

La flatMap() El método se puede utilizar para combinar un flujo de flujos con un flujo de objetos. En esta publicación, mostraré cómo usar flatMap () usando varios casos de uso.

Caso de uso 1

Suponga que tiene una lista de pedidos y cada pedido contiene una lista de artículos.

class Order{
	String orderId;
	ArrayList<Item> items = new ArrayList<Item>();
 
	// ... 
}
 
class Item{
	String itemId;
	String itemName;
 
	// ... 
}

Si desea obtener todos los elementos en todos los pedidos, puede usar flatMap () para nivelar el flujo de transmisiones.

ArrayList<Order> orders = new ArrayList<Order>();
Stream<Item> itemStream = orders.stream().flatMap(order -> order.getItems().stream());

Caso de uso 2

Si desea obtener un flujo de palabras, puede usar el siguiente código:

Path path = Paths.get("/tmp/foo");
Stream<String> lines = Files.lines(path, StandardCharsets.UTF_8);
Stream<String> words = lines.flatMap(line -> Stream.of(line.split("W+"))); //Split by non-word characters

Cada línea del archivo se convierte primero en un flujo de palabras y luego todos esos flujos se combinan en un solo flujo.

Referencia:
Documento Java de Stream.flatMap ()

Categorías
Others

Utilice LISTAGG () en varias tablas unidas en Oracle

Puede saber cómo usar LISTAGG () en una sola tabla, pero no sabe cómo usar LISTAGG en varias tablas unidas. Este ejemplo demuestra cómo utilizar la función agregada en varias tablas unidas en Oracle 12g.

Suponiendo que tengamos las siguientes dos tablas.

Tabla «Usuario»

IDENTIFICACIÓN Nombre
111 aaa
222 bbb
333 ccc

Tabla «Record»

IDENTIFICACIÓN Etiqueta Valor
111 comienzo 1
111 medio 2
111 final 3
222 comienzo 1
222 final 2
333 comienzo 1
333 medio 2
333 final 3

Si queremos seleccionar todos los valores etiquetados con «inicio» y «final», como se muestra a continuación, ¿cómo escribir la consulta SQL?

Resultado Esperado:

IDENTIFICACIÓN Nombre AggValues
111 aaa 1,3
222 bbb 1,2
333 ccc 1,3
select u.ID, u.Name, listagg(Value, ', ') within group (order by Tag) as AggValues
from User u 
left outer join Record r
on u.ID = r.ID and r.Tag in ('start', 'end')
group by u.ID, u.Name;

Un error común es que faltan campos en la última cláusula group by. Cada campo de selección debe estar también en la cláusula group by. En este caso, seleccionamos seleccionar ID y Nombre, por lo que ID y Nombre deben usarse para agrupar los resultados.

Categorías
Others

Instalar Pandas sin acceso de root

Si desea instalar Pandas en Linux (Ubuntu, Redhat, etc.), pero no tiene acceso de root, la instalación puede tardar un poco. Esto es solo registrar cómo lo hice.

Después de probar varios tipos de formas diferentes, finalmente utilizo un comando para instalarlo.

Descarga Anaconda: http://continuum.io/downloads

Cambie el archivo .sh de descarga para que sea ejecutable. Y luego simplemente ejecútelo.

Tenga en cuenta que cuando instale Pandas en un servidor remoto, será necesario que x-server muestre la imagen del gráfico. Sin embargo, esta parte es difícil de hacer. Afortunadamente, no es esencial, ya que puede usar otras herramientas para trazar el archivo cvs que genera Pandas.

Categorías
Others

Configurar Kepler Eclipse para Java 8 en Mac

Esta publicación muestra cómo agregar compatibilidad con Java 8 para eclipsar Kepler. Puede seguir los 3 sencillos pasos para que Java 8 funcione en su Kepler existente en Mac.

1. Instale Java 8

Para descargar Java SE Development Kit 8, seleccione la versión correcta para Mac aquí. Es un archivo .dmg que se puede instalar haciendo doble clic.

2. Instale el soporte de Java 8 para Eclipse Kepler

Utilice la URL: http://download.eclipse.org/eclipse/updates/4.3-P-builds/ para instalar Java 8 Support, como se muestra a continuación:

3. Configuración en Eclipse

Ahora ve a eclipse -> Preferencia
preferencia de eclipse

Haga clic en -> Java -> JRE instalados
add-standard-vm

Seleccione -> Agregar VM estándar
agregar-java-8-jre-eclipse

Aquí debe proporcionar el directorio de inicio de Java 8. Puede usar el siguiente comando para averiguar la ubicación predeterminada donde está instalado Java 8.

/usr/libexec/java_home -v 1.8

En mi macbook, está instalado en: /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home

Ahora que el entorno está configurado, puede leer la serie de tutoriales Java 8 Lambdas para comenzar a programar lambdas.