jueves, 17 de enero de 2013

Configurar Apache Server y PHP en windows.

Here we go.......

No confundir Apache Server con Apache Tomcat Server.... que yo me confundia antes, ambos son servidores de Apache.

Hay que descargar apache server, y php, yo prefiero hacerlo en formato zip, en lugar de usar el distribuible para windows...

Paso 1: Descargar...

Apache Server  V2.0.64
PHP 5

Paso 2: Descomprimir...

Ahora hay que descomprimir cada fichero... mi directorio donde los voy a descomprimir sera:
d:/oha/installa/
De tal forma que me queda...

Apache server en:
d:/oha/installa/apache-server-2.0.64/Apache2

Apache2 es el directorio que ya viene el el zip.

Php en..
d:/oha/install/php-5.4.10

php-5.4.10 es el directorio para poner ahi el contenido del zip de php.

Paso 3: iniciar apache.

En el directorio "Apache2/bin" tenemos el comando Apache.exe, entonces en linea de comandos vamos al directorio bin y ejecutamos ..

Apache.exe -k start

Puede que les de error como el que sigue:

(OS 10048)S¾lo se permite un uso de cada direcci¾n de socket (protocolo/direcci¾n de red/puerto)  : make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs




Esto es porque algun programa esta usando el puerto 80, entonces hay que cambiarlo. Para cambiarlo hay que ir al fichero httpd.conf en el directorio conf de donde hayan instalado apache.

Hay que buscar la linea "Listen 80" o solo "Listen" y en lugar de poner 80, lo sustituimos por 8080.
Tambien la linea "ServerName" ahi tendra el nombre de su pc, y el puerto, susitumos el 80 por 8080 igual.

Guardamos y cerramos.

Si volvemos a ejecutar Apache.exe -k start quizas vuelva a mandar un error diciendo que apache no esta definido como servicio, para solucionar esto debemos ejecutar...

httpd.exe -k install -n "Apache2"

Ahora si ejecutamos

apache-server-2.0.64\Apache2\bin>Apache.exe -k start
apache-server-2.0.64\Apache2\bin>



Y luego vamos al navegador y escribimos "http://localhost:8080" y debe aparecer una pagina parecida a la de tomcat, y si no muestra nada, marron!!!!!!!!!! buscar el error en google que no soy adivino :D.

Paso 5. Detener apache jejejeje

Como vamos a configurar php vamos a detener apache.

Apache.exe -k stop                  igual que shutdown.
Apache.exe -k shutdown            igual que stop
Apache.exe -k restart                  Reinicia

Paso 4. Configurar php en apache server

Php se instala en apache server de 2 formas, como modulo o cgi, no se cual sea lo mejor pero yo solo se intalarlo como cgi asi que ahi vamos...

En el fichero httpd.conf tenemos que agregar 3 lineas...

ScriptAlias /php/ "D:/oha/install/php-5.4.10/"
AddType application/x-httpd-php .php
Action application/x-httpd-php "/php/php-cgi.exe"

Buscar en el fichero  la seccion "ScriptAlias", es decir esta palabra y ahi se agrega la ruta donde esta instalado php, basicamente se define un Alias, la variable es /php/ y luego la ruta donde esta instalado.

Despues buscar la seccion "AddType" y agregar la parte de AddType. Basicamente se dice que aceptaremos tipos .php, asi como los .html, .cgi y esas extenciones raras :D.

Por ultimo agregar "Action" creo que no hay seccion action, asi que lo pueden agregar al final. aqui se junta el exe php-cgi.exe con el alias que definimos anteriormete, y listo!!!!!!!!!!!!!! ya todo chachi guay piruli deberia de funcionar. y si no marron!!!!!!!!!!!!!!!!!!.

Paso 5. Probar...

En el fichero httpd.conf miramos donde es donde podemos poner nuestros ficheros, ya sea html, o php, buscando la variable "DocumentRoot" ahi nos dara una ruta, que regularmente es /Apache2/htdocs
en esa ruta es donde colocamos nuestros ficheros html, o php.

Entonces en ese directorio podemos crear otro directorio o poner directament el php.
Yo cree algo así /Apache2/htdocs/test/hola.php

Y el contenido de hola.php es:

<?php
phpinfo();
?>

Y ya solo queda iniciar apache.... remember...

apache-server-2.0.64\Apache2\bin>Apache.exe -k start
apache-server-2.0.64\Apache2\bin>

Y ahora en el browser

http://localhost:8080/test/hola.php







Proyecto Base SWT para windows...

Este es un proyecto base para SWT.
Utiliza maven version 3.0.3
Eclipse, Juno.
SWT v 4.234  para windows

Este proyecto genera un zip con un jar que se puede ejecutar con "java -jar nombre.jar" o doble click en el jar y siempre y cuando se tenga instalado JRE ya se iniciara la aplicacion.

Una vez descomprimido ejecutar:

mvn clean package

Y ya tenemos el zip para distribuir.


Click aqui para descargarlo....




miércoles, 16 de enero de 2013

Calendario + JavaFX

