Últimos artículos
Estas son las últimas entradas en el blog.
De todo un poco para solucionar los problemas diarios de un administrador de IT y DBA
Estas son las últimas entradas en el blog.
De todo un poco para solucionar los problemas diarios de un administrador de IT y DBA
Poder determinar como está compuesto el tamaño de una base de datos es una tarea fundamental en el rol de un DBA. Esto te permite identificar posibles errores de diseño o segmentaciones futuras necesarias.
Acontinuación te dejo un script que suele serme útíl cuando trabajo en motores PostgreSQL. En esta caso si bien lo he usado en su versión 16, también aplica para 17 y 18.
SELECT
n.nspname AS schema_name,
c.relname AS table_name,
CASE
WHEN c.relkind = 'r' THEN 'Tabla'
WHEN c.relkind = 'i' THEN 'Índice'
WHEN c.relkind = 'm' THEN 'Vista Materializada'
ELSE c.relkind::text
END AS object_type,
-- Tamaño total (datos + índices) en Megabytes (MB)
ROUND((pg_total_relation_size(c.oid) / (1024.0 * 1024.0))::numeric, 2) AS total_size_mb,
-- Tamaño de la porción de datos o del índice en Megabytes (MB)
ROUND((pg_relation_size(c.oid) / (1024.0 * 1024.0))::numeric, 2) AS data_or_index_size_mb,
-- Tamaño de los índices asociados (solo para tablas) en Megabytes (MB)
CASE
WHEN c.relkind = 'r' THEN ROUND((pg_indexes_size(c.oid) / (1024.0 * 1024.0))::numeric, 2)
ELSE NULL
END AS indexes_size_mb,
c.reltuples::bigint AS row_count
FROM
pg_class c
LEFT JOIN
pg_namespace n ON n.oid = c.relnamespace
WHERE
n.nspname NOT IN ('pg_catalog', 'information_schema', 'pg_toast')
AND c.relkind IN ('r', 'i', 'm')
ORDER BY
pg_total_relation_size(c.oid) DESC;
| columna | descripción |
| schema_name | Esquema al que pertenece la tabla o índice. |
| table_name | Nombre de la tabla, índice o vista materializada. |
| object_type | Tipo de objeto (‘Tabla’, ‘Índice’, ‘Vista Materializada’). |
| total_size | Tamaño total de la relación (datos + índices + TOAST). Para índices es su tamaño. |
| table_or_index_size | Tamaño de la relación sin sus índices. Para índices, es su tamaño. |
| indexes_size | Tamaño total de los índices asociados (solo aplica y se muestra para tablas). |
| row_count | Conteo de filas de la tabla (es una estimación del catálogo). |

Con el script adjunto obtendrás una salida similar a esta:

En una entrevista de trabajo para un cargo en .NET pueden hacerte alguna de las siguientes preguntas:
Cada una de las respuestas en el siguiente video
Microsoft SQL Server Management Studio (SSMS) es el IDE oficial para este motor.
En su versión 19.3 aún seguimos contando solo con dos temas disponibles: Blue o Light

Pero sabías que existe un tercero: Un modo dark
Para ello debes editar el archivo ssms.pkgundef
De acuerdo a la versión puedes encontrarlo en:
SMS 2016:
C:\Program Files (x86)\Microsoft SQL Server\130\Tools\Binn\ManagementStudio
SSMS 17:
C:\Program Files (x86)\Microsoft SQL Server\140\Tools\Binn\ManagementStudio
SSMS 18:
C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE
SSMS 19:
C:\Program Files (x86)\Microsoft SQL Server Management Studio 19\Common7\IDE
SSMS 20:
C:\Program Files (x86)\Microsoft SQL Server Management Studio 20\Common7\IDE
En mi caso:

Deberemos editarlo con permisos de «Administrador». En mi caso usaré NOTEPAD++

Lo que haremos iremos al final y buscaremos la línea de «DarkTheme» y lo comentaremos agregando dos barras «//»
Aquí el antes y el después:

Guardamos y ya estamos listo para disfrutar nuestro nuevo tema, vamos a options (settings)


Lo primer que debes ubicar es la herramienta ADB.

En mi caso se encuentra en «C:\Program Files (x86)\Android\android-sdk\platform-tools»
el comando es ADB PAIR y ADB CONNECT
.\adb.exe pair 172.0.2.30:45151
.\adb.exe connect 172.0.2.30:45757

El ip es el dispositivo móvil que quieres conectar. Para ello debes hacer el siguiente procedimiento en tu celular o tablet
1- Ingresar al modo desarrollador
2-Activar depuración inalámbrica
3-Elegir emparejar con código
4-Aquí veras el IP y puerto que deberás usar con adb pair
5-Luego deberás tomar el ip y puerto que figura en la pantalla principal para usar con adb connect





Una vez finalizado ya podrás elegir tu dispositivo desde Visual Studio

