Instalacion moodle 3.x bypass para la version del dbms

Posted: 12th March 2017 by Jak in moodle, PHP
Tags: ,

Queremos instalar moodle pero tenemos una version mas reciente del dbms por ejemplo de mysq y la instalacion no puede terminar si no se cumplen los requisitos.

Una de las formas es hacer un bypass rapido, claro con las consecuencias que esto puede tener, si la version instalada es mas reciente no hay tanto problema.

Editamos el archivo moodle/lib/enviromentlib.php metodo environment_check_database y simplemente hacemos que el resultado sea true

/// And finally compare them, saving results
if (version_compare($current_version, $needed_version, '>=')) {
$result->setStatus(true);
} else {
$result->setStatus(false);
}
$result->setStatus(true); //JKF

Share

Si tenemos un mapeo para crear un registro, al poner #{fecha:DATE} en el value, cuando se guarde dicho registro, la fecha se truncara si tenia tiempo, la guardara sin tiempo, debe quitartse el :DATE y que quede solo  #{fecha:DATE}

Share

Una de las mejores formas de manejar el jdbc con spring es usar jbctemplate entre sus clases que existen para implementar hay una llamada NamedParameterJdbcTemplate, que basicamente lo que haces es mapear keys y values. Para este caso si tuvieramos una lista 1,2,3 con valores de un campo id y quisieramos pasarlos en el where se usaria de la siguiente manera:

MapSqlParameterSource params = new MapSqlParameterSource();
params.addValue("fecha", fecha);
params.addValue("ids", solicitudes);

NamedParameterJdbcTemplate jdbc = new NamedParameterJdbcTemplate(jdbcSC.getDataSource());

return jdbc.update("DELETE tabla\n" +
" WHERE f1 = TO_DATE(:fecha, 'DD/MM/YYYY')" +
" AND f2 NOT IN(:ids)", params);

Share

Log4j2 ejemplo xml

Posted: 3rd March 2017 by Jak in j2ee, Java, log4j2
Tags: ,

Este es un ejemplo funcional de Log4j2 via xml, con dos salidas, una en la consola y otra en un archivo que rota cada cierto tamaño. Regularmente es la plantilla que uso para aplicaciones standalone.

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="DEBUG">
<Properties>
<Property name="logDir">logs</Property>
<Property name="filename">logSCP</Property>
</Properties>
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{dd/MMM/yyyy HH:mm:ss,SSS}-[%t] %-5level %logger{36} - %m%n"/>
</Console>
<RollingFile name="RollingFile" fileName="${logDir}/${filename}.log"
filePattern="${logDir}/${filename}-%d{dd-MM-yyyy}-%i.log" >
<PatternLayout>
<pattern>%d{dd/MMM/yyyy HH:mm:ss,SSS}-[%t] %-5level %logger{36} - %m%n</pattern>
</PatternLayout>
<Policies>
<!-- <TimeBasedTriggeringPolicy />-->
<SizeBasedTriggeringPolicy size="100 MB" />
</Policies>
<DefaultRolloverStrategy max="20"/>
</RollingFile>
</Appenders>
<Loggers>
<Logger name="root" level="info" additivity="false">
<AppenderRef ref="Console"/>
</Logger>
<Logger name="root" level="info" additivity="false">
<AppenderRef ref="RollingFile"/>
</Logger>
<Root level="info" additivity="false">
<AppenderRef ref="Console"/> <!-- comentar para produccion -->
<AppenderRef ref="RollingFile"/>
</Root>
</Loggers>
</Configuration>

 

Share

CloudFlare leaks

Posted: 28th February 2017 by Jak in CloudFlare, hack, hacking, Herramientas
Tags: , ,

El 24 de Febrero de 2017, se dio uno de los hackeos mas importantes en el mundo de TI, ya que CloudFlare.com una de las empresas mas grandes a nivel mundial, que ofrece el servicio de DNS, SSL, y demás productos, gratuitos y de pago, sufrió una intercepción de varios de los dominios alojados, todo por Google Project Zero.

En teoría las intercepciones pudieron ser a todos los dominios, sin embargo CloudFlare publico una lista, esta la metimos en una base de datos y publicamos una herramienta de búsqueda.