Ho no!!!!!!!!!!!!!!!!!!!!!!!!!! componente Calendario en JavaFX

Pues eso.... un componente para mostrar el calendario, gracias a nuestro señor jesucristo hay gente tan agradable que comparte sus componentes y no hay que reinventar la rueda.....

http://www.e-zest.net/blog/calendar-control-in-javafx-2-0/

Muestra un popup calendario, con el boton de calendario y el textbox de calendario

ComboBox + CheckBox + JavaFX

Pues eso.... como siempre se requieren chorradas para presentar los datos al usuario de una forma facil de digerir, y ahora se necesita un checkBox con seleccion multiple.

Pues me di de topes, porque no hayaba la forma y al final realice un componente que para sacarnos de apuros ayuda....


import java.util.ArrayList;
import java.util.List;

import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.event.ActionEvent;
import javafx.event.Event;
import javafx.event.EventHandler;
import javafx.geometry.Bounds;
import javafx.scene.Parent;
import javafx.scene.control.Button;
import javafx.scene.control.CheckBox;
import javafx.scene.control.ListView;
import javafx.scene.layout.VBox;
import javafx.stage.Popup;

/**
 * Simula un ListBox con elementos checkBox.
 * @author oscarha
 *
 */
public class MultiComboBox<T> extends VBox implements EventHandler<Event>{
 
    private ListView<CheckBox> checkBoxList = new ListView<CheckBox>();
    private Popup checkBoxListPopup = new Popup();
    private List<T> dataList = new ArrayList<T>();
    private Button comboLabel = new Button("0 Seleccionados");
   
    /**
     * Constructor por defecto.
     */
    public MultiComboBox(){
        checkBoxListPopup.setAutoHide(true);
        checkBoxListPopup.setAutoFix(true);
        checkBoxListPopup.setHideOnEscape(true);
        checkBoxListPopup.getContent().add(checkBoxList);
        getChildren().add(comboLabel);
        comboLabel.setOnMouseClicked(this);
        checkBoxList.setOnMouseClicked(this);
    }

    /**
     * OnClick
     */
    public void handle(Event event) {
        if(event.getSource().equals(comboLabel)){
            comboLabelOnClick();
        }       
    }
   
    /**
     * Muestra o esconde el ListView de CheckBoxes
     */
    private void comboLabelOnClick(){
        if(checkBoxListPopup.isShowing()){
            checkBoxListPopup.hide();
        }else{
            Parent parent = getParent();
            Bounds childBounds = getBoundsInParent();
            Bounds parentBounds = parent.localToScene(parent.getBoundsInLocal());
            double layoutX = childBounds.getMinX() + parentBounds.getMinX() + parent.getScene().getX() + parent.getScene().getWindow().getX();
            double layoutY = childBounds.getMaxY() + parentBounds.getMinY() + parent.getScene().getY() + parent.getScene().getWindow().getY();
            checkBoxListPopup.show(this, layoutX, layoutY);
        }
    }

    /**
     * Obtiene todos los datos.
     * @return
     */
    public List<T> getDataList() {
        return dataList;
    }

    /**
     * Inicializa los datos.
     * @param pDataList
     */
    public void setDataList(List<T> pDataList) {
        this.dataList = new ArrayList<T>();
        this.dataList.add(null);
        this.dataList.addAll(pDataList);
        refreshData();
    }
   
    /**
     * Actualiza los datos.
     */
    private void refreshData(){
        checkBoxList.getItems().clear();
        setTodosOption();
        for(int a=1; a<getDataList().size(); a++){
            CheckBox checkBox = new CheckBox(getDataList().get(a).toString());
            checkBox.setOnAction(new EventHandler<ActionEvent>() {

                public void handle(ActionEvent arg0) {
                    refreshLabel();
                }
               
            });
            checkBoxList.getItems().add(checkBox);
        }
    }
   
    /**
     * Pone la opcion de todos al inicio del list view.
     */
    private void setTodosOption(){
        CheckBox checkBox = new CheckBox("Todos");
        checkBox.selectedProperty().addListener(new ChangeListener<Boolean>(){

            public void changed(ObservableValue<? extends Boolean> arg0, Boolean arg1, Boolean newValue) {
                for(int a=1; a<dataList.size(); a++){
                    checkBoxList.getItems().get(a).setSelected(newValue);
                }
                refreshLabel();
            }
           
        });       
        checkBoxList.getItems().add(checkBox);
    }
   
    /**
     * Actualiza la etiqueta.
     */
    private void refreshLabel(){
        int size = getSelectedData().size();
        comboLabel.setText(size+" Seleccionados");
    }
   
    /**
     * Obtiene los datos que se hayan seleccionado.
     * @return
     */
    public List<T> getSelectedData(){
        List<T> selList = new ArrayList<T>();
        for(int a=1; a<dataList.size(); a++){
            if(checkBoxList.getItems().get(a).isSelected()){
                selList.add(dataList.get(a));
            }
        }
        return selList;
    }
   
   
}




Queda una chorrada mas o menos así......

Presentación

Otra pagina mas de programación.....