Desde hace tiempo que vengo trabajando con Net MAUI para el desarrollo de aplicaciones móviles. Pero algunos paquetes de Google Firebase han empezado a presentar inconvenientes, sobre todo cuando trabajas con iOs. Por ello decidí empezar a probar la versión Net 8.0 preview con VS2022 preview. Algo tan simple puede volverse un dolor de cabeza…
C:\Program Files\dotnet\sdk\8.0.100-rc.1.23455.8\Microsoft.Common.CurrentVersion.targets(4879,5): error MSB3030: No se
pudo copiar el archivo "D:\NUGET\xamarin.firebase.ios.cloudfirestore\8.10.0.3\lib\net6.0-ios15.4\Firebase.CloudFirestor
e.resources\grpcpp.xcframework\ios-arm64_x86_64-simulator\grpcpp.framework\PrivateHeaders\src\core\ext\upb-generated\en
voy\config\filter\network\http_connection_manager\v2\http_connection_manager.upb.h" porque no se encontró. [D:\source\r
epos\globalassistgroup\metroin.app-trabajador\metroin.app-trabajador\metroin.app-trabajador.csproj::TargetFramework=net
8.0-ios]
Error Could not find a part of the path 'C:\Users\vivek.nuget\packages\xamarin.firebase.ios.core\8.10.0.1\lib\xamarinios10\Firebase.Core.resources\GoogleUtilitiesComponents.xcframework\ios-arm64_i386_x86_64-simulator\GoogleUtilitiesComponents.framework\PrivateHeaders\GULCCComponentContainerInternal.h'.
¡
¿Porqué ocurre?
Al parecer por el largo de la ruta que se genera dinámicamente, la cuál no es soportado en Windows.
Solución:
Acortar la ruta. Para ello podemos modificar dos paramétros
Ruta de paquetes nugets
Debemos editar las variables de entorno y agregar dos nuevas entradas


Largo de rutas en windows
Debes crear un registro en Regedit
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem]
"LongPathsEnabled"=dword:00000001