Todos deben cambiar sus contraseñas, sin embargo si tu dominio esta en la lista con mucho mayor razón.

Busca tu dominio aquí:

http://domainscf.softiux.mx/

Share

Spring 4 Scheduler

Posted: 21st February 2017 by Jak in j2ee, Java, spring
Tags: , , ,

Para tener procesos cronometrados, suele usarse la librería Quartz, sin embargo spring tiene su propia implementación de un scheduler, y hay dos formas de crearlo como todo en spring por xml o por clases.

En el context.xml solo asegurarse de que el scan este apuntando al paquete donde se encuentra esta clase.

 

Aquí mostrare un ejemplo de una implementación por clases a través de anotaciones:

@Service
@EnableScheduling
public class Job {
private Logger logger = Logger.getLogger("log");

@Autowired
private Service service;

@Scheduled(initialDelay=60000, fixedRate=60000)
public void execute() {
DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss");
logger.info("Run: " + dateFormat.format(System.currentTimeMillis()));
}
}

Espero que les sirva.

Share

Para poder hacer uso del archivo tsnames.ora en Toad o en PL/SQL Dev, etc…. lo mejor es crear una variable de entorno para que el archivo pueda ser ubicado en automatico

TNS_ADMIN

C:\Oracle\network\admin

La variable debe apuntar al path donde esta el archivo.

Share

Error PerGem space en Glassfish

Posted: 17th January 2017 by Jak in glassfish, j2ee, Java
Tags: ,

Glassfish esta plagado de bugs, sin embargo algunos se pueden arreglar por que es a base de configuraciones.

Uno de ellos es que cuando deployas cierta cantidad de veces, marca un error de PerGem space error.

Para intentar evitar esto hay que subirle la memoria en el archivo:

\glassfish\domains\domain1\config

Y en la siguiente linea subir de 512 a 1024 por ejemplo, esto obviamente si su server lo permite.

<jvm-options>-XX:MaxPermSize=512m</jvm-options>

stop-domain y luego start-domain para aplicar la configuración.

 

Otra forma de arreglarlo, es con la jconsole vaciar la PerGem

 

Nuncaaaa jamas en la vida dejen de programar.

Share

Oracle Store Procedures – MyBatis

Posted: 17th January 2017 by Jak in Java, MyBatis, Oracle
Tags: , , ,

Otra forma de consumir store procedures de Oracle con MyBatis, es con el mismo objeto de entrada solo se llenan los datos tipo IN, pasa por la llamada al store y se llenan en automatico los datos tipo OUT como se ve a continuación:

//DAO

public VoData getLoginSp(VoData input){
SqlSession session = getSession();

try {
session.selectOne("mappers.callSp", input);
} finally {
session.close();
}
return input;
}

 

//setters and getters...

public class VoData {

private String pw_id_user;
private String pw_password;
private String pw_error;

 

Los nombres del vo deben coincidir con el mapeo de la query en el xml. Aqui obtenemos la propiedad de salida que se llena en automatico.

String id = vo.getPw_error();

 

El mapeo en el xml

&amp;lt;select id="callSp" parameterType="VoData" statementType="CALLABLE"&amp;gt;
{ CALL SCC.SCC_STORE(#{pw_id_user, mode=IN, jdbcType=VARCHAR},
#{pw_password, mode=IN, jdbcType=VARCHAR},
#{pw_error, mode=OUT, jdbcType=VARCHAR}) }
&amp;lt;/select&amp;gt;

 

Share

Monitoreo de glassfish

Posted: 23rd November 2016 by Jak in glassfish, j2ee, Java

Uno de las cosas que siempre debemos hacer es monitorear nuestros webservers, esto siempre nos dara la pauta para saber si necesita o no mas galleta… para glassfish una forma de monitorearlo es a través de la jconsole

Basicamente vas al bin de tu instalacion de java…

Abres la jconsole, y si estas en el mismo server, simplemente eliges el proceso local que detecte como glassfish y listo…

Si no estas en el mismo server, es decir en remoto usas:

service:jmx:rmi:///jndi/rmi://localhost:8686/jmxrmi

Share