Ir a Window -> General->Workspace
y en la opcion de Text file enconding seleccionar del combo utf-8
php suprimir warnings
en el archivo .htaccess
# PHP error handling for development servers
php_flag display_startup_errors off
php_flag display_errors off
php_flag html_errors off
php_flag log_errors on
php_flag ignore_repeated_errors off
php_flag ignore_repeated_source off
php_flag report_memleaks on
php_flag track_errors on
php_value docref_root 0
php_value docref_ext 0
php_value error_log /home/path/public_html/domain/php_errors.log
php_value error_reporting -1
php_value log_errors_max_len 0
# PHP error handling for development servers
php_flag display_startup_errors off
php_flag display_errors off
php_flag html_errors off
php_flag log_errors on
php_flag ignore_repeated_errors off
php_flag ignore_repeated_source off
php_flag report_memleaks on
php_flag track_errors on
php_value docref_root 0
php_value docref_ext 0
php_value error_log /home/path/public_html/domain/php_errors.log
php_value error_reporting -1
php_value log_errors_max_len 0
Maximum Execution Time Exceeded in WordPress
en el archivo .htaccess de la raiz de tu proyecto agregar las sgts lineas (en negrita)
<IfModule mod_rewrite.c>
php_value max_execution_time 300
php_value max_input_time 300
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
<IfModule mod_rewrite.c>
php_value max_execution_time 300
php_value max_input_time 300
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
eclipse The declaration for the entity "ContentType" must end with '>'.
- right click on Project -> Resource -> Resource Filters
- click on Add filter....You should then select: Exclude all, Applies to folders, Name matches node_modules
- Press ok and you should be good to go.
Conectar cliente Minecraft PC a server Pocketmine
1) en el cliente PC "edit profile" y en la opcion de "use version" seleccionar release 1.8
2)en el pocketmine-server colocar el phar del plugin BigBrother.
(descargarlo desde: https://github.com/shoghicp/BigBrother/releases)
3)startear el server
4)play el cliente PC, seleccionar multiplayer y aparecerá en la lista de servidores el de pocketmine
2)en el pocketmine-server colocar el phar del plugin BigBrother.
(descargarlo desde: https://github.com/shoghicp/BigBrother/releases)
3)startear el server
4)play el cliente PC, seleccionar multiplayer y aparecerá en la lista de servidores el de pocketmine
minecraft Crear plugin pocketmine
1) descargar el server de pocketmine e instalar con el wizard
http://www.pocketmine.net/
2) descargar los fuentes que nos serviran para extender nuestras clases
https://github.com/pmmp/pocketmine-mp
En ECLIPSE:
3) crear un proyecto PHP
4) agregar los fuentes para extender nuestras clases
click derecho ->include parh->configure path
en la pestaña de libraries, click en el boton "add external source folder"
y seleccionar la carpeta entera extraida en el paso (2) o la subcarpeta "src"
5) crear nuestra carpeta source
click derecho ->build path->new source folder
llamarla "src" .
6) en src crear nuestra estructura de directorios (p.e: si es ar\com\cmd\mc\bugreport crear esas 5 carpetas)
7) crear nuestro archivo main , crearemos un archivo llamado BugReport.php
<?php
namespace ar\com\cmd\mc\bugreport;
use pocketmine\plugin\PluginBase;
use pocketmine\command\Command;
use pocketmine\command\CommandSender;
class BugReport extends PluginBase{
public function onEnable(){
$this->getLogger()->info("onEnable() has been called!");
}
public function onDisable(){
$this->getLogger()->info("onDisable() has been called!");
}
public function onLoad(){
$this->getLogger()->info("onLoad() has been called!");
}
public function onCommand(CommandSender $sender, Command $command, $label, array $args){
$commandName = $command->getName();
$this->getLogger()->info("commando: ".$commandName);
if($commandName === "bugs"){
return true;
}
return false;
}
}
8) en la raiz del proyecto crear el archivo plugin.yml
name: BugReport
main: ar\com\cmd\mc\bugreport\BugReport
version: 1.0.0
api: 1.0.0
commands:
bugs:
description: show latest bugs reported
usage: /bugs <limit>
9) exportar el proyecto
click derecho-> export
seleccionar PHP/Phar export
y en la sgt pantalla seleccionar como destino la carpeta donde instalamos el pocket mine server (paso #1)
en mi caso será
C:\Users\ibazan\PocketMine-MP\plugins\bugreport.phar
10) si el server esta ejecutandose, recargarlo con el comando:
reload
fuente:
https://github.com/PocketMine/Documentation/wiki/Plugin-Tutorial
http://www.pocketmine.net/
2) descargar los fuentes que nos serviran para extender nuestras clases
https://github.com/pmmp/pocketmine-mp
En ECLIPSE:
3) crear un proyecto PHP
4) agregar los fuentes para extender nuestras clases
click derecho ->include parh->configure path
en la pestaña de libraries, click en el boton "add external source folder"
y seleccionar la carpeta entera extraida en el paso (2) o la subcarpeta "src"
5) crear nuestra carpeta source
click derecho ->build path->new source folder
llamarla "src" .
6) en src crear nuestra estructura de directorios (p.e: si es ar\com\cmd\mc\bugreport crear esas 5 carpetas)
7) crear nuestro archivo main , crearemos un archivo llamado BugReport.php
<?php
namespace ar\com\cmd\mc\bugreport;
use pocketmine\plugin\PluginBase;
use pocketmine\command\Command;
use pocketmine\command\CommandSender;
class BugReport extends PluginBase{
public function onEnable(){
$this->getLogger()->info("onEnable() has been called!");
}
public function onDisable(){
$this->getLogger()->info("onDisable() has been called!");
}
public function onLoad(){
$this->getLogger()->info("onLoad() has been called!");
}
public function onCommand(CommandSender $sender, Command $command, $label, array $args){
$commandName = $command->getName();
$this->getLogger()->info("commando: ".$commandName);
if($commandName === "bugs"){
return true;
}
return false;
}
}
8) en la raiz del proyecto crear el archivo plugin.yml
name: BugReport
main: ar\com\cmd\mc\bugreport\BugReport
version: 1.0.0
api: 1.0.0
commands:
bugs:
description: show latest bugs reported
usage: /bugs <limit>
9) exportar el proyecto
click derecho-> export
seleccionar PHP/Phar export
y en la sgt pantalla seleccionar como destino la carpeta donde instalamos el pocket mine server (paso #1)
en mi caso será
C:\Users\ibazan\PocketMine-MP\plugins\bugreport.phar
10) si el server esta ejecutandose, recargarlo con el comando:
reload
fuente:
https://github.com/PocketMine/Documentation/wiki/Plugin-Tutorial
yii2 file input kartik widget
ejecutar este par de sentencias:
composer require kartik-v/bootstrap-fileinput "@dev"
composer require kartik-v/yii2-widget-fileinput "@dev"
la idea es poder guardar una imagen en una carpeta del sitio:
nuestro modelo tiene una campo que guarda solo el nombre del archivo: $image_name
vamos a crear un campo virtual llamado $image que hace referencia al archivo de imagen que se envia desde el formulario:
class Notifications extends \yii\db\ActiveRecord
{
var $image;
para usarlo en una vista:
use kartik\file\FileInput;
<?= $form->field($model, 'image')->widget(FileInput::classname(), [
'options' => ['accept' => 'image/*'],
'pluginOptions'=>['allowedFileExtensions'=>['jpg','gif','png'],'showUpload' => false,],
]); ?>
en el controller:
use yii\web\UploadedFile;
public function actionCreate() {
$model = new Notifications ();
if ($model->load ( Yii::$app->request->post () )) {
$image = UploadedFile::getInstance ( $model, 'image' );
if (!is_null( $image )) {
$model->full_image_url = $image->name;
$ext = end ( (explode ( ".", $image->name )) );
// generate a unique file name to prevent duplicate filenames
$model->full_image_url = Yii::$app->security->generateRandomString () . ".{$ext}";
// the path to save file, you can set an uploadPath
$uploadPath = Yii::$app->basePath . '/upload-folder/';
$path = $uploadPath. $model->image_name;
$image->saveAs ( $path );
}
if ($model->save ()) {
return $this->redirect ( [
'view',
'id' => $model->id
] );
}
}
fuente:
https://github.com/kartik-v/yii2-widget-fileinput
composer require kartik-v/bootstrap-fileinput "@dev"
composer require kartik-v/yii2-widget-fileinput "@dev"
la idea es poder guardar una imagen en una carpeta del sitio:
nuestro modelo tiene una campo que guarda solo el nombre del archivo: $image_name
vamos a crear un campo virtual llamado $image que hace referencia al archivo de imagen que se envia desde el formulario:
class Notifications extends \yii\db\ActiveRecord
{
var $image;
para usarlo en una vista:
use kartik\file\FileInput;
<?= $form->field($model, 'image')->widget(FileInput::classname(), [
'options' => ['accept' => 'image/*'],
'pluginOptions'=>['allowedFileExtensions'=>['jpg','gif','png'],'showUpload' => false,],
]); ?>
en el controller:
use yii\web\UploadedFile;
public function actionCreate() {
$model = new Notifications ();
if ($model->load ( Yii::$app->request->post () )) {
$image = UploadedFile::getInstance ( $model, 'image' );
if (!is_null( $image )) {
$model->full_image_url = $image->name;
$ext = end ( (explode ( ".", $image->name )) );
// generate a unique file name to prevent duplicate filenames
$model->full_image_url = Yii::$app->security->generateRandomString () . ".{$ext}";
// the path to save file, you can set an uploadPath
$uploadPath = Yii::$app->basePath . '/upload-folder/';
$path = $uploadPath. $model->image_name;
$image->saveAs ( $path );
}
if ($model->save ()) {
return $this->redirect ( [
'view',
'id' => $model->id
] );
}
}
fuente:
https://github.com/kartik-v/yii2-widget-fileinput
yii2 materialize
1) usando widget de wiisoft
fuente:
https://github.com/wiisoft/yii2-materialize
desde consola y dentro de la carpeta de tu proyecto recientemente creado ejecutar la sgt sentencia
fuente:
https://github.com/wiisoft/yii2-materialize
desde consola y dentro de la carpeta de tu proyecto recientemente creado ejecutar la sgt sentencia
composer require --prefer-dist wiisoft/yii2-materialize "*"
listo, ahora se debe cambiar hacer los sgts cambios en views/layouts/main.php
use wii\materialize\Nav;
use wii\materialize\NavBar;
<body>
<?php $this->beginBody() ?>
<header>
<?php
NavBar::begin([...
...
NavBar::end();
?>
</header>
<main>
<div class="container">
...
<?= $content ?>
</div>
</main>
<footer class="page-footer">
<div class="container">
...
</div>
...
</footer>
yii2 crear proyecto usando composer
abrir una consola e ir a la carpeta de acceso web,
en mi caso que uso xampp voy a htdocs
y ejecuto la siguiente sentencia:
en mi caso que uso xampp voy a htdocs
y ejecuto la siguiente sentencia:
composer create-project --prefer-dist --stability=dev yiisoft/yii2-app-basic NOMBRE_PROYECTO
Arreglar Eclipse cuando la PC se apaga intempestivamente
levantar por consola:
eclipse
eclipse
-clean -clearPersistedState
MYSQL como remover de una tabla una columna con indice
Simplemente:
DROP INDEX [nombre_de_columna] ON [nombre_de_tabla];
DROP INDEX [nombre_de_columna] ON [nombre_de_tabla];
MYSQL como setear un campo con el valor de una tabla relacionada
en este ejemplo tengo una relacion recursiva de la tabla items
donde la columna parent_id hace referencia al id de algun registro de la misma tabla.
Lo que queria es setear el campo name de los hijos con el mismo name del padre, entonces:
UPDATE items i INNER JOIN items p
ON i.parent_id = p.id
SET i.name = p.name
donde la columna parent_id hace referencia al id de algun registro de la misma tabla.
Lo que queria es setear el campo name de los hijos con el mismo name del padre, entonces:
UPDATE items i INNER JOIN items p
ON i.parent_id = p.id
SET i.name = p.name
yii2 quitar la barra inferior de debug yii-debug-toolbar
en index.php (el que se encuentra en la raiz del proyecto)
//defined('YII_DEBUG') or define('YII_DEBUG', true); // desarrollo
//defined('YII_ENV') or define('YII_ENV', 'dev'); // desarrollo
defined('YII_DEBUG') or define('YII_DEBUG', false); // produccion
defined('YII_ENV') or define('YII_ENV', 'prod'); //produccion
//defined('YII_DEBUG') or define('YII_DEBUG', true); // desarrollo
//defined('YII_ENV') or define('YII_ENV', 'dev'); // desarrollo
defined('YII_DEBUG') or define('YII_DEBUG', false); // produccion
defined('YII_ENV') or define('YII_ENV', 'prod'); //produccion
yii2 convertir un controller en un webservice restful
1)
tomar un controller existente y crear otro igual con distinto nombre.
Por ejemplo ItemsController.php -> Ws_itemsController.php
2)
hacer las sgts modificaciones
class Ws_itemsController extends ActiveController
{
/**
* @inheritdoc
*/
// adjust the model class to match your model
public $modelClass = 'app\models\Items';
public function behaviors()
{
return
\yii\helpers\ArrayHelper::merge(parent::behaviors(), [
'corsFilter' => [
'class' => \yii\filters\Cors::className(),
],
],
[
'verbs' => [
'class' => VerbFilter::className(),
'actions' => [
'delete' => ['POST'],
],
]
]);
}
3)
en web.php
...
'urlManager' => [
....
'rules' => array(
......
['class' => 'yii\rest\UrlRule', 'controller' => ['ws_items']],
),
],
...
4)
en web.php
Opcionalmente, para que pueda aceptar como imput json
....
'components' => [
'request' => [
.....
'parsers' => [
'application/json' => 'yii\web\JsonParser',
]
],
5)
tomar un controller existente y crear otro igual con distinto nombre.
Por ejemplo ItemsController.php -> Ws_itemsController.php
2)
hacer las sgts modificaciones
class Ws_itemsController extends ActiveController
{
/**
* @inheritdoc
*/
// adjust the model class to match your model
public $modelClass = 'app\models\Items';
public function behaviors()
{
return
\yii\helpers\ArrayHelper::merge(parent::behaviors(), [
'corsFilter' => [
'class' => \yii\filters\Cors::className(),
],
],
[
'verbs' => [
'class' => VerbFilter::className(),
'actions' => [
'delete' => ['POST'],
],
]
]);
}
3)
en web.php
...
'urlManager' => [
....
'rules' => array(
......
['class' => 'yii\rest\UrlRule', 'controller' => ['ws_items']],
),
],
...
4)
en web.php
Opcionalmente, para que pueda aceptar como imput json
....
'components' => [
'request' => [
.....
'parsers' => [
'application/json' => 'yii\web\JsonParser',
]
],
5)
GET /
ws_items: list all books page by page; HEAD /
ws_items: show the overview information of book listing; POST /
ws_items: create a new book; GET /
ws_items/123: return the details of the book 123; HEAD /
ws_items/123: show the overview information of book 123; PATCH /
ws_items/123 and PUT /books/123: update the book 123; DELETE /
ws_items/123: delete the book 123; OPTIONS /
ws_items: show the supported verbs regarding endpoint /books; OPTIONS /
ws_items/123: show the supported verbs regarding endpoint /books/123.
Yii2 acceder a los controllers solo si se está logueado
en controller.php
en el metodo beforeAction($action){
if(Yii::$app->user->isGuest && !($action->controller->id == 'site' && $action->id == 'login'))
{
$this->redirect(array('site/login'));
}
}
en el metodo beforeAction($action){
if(Yii::$app->user->isGuest && !($action->controller->id == 'site' && $action->id == 'login'))
{
$this->redirect(array('site/login'));
}
}
yii2 agregar codigo javascript jquery en una vista
<?php
use yii\web\View;
$this->registerJs("
$(document).ready(function(){
$(':checkbox').each(function (index, value){
var valor = $(this).val();
if($.isNumeric(valor)){
//console.log(index);
var html=$('.dropdown-menu label:eq('+index+')').html();
html=html+'<img src=http://www.minecraft-servers-list.org/plugins/MinecraftIdList/img/126-2.png>';
$('.dropdown-menu label:eq('+index+')').html(html);
}else{
console.log('NO es numero');
}
});
});
", View::POS_READY);
?>
MYSQL como hacer accesible una base de datos local en una red
ejecutar en alguna consola cliente de base de datos:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '<roots-password>' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '<roots-password>' WITH GRANT OPTION;
yii2 quitar index.php de la url
crear un archivo llamado .htaccess en la raiz del proyecto con el sgt contenido:
RewriteEngine on
# If a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Otherwise forward it to index.php
RewriteRule . index.php
en config/web.php agregar:
'urlManager' => [
'class' => 'yii\web\UrlManager',
'showScriptName' => false,
'enablePrettyUrl' => true,
'rules' => array(
'<controller:\w+>/<id:\d+>' => '<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
),
],
RewriteEngine on
# If a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Otherwise forward it to index.php
RewriteRule . index.php
en config/web.php agregar:
'urlManager' => [
'class' => 'yii\web\UrlManager',
'showScriptName' => false,
'enablePrettyUrl' => true,
'rules' => array(
'<controller:\w+>/<id:\d+>' => '<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
),
],
yii2 agregar orden por default a GridView
$dataProvider->sort = ['defaultOrder' => ['id' => 'DESC']];
yii2 como agregar asterisco campos requeridos en formulario
en site.css
agregar
agregar
form div.required label.control-label:after { content:" * "; color:red; }
yii2 como sacar el web de la url
copie el contenido de la carpeta web a la raiz del proyecto
en index.php actualice los links
en index.php actualice los links
<?php defined('YII_DEBUG') or define('YII_DEBUG', false); defined('YII_ENV') or define('YII_ENV', 'dev'); require(__DIR__ . '/../vendor/autoload.php'); require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php'); $config = require(__DIR__ . '/../config/web.php'); (new yii\web\Application($config))->run();
por:
<?php defined('YII_DEBUG') or define('YII_DEBUG', false); defined('YII_ENV') or define('YII_ENV', 'dev'); require(__DIR__ . '/vendor/autoload.php'); require(__DIR__ . '/vendor/yiisoft/yii2/Yii.php'); $config = require(__DIR__ . '/config/web.php'); (new yii\web\Application($config))->run();
yii2 guardar modelos y sus relaciones
vamos a usar la siguiente extension
https://packagist.org/packages/la-haute-societe/yii2-save-relations-behavior
la descargamos usando composer
https://packagist.org/packages/la-haute-societe/yii2-save-relations-behavior
la descargamos usando composer
composer require --prefer-dist la-haute-societe/yii2-save-relations-behavior "*"
en mi caso tengo 2 clases una Grupo e Item, donde
un grupo tiene muchos items y cada item pertenece a un solo grupo.
editamos el modelo de Grupo
use lhs\Yii2SaveRelationsBehavior\SaveRelationsBehavior;
class Grupo extends \yii\db\ActiveRecord
{
public function behaviors()
{
return [
'saveRelations' => [
'class' => SaveRelationsBehavior::className(),
'relations' => ['items']
],
];
}
yii2 usando composer
1) descargar e instalar composer para windows
https://getcomposer.org/download/
2) agregar en las variables de entorno PATH
la carpeta donde se guardó composer.phar
usalmente será: C:\ProgramData\ComposerSetup\bin
3) instalando un widget
por ejemplo el multiselect
https://github.com/2amigos/yii2-multi-select-widget
en el readme dice que en la carpeta root del proyecto por consola tiremos este comando
https://getcomposer.org/download/
2) agregar en las variables de entorno PATH
la carpeta donde se guardó composer.phar
usalmente será: C:\ProgramData\ComposerSetup\bin
3) instalando un widget
por ejemplo el multiselect
https://github.com/2amigos/yii2-multi-select-widget
en el readme dice que en la carpeta root del proyecto por consola tiremos este comando
php composer.phar require 2amigos/yii2-multi-select-widget "*"
pero vamos a usar
composer require 2amigos/yii2-multi-select-widget "*"
esta será la salida
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Reading bower.json of bower-asset/jquery (1.10.0)
Could not fetch https://api.github.com/repos/jquery/jquery-dist/contents/bower.j
son?ref=2c62b787b2cafb32af14edadc963b8ba3cb847b8, please create a GitHub OAuth t
oken to go over the API rate limit
Head to https://github.com/settings/tokens/new?scopes=repo&description=Composer+
on+CGWKS588+2016-08-18+2213
to retrieve a token. It will be stored in "C:/Users/ibazan/AppData/Roaming/Compo
ser/auth.json" for future use by Composer.
Token (hidden):
copiar la url que nos indican (
https://github.com/settings/tokens/new?scopes=repo&description=Composer+ on+CGWKS588+2016-08-18+2213
) ingresar con nuestro usuario de github y obtener el token, pegarlo (no se verá) y darle enter
para que continue con la bajada de archivos
Token stored successfully.
- Installing 2amigos/yii2-multi-select-widget (0.1.1)
Downloading: 100%
Writing lock file
Generating autoload files
yii 2 empezando
1) instalarlo via composer o descargar el zip con la ultima version.
http://www.yiiframework.com/download/
en el zip al descomprimir hay una carpeta llamada basic, cambiarle el nombre al de tu proyecto y colocarlo en una carpeta de publicacion web.
xampp/htdocs
entrar a web.php y escribir un numero de clave cualquiera
2) conectarse a la bd
en web/config.db
3) generar codigo con gii
http://localhost/economy-admin/web/index.php?r=gii
( en las secciones de model generator y crud generator tildar las opcion de i18n )
4) habilitar i18n:
en la carpeta del proyecto por linea de comando
http://www.yiiframework.com/download/
en el zip al descomprimir hay una carpeta llamada basic, cambiarle el nombre al de tu proyecto y colocarlo en una carpeta de publicacion web.
xampp/htdocs
entrar a web.php y escribir un numero de clave cualquiera
config/web.php
'cookieValidationKey' => 'enter your secret key here',
2) conectarse a la bd
en web/config.db
3) generar codigo con gii
http://localhost/economy-admin/web/index.php?r=gii
( en las secciones de model generator y crud generator tildar las opcion de i18n )
4) habilitar i18n:
en la carpeta del proyecto por linea de comando
yii
message
/config
@app
/config/i18n
.php
esto creará el archivo i18n.php en config
se puede editar las sgts entradas del archivo para volver a generar las carpetas con los archivos de idiomas
(por default ya vienen en vendor/yiisoft/yii2/messages)
...
'sourcePath' => __DIR__. DIRECTORY_SEPARATOR .'..',
'messagePath' => __DIR__ . DIRECTORY_SEPARATOR . 'messages',
'languages'
=> [
'es'
],
...
(en este caso le estamos diciendo que los genere dentro de la carpeta config/messages, que debemos crear previamente)
en la carpeta por linea de comando:
yii
message
/extract
@app
/config/i18n
.php
luego editar config/web.php
y agregar la sgt linea
'language'=>'es', // spanish
esto generará 2 archivos en la carpeta messages/es:
yii.php con las entradas comunes a todo el proyecto
app.php con las entradas particulares del proyecto como las labels de los modelos.
[no tengo manera de que lea las entradas de t('app','xxx xxx') BUG]
git repositorio remoto
1) crear un repositorio remoto en github
https://github.com
loguearte
y hacer click en el "+" del extremo superior derecho
seguir los pasos correspondientes.
en mi caso cree uno llamado webazan que tiene la sgt url
https://github.com/israelbazan76/webazan.git
2) agregar elrepositorio remoto
git remote add origin https://github.com/israelbazan76/webazan.git
3) ahora ya podemos enviar nuestros commits al servidor remoto.
The name of our remote is
8) si haces algun cambio en un archivo y quieres ver la diferencia con el que está en tu repo local
usa
C:\Users\ibazan\test-git-1>git diff head
diff --git a/webazan/view.php b/webazan/view.php
index e463698..14bc399 100644
--- a/webazan/view.php
+++ b/webazan/view.php
@@ -2,7 +2,7 @@
/* @var $this UsersController */
/* @var $model Users */
-/**holaaaaaaaaaaaaaaa**/
+/**holaaaaaaaaaaaaaaa chauuuuuuuuuuuuuu**/
?>
en el ejemplo se agregó "chauuuuuuuuuuuuuu"
entonces, luego de add y commit git diff head no devolverá nada (el archivo será el mismo no habiendo ninguna diferencia)
https://github.com
loguearte
y hacer click en el "+" del extremo superior derecho
seguir los pasos correspondientes.
en mi caso cree uno llamado webazan que tiene la sgt url
https://github.com/israelbazan76/webazan.git
2) agregar elrepositorio remoto
git remote add origin https://github.com/israelbazan76/webazan.git
3) ahora ya podemos enviar nuestros commits al servidor remoto.
The name of our remote is
origin
and the default local branch name is master
. The -u
tells Git to remember the parameters,
so that next time we can simply run git push
(nos va a aparecer un popup para loguearnos al github por unica vez)
git push -u origin master
(al crear nuestro repositorio remoto nos indican que creemos un readme https://help.github.com/articles/create-a-repo/ lo que provocara que no podamos hacer el push, entonces vamos a mofificar el comando agregando el parametro -f para forzar el push)
git push -f origin master
Counting objects: 8, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (7/7), done.
Writing objects: 100% (8/8), 2.25 KiB | 0 bytes/s, done.
Total 8 (delta 1), reused 0 (delta 0)
To https://github.com/israelbazan76/webazan.git
+ 0b296cd...627080b master -> master (forced update)
4) si agregamos un nuevo archivo luego de agregarlo a nuestro master local con git add "*.php"
y lo commiteamos con git commit -m "algun comentario"
ya lo podremos pushear asi:
git push origin master
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 682 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 0 (delta 0)
To https://github.com/israelbazan76/webazan.git
627080b..4613798 master -> master
5) si agregamos al stage
git add "datos.sql"
lo podemos quitar del stage
git reset datos.sql
6) para regresar todo lo local al estado del ultimo commit
git checkout -- datos.sql
7) si en una carpeta iniciada en git (git init) clonamos un repo remoto (git clone
https://github.com/israelbazan76/webazan.git
) para poder pushear debemos hacer todo el proceso de add y commit que conocemos.
no solo eso sino que ademas debemos linkear la carpeta con el repo (
git remote add origin https://github.com/israelbazan76/webazan.git) asi le asigna el nombre por default de "origin" y pullear con el parametro que permite mergear las historias no relacionadas (git pull origin master --allow-unrelated-histories) calculo que es por el "readme" que no se clona
8) si haces algun cambio en un archivo y quieres ver la diferencia con el que está en tu repo local
usa
C:\Users\ibazan\test-git-1>git diff head
diff --git a/webazan/view.php b/webazan/view.php
index e463698..14bc399 100644
--- a/webazan/view.php
+++ b/webazan/view.php
@@ -2,7 +2,7 @@
/* @var $this UsersController */
/* @var $model Users */
-/**holaaaaaaaaaaaaaaa**/
+/**holaaaaaaaaaaaaaaa chauuuuuuuuuuuuuu**/
?>
en el ejemplo se agregó "chauuuuuuuuuuuuuu"
entonces, luego de add y commit git diff head no devolverá nada (el archivo será el mismo no habiendo ninguna diferencia)
Crear JAVA RESTful Webservices con Jersey - dynamic web project maven project JSON
Jersey RESTful Web Services framework is an open source framework for developing RESTful Web Services in Java.
1) Crear el proyecto
click derecho / new / dynamic web project
por ejemplo
en porject name : services-api
2) Crear el deployment descriptor file (osea el web.xml)
click derecho sobre el proyecto/ java EE tools/ generate deployment descriptor stub
3) editar el web.xml
ir a WebContent/WEB-INF/web.xml
agregar las sgts lineas
.....
1) Crear el proyecto
click derecho / new / dynamic web project
por ejemplo
en porject name : services-api
2) Crear el deployment descriptor file (osea el web.xml)
click derecho sobre el proyecto/ java EE tools/ generate deployment descriptor stub
3) editar el web.xml
ir a WebContent/WEB-INF/web.xml
agregar las sgts lineas
.....
<servlet>
<servlet-name>Jersey Web Application</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey Web Application</servlet-name>
<url-pattern>/api/*</url-pattern>
</servlet-mapping>
4) convertir el proyecto a uno de tipo maven
(eso lo hacemos para poder agregar librerias como por ejemplo para manipular json)
click derecho sobre el proyecto/ configure / convert to maven project
5) editar el archivo pom.xml
agregar las sgts lineas
<dependencies>
{ "usuario": { "id": "1001", "nombre": "Juan", "apellido": "Perez" }}
<dependency>
<groupId>asm</groupId>
<artifactId>asm-all</artifactId>
<version>3.3.1</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-bundle</artifactId>
<version>1.14</version>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20090211</version>
</dependency>
</dependencies>
6) Crear la clase con los servicios
click dere. sobre el proyecto/ new / class
package> com.example
name> MyApiServices
en este ejemplo el servicio recibira por POST datos en formato json
y unicamente devolvera lo que recibe.
@Path("/")
public class MyApiServices {
public class MyApiServices {
@POST
@Path("/myApiService")
@Consumes(MediaType.APPLICATION_JSON)
public Response apiREST(InputStream incomingData) {
StringBuilder builder = new StringBuilder();
try {
BufferedReader in = new BufferedReader(new InputStreamReader(incomingData));
String line = null;
while ((line = in.readLine()) != null) {
builder.append(line);
}
} catch (Exception e) {
System.out.println("Error Parsing: - ");
}
System.out.println("Datos recibidos: " + builder.toString());
// return HTTP response 200 in case of success
return Response.status(200).entity(builder.toString()).build();
}
}
7) agregar el proyecto al Tomcat Server
en la pestaña de Servers
click derecho sobre el servidor creado previamente (en mi caso Tomcat v8.0 Server at localhost)
add/remove y agregamos nuestro pyecto.
8) ejecutar el Tomcat Server y testear el service
-click dere sobre el server y "start"
en firefox usamos la extension REstClient http://restclient.net/
en HEADER crear Content-type : application/json
Method: POST
Url: http://localhost:8080/services-api/api/myService
en el Body:
{
"usuario": {
"id": "1001",
"nombre": "Juan",
"apellido": "Perez"
}
}
"usuario": {
"id": "1001",
"nombre": "Juan",
"apellido": "Perez"
}
}
al hacer click en [send]
obtendremos
{ "usuario": { "id": "1001", "nombre": "Juan", "apellido": "Perez" }}
fuente:
http://crunchify.com/create-very-simple-jersey-rest-service-and-send-json-data-from-java-client/
http://crunchify.com/create-very-simple-jersey-rest-service-and-send-json-data-from-java-client/
programar en yii como sacar de las urls el index.php?r=
1)
en protected/config/main.php habilitar el urlManager
en protected/config/main.php habilitar el urlManager
'urlManager'=>array(
'urlFormat'=>'path',
'rules'=>array(
'<controller:\w+>/<id:\d+>'=>'<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
),
'showScriptName'=>false,
),
2)
en la raiz de la aplicación el archivo .htaccess debe ser asi
RewriteEngine on
# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php)
# otherwise forward it to index.php
RewriteRule ^(.+)$ index.php?$1 [PT,L,QSA]
Programar en Yii 1 Bootstrap
1)
descargar la extension yiistrap desde aqui
http://www.yiiframework.com/extension/yiistrap/
(la version a descargar es yiistrap-1.1.1.zip)
2)
crear la carpeta "bootstrap"
protected/extensions/bootstrap
y copiar ahi el contenido de la carpeta de-zipeada de yiistrap
3)
editar el archivo de configuración protected/config/main.php
descargar la extension yiistrap desde aqui
http://www.yiiframework.com/extension/yiistrap/
(la version a descargar es yiistrap-1.1.1.zip)
2)
crear la carpeta "bootstrap"
protected/extensions/bootstrap
y copiar ahi el contenido de la carpeta de-zipeada de yiistrap
3)
editar el archivo de configuración protected/config/main.php
<?php // main configuration return array( ... // path aliases 'aliases' => array( ... 'bootstrap' => realpath(__DIR__ . '/../extensions/bootstrap'), // change this if necessary ), // import paths 'import' => array( ... 'bootstrap.helpers.TbHtml', ), // application modules 'modules' => array( ... 'gii' => array( 'generatorPaths' => array('bootstrap.gii'), ), ), // application components 'components' => array( ... 'bootstrap' => array( 'class' => 'bootstrap.components.TbApi', ), ), );
4) agregar la siguiente linea en la sección de head de protected/views/layouts/main.php
<?php Yii::app()->bootstrap->register(); ?>
5) para ver los distintos elementos de bootstrap leer
http://www.getyiistrap.com/site/basics
programar en yii 1.1 - behavior auditoria
se busca que al crearse un nuevo usuario
o se modifique, se guarden automaticamente los campos de fecha de creacion y modificación.
1) crear la carpeta protected/behaviors
2) crear el archivo Timestampbehavior.php en la carpeta creada.
class Timestampbehavior extends CActiveRecordBehavior
{
public function beforeSave($event){
$currenttime=new CDbExpression('NOW()');
if($this->owner->isNewRecord){
$this->owner->created=$currenttime;
}
$this->owner->modified=$currenttime;
return true;
}
}
3) en el modelo Usuarios.php agregar la siguiente funcion:
public function behaviors(){
return array(
'Timestampbehavior'=>array(
'class'=>'application.behaviors.Timestampbehavior',
),
);
}
o se modifique, se guarden automaticamente los campos de fecha de creacion y modificación.
1) crear la carpeta protected/behaviors
2) crear el archivo Timestampbehavior.php en la carpeta creada.
class Timestampbehavior extends CActiveRecordBehavior
{
public function beforeSave($event){
$currenttime=new CDbExpression('NOW()');
if($this->owner->isNewRecord){
$this->owner->created=$currenttime;
}
$this->owner->modified=$currenttime;
return true;
}
}
3) en el modelo Usuarios.php agregar la siguiente funcion:
public function behaviors(){
return array(
'Timestampbehavior'=>array(
'class'=>'application.behaviors.Timestampbehavior',
),
);
}
programar en yii 1.1 - modelo, base de datos, crud
crear la sgt tabla:
CREATE TABLE usuarios (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(30) NOT NULL,
apellido VARCHAR(30) NOT NULL,
email VARCHAR(50),
created date not null,
modified date not null
)
en /protected/config/main.php
descomentar
CREATE TABLE usuarios (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(30) NOT NULL,
apellido VARCHAR(30) NOT NULL,
email VARCHAR(50),
created date not null,
modified date not null
)
en /protected/config/main.php
descomentar
/*
'gii'=>array(
'class'=>'system.gii.GiiModule',
'password'=>'Enter Your Password Here',
'ipFilters'=>array('127.0.0.1','::1'),
),
*/
en /protected/config/database.php
descomentar la parte de mysql colocar los datos de tu conexion y comentar la parte de sqlite
//'connectionString' => 'sqlite:'.dirname(__FILE__).'/../data/testdrive.db',
// uncomment the following lines to use a MySQL database
'connectionString' => 'mysql:host=localhost;dbname=bibliotekbd',
'emulatePrepare' => true,
'username' => 'root',
'password' => '',
'charset' => 'utf8',
abrir la sgt url:
http://localhost/bibliotek/index.php?r=gii
-crear el modelo basado en la tabla Usuarios
-crear el CRUD basado en el modelo Usuarios creado en el paso anterior
programar en yii 1.1
la ultima versión estable es la 1.1.17
1) descargarla de http://www.yiiframework.com/download/#yii1
2) descomprimirla y copiar la carpeta de yii en xampp/htdocs
3) abrir una consola y crear mediante la sgt linea de comandos tu primera aplicación
c:/xampp/php/php.exe c:/xampp/htdocs/yii-1.1.17/framework/yiic.php webapp c:/xampp/htdocs/bibliotek
4) levantar el apache desde le panel de control de xampp
5) abrir un browser y escribir la sgt url: http://localhost/bibliotek
Si trabajas con Eclipse
1) click derecho New PHP project
y continuar como indica la figura
1) descargarla de http://www.yiiframework.com/download/#yii1
2) descomprimirla y copiar la carpeta de yii en xampp/htdocs
3) abrir una consola y crear mediante la sgt linea de comandos tu primera aplicación
c:/xampp/php/php.exe c:/xampp/htdocs/yii-1.1.17/framework/yiic.php webapp c:/xampp/htdocs/bibliotek
4) levantar el apache desde le panel de control de xampp
5) abrir un browser y escribir la sgt url: http://localhost/bibliotek
Si trabajas con Eclipse
1) click derecho New PHP project
y continuar como indica la figura
instalar memcache y memcached en xampp 1.7.3 php 5.3.1
EDITAR
C:/xampp/php/php.ini
AGREGAR LAS SIGUIENTES LINEAS
extension=php_memcache.dll
[Memcache]
memcache.allow_failover = 1
memcache.max_failover_attempts=20
memcache.chunk_size =8192
memcache.default_port = 11211
Download php_memecache.dll
php_memcache-cvs-20090703-5.3-VC6-x86 (buscar esa version pues php fue compilada con vc6)
Unzip el archivo tomar el php_memcache.dll y pegarlo en el folder ext .C:/xampp/php/ext/
Download memcached for windows
unzip en c:/memcached/
Abrir consola rn modo Administrator
Instalar el memcache service
c:\memcached\memcached.exe -d install
iniciaR MEMCACHED
c:\memcached\memcached.exe -d start
Restart Xampp Apache
Suscribirse a:
Entradas (Atom)
linux ubuntu mint actualizar chrome
desde una terminal: $ sudo apt update $ sudo apt install google-chrome-stable
-
por consola y desde la raiz de tu proyecto php artisan --version
-
en nuestro proyecto creamos una carpeta llamada donde estaran todas nuestras clases, por ejemplo una llamada: MiApp adentro de esta irian b...
-
Integridad al nivel de la base de datos Oracle Oracle valida la integridad de la base de datos y presenta los siguientes mensajes de erro...