Maximum Path Length Limitation – Win32 apps | Microsoft Learn
¿Me cuentas si te funcionó?
AMI es la interface que tiene disponible Asterisk para permitir la integración con sistemas externos.
En esta ocasión te dejo el listado completo en Asterisk 18 de comandos disponibles para interactuar con tu PBX
| AbsoluteTimeout | Set absolute timeout. |
| AGI | Add an AGI command to execute by |
| AOCMessage | Generate an Advice of Charge mess |
| Atxfer | Attended transfer. |
| BlindTransfer | Blind transfer channel(s) to the |
| Bridge | Bridge two channels already in th |
| BridgeDestroy | Destroy a bridge. |
| BridgeInfo | Get information about a bridge. |
| BridgeKick | Kick a channel from a bridge. |
| BridgeList | Get a list of bridges in the syst |
| BridgeTechnologyList | List available bridging technolog |
| BridgeTechnologySuspend | Suspend a bridging technology. |
| BridgeTechnologyUnsuspend | Unsuspend a bridging technology. |
| CancelAtxfer | Cancel an attended transfer. |
| Challenge | Generate Challenge for MD5 Auth. |
| ChangeMonitor | Change monitoring filename of a c |
| Command | Execute Asterisk CLI Command. |
| ConfbridgeKick | Kick a Confbridge user. |
| ConfbridgeList | List participants in a conference |
| ConfbridgeListRooms | List active conferences. |
| ConfbridgeLock | Lock a Confbridge conference. |
| ConfbridgeMute | Mute a Confbridge user. |
| ConfbridgeSetSingleVideoSrc | Set a conference user as the sing |
| ConfbridgeStartRecord | Start recording a Confbridge conf |
| ConfbridgeStopRecord | Stop recording a Confbridge confe |
| ConfbridgeUnlock | Unlock a Confbridge conference. |
| ConfbridgeUnmute | Unmute a Confbridge user. |
| ControlPlayback | Control the playback of a file be |
| CoreSettings | Show PBX core settings (version e |
| CoreShowChannels | List currently active channels. |
| CoreStatus | Show PBX core status variables. |
| CreateConfig | Creates an empty file in the conf |
| DAHDIDialOffhook | Dial over DAHDI channel while off |
| DAHDIDNDoff | Toggle DAHDI channel Do Not Distu |
| DAHDIDNDon | Toggle DAHDI channel Do Not Distu |
| DAHDIHangup | Hangup DAHDI Channel. |
| DAHDIRestart | Fully Restart DAHDI channels (ter |
| DAHDIShowChannels | Show status of DAHDI channels. |
| DAHDITransfer | Transfer DAHDI Channel. |
| DBDel | Delete DB entry. |
| DBDelTree | Delete DB Tree. |
| DBGet | Get DB Entry. |
| DBGetTree | Get DB entries, optionally at a p |
| DBPut | Put DB entry. |
| DeviceStateList | List the current known device sta |
| DialplanExtensionAdd | Add an extension to the dialplan |
| DialplanExtensionRemove | Remove an extension from the dial |
| Events | Control Event Flow. |
| ExtensionState | Check Extension Status. |
| ExtensionStateList | List the current known extension |
| FAXSession | Responds with a detailed descript |
| FAXSessions | Lists active FAX sessions |
| FAXStats | Responds with fax statistics |
| Filter | Dynamically add filters for the c |
| G729LicenseList | G.729 License List |
| G729LicenseStatus | G.729 License Status |
| GetConfig | Retrieve configuration. |
| GetConfigJSON | Retrieve configuration (JSON form |
| Getvar | Gets a channel variable or functi |
| Hangup | Hangup channel. |
| IAXnetstats | Show IAX Netstats. |
| IAXpeerlist | List IAX Peers. |
| IAXpeers | List IAX peers. |
| IAXregistry | Show IAX registrations. |
| ListCategories | List categories in configuration |
| ListCommands | List available manager commands. |
| LocalOptimizeAway | Optimize away a local channel whe |
| LoggerRotate | Reload and rotate the Asterisk lo |
| Login | Login Manager. |
| Logoff | Logoff Manager. |
| MailboxCount | Check Mailbox Message Count. |
| MailboxStatus | Check mailbox. |
| MeetmeList | List participants in a conference |
| MeetmeListRooms | List active conferences. |
| MeetmeMute | Mute a Meetme user. |
| MeetmeUnmute | Unmute a Meetme user. |
| MessageSend | Send an out of call message to an |
| MessageSendInfo | |
| MixMonitor | Record a call and mix the audio d |
| MixMonitorMute | Mute / unMute a Mixmonitor record |
| ModuleCheck | Check if module is loaded. |
| ModuleLoad | Module management. |
| Monitor | Monitor a channel. |
| MuteAudio | Mute an audio stream. |
| Originate | Originate a call. |
| Park | Park a channel. |
| ParkedCalls | List parked calls. |
| Parkinglots | Get a list of parking lots |
| PauseMonitor | Pause monitoring of a channel. |
| Ping | Keepalive command. |
| PJSIPCallIDToChannel | |
| PJSIPNotify | Send a NOTIFY to either an endpoi |
| PJSIPQualify | Qualify a chan_pjsip endpoint. |
| PJSIPRegister | Register an outbound registration |
| PJSIPShowAors | Lists PJSIP AORs. |
| PJSIPShowAuths | Lists PJSIP Auths. |
| PJSIPShowContacts | Lists PJSIP Contacts. |
| PJSIPShowEndpoint | Detail listing of an endpoint and |
| PJSIPShowEndpoints | Lists PJSIP endpoints. |
| PJSIPShowRegistrationInboundContactStatuses | Lists ContactStatuses for PJSIP i |
| PJSIPShowRegistrationsInbound | Lists PJSIP inbound registrations |
| PJSIPShowRegistrationsOutbound | Lists PJSIP outbound registration |
| PJSIPShowResourceLists | Displays settings for configured |
| PJSIPShowSubscriptionsInbound | Lists subscriptions. |
| PJSIPShowSubscriptionsOutbound | Lists subscriptions. |
| PJSIPUnregister | Unregister an outbound registrati |
| PlayDTMF | Play DTMF signal on a specific ch |
| PlayMF | Play MF digit on a specific chann |
| PresenceState | Check Presence State |
| PresenceStateList | List the current known presence s |
| PRIDebugFileSet | Set the file used for PRI debug m |
| PRIDebugFileUnset | Disables file output for PRI debu |
| PRIDebugSet | Set PRI debug levels for a span |
| PRIShowSpans | Show status of PRI spans. |
| QueueAdd | Add interface to queue. |
| QueueChangePriorityCaller | Change priority of a caller on qu |
| QueueLog | Adds custom entry in queue_log. |
| QueueMemberRingInUse | Set the ringinuse value for a que |
| QueuePause | Makes a queue member temporarily |
| QueuePenalty | Set the penalty for a queue membe |
| QueueReload | Reload a queue, queues, or any su |
| QueueRemove | Remove interface from queue. |
| QueueReset | Reset queue statistics. |
| QueueRule | Queue Rules. |
| QueueStatus | Show queue status. |
| QueueSummary | Show queue summary. |
| QueueWithdrawCaller | Request to withdraw a caller from |
| Redirect | Redirect (transfer) a call. |
| Reload | Send a reload event. |
| SendText | Sends a text message to channel. |
| Setvar | Sets a channel variable or functi |
| ShowDialPlan | Show dialplan contexts and extens |
| SorceryMemoryCacheExpire | Expire (remove) ALL objects from |
| SorceryMemoryCacheExpireObject | Expire (remove) an object from a |
| SorceryMemoryCachePopulate | Expire all objects from a memory |
| SorceryMemoryCacheStale | Marks ALL objects in a sorcery me |
| SorceryMemoryCacheStaleObject | Mark an object in a sorcery memor |
| Status | List channel status. |
| StopMixMonitor | Stop recording a call through Mix |
| StopMonitor | Stop monitoring a channel. |
| UnpauseMonitor | Unpause monitoring of a channel. |
| UpdateConfig | Update basic configuration. |
| UserEvent | Send an arbitrary event. |
| VoicemailRefresh | Tell Asterisk to poll mailboxes f |
| VoicemailUsersList | List All Voicemail User Informati |
| VoicemailUserStatus | Show the status of given voicemai |
| WaitEvent | Wait for an event to occur. |
IT CallCenters
Desarrollo de aplicaciones web y mobile
