';
}
// Same .tc-room skeleton as renderRoomRow (avatar/info/top/bottom) so a group row matches the
// 1:1 rows visually — data-type="group" + data-gid instead of data-cid/data-uid is what the
// click-delegation in renderRooms() switches on. No online/typing indicator (doesn't apply to
// a group), and the avatar is a rounded square instead of a circle as the only visual cue
// distinguishing a group from a person, mirroring common chat-app convention.
function renderGroupRow(group) {
var gid = group.gid;
var name = group.name || '';
var lastMsg = group.lastMessage;
var preview = '';
if (lastMsg) {
preview = parseDisplayText(lastMsg.msm);
if (!preview) {
if (lastMsg.urlima && lastMsg.urlima.indexOf('public://') >= 0) preview = '📷';
else if (lastMsg.urlaudi && lastMsg.urlaudi.indexOf('public://') >= 0) preview = '🎵';
}
if (String(lastMsg.whosend) === String(userId)) preview = 'You: ' + preview;
} else {
preview = 'No messages yet';
}
var timeStr = group.updated ? fmtTime(unixToDbTimestamp(group.updated)) : '';
var unread = group.unreadCount > 0;
var active = activeGid === gid;
return '
';
}
var body = '';
if (msg.urlima === '_loading_') {
body += '
📷 Sending…
';
} else if (msg.urlima && msg.urlima.indexOf('public://') >= 0) {
var src = msg.urlima.replace('public://', FILES_BASE);
body += '';
}
if (msg.urlaudi && msg.urlaudi.indexOf('public://') >= 0) {
var asrc = msg.urlaudi.replace('public://', FILES_BASE);
body += '';
}
if (meta && meta.type === 'loc') {
body += locationLinkHtml(meta.lat, meta.lng);
} else if (!isSalt && text) {
body += '
' + linkifyText(escHtml(text)) + '
';
}
var time = fmtTime(msg.timestamp || '');
return '
'
+ metaHtml + body
+ '' + escHtml(time) + ''
+ '
';
}
// ── Render group messages ────────────────────────────────────────────────────
function renderGroupMessages(gid) {
var msgs = allGroupMsgs[gid] || [];
var $el = $('#tc-msgs');
var order = msgs.slice().reverse();
$el.html(order.map(renderGroupMsg).join(''));
$el.scrollTop($el[0].scrollHeight);
}
// Same shape as renderMsg(), plus a sender-name label on incoming bubbles — unlike a 1:1
// conversation, "not me" doesn't tell you who actually sent it. Reuses the identical
// urlima/urlaudi rendering, so images/audio sent from the Android app (or sendGroupImage()
// here) display correctly. Audio still has no send control in this web widget.
function renderGroupMsg(msg) {
var isMe = String(msg.whosend) === String(userId);
var side = isMe ? 'tc-out' : 'tc-in';
var parsed = parseInlineMeta(msg.msm || '');
var text = parsed.text;
var meta = parsed.meta;
var isSalt = (text.length === 18 && text.indexOf(' ') < 0);
var senderHtml = '';
if (!isMe) {
senderHtml = '
' + escHtml(msg.senderName || msg.whosend) + '
';
}
var metaHtml = '';
if (meta && meta.type === 'fwd') {
metaHtml = '
';
}
// ── Send (opc 11) ────────────────────────────────────────────────────────────
function sendMessage() {
var text = $.trim($('#tc-input').val());
if (!text || !activeCid) return;
$('#tc-input').val('').focus();
isTyping = false;
post({ opc: '11', userid: userId, cid: activeCid, msm: text, fid: '0' })
.then(function (resp) {
if (!resp) return;
var ok = (resp.resp === 3 || resp.resp === '3' ||
resp.resp === 11 || resp.resp === '11');
if (!ok) return;
var msg = {
id: resp.lastmid || String(Date.now()),
whosend: String(userId),
msm: text,
urlima: '',
urlaudi: '',
timestamp: new Date().toISOString().replace('T', ' ').substr(0, 19)
};
if (!allMsgs[activeCid]) allMsgs[activeCid] = [];
allMsgs[activeCid].unshift(msg);
renderMessages(activeCid);
if (socket && socket.connected) {
socket.emit('send-message', {
id: resp.lastmid,
chatId: activeCid,
from: String(userId),
to: String(activeUid),
message: text,
type: 'text'
});
}
});
}
// ── Send group message ───────────────────────────────────────────────────────
// Purely socket-based — group-message-send both persists (tc_group_message, via the
// signaling server) and delivers, unlike 1:1's HTTP-then-socket-notify split. The server
// echoes the message back to the sender too (see group-message-send in signaling-server-2.js),
// so onGroupSocketMessage() is what actually appends it here — no optimistic local insert.
function sendGroupMessage() {
var text = $.trim($('#tc-input').val());
if (!text || !activeGid) return;
if (!socket || !socket.connected) return;
$('#tc-input').val('').focus();
isTyping = false;
socket.emit('group-message-send', {
gid: parseInt(activeGid, 10),
from: userId,
message: text,
type: 'text',
localId: 'web-' + Date.now() + '-' + Math.random().toString(36).substr(2, 8)
});
}
// ── Send group image (group-message-send, type:"image") ─────────────────────
// Unlike 1:1 (HTTP upload then socket notify), groups have no HTTP upload endpoint —
// the server expects the raw file as a base64 string on the same socket event used for
// text (see group-message-send in signaling-server-2.js), and does its own resize/compress
// (sharp, 1024x1024 max, jpeg75) server-side before writing it and echoing "group-message"
// back to every member including the sender. That echo is what onGroupSocketMessage() uses
// to both confirm this optimistic placeholder (matched by localId) and actually display it.
function sendGroupImage(file) {
if (!activeGid) return;
if (!socket || !socket.connected) return;
if (pendingGroupImage) return; // one at a time — button is disabled meanwhile anyway
var gid = activeGid;
var localId = 'web-img-' + Date.now() + '-' + Math.random().toString(36).substr(2, 8);
pendingGroupImage = { gid: gid, localId: localId };
if (!allGroupMsgs[gid]) allGroupMsgs[gid] = [];
allGroupMsgs[gid].unshift({
id: localId, localId: localId, whosend: String(userId), senderName: myName,
msm: '', urlima: '_loading_', urlaudi: '', created: Math.floor(Date.now() / 1000)
});
renderGroupMessages(gid);
$('#tc-img-btn').attr('disabled', 'disabled');
// Safety net — if the server/socket never answers at all (disconnect mid-flight etc.),
// don't leave "Sending…" stuck forever (see the 1:1 image-send bug this mirrors).
var timeoutId = setTimeout(function () { onGroupMessageError({}); }, 20000);
compressImageIfNeeded(file, function (uploadFile) {
var reader = new FileReader();
reader.onload = function () {
clearTimeout(timeoutId);
if (!pendingGroupImage || pendingGroupImage.localId !== localId) return; // already cleared
var base64 = (reader.result || '').split(',')[1] || '';
if (!base64 || !socket || !socket.connected) { onGroupMessageError({}); return; }
socket.emit('group-message-send', {
gid: parseInt(gid, 10),
from: userId,
message: '',
type: 'image',
filedata: base64,
localId: localId
});
};
reader.onerror = function () {
clearTimeout(timeoutId);
onGroupMessageError({});
};
reader.readAsDataURL(uploadFile);
});
}
// Clears whatever group image send is currently in flight — used both for explicit
// "group-message-error" replies (bad file, not a member, rate-limited) and the
// client-side timeout above. Doesn't distinguish by localId: only one send is ever
// in flight at a time (the button is disabled meanwhile), so there's nothing to match.
function onGroupMessageError(data) {
if (!pendingGroupImage) return;
var gid = pendingGroupImage.gid;
var localId = pendingGroupImage.localId;
pendingGroupImage = null;
$('#tc-img-btn').removeAttr('disabled');
if (allGroupMsgs[gid]) {
allGroupMsgs[gid] = allGroupMsgs[gid].filter(function (m) { return m.localId !== localId; });
}
if (activeGid === gid && isOpen) renderGroupMessages(gid);
if (data && data.error) { console.warn('group image send failed:', data.error); }
}
// Resizes/re-encodes as JPEG when a file exceeds COMPRESS_THRESHOLD. Skips GIFs —
// redrawing to canvas would flatten an animated GIF to a single static frame.
// Falls back to the original file untouched if decoding/encoding fails for any reason.
function compressImageIfNeeded(file, callback) {
if (file.size <= COMPRESS_THRESHOLD || file.type === 'image/gif') {
callback(file);
return;
}
var img = new Image();
var url = URL.createObjectURL(file);
img.onload = function () {
URL.revokeObjectURL(url);
var scale = Math.min(1, COMPRESS_MAX_DIM / Math.max(img.width, img.height));
var canvas = document.createElement('canvas');
canvas.width = Math.round(img.width * scale);
canvas.height = Math.round(img.height * scale);
canvas.getContext('2d').drawImage(img, 0, 0, canvas.width, canvas.height);
canvas.toBlob(function (blob) {
callback(blob || file, !!blob);
}, 'image/jpeg', COMPRESS_QUALITY);
};
img.onerror = function () {
URL.revokeObjectURL(url);
callback(file);
};
img.src = url;
}
// ── Send image (opc 11I) ─────────────────────────────────────────────────────
function sendImage(file) {
if (!activeCid) return;
var tempId = '_img_' + Date.now();
if (!allMsgs[activeCid]) allMsgs[activeCid] = [];
allMsgs[activeCid].unshift({
id: tempId, whosend: String(userId), msm: '', urlima: '_loading_',
urlaudi: '', timestamp: new Date().toISOString().replace('T', ' ').substr(0, 19)
});
renderMessages(activeCid);
// .attr()/.removeAttr(), not .prop() — this site's jQuery predates 1.6 (which is
// when .prop() was introduced), and every other call in this file sticks to
// pre-1.6-safe APIs already.
$('#tc-img-btn').attr('disabled', 'disabled');
compressImageIfNeeded(file, function (uploadFile, wasCompressed) {
var form = new FormData();
form.append('opc', '11I');
form.append('userid', String(userId));
form.append('cid', activeCid);
form.append('image', uploadFile, wasCompressed ? 'upload.jpg' : file.name);
fetch(API_URL, { method: 'POST', body: form })
.then(function (r) { return r.ok ? r.json() : null; })
.then(function (resp) {
allMsgs[activeCid] = allMsgs[activeCid].filter(function (m) { return m.id !== tempId; });
if (resp && (resp.resp === 3 || resp.resp === '3') && resp.urlima) {
var msg = {
id: resp.lastmid || String(Date.now()),
whosend: String(userId),
msm: '',
urlima: resp.urlima,
urlaudi: '',
timestamp: new Date().toISOString().replace('T', ' ').substr(0, 19)
};
allMsgs[activeCid].unshift(msg);
if (socket && socket.connected) {
socket.emit('send-message', {
id: resp.lastmid,
chatId: activeCid,
from: String(userId),
to: String(activeUid),
message: '',
urlima: resp.urlima,
type: 'image'
});
}
}
renderMessages(activeCid);
})
.catch(function () {
allMsgs[activeCid] = allMsgs[activeCid].filter(function (m) { return m.id !== tempId; });
renderMessages(activeCid);
})
.then(function () { $('#tc-img-btn').removeAttr('disabled'); });
});
}
// ── Inline meta parser ────────────────────────────────────────────────────────
function parseInlineMeta(raw) {
if (!raw) return { text: '', meta: null };
if (raw.substr(0, FWD_MARKER.length) === FWD_MARKER) {
var end = raw.indexOf(META_ETX);
if (end < 0) return { text: raw, meta: null };
var sender = raw.substring(FWD_MARKER.length, end);
return { text: raw.substring(end + 1), meta: { type: 'fwd', sender: sender } };
}
if (raw.substr(0, REPLY_MARKER.length) === REPLY_MARKER) {
var rend = raw.indexOf(META_ETX);
if (rend < 0) return { text: raw, meta: null };
var parts = raw.substring(REPLY_MARKER.length, rend);
var sep = parts.indexOf(META_SEP);
var rsender = sep >= 0 ? parts.substring(0, sep) : parts;
var orig = sep >= 0 ? parts.substring(sep + 1) : '';
return { text: raw.substring(rend + 1), meta: { type: 'reply', sender: rsender, orig: orig } };
}
// Shared location — same "lat" + META_SEP + "lng" encoding the Android app writes
// (see LOC_MARKER / sendLocationMessage() in ActivityChat.java). No trailing text.
if (raw.substr(0, LOC_MARKER.length) === LOC_MARKER) {
var lend = raw.indexOf(META_ETX);
if (lend < 0) return { text: raw, meta: null };
var coords = raw.substring(LOC_MARKER.length, lend);
var lsep = coords.indexOf(META_SEP);
var lat = lsep >= 0 ? coords.substring(0, lsep) : coords;
var lng = lsep >= 0 ? coords.substring(lsep + 1) : '';
return { text: raw.substring(lend + 1), meta: { type: 'loc', lat: lat, lng: lng } };
}
return { text: raw, meta: null };
}
function parseDisplayText(msm) {
var p = parseInlineMeta(msm || '');
var t = p.text;
if (p.meta && p.meta.type === 'loc') return '📍 ' + LOC_LABEL;
if (t.length === 18 && t.indexOf(' ') < 0) return '';
return (p.meta ? (p.meta.type === 'fwd' ? '↪ ' : '↩ ') : '') + t;
}
// ── Badge & notifications ─────────────────────────────────────────────────────
function updateBadge() {
var n = Object.keys(unreadCids).length;
Object.keys(allGroups).forEach(function (k) {
if (allGroups[k].unreadCount > 0) n++;
});
var $b = $('#tc-badge');
if (n > 0) { $b.text(n).removeClass('tc-hidden'); }
else { $b.addClass('tc-hidden'); }
}
function showNotif(title, body) {
if (!('Notification' in window)) return;
if (Notification.permission === 'granted') {
new Notification(title, {
body: body || '',
icon: 'https://www.taleoi.com/sites/default/files/taleoi.ico'
});
} else if (Notification.permission === 'default') {
Notification.requestPermission();
}
}
// ── HTTP ──────────────────────────────────────────────────────────────────────
function post(params) {
var form = new FormData();
Object.keys(params).forEach(function (k) { form.append(k, String(params[k])); });
return fetch(API_URL, { method: 'POST', body: form })
.then(function (r) { return r.ok ? r.json() : null; })
.catch(function () { return null; });
}
// ── Helpers ───────────────────────────────────────────────────────────────────
// Group timestamps (tc_group.updated, tc_group_message.created) are unix seconds, unlike
// 1:1's "YYYY-MM-DD HH:MM:SS" strings — converts to that same shape (local time) so both can
// share fmtTime() and the plain string comparison renderRooms() sorts by.
// Formatted with UTC getters, not local — fmtTime() (below) always treats this
// "YYYY-MM-DD HH:MM:SS" shape as UTC (appending 'Z' before parsing), matching the raw
// DB timestamp strings 1:1 chat passes it directly. Using local getters here would hand
// fmtTime() an already-local time it then re-shifts by the viewer's UTC offset again.
function unixToDbTimestamp(unixSec) {
if (!unixSec) return '0';
var d = new Date(unixSec * 1000);
function pad(n) { return (n < 10 ? '0' : '') + n; }
return d.getUTCFullYear() + '-' + pad(d.getUTCMonth() + 1) + '-' + pad(d.getUTCDate()) + ' '
+ pad(d.getUTCHours()) + ':' + pad(d.getUTCMinutes()) + ':' + pad(d.getUTCSeconds());
}
function fmtTime(ts) {
if (!ts) return '';
// DB timestamps are plain "YYYY-MM-DD HH:MM:SS" in UTC (MySQL TIMESTAMP column).
// Without a trailing 'Z', the JS Date parser treats a date-TIME string (unlike a
// date-only string) as local time, not UTC — silently shifting displayed times by
// the viewer's UTC offset. The 'Z' forces correct UTC interpretation.
var d = new Date(ts.replace(' ', 'T') + 'Z');
if (isNaN(d.getTime())) return '';
var now = new Date();
if (d.toDateString() === now.toDateString()) {
return d.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' });
}
return (d.getMonth() + 1) + '/' + d.getDate();
}
function escHtml(s) {
return String(s == null ? '' : s)
.replace(/&/g, '&').replace(//g, '>')
.replace(/"/g, '"').replace(/'/g, ''');
}
function escAttr(s) { return escHtml(s); }
// Wraps http(s) URLs in a message's already-escaped text with clickable links. Must run
// AFTER escHtml() — matching against the escaped string is safe since escaping never
// introduces whitespace inside a URL run, and the entities it does introduce (e.g. "&"
// for a literal "&" in a query string) are exactly what a browser expects inside an href
// attribute anyway. target="_blank" + rel="noopener noreferrer" so following a link never
// navigates away from (or exposes window.opener to) the page the chat widget is floating on.
function linkifyText(escapedText) {
return escapedText.replace(/https?:\/\/[^\s<]+/g, function (url) {
var trail = '';
var m = url.match(/[.,!?:;)\]}'"]+$/);
if (m) { trail = m[0]; url = url.slice(0, -trail.length); }
if (!url) return trail;
return '' + url + '' + trail;
});
}
// A shared location (LOC_MARKER — see parseInlineMeta()) renders as a tappable card
// linking to Google Maps, matching how the Android app opens a geo: intent for the
// same coordinates. Uses an https:// maps URL instead since geo: isn't reliably
// clickable in desktop browsers.
function locationLinkHtml(lat, lng) {
var mapUrl = 'https://www.google.com/maps?q=' + encodeURIComponent(lat) + ',' + encodeURIComponent(lng);
return ''
+ '📍 ' + escHtml(LOC_LABEL) + '';
}
})(jQuery);
world taleoi | Page 583 | taleoi.com
POLICÍA RECUPERA ELEMENTOS HURTADOS EN BARRIO DE LETICIA
Los controles realizados por la institución policial, permitió devolver a su legitimo propietario los elementos
La Estación de Policía Leticia, a través de funcionarios del cuadrante tres, realizo la recuperación de unos elementos que habrían sido hurtados a un habitante del barrio costa rica del municipio, la efectividad de los uniformados permitió que el ...read more
La Estación de Policía Leticia, a través de funcionarios del cuadrante tres, realizo la recuperación de unos elementos que habrían sido hurtados a un habitante del barrio costa rica del municipio, la efectividad de los uniformados permitió que el ciudadano recuperara sus herramientas de trabajo.
50 REGLAS DE ORO PARA LA VIDA .
1. Nunca saludes de mano a nadie sin ponerte de pie.
2. En una negociación, nunca hagas la primera oferta.
3. Si te confían un secreto, guárdalo.
4. Si te prestan un auto, regresa el tanque lleno.
5. Haz las cos...read more
50 REGLAS DE ORO PARA LA VIDA .
1. Nunca saludes de mano a nadie sin ponerte de pie.
2. En una negociación, nunca hagas la primera oferta.
3. Si te confían un secreto, guárdalo.
4. Si te prestan un auto, regresa el tanque lleno.
5. Haz las cosas con pasión o no las hagas.
6. Cuando saludes de mano hazlo firme y mirando a los ojos a esa persona.
7. Vive la experiencia de hacer un viaje solo.
8. Nunca rechaces una pastilla de menta, las razones son obvias.
9. Acepta consejos si quieres llegar a viejo.
10. Acércate a comer con la persona nueva en la escuela/oficina.
11. Cuando le escribas a alguien y estás enojado: termina, léelo, bórralo y escribe el mensaje de nuevo.
12. En la mesa no hables de trabajo, política o religión.
13. Escribe tus metas, trabaja en ellas.
14. Defiende tu punto de vista, pero sé tolerante y respetuoso ante el ajeno.
15. Llama y visita a tus familiares.
16. Nunca te arrepientas de nada, aprende de todo.
17. Elhonor y la lealtad deben estar presente en tu personalidad.
18. No le prestes dinero a quien sabes que no te pagará.
19. Cree en algo.
20. Tiende tu cama al levantarte por las mañanas.
21. Canta en la ducha.
22. Cuida una planta o un jardín.
23. Observa el cielo cada vez que puedas.
24. Descubre tus habilidades y explótalas.
25. Ama tu trabajo o déjalo.
26. Pide ayuda cuando la necesites.
27. Enséñale un valor a alguien, de preferencia a un pequeño.
28. Valora y agradece a quien te tiende la mano.
29. Sé amable con tus vecinos.
30. Hazle el día más alegre a alguien, te alegrará a ti también.
31. Compite contigo mismo.
32. Regálate algo mínimo una vez al año
33. Cuida tu salud.
34. Saluda con una sonrisa siempre.
35. Piensa rápido, pero habla despacio.
36. No hables con la boca llena.
37. Lustra tus zapatos, corta tus uñas y mantén siempre una buena apariencia.
38. No opines sobre temas que desconozcas.
39. Nunca maltrates a nadie.
40. Vive tu vida como si fuese el último día de ella.
41. Nunca pierdas la maravillosa oportunidad de quedarte callado.
42. Reconoce a alguien su esfuerzo.
43. Sé humilde, aunque no siempre.
44.Nunca olvides tus raíces.
45. Viaja cada que puedas.
46. Cede el paso.
47. Baila bajo la lluvia.
48. Busca tu éxito, sin desistir.
49. Sé justo, defiende a los que son abusados.
50. Aprende a disfrutar de los momentos de soledad. Read less
#MOCOA | ESTUDIANTE FUE ARROLLADO POR UNA MOTOCICLETA EN LA VÍA MOCOA - VILLAGARZÓN.
El menor que se dirigía hasta la Escuela San José del Pepino, en el sector del kilómetro 4 sufrió algunas laceraciones y fue atendido por personal de la co...read more
#MOCOA | ESTUDIANTE FUE ARROLLADO POR UNA MOTOCICLETA EN LA VÍA MOCOA - VILLAGARZÓN.
El menor que se dirigía hasta la Escuela San José del Pepino, en el sector del kilómetro 4 sufrió algunas laceraciones y fue atendido por personal de la concesionaria; la comunidad ha insistido en la construcción de reductores de velocidad y pasos peatonales.
El hecho se presentó durante la mañana de este miércoles, en medio de los reclamos de la comunidad, por la construcción de unos reductores e incluso un andén, que les permita a los estudiantes transitar de manera segura, en el tramo, desde Nueva Betania hacia la escuela en mención.
En las imágenes registradas, la comunidad insiste en que se debe atender este requerimiento, teniendo en cuenta las dimensiones de la vía, y el alto trafico vehicular, pues esta, es una vía de carácter nacional, que se encuentra concesionada.
Sobre el menor, estudiante de grado quinto, se conoció que fue trasladado hasta el Hospital José María Hernández de Mocoa, en donde recibe atención médica.
Tabatinga (AM) – Conforme informou Josemias Nascimento da Silva, chefe do cartório da 36ª zona eleitoral, em Tabatinga, no programa Recados, da Rádio Nacional do Alto Solimões, o horário das eleições este ano foi unificado ao restante do Brasil, s...read more
Tabatinga (AM) – Conforme informou Josemias Nascimento da Silva, chefe do cartório da 36ª zona eleitoral, em Tabatinga, no programa Recados, da Rádio Nacional do Alto Solimões, o horário das eleições este ano foi unificado ao restante do Brasil, sendo no horário de Brasília. Tal mudança de horário foi devido ao questionamento dos partidos pela diferença de horário no País.
A votação em Tabatinga iniciará às 6h da manhã e terminará às 15h da tarde.
Os eleitores deverão ficar atentos a esta mudança, pois com certeza poderá ter muitos desavisados.
Cinco recomendaciones para navegar con seguridad en Internet
Colombia, según el “Ministerio de Tecnologías de la información y de las Comunicaciones” en su informe de mayo 2022, para el último trimestre de 2021 tenía 46,4 millones de conexiones a Internet.
El 23 de agosto es el Día del Internauta, una jornada que conmemora el aniversario de uno de los mayores acontecimientos tecnológicos de la humanidad: el día en que se publicó por primera vez una página web a nivel mundial en 1991. Check Point® So...read more
El 23 de agosto es el Día del Internauta, una jornada que conmemora el aniversario de uno de los mayores acontecimientos tecnológicos de la humanidad: el día en que se publicó por primera vez una página web a nivel mundial en 1991. Check Point® Software Technologies Ltd. (NASDAQ: CHKP), un proveedor líder especializado en ciberseguridad a nivel mundial, quiere destacar la importancia de este día, ya que partir de ese momento, Internet no ha dejado de crecer y ha cambiado todos los aspectos de las vidas de las personas, tanto en los negocios como en la economía y la vida cotidiana.
Cada día, millones de personas utilizan este medio para acceder a los diferentes buscadores de la Red y estar informados de los acontecimientos diarios, comunicarse eficazmente entre países y regiones y realizar diferentes tareas que les proporcionan mayor comodidad y bienestar.
Según el “Ministerio de Tecnologías de la información y de las Comunicaciones” en su informe de mayo 2022, al cuarto trimestre de 2021, Colombia tenía 46,4 millones de conexiones a Internet. Además, el país suma más de 75 líneas de telefonía celular. Según el estudio “We are social” de Hootsuite, los colombianos navegan en promedio al día 9 horas y diez minutos.
Al ser una herramienta de uso cotidiano, los riesgos de convertirse en víctima de un ciberataque a través de Internet son cada vez mayores. De hecho, según un informe realizado por Check Point Research, en el segundo trimestre de 2022 se produjo un pico histórico llegando a aumentar en un 32% la cantidad de ciberataques a nivel mundial en comparación con el segundo trimestre de 2021. Por ello, desde Check Point Software quieren advertir del gran riesgo que corre un internauta a la hora de acceder a la Red y aporta cinco consejos básicos para hacerlo de forma segura:
1. Visitar sólo páginas web seguras: muchos sitios web no cuentan con las medidas de seguridad necesarias, ya sea porque están mal configurados (poniendo en riesgo la información compartida) o porque son maliciosos. Por ello, es fundamental extremar las precauciones a la hora de compartir datos personales en Internet y, conocer qué webs son seguras. La mejor técnica es comprobar si sigue el protocolo de seguridad “https//:”. Si la URL incluye una -s al final, significa que es una web segura y está adaptada a los estándares de protección. Otra señal presente en algunos navegadores es un candado verde al principio del enlace.
2. Instalar siempre las actualizaciones: a menudo se piensa que actualizar el software y las aplicaciones no es importante. Sin embargo, Check Point Software advierte que este hábito de ignorar las actualizaciones puede suponer un gran riesgo, ya que no se implementan los diferentes parches de protección que el proveedor ofrece para solucionar errores de seguridad previamente detectados. En otras palabras, contar con la última actualización de software optimizará el nivel de protección, y es una estrategia eficaz para mantener los datos y archivos a salvo de posibles brechas de seguridad, ciberataques, etc.
3. No utilizar el mismo nombre de usuario y contraseña para diferentes servicios online: Cada vez son más los programas o aplicaciones que se pueden usar a través de Internet. Por ello, se suelen aplicar las mismas credenciales de acceso para simplificar, evitar olvidos y problemas de conectividad. Esto es un gran error, ya que, si un ciberdelincuente consigue acceder a la base de usuarios y contraseñas de alguna de estas aplicaciones, le será muy fácil entrar en el resto. Por ello, es fundamental utilizar usuarios y contraseñas diferentes, y no utilizar claves que puedan ser fácilmente adivinadas (cumpleaños, nombre de la mascota, etc.). Para evitar cualquier tipo de despiste u olvido es muy útil tener un gestor de contraseñas que ayude a recordar.
4. Descargar aplicaciones sólo de las tiendas oficiales: juegos, redes sociales, banca online. cada vez con más alternativas de descarga y esto hace que los usuarios tiendan a instalar un gran número de estos programas en sus dispositivos móviles. Es importante asegurarse de que siempre que se baja una de estas apps es de la tienda oficial (Play Store, App Store, etc.) y también leer las diferentes condiciones de uso, ya que algunas de ellas pueden ser abusivas, y en muchos casos se puede perder el control sobre los datos y la información.
5. Protección de los dispositivos: un ciberdelincuente puede acceder a un smartphone, Tablet u ordenador de muchas maneras, robando así una cantidad incalculable de información. Ante esta situación, es fundamental protegerse de los ciberataques y, por ello, Check Point Software recuerda la importancia de contar con un software de seguridad que proteja tus dispositivos e información. Para ello, cuenta con ZoneAlarm Mobile (versión doméstica) y Harmony Mobile (versión corporativa), soluciones de defensa contra amenazas móviles que protegen los dispositivos contra ataques móviles avanzados.
“Internet forma parte de la vida diaria de todos y tras la pandemia su uso se ha intensificado aún más. Por ello, es importante conocer los peligros a los que nos exponemos cada vez que realizamos tareas como navegar por páginas web o descargar una aplicación, para mantenernos protegidos con una postura de prevención y evitar poner en riesgo nuestros datos”, destaca Ivonne Pedraza, Territory Manager CCA de Check Point Software.
Un nuevo estudio de físicos teóricos del Centro de Postgrado de la Universidad de la Ciudad de Nueva York (CUNY) ha avanzado en la identificación de cómo las partículas y las células dan lugar a la dinámica a gran escala que experimentamos como el...read more
Un nuevo estudio de físicos teóricos del Centro de Postgrado de la Universidad de la Ciudad de Nueva York (CUNY) ha avanzado en la identificación de cómo las partículas y las células dan lugar a la dinámica a gran escala que experimentamos como el paso del tiempo.
El flujo del tiempo del pasado al futuro es una característica central de nuestra experiencia del mundo. Pero el modo en que este fenómeno, conocido como la flecha del tiempo, surge de las interacciones microscópicas entre partículas y células es un misterio que los investigadores de la Iniciativa para las Ciencias Teóricas del Centro de Postgrado de la CUNY (ITS) están ayudando a desentrañar con la publicación de un nuevo artículo en la revista Physical Review Letters. Los resultados podrían tener importantes implicaciones en diversas disciplinas, como la física, la neurociencia y la biología.
Fundamentalmente, la flecha del tiempo surge de la segunda ley de la termodinámica: el principio de que las disposiciones microscópicas de los sistemas físicos tienden a aumentar su aleatoriedad, pasando del orden al desorden. Cuanto más desordenado se vuelve un sistema, más difícil le resulta encontrar el camino de vuelta a un estado ordenado, y más fuerte es la flecha del tiempo. En resumen, la tendencia del universo al desorden es la razón fundamental por la que experimentamos que el tiempo fluye en una dirección.
Las dos preguntas que se planteaba nuestro equipo eran: si observamos un sistema concreto, ¿seremos capaces de cuantificar la fuerza de su flecha del tiempo, y seremos capaces de ordenar cómo surge desde la microescala, donde interactúan las células y las neuronas, hasta el sistema completo?, afirma Christopher Lynn, primer autor del artículo. Nuestros descubrimientos proporcionan el primer paso hacia la comprensión de cómo la flecha del tiempo que experimentamos en la vida diaria emerge de estos detalles más microscópicos.
Es tu turno de iniciar tu entrenamiento con el SENA y volver realidad tu idea de negocio
⭐🔝¡Cada vez son más las personas que participan en nuestras jornadas de Orientación en Emprendimiento, Empresarismo y Fondo Emprender! Ahora es tu turno de iniciar tu entrenamiento con nosotros y volver realidad esa idea de negocio 💯👌 :
⭐🔝¡Cada vez son más las personas que participan en nuestras jornadas de Orientación en Emprendimiento, Empresarismo y Fondo Emprender! Ahora es tu turno de iniciar tu entrenamiento con nosotros y volver realidad esa idea de negocio 💯👌 :
📆 08 de septiembre de 2022
⏰ 08:00 a.m. a 10:00 a.m.
📍 SENA Regional Amazonas / Auditorio Sede Lagos
PM detém homem por porte ilegal de arma de fogo em Santo Antônio do Iça
Na noite do domingo (21), Policiais Militares da 3°CPM Santo Antônio do Iça-AM, prenderam um indivíduo por porte ilegal de arma de fogo.
Segundo denúncias, um homem com arma em punho, ameaçava as pessoas no bairro Santa Etelvina, causando p...read more
Na noite do domingo (21), Policiais Militares da 3°CPM Santo Antônio do Iça-AM, prenderam um indivíduo por porte ilegal de arma de fogo.
Segundo denúncias, um homem com arma em punho, ameaçava as pessoas no bairro Santa Etelvina, causando pânico na população.
Os policiais fizeram patrulhamento tático e localizaram o indivíduo. Ao ver a presença da Polícia Militar, o indivíduo tentou se evadir do local, mas foi detido pela equipe.
Ao ser realizada a abordagem policial, foi apreendido uma arma de fogo tipo revolver, com duas munições intactas, que estava na cintura do suspeito.
O homem foi conduzido e apresentado na a Delegacia de Polícia Civil em Santo Antônio para os procedimentos de Polícia Judiciária.
Denúncia- A Polícia Militar do Amazonas (PMAM) – 8°BPM, orienta a população que informe as ações criminosas imediatamente por meio do 📲Whatsapp Denúncia/Linha Direta (97) 98411-9447 ou pelo 190. _Sua identidade será mantida em total sigilo._
Fonte : Estudantes fazem segundo dia de provas do ENEM, na UERJ
Ifam divulga editais de concursos públicos com 142 vagas e salários de até R$ 9,6 mil
O Instituto Federal do Amazonas (Ifam) divulgou, nesta segunda-feira (22), dois editais de concursos públicos, ofertando 142 vagas e salários que variam e...read more
Ifam divulga editais de concursos públicos com 142 vagas e salários de até R$ 9,6 mil
O Instituto Federal do Amazonas (Ifam) divulgou, nesta segunda-feira (22), dois editais de concursos públicos, ofertando 142 vagas e salários que variam entre R$ 2,4 mil a R$ 9,6 mil. As oportunidades são para Manaus e também para o interior.
Podem participar pessoas com níveis médio, técnico e superior.
As inscrições serão abertas a partir do dia 2 de setembro até o dia 23 de setembro, pelo site da Fundação Cefet Minas, responsável pela realização do concurso. As taxas de inscrição são nos valores de R$ 80 e R$ 150.
Comandante recibió visita del Coronel Roberto Pedro Cardoso Etchebarrigar
#NoticiasFAP El Comandante General de la Fuerza Aérea del Perú, General del Aire Alfonso Javier Artadi Saletti, recibió la visita protocolar del Agregado Militar de la República de Argentina, Coronel Roberto Pedro Cardoso Etchebarrigaray. La reuni...read more
#NoticiasFAP El Comandante General de la Fuerza Aérea del Perú, General del Aire Alfonso Javier Artadi Saletti, recibió la visita protocolar del Agregado Militar de la República de Argentina, Coronel Roberto Pedro Cardoso Etchebarrigaray. La reunión se realizó como parte del fortalecimiento de los lazos de amistad y cooperación entre ambos países.
MÁS DE SEIS MIL PERSONAS BENEFICIADAS DURANTE JORNADAS DE APOYO AL DESARROLLO
Esta iniciativa permitió acercar la oferta del Gobierno Nacional a las comunidades en condición de vulnerabilidad que habitan las riberas de los ríos de la región suroriente.
Contribuyendo al desarrollo de las regiones, la Armada de Colombi...read more
Esta iniciativa permitió acercar la oferta del Gobierno Nacional a las comunidades en condición de vulnerabilidad que habitan las riberas de los ríos de la región suroriente.
Contribuyendo al desarrollo de las regiones, la Armada de Colombia a través de la Fuerza Naval del Sur en conjunto con el Ejército Nacional, la Fuerza Aérea Colombiana y organizaciones públicas y privadas, llegaron hasta el municipio de Solano - Caquetá y la vereda La Nueva Paya - Putumayo para realizar Jornadas de Apoyo al Desarrollo en las que se logró beneficiar a 6.248 personas.
En las dos jornadas realizadas, las Fuerzas Militares junto a las organizaciones aliadas que se sumaron a esta iniciativa, brindaron a los habitantes atención médica especializada, vacunación, servicios odontológicos, optometría, actividades lúdicas y de eduentretenimiento. Así mismo, entregaron 2.560 kits que incluían ropa, zapatos, juguetes, alimentos, suplementos nutricionales, implementos de aseo y útiles escolares.
Entre tanto, en el municipio de Solano - Caquetá, la Armada de Colombia entregó dos sillas de ruedas a dos adultos mayores en condición de discapacidad para facilitar su movilidad; y junto a la Fundación Totto donaron a Alcaldía Municipal dos mil artículos entre libros, cuentos, juegos de mesa, balones, kits escolares y morrales para dotar la ludoteca, aportando a la educación de los más pequeños.
Adicionalmente, en La Nueva Paya - Putumayo junto a la Corporación para el Desarrollo Sostenible del Sur de la Amazonia - Corpoamazonia, se realizó una jornada de reforestación donde se sembraron 500 plántulas frutales y maderables y la recolección de 800 kilogramos de residuos sólidos, contribuyendo de esta manera a la sostenibilidad y educación ambiental de la región.
A esta iniciativa de las Fuerzas Militares se sumaron entidades como la Alcaldía Municipal de Solano - Caquetá y Puerto Leguízamo - Putumayo, el Hospital María Angelines, el Hospital Local de Solano, Postobón, Corpoamazonia, las Fundaciones Totto, Optómetras Voluntarios de Colombia y corporaciones universitarias como Juan N. Corpas y Minuto de Dios.
La Armada de Colombia a través de la Fuerza Naval del Sur, continuará realizando Jornadas de Apoyo al Desarrollo que permitan contribuir al bienestar y progreso de las comunidades vulnerables que habitan el suroriente colombiano.