Bueno hace unos días un amiguito tuvo un problemilla con un script mal hecho que debería de hacer esto correctamente, desafortunadamente no funciono, bueno pues hice este pequeño script, le agregue la funcion live para que funcione en .net, la función live requiere jquery 1.4 o posterior.
<html>
<head>
<title>lafabricadesoftware.blogspot.com</title>
<script src="jquery-1.4.2.min.js"></script>
<script type="text/javascript">
//http://lafabricadesoftware.blogspot.com/
$(document).ready(function(){
$(".seleccionatodos").live('click',function(){
$('.s').attr('checked', $(".seleccionatodos").is(':checked'));
});
$(".s").live('click',function(){
var total=$(".s").length;
var seleccionados=$(".s:checked").length;
if (total!=seleccionados){$('.seleccionatodos').attr('checked',false);}
else{$('.seleccionatodos').attr('checked',true);}
});
});
</script>
</head>
<body>
<label>Seleccionar Todos</label>
<input type="checkbox" class="seleccionatodos">
<br>
<label>Uno</label>
<input type="checkbox" class="s">
<br>
<label>Dos</label>
<input type="checkbox" class="s">
<br>
<label>Tres</label>
<input type="checkbox" class="s">
</body>
</html>
lunes, 23 de agosto de 2010
Javascript con Jquery
Todos los ejemplos mostrados aquí, utilizarán el framework de jquery el cual puede ser descargado de http://jquery.com/, porque jquery pues existen muchismas razones pero solo mencionaré dos, es ligero y escribes menos.
viernes, 20 de agosto de 2010
Cambiar el password de un login en SQL SERVER
' http://lafabricadesoftware.blogspot.com/
ALTER LOGIN sa ENABLE ;
GO
ALTER LOGIN sa WITH PASSWORD = 'nuevo' ;
GO
ALTER LOGIN sa ENABLE ;
GO
ALTER LOGIN sa WITH PASSWORD = 'nuevo' ;
GO
jueves, 19 de agosto de 2010
Estilo a un foco con css
Con este ejemplito en css, muestro como darle formato a un foco el código es el siguiente:
utilizando la pseudoclase focus.
//http://lafabricadesoftware.blogspot.com/
utilizando la pseudoclase focus.
//http://lafabricadesoftware.blogspot.com/
form ul input.focus, form ul textarea.focus, form ul input:focus, form ul textarea:focus {
border:2px solid #3399CC;
padding:1px 2px;
}
Eliminar solo fila seleccionada GridView
Similar al post anterior solo que sin el for
Protected Sub grdIngresosdetalle_RowDeleting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles grdIngresosdetalle.RowDeleting
Dim renglon As Integer, dt As DataTable
Dim tamaniopag As Integer 'Numero de Registros por pagina
Dim pagina As Integer
Dim dr As Data.DataRow
pagina = grdIngresosdetalle.PageIndex
tamaniopag = grdIngresosdetalle.PageSize
'Indice actual es igual al tamanio de la pag por pagina mas indice
renglon = (pagina * tamaniopag) + e.RowIndex 'o usar 'grdIngresosdetalle.SelectedRow.RowIndex
dt = Session("dtIngresos")
dr = dt.Rows(renglon)
dt.Rows.Remove(dr)
Session("dtIngresos") = dt
grdIngresosdetalle.DataSource = dt
grdIngresosdetalle.DataBind()
End Sub
Protected Sub grdIngresosdetalle_RowDeleting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles grdIngresosdetalle.RowDeleting
Dim renglon As Integer, dt As DataTable
Dim tamaniopag As Integer 'Numero de Registros por pagina
Dim pagina As Integer
Dim dr As Data.DataRow
pagina = grdIngresosdetalle.PageIndex
tamaniopag = grdIngresosdetalle.PageSize
'Indice actual es igual al tamanio de la pag por pagina mas indice
renglon = (pagina * tamaniopag) + e.RowIndex 'o usar 'grdIngresosdetalle.SelectedRow.RowIndex
dt = Session("dtIngresos")
dr = dt.Rows(renglon)
dt.Rows.Remove(dr)
Session("dtIngresos") = dt
grdIngresosdetalle.DataSource = dt
grdIngresosdetalle.DataBind()
End Sub
Eliminar todo lo que esta abajo de una fila seleccionada en un Gridview
La logica es un poquito similar a una pila, este código es util cuando los datos van encadenados digamos un escalafón
Protected Sub grdIngresosdetalle_RowDeleting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles grdIngresosdetalle.RowDeleting
Dim renglon As Integer, total As Integer = 0, dt As DataTable
Dim tamaniopag As Integer 'Numero de Registros por pagina
Dim pagina As Integer
Dim dr As Data.DataRow
pagina = grdIngresosdetalle.PageIndex
tamaniopag = grdIngresosdetalle.PageSize
'Indice actual es igual al tamanio de la pag por pagina mas indice
renglon = (pagina * tamaniopag) + e.RowIndex 'o usar 'grdIngresosdetalle.SelectedRow.RowIndex
dt = Session("dtIngresos")'Esta session tiene un datatable
total = dt.Rows.Count
For i As Integer = renglon To total - 1
dr = dt.Rows(renglon)
dt.Rows.Remove(dr)
Next
Session("dtIngresos") = dt
grdIngresosdetalle.DataSource = dt
grdIngresosdetalle.DataBind()
End Sub
Protected Sub grdIngresosdetalle_RowDeleting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles grdIngresosdetalle.RowDeleting
Dim renglon As Integer, total As Integer = 0, dt As DataTable
Dim tamaniopag As Integer 'Numero de Registros por pagina
Dim pagina As Integer
Dim dr As Data.DataRow
pagina = grdIngresosdetalle.PageIndex
tamaniopag = grdIngresosdetalle.PageSize
'Indice actual es igual al tamanio de la pag por pagina mas indice
renglon = (pagina * tamaniopag) + e.RowIndex 'o usar 'grdIngresosdetalle.SelectedRow.RowIndex
dt = Session("dtIngresos")'Esta session tiene un datatable
total = dt.Rows.Count
For i As Integer = renglon To total - 1
dr = dt.Rows(renglon)
dt.Rows.Remove(dr)
Next
Session("dtIngresos") = dt
grdIngresosdetalle.DataSource = dt
grdIngresosdetalle.DataBind()
End Sub
Diferencias entre ISDBNULL y IS NOTHING
IS NOTHING se utiliza para especificar que un tipo de referencia que no apunta a nada.
DBNull Value es un producto único objeto que se utiliza para indicar que un tipo de base de datos tiene un valor de base de datos de Null.
Ejemplo
Para finalizar existe 2 formas de usar isnothing ejemplo
End If
Tomado de referencia de http://www.devblog.com/2007/11/nothing-and-null-in-vbnet.html
DBNull Value es un producto único objeto que se utiliza para indicar que un tipo de base de datos tiene un valor de base de datos de Null.
Ejemplo
Sub Main () Dim P As Object Dim P As Object Dim I As Integer Dim I As Integer Debug.Print( "1. P is not set to anything." ) Debug.Print ("1. P no está en ninguna parte.") Debug.Print( "P Is Nothing: " & (P Is Nothing )) Debug.Print ("P es nada:" & (P Is Nothing)) Debug.Print( "P Is DBNull.Value: " & (P Is DBNull.Value)) Debug.Print ("P ¿Es DBNull.Value:" & (P ¿Es DBNull.Value)) Debug.Print( "----------" ) Debug.Print ("----------") P = New Object () P = new Object () Debug.Print( "2. P is set to a new object." ) Debug.Print ("2. P se establece en un nuevo objeto.") Debug.Print( "P Is Nothing: " & (P Is Nothing )) Debug.Print ("P es nada:" & (P Is Nothing)) Debug.Print( "P Is DBNull.Value: " & (P Is DBNull.Value)) Debug.Print ("P ¿Es DBNull.Value:" & (P ¿Es DBNull.Value)) Debug.Print( "----------" ) Debug.Print ("----------") P = DBNull.Value P = DBNull.Value Debug.Print( "3. P is pointing to the special singleton class DBNull." ) Debug.Print ("3. P apunta a la clase singleton DBNULL especiales.") Debug.Print( "P Is Nothing: " & (P Is Nothing )) Debug.Print ("P es nada:" & (P Is Nothing)) Debug.Print( "P Is DBNull.Value: " & (P Is DBNull.Value)) Debug.Print ("P ¿Es DBNull.Value:" & (P ¿Es DBNull.Value)) Debug.Print( "----------" ) Debug.Print ("----------") I = Nothing I = Nada Debug.Print( "4. I is not set to anything." ) Debug.Print ("4. No se establece en algo.") Debug.Print( "I Is Nothing: " & (IsNothing(I))) Debug.Print ("Yo no es nada:" & (IsNothing (I))) Debug.Print( "I Is DBNull.Value: " & (IsDBNull(I))) Debug.Print ("I Ain't DBNull.Value:" & (IsDBNull (I))) End Sub End Sub
1. 1. P is not set to anything. P no está en ninguna parte. P Is Nothing: True P ¿Es Nada: Verdadero P Is DBNull.Value: False P ¿Es DBNull.Value: Falso ---------- ---------- 2. 2. P is set to a new object. P se establece en un nuevo objeto. P Is Nothing: False P ¿Es Nada: Falso P Is DBNull.Value: False P ¿Es DBNull.Value: Falso ---------- ---------- 3. 3. P is pointing to the special singleton class DBNull. P apunta a la clase singleton DBNULL especiales. P Is Nothing: False P ¿Es Nada: Falso P Is DBNull.Value: True P ¿Es DBNull.Value: Verdadero ---------- ---------- 4. 4. I is not set to anything. No se establece en algo. I Is Nothing: False Yo no es nada: Falso I Is DBNull.Value: False I ¿DBNull.Value: Falso
Para finalizar existe 2 formas de usar isnothing ejemplo
'http://lafabricadesoftware.blogspot.com/
If IsNothing(myObject) then
End If
If myObject Is Nothing thenEnd If
End If
Tomado de referencia de http://www.devblog.com/2007/11/nothing-and-null-in-vbnet.html
miércoles, 18 de agosto de 2010
Diferencias entre ISDBNULL y ISNULLOREMPTY
Bueno pues la principal diferencia que encontre a simple vista, es la siguiente ISDBNULL se debe de utilizar para los elementos contenedores de datos como: datatables, datasets, columnas, renglones, grids IsDBNull(dt.Rows(i).Item(j)) mientras IsNullOrEmpty se utiliza para cadenas String.IsNullOrEmpty(txtnombre.text)
Convertir moneda(money) a double
Algunas veces en .net necesitamos convertir una cantidad expresada en tipo moneda a doble, y bueno como haríamos esto pues es simple:
Dim ci As New System.Globalization.CultureInfo("es-MX")
dinero = "$12,555.55"
dinerod = Double.Parse(dinero.Replace("$", ""), ci)
'http://lafabricadesoftware.blogspot.com/
Dim dinero As String Dim dinerod As DoubleDim ci As New System.Globalization.CultureInfo("es-MX")
dinero = "$12,555.55"
dinerod = Double.Parse(dinero.Replace("$", ""), ci)
martes, 17 de agosto de 2010
Actualización o UPDATE de varias Tablas
Bueno pues creo que esmuy simple, el código habla por si solo
--http://lafabricadesoftware.blogspot.com/
DECLARE @tablaUno table(Id_Uno INT IDENTITY,campo varchar(100),campod varchar(100))
DECLARE @tablaDos table(Id_Uno INT IDENTITY,campo varchar(100),campod varchar(100))
DECLARE @tablaTres table(Id_Uno INT IDENTITY,campo varchar(100),campoy varchar(100))
INSERT INTO @tablaUno (campo, campod )
VALUES ('a','b')
INSERT INTO @tablaUno (campo, campod )
VALUES ('c','d')
INSERT INTO @tablaUno (campo, campod )
VALUES ('x','y')
INSERT INTO @tablaDos (campo, campod )
VALUES ('I','I')
INSERT INTO @tablaDos (campo, campod )
VALUES ('I','I')
INSERT INTO @tablaDos (campo, campod )
VALUES ('I','I')
INSERT INTO @tablaTres(campo, campoy )
VALUES ('o','o')
INSERT INTO @tablaTres(campo, campoy)
VALUES ('c','d')
INSERT INTO @tablaTres(campo, campoy)
VALUES ('x','y')
INSERT INTO @tablaTres(campo, campoy)
VALUES ('x','yt')
UPDATE @tablaTres SET campo=tu.campo, campoy=td.campod
FROM @tablaTres te INNER JOIN @TablaUno tu ON te.Id_Uno = tu.id_uno
INNER JOIN @tablaDos td ON td.Id_Uno=tu.id_uno
SELECT * FROM @tablaTres
DECLARE @tablaDos table(Id_Uno INT IDENTITY,campo varchar(100),campod varchar(100))
DECLARE @tablaTres table(Id_Uno INT IDENTITY,campo varchar(100),campoy varchar(100))
INSERT INTO @tablaUno (campo, campod )
VALUES ('a','b')
INSERT INTO @tablaUno (campo, campod )
VALUES ('c','d')
INSERT INTO @tablaUno (campo, campod )
VALUES ('x','y')
INSERT INTO @tablaDos (campo, campod )
VALUES ('I','I')
INSERT INTO @tablaDos (campo, campod )
VALUES ('I','I')
INSERT INTO @tablaDos (campo, campod )
VALUES ('I','I')
INSERT INTO @tablaTres(campo, campoy )
VALUES ('o','o')
INSERT INTO @tablaTres(campo, campoy)
VALUES ('c','d')
INSERT INTO @tablaTres(campo, campoy)
VALUES ('x','y')
INSERT INTO @tablaTres(campo, campoy)
VALUES ('x','yt')
UPDATE @tablaTres SET campo=tu.campo, campoy=td.campod
FROM @tablaTres te INNER JOIN @TablaUno tu ON te.Id_Uno = tu.id_uno
INNER JOIN @tablaDos td ON td.Id_Uno=tu.id_uno
SELECT * FROM @tablaTres
Uso facilito de una transacción
No se, si les ha pasado que alguna vez quieren hacer un query sencillito por ejemplo actualizar el nombre de una persona llamada roman, pero necesitan hacer una transaccion sencillita nada mas para trabajar con el query o la consulta, bueno pues aquí un ejemplito:
--http://lafabricadesoftware.blogspot.com/
BEGIN TRANSACTION
UPDATE persona SET Nombre='Juan'
SELECT * FROM persona
ROLLBACK
SELECT * FROM persona
--http://lafabricadesoftware.blogspot.com/
BEGIN TRANSACTION
UPDATE persona SET Nombre='Juan'
SELECT * FROM persona
ROLLBACK
SELECT * FROM persona
lunes, 16 de agosto de 2010
Buscar un campo o algun nombre en un Stored Procedure SQL SERVER 2005
Hace algún tiempo tuve un problema, había que cambiar muchos campos de una tabla dentro de unos cuantos cientos de procedimientos almacenados en sql server 2005, una compañera de trabajo, encontro un poco de código googleando y pues yo igual, junte el código
adaptandolo a nuestras necesidades y sugió este procedimiento almacenado, que encuentra texto en los objetos de la base de datos manejada por sql server 2005,
espero les sirva.
------------------jefedigi-----------------------------------------------
-------busca un texto o cadena en los objetos de la bd-------------------
----------http://lafabricadesoftware.blogspot.com/-----------------------
CREATE PROCEDURE [dbo].[buscaTextoObjetosBD]
@SearchText AS VARCHAR(100)
AS
BEGIN
--DECLARE @SearchText AS VARCHAR(100)
--SET @SearchText = 'JEFEDIGI'
--Consulta de los procedimeintos que contienen dicho texto
SELECT DISTINCT USER_NAME(o.uid) + '.' + OBJECT_NAME(c.id) AS 'Object name',
CASE
WHEN OBJECTPROPERTY(c.id, 'IsReplProc') = 1
THEN 'Replication stored procedure'
WHEN OBJECTPROPERTY(c.id, 'IsExtendedProc') = 1
THEN 'Extended stored procedure'
WHEN OBJECTPROPERTY(c.id, 'IsProcedure') = 1
THEN 'Stored Procedure'
WHEN OBJECTPROPERTY(c.id, 'IsTrigger') = 1
THEN 'Trigger'
WHEN OBJECTPROPERTY(c.id, 'IsTableFunction') = 1
THEN 'Table-valued function'
WHEN OBJECTPROPERTY(c.id, 'IsScalarFunction') = 1
THEN 'Scalar-valued function'
WHEN OBJECTPROPERTY(c.id, 'IsInlineFunction') = 1
THEN 'Inline function'
WHEN OBJECTPROPERTY(c.id, 'IsView') = 1
THEN 'View'
END AS 'Object type'
FROM syscomments c
INNER JOIN
sysobjects o
ON c.id = o.id
WHERE c.text LIKE '%'+@SearchText+'%' AND
encrypted = 0 AND
( OBJECTPROPERTY(c.id, 'IsReplProc') = 1 OR
OBJECTPROPERTY(c.id, 'IsExtendedProc') = 1 OR
OBJECTPROPERTY(c.id, 'IsProcedure') = 1 OR
OBJECTPROPERTY(c.id, 'IsTrigger') = 1 OR
OBJECTPROPERTY(c.id, 'IsTableFunction') = 1 OR
OBJECTPROPERTY(c.id, 'IsScalarFunction') = 1 OR
OBJECTPROPERTY(c.id, 'IsInlineFunction') = 1 OR
OBJECTPROPERTY(c.id, 'IsView') = 1 )
union
SELECT TABLE_NAME,'Table' FROM INFORMATION_SCHEMA.tables
WHERE table_name LIKE '%'+@SearchText+'%'
UNION
SELECT COLUMN_NAME,'COLUMN' FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME LIKE '%'+@SearchText+'%'
ORDER BY [Object type], 'Object name'
END
adaptandolo a nuestras necesidades y sugió este procedimiento almacenado, que encuentra texto en los objetos de la base de datos manejada por sql server 2005,
espero les sirva.
------------------jefedigi-----------------------------------------------
-------busca un texto o cadena en los objetos de la bd-------------------
----------http://lafabricadesoftware.blogspot.com/-----------------------
CREATE PROCEDURE [dbo].[buscaTextoObjetosBD]
@SearchText AS VARCHAR(100)
AS
BEGIN
--DECLARE @SearchText AS VARCHAR(100)
--SET @SearchText = 'JEFEDIGI'
--Consulta de los procedimeintos que contienen dicho texto
SELECT DISTINCT USER_NAME(o.uid) + '.' + OBJECT_NAME(c.id) AS 'Object name',
CASE
WHEN OBJECTPROPERTY(c.id, 'IsReplProc') = 1
THEN 'Replication stored procedure'
WHEN OBJECTPROPERTY(c.id, 'IsExtendedProc') = 1
THEN 'Extended stored procedure'
WHEN OBJECTPROPERTY(c.id, 'IsProcedure') = 1
THEN 'Stored Procedure'
WHEN OBJECTPROPERTY(c.id, 'IsTrigger') = 1
THEN 'Trigger'
WHEN OBJECTPROPERTY(c.id, 'IsTableFunction') = 1
THEN 'Table-valued function'
WHEN OBJECTPROPERTY(c.id, 'IsScalarFunction') = 1
THEN 'Scalar-valued function'
WHEN OBJECTPROPERTY(c.id, 'IsInlineFunction') = 1
THEN 'Inline function'
WHEN OBJECTPROPERTY(c.id, 'IsView') = 1
THEN 'View'
END AS 'Object type'
FROM syscomments c
INNER JOIN
sysobjects o
ON c.id = o.id
WHERE c.text LIKE '%'+@SearchText+'%' AND
encrypted = 0 AND
( OBJECTPROPERTY(c.id, 'IsReplProc') = 1 OR
OBJECTPROPERTY(c.id, 'IsExtendedProc') = 1 OR
OBJECTPROPERTY(c.id, 'IsProcedure') = 1 OR
OBJECTPROPERTY(c.id, 'IsTrigger') = 1 OR
OBJECTPROPERTY(c.id, 'IsTableFunction') = 1 OR
OBJECTPROPERTY(c.id, 'IsScalarFunction') = 1 OR
OBJECTPROPERTY(c.id, 'IsInlineFunction') = 1 OR
OBJECTPROPERTY(c.id, 'IsView') = 1 )
union
SELECT TABLE_NAME,'Table' FROM INFORMATION_SCHEMA.tables
WHERE table_name LIKE '%'+@SearchText+'%'
UNION
SELECT COLUMN_NAME,'COLUMN' FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME LIKE '%'+@SearchText+'%'
ORDER BY [Object type], 'Object name'
END
miércoles, 11 de agosto de 2010
Dos frases
A lo mejor y esto que escribo no tieene mucha importancia pero bueno, el día de hoy escuche dos frases, en el trayecto de mi casa hacia mi trabajo, estas frases me latieron un buen.
Una de ellas las expreso el director de la universidad TECMILENIO de puebla, haciendo alusión al lado o enfoque humanista y tecnológico de la universidad: "DE QUE SIRVE UN PATAN CON CONOCIMIENTO ", y bueno mientras oía esa frase una persona comento definitivamente "CONOCIMIENTO QUE NO SE COMPARTE NO SIRVE DE NADA".
Una de ellas las expreso el director de la universidad TECMILENIO de puebla, haciendo alusión al lado o enfoque humanista y tecnológico de la universidad: "DE QUE SIRVE UN PATAN CON CONOCIMIENTO ", y bueno mientras oía esa frase una persona comento definitivamente "CONOCIMIENTO QUE NO SE COMPARTE NO SIRVE DE NADA".
viernes, 6 de agosto de 2010
El elemento fieldset (Frames en winforms pero en html)
Bueno pues por lo que me he dado cuenta casi nadie conoce esta etiqueta, no se si les ha pasado pero cuando trabaja uno en vb6, o winforms de vb.net hay un elemto que te crea marcos llamado frames, bueno pues en html se puede hacer exactamente lo mismo casi nadie conoce esta etiqueta pero bueno aquí les dejo un ejemplo:
Lo que da como resultado
<form>
<fieldset>
<legend>Personalia:</legend>
Name: <input size="30" type="text">
Email: <input size="30" type="text">
Date of birth: <input size="10" type="text">
</fieldset>
</form>
Lo que da como resultado
Algo sencillo, declaración de variables e inicialización en línea
Según http://emilio.aesinformatica.com/2009/09/18/visual-basic-net-variables-y-constantes/ para declarar variables en vb.net lo podemos hacer de la siguiente forma:
Pero que pasa si estamos acostumbrados a una programción un poco más lineal u horizontal
Ejemplo:
dim c as integer, d as intenger
dim c,d as integer
dim h as integer, f as string
dim j,k as integer, s, nombre as string
dim z as object
dim z (sólo funcionaría si option strict está a off)
dim c,d as integer = 8 (Esto no lo permite, no sabe a cual asignarselo)
dim c as integer=10, n1,n2 as intege
Pero que pasa si estamos acostumbrados a una programción un poco más lineal u horizontal
Ejemplo:
dim a as integer, b as intenger, c as integer
'Ahora para inicializarlos en linea lo podriamos hacer de la siguiente forma
a=1:b=2:c=a
Los : nos ayudan a tener menos lineas de codigo vertical mejorando considerablemente
la visibilidad en nuestro editor de código
Lo que no es este Blog
Navegando por la red encontre esta fábula, támbien conocida como los cangrejos mexicanos y dice más o menos así.
Un mexicano fue al mercado de mariscos y despues de comer unos tacos de pescado, decidio comprar unos cangrejos, de esos que venden vivos y los tienen en canastas. Pasó al primer puesto y el encargado le enseñó unos cangrejos dentro de una canasta bastante alta, la cual estaba tapada con una tabla, el mexicano le preguntó:
“Por qué están tapados con una tabla?”, Ah!, -dijo el vendedor- es que son cangrejos gringos, y si no los tapo, pues empieza uno a escalar hasta que por esfuerzo propio salta de la canasta y se escapa, y si no los tapo, pues me quedo sin cangrejos!!.
Umh! -expresó el mexicano y se fue al siguiente puesto-, ahí estaba una canasta mucho más alta y tapada con una tabla y dos ladrillos. Como resultado de la misma pregunta el vendedor dijo:
“Son cangrejos japoneses y cuando uno se quiere escapar, empieza a apoyarse en los demás, y éstos van empujándolo hacia arriba apoyados en otros y así sucesivamente, de tal manera que se forma una pirámide hasta el borde y entonces el cangrejo se escapa.
Oh!, que bien -pensó el mexicano y se fue al último puesto-, ahí estaba una canasta de cangrejos con un pequeño borde y destapada. Y esta por qué está tan desprotegida, no le da miedo que se le vayan a escapar?? -pregunta al vendedor-
No, no hay problema -dice éste- son cangrejos mexicanos, cuando uno está tratando de sobresalir, entre todos se encargan de jalarlo pa’bajo.
Hijole es una lastima que México no tenga una visión global, por eso estamos como estamos, si fueramos un poquito más concientes que actualmente no solo competitimos entre nosotros sino con el resto de otros países, tal vez nuestra mentalidad cambiaría un poquito, es una lastima encontrar gente muy egocentrica que piensa que lo sabe todo, y pues tal vez si sepa y no comparta su conocimiento o no explote su potencial, y es cuando llegan a decir los demas compañeros, no pues juanito si sabe pero no le quiero preguntar porque es un cooley, y aveces surge la pregunta, ¿Si sabe tanto porque la empresa esta como esta o porque sigue en esta empresa?, pues bien he de admitir que a veces yo siento que las puedo de todas a todas, sin embargo creo que es importante tener humildad y reconocer cuando uno no puede, así como humildad para reconocer el trabajo de los demas, espero que los que lean este blog compartan el poco conocimiento y no se sumen más al tipo de CANGREJO MEXICANO.
Un mexicano fue al mercado de mariscos y despues de comer unos tacos de pescado, decidio comprar unos cangrejos, de esos que venden vivos y los tienen en canastas. Pasó al primer puesto y el encargado le enseñó unos cangrejos dentro de una canasta bastante alta, la cual estaba tapada con una tabla, el mexicano le preguntó:
“Por qué están tapados con una tabla?”, Ah!, -dijo el vendedor- es que son cangrejos gringos, y si no los tapo, pues empieza uno a escalar hasta que por esfuerzo propio salta de la canasta y se escapa, y si no los tapo, pues me quedo sin cangrejos!!.
Umh! -expresó el mexicano y se fue al siguiente puesto-, ahí estaba una canasta mucho más alta y tapada con una tabla y dos ladrillos. Como resultado de la misma pregunta el vendedor dijo:
“Son cangrejos japoneses y cuando uno se quiere escapar, empieza a apoyarse en los demás, y éstos van empujándolo hacia arriba apoyados en otros y así sucesivamente, de tal manera que se forma una pirámide hasta el borde y entonces el cangrejo se escapa.
Oh!, que bien -pensó el mexicano y se fue al último puesto-, ahí estaba una canasta de cangrejos con un pequeño borde y destapada. Y esta por qué está tan desprotegida, no le da miedo que se le vayan a escapar?? -pregunta al vendedor-
No, no hay problema -dice éste- son cangrejos mexicanos, cuando uno está tratando de sobresalir, entre todos se encargan de jalarlo pa’bajo.
Hijole es una lastima que México no tenga una visión global, por eso estamos como estamos, si fueramos un poquito más concientes que actualmente no solo competitimos entre nosotros sino con el resto de otros países, tal vez nuestra mentalidad cambiaría un poquito, es una lastima encontrar gente muy egocentrica que piensa que lo sabe todo, y pues tal vez si sepa y no comparta su conocimiento o no explote su potencial, y es cuando llegan a decir los demas compañeros, no pues juanito si sabe pero no le quiero preguntar porque es un cooley, y aveces surge la pregunta, ¿Si sabe tanto porque la empresa esta como esta o porque sigue en esta empresa?, pues bien he de admitir que a veces yo siento que las puedo de todas a todas, sin embargo creo que es importante tener humildad y reconocer cuando uno no puede, así como humildad para reconocer el trabajo de los demas, espero que los que lean este blog compartan el poco conocimiento y no se sumen más al tipo de CANGREJO MEXICANO.
Sobre este Blog
Hace algún tiempo un compañero en el trabajo me enseño un video en youtube llamado linux prodigio me llamo la atención mucho una frase de este video que dice: "recabar información es el primer paso hacia la sabiduría, compartirla es el paso hacia la comunidad". El objetivo de este blog es proporcionar información, herramientas, así como resolver algunos problemas en la vida cotidiana de un programador o desarrollador, principalmente con algunos lenguajes de programación como javascript, C#, vb.net, SQL SERVER, UML, MYSQL, PHP, la idea de este blog surgio por la necesidad de compartir información. Es muy satisfactorio. Espero que este blog más que gustar sirva alguien, con una sola persona que le sirva este blog habrá valido la pena.
Suscribirse a:
Entradas (Atom)