YouTube, ese fantástico repositorio de vÃÂdeos, acaba de incluir dos nuevas funcionalidades muy interesantes: Quick Capture y Streams. Con Quick Capture, los usuarios pueden grabar vÃÂdeos directamente (no editarlos) desde sus ordenadores, con una c
Cuentas Pro ($24,95/año):* Subida de ficheros ilimitada, * Almacenamiento ilimitado, * Ancho de banda ilimitado…Cuentas gratuitas: * 100 MB de subida de ficheros, * 3 PhotoSets, * PhotoStream limitado a las 200 imágenes más recientes, * Sólo imágen
PHPMailer is by far the BEST way to add email functionality to your web site. This is just an article to point you in the right direction to mastering this incredible php package.
Tutorial y Blip.tv (Alternativa a Youtube). Taller completo de Eduardo Collado, de Entrevistado.com, sobre Como hacer un videoblog. Video de 33 minutos.
El uso inapropiado que se está haciendo de herramientas automáticas de validación de estándares web es motivo de preocupación de la Oficina Española del W3C (World Wide Web Consortium). Estas herramientas están siendo utilizadas para realizar anál
Sobre los finalistas del concurso organizado por Maestros del Web. Hemos echado un vistazo a cada uno de los trabajos finalistas y hay de todo, para elegir entre malo y peor. Estas son nuestras conclusiones…
OpenID lets you log in to different sites without having to create a new username and password for each one. This screencast demonstrates OpenID in action.
Como se puede ver, existen dos scripts dentro de npm: build que compila el js y extrae los CSS, y dev, que arranca el servidor de webpack habilitando HMR (🎶 ¡ya no puedo vivir sin él! 🎶).
Ambas configuraciones de webpack usan un script en común (webpack.config.common.js):
const webpack = require( 'webpack' );
const path = require( 'path' );
// Carga los ficheros .vueconst VueLoaderPlugin = require( 'vue-loader/lib/plugin' );
// Configura stylelintconst StyleLintPlugin = require( 'stylelint-webpack-plugin' );
// Para obtener un path para los aliasfunctionresolve( dir ) {
return path.join( __dirname, '.', dir );
}
module.exports = {
mode: 'production',
// Fichero inicial del proyecto
entry: './js/main.js',
// Fichero final para incluir
output: {
filename: 'js/main.js',
publicPath: '/dist/',
},
module: {
// Reglas para los ficheros
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
loader: 'babel-loader',
},
{
test: /\.vue$/,
loader: 'vue-loader',
},
{
test: /\.css$/,
use: [
'css-loader',
'sass-loader',
],
},
],
},
plugins: [
new webpack.HotModuleReplacementPlugin(),
new VueLoaderPlugin(),
new StyleLintPlugin( {
files: [ '**/*.{vue,htm,html,css,sss,less,scss,sass}' ],
} ),
],
resolve: {
extensions: [ '.js', '.vue', '.json' ],
alias: {
'@': resolve( '' ),
},
},
};
El frontend se gestiona desde el fichero main.js, que inicializará Vue y añadirá el componente principal:
import Vue from 'vue';
import Buefy from 'buefy';
import'buefy/dist/buefy.css';
import App from './components/App.vue';
import'@/assets/scss/main.scss';
Vue.use( Buefy );
new Vue( {
el: '#app',
components: {
App,
},
render: ( c ) => c( 'app' ),
} );
// accept replacement modulesif ( module.hot ) {
module.hot.accept();
}
Y ya por último el componente App.vue, que muestra simplemente un poco de HTML
Cuando decidimos la publicación de un sitio una parte importante de ello es tener en cuenta dónde lo alojaremos, obtener el lugar indicado, es cuestión de una pequeña investigación y tener claro lo que necesitamos. Básicamente tenemos dos opciones f