Ejemplo de proyecto maven multimodulo con cobertura de clases entre modulos.
En el ejemplo están separados los tests de integración y el código en módulos diferentes.
https://github.com/raulvillalbamedina/sonar-scanning-examples
martes, 30 de mayo de 2017
viernes, 5 de mayo de 2017
PrettyJson en java sin librerias externas
private static String prettyJson(String responseBody) throws ScriptException {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine scriptEngine = manager.getEngineByName("JavaScript");
scriptEngine.put("jsonString", responseBody);
scriptEngine.eval("result = JSON.stringify(JSON.parse(jsonString), null, 2)");
return (String) scriptEngine.get("result");
}
miércoles, 3 de mayo de 2017
SchemaSpy en ubuntu
Hay que tener java8 instalado para poder ejecutar el jar.
Probar el comando java -version en linea de comandos.
Debería salir un mensaje de este estilo:
java version "1.8.xx"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)
Si no sale este mensaje seguir un tutorial de este tipo:
https://www.digitalocean.com/community/tutorials/instalar-java-en-ubuntu-con-apt-get-es
Descargas:
Hay que descargar/instalar 3 cosas:
- Schemaspy, el programa:
https://github.com/schemaspy/schemaspy/releases
- Conector a la base de datos (en mi caso mysql):
http://www.java2s.com/Code/JarDownload/mysql/mysql-connector-java-5.1.6-bin.jar.zip
Por defecto busca el jar en /mysql/, así que deberás ponerlo en la raiz.
- Graphviz, sin esto funciona pero no se generan gráficos
http://www.graphviz.org/pub/graphviz/stable/ubuntu/ub13.10/x86_64/graphviz_2.38.0-1~saucy_amd64.deb
Tiene que estar incluido en el path, y poder ejecutarse el comando "dot" desde cualquier lugar
Comandos:
Dependiendo de tu base de datos hay que poner unos parámetros u otros, para saber cuales hay que poner, ejecutar:
java -jar schemaSpy_TU.VERSION.jar -dbhelp
En mi caso me fijo en esto
mysql:
MySQL
-host hostname[:port] host where database resides with optional port
-db database name
Una vez que tienes esto el comando completo sería éste, para mysql:
java -jar schemaSpy_TU.VERSION.jar -t mysql -host localhost -port 3306 -db database_dev -s schema_dev -u user1 -p mypass -o directory
Probar el comando java -version en linea de comandos.
Debería salir un mensaje de este estilo:
java version "1.8.xx"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)
Si no sale este mensaje seguir un tutorial de este tipo:
https://www.digitalocean.com/community/tutorials/instalar-java-en-ubuntu-con-apt-get-es
Descargas:
Hay que descargar/instalar 3 cosas:
- Schemaspy, el programa:
https://github.com/schemaspy/schemaspy/releases
- Conector a la base de datos (en mi caso mysql):
http://www.java2s.com/Code/JarDownload/mysql/mysql-connector-java-5.1.6-bin.jar.zip
Por defecto busca el jar en /mysql/, así que deberás ponerlo en la raiz.
- Graphviz, sin esto funciona pero no se generan gráficos
http://www.graphviz.org/pub/graphviz/stable/ubuntu/ub13.10/x86_64/graphviz_2.38.0-1~saucy_amd64.deb
Tiene que estar incluido en el path, y poder ejecutarse el comando "dot" desde cualquier lugar
Comandos:
Dependiendo de tu base de datos hay que poner unos parámetros u otros, para saber cuales hay que poner, ejecutar:
java -jar schemaSpy_TU.VERSION.jar -dbhelp
En mi caso me fijo en esto
mysql:
MySQL
-host hostname[:port] host where database resides with optional port
-db database name
Una vez que tienes esto el comando completo sería éste, para mysql:
java -jar schemaSpy_TU.VERSION.jar -t mysql -host localhost -port 3306 -db database_dev -s schema_dev -u user1 -p mypass -o directory
lunes, 10 de abril de 2017
viernes, 31 de marzo de 2017
miércoles, 29 de marzo de 2017
arrancar aplicación springboot en segundo plano desde unix
nohup java -jar -Dspring.profiles.active=production example-springboot.jar > /dev/null 2>&1 &
miércoles, 15 de marzo de 2017
Spring data rest, HATEOAS exposeIds
Para que las rests HATEOAS muestren los campos id de cada elemento:
@Component
@Slf4j
public class SpringDataRestCustomization extends RepositoryRestConfigurerAdapter {
@Override
public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {
listMatchingClasses(Entity.class).forEach(entity -> config.exposeIdsFor(entity));
}
public List<Class> listMatchingClasses(Class annotationClass) {
List<Class> classes = new LinkedList<Class>();
ClassPathScanningCandidateComponentProvider scanner = new ClassPathScanningCandidateComponentProvider(true);
scanner.addIncludeFilter(new AnnotationTypeFilter(annotationClass));
for (BeanDefinition bd : scanner.findCandidateComponents(Project.class.getPackage().getName())) {
try {
classes.add(Class.forName(bd.getBeanClassName()));
} catch (ClassNotFoundException e) {
log.error("listMatchingClasses problem", e);
}
}
return classes;
}
}
jueves, 2 de marzo de 2017
Spring4, cors, problema con seguridad
Paso 1. Añadir una clase de configuración para corsConfigurer:
@Configuration
public class MyConfiguration {
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurerAdapter() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**");
}
};
}
}
Paso 2. Añadir Clase para seguridad
@EnableWebSecurity
@Configuration
public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.antMatcher("/**").authorizeRequests().requestMatchers(CorsUtils::isPreFlightRequest).permitAll()
.anyRequest().fullyAuthenticated().and().httpBasic().and().csrf().disable();
}
}
jueves, 26 de enero de 2017
miércoles, 25 de enero de 2017
martes, 24 de enero de 2017
postgresql dump y restore
Borrar todo:
Creación de dump:
pg_dump.exe -Uuser database > dump.dump
Restore de dump:
psql -Uuser -e "database" < "dump.dump"
DROP SCHEMA public CASCADE;
CREATE SCHEMA public;
GRANT ALL ON SCHEMA public TO postgres;
GRANT ALL ON SCHEMA public TO public;
Creación de dump:
pg_dump.exe -Uuser database > dump.dump
Restore de dump:
psql -Uuser -e "database" < "dump.dump"
jueves, 10 de noviembre de 2016
scroll To Element con Selenium
Problemática: A veces hay elementos que se encuentran pero no se ejecuta su acción (como el click) cuando utilizo RemoteWebDriver. Una vez estudiado el problema he visto que en ciertos casos extraños si el elemento en cuestión no está en la zona visible del navegador, Selenium encuentra el objeto pero no puede realizar ninguna acción.
Para solucionar/evitar este problema se puede ejecutar javascript que haga scroll hasta el elemento deseado, así siempre será visible y se podrán hacer acciones sobre él.
Este sería el metodo a utilizar:
Para solucionar/evitar este problema se puede ejecutar javascript que haga scroll hasta el elemento deseado, así siempre será visible y se podrán hacer acciones sobre él.
Este sería el metodo a utilizar:
public static void scrollToElement(WebDriver driver, WebElement element) {
JavascriptExecutor javascriptExecutor = (JavascriptExecutor) driver;
javascriptExecutor.executeScript("arguments[0].scrollIntoView(true);", element);
}
miércoles, 26 de octubre de 2016
Ejemplo de uso de JGit para obtener un csv de cambios de release
package XXXX;
import java.io.File;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.errors.GitAPIException;
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.Ref;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.storage.file.FileRepositoryBuilder;
public class ReleaseNotesGenerator {
private static ObjectId findActualRefObjectId(Ref ref, Repository repo) {
final Ref repoPeeled = repo.peel(ref);
if (repoPeeled.getPeeledObjectId() != null) {
return repoPeeled.getPeeledObjectId();
}
return ref.getObjectId();
}
private static void gitLogFromTagToNow(Repository repository, String tag1, String version, String pathFile)
throws IOException, GitAPIException, ParseException {
Git git = new Git(repository);
Ref refFrom = repository.findRef(tag1);
RevCommit latestCommit = git.log().call().iterator().next();
Iterable<RevCommit> log = git.log().addRange(findActualRefObjectId(refFrom, repository), latestCommit).call();
StringBuilder csvLines = new StringBuilder();
csvLines.append(StringUtils.join(new String[] { CABECERAS DE LOS CAMPOS QUE SE QUIERAN AÑADIR }, ";")
+ "\n");
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-MM-yyyy hh:mm:ss");
for (Iterator<RevCommit> iterator = log.iterator(); iterator.hasNext();) {
RevCommit rev = iterator.next();
String[] splittedMessage = rev.getFullMessage().split("\\r?\\n");
if (splittedMessage.length == 6) {
cleanMessages(splittedMessage);
csvLines.append(StringUtils.join(
new String[] { splittedMessage[1], splittedMessage[2], .... CAMPOS OBTENIDOS DE CADA MENSAJE},
";") + "\n");
}
}
FileUtils
.writeByteArrayToFile(
new File(pathFile + "_" + version + "_"
+ new SimpleDateFormat("ddMMyyyy_hhmm").format(new Date()) + ".csv"),
csvLines.toString().getBytes());
git.close();
}
private static void cleanMessages(String[] splittedMessage) {
for (int i = 0; i < splittedMessage.length; i++) {
splittedMessage[i] = splittedMessage[i].replaceAll("\\[.*\\]", "");
}
}
public static void main(String[] args) throws IOException, GitAPIException, ParseException {
String version = "versionFromMaven";
String fromRevision = "V5.5.0";
if (args != null && args.length > 0) {
fromRevision = args[0];
if (args != null && args.length > 1) {
version = args[1];
}
}
System.out.println("fromRevision:" + fromRevision + " version:" + version);
FileRepositoryBuilder repositoryBuilder = new FileRepositoryBuilder();
repositoryBuilder.setMustExist(true);
File gitBase = new File(".git");
String pathFile = "resources/releaseNotes/releaseNotes";
if (!gitBase.exists()) {
gitBase = new File("../.git");
pathFile = "../resources/releaseNotes/releaseNotes";
}
System.out.println("gitBasePath:" + gitBase.getAbsolutePath());
repositoryBuilder.setGitDir(gitBase);
Repository repository = repositoryBuilder.build();
if (repository.getObjectDatabase().exists()) {
gitLogFromTagToNow(repository, fromRevision, version, pathFile);
}
}
}
viernes, 14 de octubre de 2016
martes, 11 de octubre de 2016
Activar chats en grupo en Skype en Linux
Si al instalar Skype no ves tus grupos ejecuta este comando en cualquier conversación.
/msnp24
Y cierra y vuelve a abrir skype.
lunes, 3 de octubre de 2016
miércoles, 31 de agosto de 2016
Tabla de locales en java7
Esta tabla muestra el language, formate numérico, fecha corta y fecha larga por cada Locale de java.util.Locale.
Se ha generado con este código:
@Test
public void tableWithAllLocalesInfo() {
List list = Arrays.asList(DateFormat.getAvailableLocales());
Date now = new Date();
for (Locale locale : list) {
System.out.println("
Language - " + locale.getLanguage() + "
- Number format - "
+ NumberFormat.getInstance(locale).format(12345.6789) + "
- dateShort - "
+ DateFormat.getDateInstance(DateFormat.SHORT, locale).format(now) + "
- dateLong - "
+ DateFormat.getDateInstance(DateFormat.LONG, locale).format(now) + "
");
}
}
Se ha generado con este código:
@Test
public void tableWithAllLocalesInfo() {
List
Date now = new Date();
for (Locale locale : list) {
System.out.println("
Language - " + locale.getLanguage() + "
- Number format - "
+ NumberFormat.getInstance(locale).format(12345.6789) + "
- dateShort - "
+ DateFormat.getDateInstance(DateFormat.SHORT, locale).format(now) + "
- dateLong - "
+ DateFormat.getDateInstance(DateFormat.LONG, locale).format(now) + "
");
}
}
| Language - | - Number format - 12,345.679 | - dateShort - 8/31/16 | - dateLong - August 31, 2016 |
| Language - ar | - Number format - 12,345.679 | - dateShort - 31/08/16 | - dateLong - 31 أغسطس, 2016 |
| Language - ar | - Number format - 12,345.679 | - dateShort - 31/08/16 | - dateLong - 31 آب, 2016 |
| Language - ar | - Number format - 12,345.679 | - dateShort - 31/08/16 | - dateLong - 31 آب, 2016 |
| Language - hr | - Number format - 12.345,679 | - dateShort - 31.08.16. | - dateLong - 2016. kolovoza 31 |
| Language - fr | - Number format - 12.345,679 | - dateShort - 31/08/16 | - dateLong - 31 août 2016 |
| Language - es | - Number format - 12,345.679 | - dateShort - 08/31/16 | - dateLong - 31 de agosto de 2016 |
| Language - mt | - Number format - 12,345.679 | - dateShort - 31/08/2016 | - dateLong - 31 ta’ Awwissu 2016 |
| Language - es | - Number format - 12.345,679 | - dateShort - 31/08/16 | - dateLong - 31 de agosto de 2016 |
| Language - bg | - Number format - 12 345,679 | - dateShort - 31.08.16 | - dateLong - 31 Август 2016 |
| Language - zh | - Number format - 12,345.679 | - dateShort - 2016/8/31 | - dateLong - 2016年8月31日 |
| Language - it | - Number format - 12.345,679 | - dateShort - 31/08/16 | - dateLong - 31 agosto 2016 |
| Language - ko | - Number format - 12,345.679 | - dateShort - 16. 8. 31 | - dateLong - 2016년 8월 31일 (수) |
| Language - uk | - Number format - 12 345,679 | - dateShort - 31.08.16 | - dateLong - 31 серпня 2016 |
| Language - lv | - Number format - 12 345,679 | - dateShort - 16.31.8 | - dateLong - trešdiena, 2016, 31 augusts |
| Language - da | - Number format - 12.345,679 | - dateShort - 31-08-16 | - dateLong - 31. august 2016 |
| Language - es | - Number format - 12,345.679 | - dateShort - 08-31-16 | - dateLong - 31 de agosto de 2016 |
| Language - vi | - Number format - 12.345,679 | - dateShort - 31/08/2016 | - dateLong - Ngày 31 tháng 8 năm 2016 |
| Language - en | - Number format - 12,345.679 | - dateShort - 8/31/16 | - dateLong - August 31, 2016 |
| Language - sr | - Number format - 12.345,679 | - dateShort - 31.8.16. | - dateLong - 31.08.2016. |
| Language - sv | - Number format - 12 345,679 | - dateShort - 2016-08-31 | - dateLong - den 31 augusti 2016 |
| Language - es | - Number format - 12.345,679 | - dateShort - 31-08-16 | - dateLong - 31 de agosto de 2016 |
| Language - en | - Number format - 12,345.679 | - dateShort - 31/8/16 | - dateLong - 31 August, 2016 |
| Language - ar | - Number format - 12,345.679 | - dateShort - 31/08/16 | - dateLong - 31 أغسطس, 2016 |
| Language - pt | - Number format - 12.345,679 | - dateShort - 31-08-2016 | - dateLong - 31 de Agosto de 2016 |
| Language - ar | - Number format - 12,345.679 | - dateShort - 31/08/16 | - dateLong - 31 أغسطس, 2016 |
| Language - sk | - Number format - 12 345,679 | - dateShort - 31.8.2016 | - dateLong - Streda, 2016, augusta 31 |
| Language - ar | - Number format - 12,345.679 | - dateShort - 31/08/16 | - dateLong - 31 أغسطس, 2016 |
| Language - hi | - Number format - १२,३४५.६७९ | - dateShort - ३१/८/१६ | - dateLong - ३१ अगस्त, २०१६ |
| Language - ga | - Number format - 12,345.679 | - dateShort - 16/08/31 | - dateLong - 2016 Lúnasa 31 |
| Language - en | - Number format - 12,345.679 | - dateShort - 31/08/2016 | - dateLong - 31 August 2016 |
| Language - fi | - Number format - 12 345,679 | - dateShort - 31.8.2016 | - dateLong - 31. elokuuta 2016 |
| Language - et | - Number format - 12 345,679 | - dateShort - 31.08.16 | - dateLong - kolmapäev, 31. august 2016. a |
| Language - sv | - Number format - 12 345,679 | - dateShort - 2016-08-31 | - dateLong - den 31 augusti 2016 |
| Language - cs | - Number format - 12 345,679 | - dateShort - 31.8.16 | - dateLong - 31. srpna 2016 |
| Language - sr | - Number format - 12,345.679 | - dateShort - 31.8.16. | - dateLong - 31. avgust 2016. |
| Language - el | - Number format - 12.345,679 | - dateShort - 31/8/2016 | - dateLong - 31 Αυγούστου 2016 |
| Language - uk | - Number format - 12 345,679 | - dateShort - 31.08.16 | - dateLong - 31 серпня 2016 |
| Language - hu | - Number format - 12 345,679 | - dateShort - 2016.08.31. | - dateLong - 2016. augusztus 31. |
| Language - fr | - Number format - 12'345.679 | - dateShort - 31.08.16 | - dateLong - 31. août 2016 |
| Language - in | - Number format - 12.345,679 | - dateShort - 16/08/31 | - dateLong - 2016 Agustus 31 |
| Language - es | - Number format - 12.345,679 | - dateShort - 31/08/16 | - dateLong - 31 de agosto de 2016 |
| Language - ar | - Number format - 12,345.679 | - dateShort - 31/08/16 | - dateLong - 31 أغسطس, 2016 |
| Language - ja | - Number format - 12,345.679 | - dateShort - H28.08.31 | - dateLong - H28.08.31 |
| Language - es | - Number format - 12,345.679 | - dateShort - 08-31-16 | - dateLong - 31 de agosto de 2016 |
| Language - pt | - Number format - 12.345,679 | - dateShort - 31/08/16 | - dateLong - 31 de Agosto de 2016 |
| Language - be | - Number format - 12 345,679 | - dateShort - 31.8.16 | - dateLong - серада, 31, жніўня 2016 |
| Language - is | - Number format - 12.345,679 | - dateShort - 31.8.2016 | - dateLong - 31. ágúst 2016 |
| Language - cs | - Number format - 12 345,68 | - dateShort - 31.8.16 | - dateLong - 31. srpna 2016 |
| Language - es | - Number format - 12.345,679 | - dateShort - 31/08/16 | - dateLong - 31 de agosto de 2016 |
| Language - pl | - Number format - 12 345,679 | - dateShort - 31.08.16 | - dateLong - 31 sierpnia 2016 |
| Language - tr | - Number format - 12.345,679 | - dateShort - 31.08.2016 | - dateLong - 31 Ağustos 2016 Çarşamba |
| Language - ca | - Number format - 12.345,679 | - dateShort - 31/08/16 | - dateLong - 31 / d’agost / 2016 |
| Language - sr | - Number format - 12.345,679 | - dateShort - 31.8.16. | - dateLong - 31.08.2016. |
| Language - ms | - Number format - 12,345.679 | - dateShort - 31/08/2016 | - dateLong - 31 Ogos 2016 |
| Language - hr | - Number format - 12.345,679 | - dateShort - 2016.08.31 | - dateLong - 2016. kolovoza 31 |
| Language - lt | - Number format - 12 345,679 | - dateShort - 16.8.31 | - dateLong - Trečiadienis, 2016, rugpjūtis 31 |
| Language - es | - Number format - 12.345,679 | - dateShort - 31/08/16 | - dateLong - 31 de agosto de 2016 |
| Language - es | - Number format - 12.345,679 | - dateShort - 31/08/16 | - dateLong - 31 de agosto de 2016 |
| Language - bg | - Number format - 12 345,679 | - dateShort - 31.08.16 | - dateLong - 31 Август 2016 |
| Language - sq | - Number format - 12.345,679 | - dateShort - 16-08-31 | - dateLong - 2016-08-31 |
| Language - fr | - Number format - 12 345,679 | - dateShort - 31/08/16 | - dateLong - 31 août 2016 |
| Language - ja | - Number format - 12,345.679 | - dateShort - 16/08/31 | - dateLong - 2016/08/31 |
| Language - sr | - Number format - 12.345,679 | - dateShort - 16-08-31 | - dateLong - 31. август 2016. |
| Language - is | - Number format - 12.345,679 | - dateShort - 31.8.2016 | - dateLong - 31. ágúst 2016 |
| Language - es | - Number format - 12.345,679 | - dateShort - 31/08/16 | - dateLong - 31 de agosto de 2016 |
| Language - de | - Number format - 12.345,679 | - dateShort - 31.08.16 | - dateLong - 31. August 2016 |
| Language - es | - Number format - 12.345,679 | - dateShort - 31/08/16 | - dateLong - 31 de agosto de 2016 |
| Language - es | - Number format - 12,345.679 | - dateShort - 8/31/16 | - dateLong - 31 de agosto de 2016 |
| Language - ar | - Number format - 12,345.679 | - dateShort - 31/08/16 | - dateLong - 31 أغسطس, 2016 |
| Language - en | - Number format - 12,345.679 | - dateShort - 8/31/16 | - dateLong - August 31, 2016 |
| Language - ro | - Number format - 12.345,679 | - dateShort - 31.08.2016 | - dateLong - 31 august 2016 |
| Language - en | - Number format - 12,345.679 | - dateShort - 8/31/16 | - dateLong - August 31, 2016 |
| Language - ca | - Number format - 12.345,679 | - dateShort - 31/08/16 | - dateLong - 31 / d’agost / 2016 |
| Language - ar | - Number format - 12,345.679 | - dateShort - 31/08/16 | - dateLong - 31 أغسطس, 2016 |
| Language - sr | - Number format - 12,345.679 | - dateShort - 31.8.16. | - dateLong - 31.08.2016. |
| Language - es | - Number format - 12,345.679 | - dateShort - 31/08/16 | - dateLong - 31 de agosto de 2016 |
| Language - sl | - Number format - 12.345,679 | - dateShort - 31.8.2016 | - dateLong - 31. avgust 2016 |
| Language - ko | - Number format - 12,345.679 | - dateShort - 16. 8. 31 | - dateLong - 2016년 8월 31일 (수) |
| Language - el | - Number format - 12.345,679 | - dateShort - 31/08/2016 | - dateLong - 31 Αύγουστος 2016 |
| Language - es | - Number format - 12,345.679 | - dateShort - 31/08/16 | - dateLong - 31 de agosto de 2016 |
| Language - ru | - Number format - 12 345,679 | - dateShort - 31.08.16 | - dateLong - 31 августа 2016 г. |
| Language - es | - Number format - 12,345.679 | - dateShort - 08-31-16 | - dateLong - 31 de agosto de 2016 |
| Language - zh | - Number format - 12,345.679 | - dateShort - 16年8月31日 | - dateLong - 2016年08月31日 星期三 |
| Language - no | - Number format - 12 345,679 | - dateShort - 31.08.16 | - dateLong - 31. august 2016 |
| Language - hu | - Number format - 12 345,679 | - dateShort - 2016.08.31. | - dateLong - 2016. augusztus 31. |
| Language - th | - Number format - 12,345.679 | - dateShort - 31/8/2559 | - dateLong - 31 สิงหาคม 2559 |
| Language - ar | - Number format - 12,345.679 | - dateShort - 31/08/16 | - dateLong - 31 أغسطس, 2016 |
| Language - es | - Number format - 12.345,679 | - dateShort - 31-08-16 | - dateLong - 31 de agosto de 2016 |
| Language - fi | - Number format - 12 345,679 | - dateShort - 31.8.2016 | - dateLong - 31. elokuuta 2016 |
| Language - ar | - Number format - 12,345.679 | - dateShort - 31/08/16 | - dateLong - 31 أغسطس, 2016 |
| Language - ga | - Number format - 12,345.679 | - dateShort - 31/08/2016 | - dateLong - 31 Lúnasa 2016 |
| Language - mk | - Number format - 12.345,679 | - dateShort - 31.8.16 | - dateLong - 31, август 2016 |
| Language - tr | - Number format - 12.345,679 | - dateShort - 31.08.2016 | - dateLong - 31 Ağustos 2016 Çarşamba |
| Language - et | - Number format - 12 345,679 | - dateShort - 31.08.16 | - dateLong - kolmapäev, 31. august 2016. a |
| Language - ar | - Number format - 12,345.679 | - dateShort - 31/08/16 | - dateLong - 31 أغسطس, 2016 |
| Language - sr | - Number format - 12,345.679 | - dateShort - 31.8.16. | - dateLong - 31. avgust 2016. |
| Language - pt | - Number format - 12.345,679 | - dateShort - 31-08-2016 | - dateLong - 31 de Agosto de 2016 |
| Language - fr | - Number format - 12 345,679 | - dateShort - 31/08/16 | - dateLong - 31 août 2016 |
| Language - ar | - Number format - 12,345.679 | - dateShort - 31/08/16 | - dateLong - 31 أغسطس, 2016 |
| Language - th | - Number format - 12,345.679 | - dateShort - 31/8/2016 | - dateLong - 31 สิงหาคม 2016 |
| Language - sq | - Number format - 12.345,679 | - dateShort - 16-08-31 | - dateLong - 2016-08-31 |
| Language - es | - Number format - 12,345.679 | - dateShort - 31/08/16 | - dateLong - 31 de agosto de 2016 |
| Language - es | - Number format - 12.345,679 | - dateShort - 31/08/16 | - dateLong - 31 de agosto de 2016 |
| Language - ar | - Number format - 12,345.679 | - dateShort - 31/08/16 | - dateLong - 31 أغسطس, 2016 |
| Language - ru | - Number format - 12 345,679 | - dateShort - 31.08.16 | - dateLong - 31 августа 2016 г. |
| Language - en | - Number format - 12,345.679 | - dateShort - 31/08/16 | - dateLong - 31 August 2016 |
| Language - sr | - Number format - 12.345,679 | - dateShort - 31.8.16. | - dateLong - 31.08.2016. |
| Language - de | - Number format - 12'345.679 | - dateShort - 31.08.16 | - dateLong - 31. August 2016 |
| Language - es | - Number format - 12.345,679 | - dateShort - 31/08/16 | - dateLong - 31 de agosto de 2016 |
| Language - ms | - Number format - 12,345.679 | - dateShort - 16/08/31 | - dateLong - 2016 Ogos 31 |
| Language - el | - Number format - 12.345,679 | - dateShort - 31/8/2016 | - dateLong - 31 Αυγούστου 2016 |
| Language - iw | - Number format - 12,345.679 | - dateShort - 31/08/16 | - dateLong - 31 אוגוסט 2016 |
| Language - en | - Number format - 12,345.679 | - dateShort - 2016/08/31 | - dateLong - 31 August 2016 |
| Language - th | - Number format - ๑๒,๓๔๕.๖๗๙ | - dateShort - ๓๑/๘/๒๕๕๙ | - dateLong - ๓๑ สิงหาคม ๒๕๕๙ |
| Language - hi | - Number format - 12,345.679 | - dateShort - 8/31/16 | - dateLong - August 31, 2016 |
| Language - fr | - Number format - 12 345,679 | - dateShort - 31/08/16 | - dateLong - 31 août 2016 |
| Language - de | - Number format - 12.345,679 | - dateShort - 31.08.16 | - dateLong - 31. August 2016 |
| Language - nl | - Number format - 12.345,679 | - dateShort - 31-8-16 | - dateLong - 31 augustus 2016 |
| Language - no | - Number format - 12 345,679 | - dateShort - 31.08.16 | - dateLong - 31. august 2016 |
| Language - en | - Number format - 12,345.679 | - dateShort - 31/08/16 | - dateLong - 31 August 2016 |
| Language - vi | - Number format - 12.345,679 | - dateShort - 31/08/2016 | - dateLong - Ngày 31 tháng 8 năm 2016 |
| Language - nl | - Number format - 12.345,679 | - dateShort - 31-8-16 | - dateLong - 31 augustus 2016 |
| Language - fr | - Number format - 12 345,679 | - dateShort - 16-08-31 | - dateLong - 31 août 2016 |
| Language - lv | - Number format - 12 345,679 | - dateShort - 16.31.8 | - dateLong - trešdiena, 2016, 31 augusts |
| Language - de | - Number format - 12.345,679 | - dateShort - 31.08.16 | - dateLong - 31. August 2016 |
| Language - es | - Number format - 12,345.679 | - dateShort - 31/08/16 | - dateLong - 31 de agosto de 2016 |
| Language - ar | - Number format - 12,345.679 | - dateShort - 31/08/16 | - dateLong - 31 أغسطس, 2016 |
| Language - sr | - Number format - 12.345,679 | - dateShort - 31.8.16. | - dateLong - 31.08.2016. |
| Language - ar | - Number format - 12,345.679 | - dateShort - 31/08/16 | - dateLong - 31 أغسطس, 2016 |
| Language - mt | - Number format - 12,345.679 | - dateShort - 31/08/2016 | - dateLong - 31 ta’ Awwissu 2016 |
| Language - it | - Number format - 12'345.679 | - dateShort - 31.08.16 | - dateLong - 31. agosto 2016 |
| Language - da | - Number format - 12.345,679 | - dateShort - 31-08-16 | - dateLong - 31. august 2016 |
| Language - de | - Number format - 12.345,679 | - dateShort - 31.08.16 | - dateLong - 31. August 2016 |
| Language - ar | - Number format - 12,345.679 | - dateShort - 31/08/16 | - dateLong - 31 أغسطس, 2016 |
| Language - sk | - Number format - 12 345,679 | - dateShort - 31.8.2016 | - dateLong - Streda, 2016, augusta 31 |
| Language - lt | - Number format - 12 345,68 | - dateShort - 16.8.31 | - dateLong - Trečiadienis, 2016, rugpjūtis 31 |
| Language - it | - Number format - 12.345,679 | - dateShort - 31/08/16 | - dateLong - 31 agosto 2016 |
| Language - en | - Number format - 12,345.679 | - dateShort - 31/08/16 | - dateLong - 31 August 2016 |
| Language - zh | - Number format - 12,345.679 | - dateShort - 31/08/16 | - dateLong - 31 八月 2016 |
| Language - ro | - Number format - 12.345,679 | - dateShort - 31.08.2016 | - dateLong - 31 august 2016 |
| Language - en | - Number format - 12,345.679 | - dateShort - 31/08/16 | - dateLong - August 31, 2016 |
| Language - nl | - Number format - 12.345,679 | - dateShort - 31/08/16 | - dateLong - 31 augustus 2016 |
| Language - no | - Number format - 12 345,679 | - dateShort - 31.08.16 | - dateLong - 31. august 2016 |
| Language - pl | - Number format - 12 345,679 | - dateShort - 16-08-31 | - dateLong - 31 sierpnia 2016 |
| Language - zh | - Number format - 12,345.679 | - dateShort - 16-8-31 | - dateLong - 2016年8月31日 |
| Language - ja | - Number format - 12,345.679 | - dateShort - 16/08/31 | - dateLong - 2016/08/31 |
| Language - de | - Number format - 12.345,679 | - dateShort - 31.08.16 | - dateLong - 31. August 2016 |
| Language - sr | - Number format - 12,345.679 | - dateShort - 31.8.16. | - dateLong - 31. avgust 2016. |
| Language - iw | - Number format - 12,345.679 | - dateShort - 31/08/16 | - dateLong - 31 אוגוסט 2016 |
| Language - en | - Number format - 12,345.679 | - dateShort - 31/8/16 | - dateLong - 31 August, 2016 |
| Language - ar | - Number format - 12,345.679 | - dateShort - 31/08/16 | - dateLong - 31 آب, 2016 |
| Language - es | - Number format - 12,345.679 | - dateShort - 08-31-16 | - dateLong - 31 de agosto de 2016 |
| Language - zh | - Number format - 12,345.679 | - dateShort - 16-8-31 | - dateLong - 2016年8月31日 |
| Language - mk | - Number format - 12.345,679 | - dateShort - 31.8.16 | - dateLong - 31, август 2016 |
| Language - be | - Number format - 12 345,679 | - dateShort - 31.8.16 | - dateLong - серада, 31, жніўня 2016 |
| Language - sl | - Number format - 12.345,679 | - dateShort - 31.8.2016 | - dateLong - 31. avgust 2016 |
| Language - es | - Number format - 12.345,679 | - dateShort - 31/08/16 | - dateLong - 31 de agosto de 2016 |
| Language - in | - Number format - 12.345,679 | - dateShort - 31/08/16 | - dateLong - 31 Agustus 2016 |
| Language - en | - Number format - 12,345.679 | - dateShort - 31/08/16 | - dateLong - 31 August 2016 |
Suscribirse a:
Entradas (Atom)