Далучайцеся да нашага Тэлеграм-канала

Bel-Geek - гэта адкрытая пляцоўка для публікацыі артыкулаў розных аўтараў на беларускай мове на свабодныя тэмы.

Перад тым як прыступіць да стварэння ўласнага артыкула, трэба аўтарызавацца. Калі ў вас няма акаунта, то трэба зарэгістравацца на сайце па спасылцы: https://bel-geek.com/register.

Далей трэба націснуць на тры кропкі ў шапцы сайта, каб з'явілася меню. Выбраць пункт "Стварыць артыкул", і перайсці на старонку рэдактара, ці скарыстацца спасылкай: https://bel-geek.com/editor/add

Пры стварэнні артыкула абавязкова трэба дадаць назву артыкула, імя аўтара ды тэгі ў адпаведныя палі формы, пажадана дадаць апісанне.

Напрыклад:

Як бачна на малюнку, з правага боку будзе панэль, на якой знаходзіцца прадагляд артыкула. З левага боку - рэдактар.

Важна!

Захоўвайце час ад часу свае артыкулы з дапамогай кнопкі "Захаваць" (працуем над аўтазахаваннем), каб выпадкова не згубіць напісанае. Таксама можна захаваць напісанае і адкласці работу з артыкулам на іншы дзень.

Калі вы ўжо вядзеце блогі ў іншых сацыяльных сетках, то дадавайце спасылкі на іх у сваіх артыкулах, каб чытачы маглі знайсці больш цікавай ім інфармацыі.

Калі артыкул будзе гатовы, трэба перавесці перамыкач над рэдактарам тэксту "Паказваць усім" у актыўнае становішча і націснуць кнопку "Захаваць".

PS. Калі вы ствараеце пераклад - то абавязкова пакідайце спасылкі на арыгінал.


Карысныя спасылкі, якімі можна карыстацца падчас напісання артыкулаў:

Мноства слоўнікаў: https://slounik.org/

Правапіс слоў у розных склонах і ліках: https://starnik.by/

Артыкул
LoveJS, 2023-08-06

Асноўнымі крыніцамі інфармацыі аб тых далёкіх часах для гісторыкаў выступаюць розныя летапісы і паданні, як уласныя, так і летапісы суседзяў, падцвержваючыя ці адмаўляючыя падзеі розных гадоў. Але на жаль, праз цемру стагоддзяў не дайшлі да нас летапісы Полацкі, Мінскі, Друцкі і Віцебскі. Усе з аднаго рэгіёна. У той жа час захаваліся летапісы кіеўскія, ноўгарадскія, цвярскія і маскоўскія. Але ж войнаў і пажараў у суседзяў было не меньш. Няма адказаў, чаму так атрымалася. Згінулі тыя летапісы падчас бясконцых войнаў, знішчаныя захопнікамі ў вогнішчах, ці былі скрадзеныя і схаваныя на доўгія гады, як Крыж Еўфрасінні? Хацелася б спадзявацца на апошняе, бо тады ёсць шанец, што ўсё ж хоць нешта захавалася, і вернецца калі-небудзь дадому. Навошта было хаваць летапісы, спытаецеся вы? Няма іншага адказу, акрамя таго, што яны занадта супярэчылі вядомым. Напрыклад, у вядомых на сёння летапісных сборах няма ніводнага слова пра Еўфрасінню Полацкую, нягледзячы на яе вядомасць ад Ноўгарада да Кастанцінопаля.

А можа іх ніколі не было? Дакладна былі. Полацкая бібліятэка пачала збірацца з 10 стагоддзя. Пры манастырах існавалі скрыпторыі (месцы для перапісвання кніг). На пачатак вайны з Маскоўскім княствам вядома пра мінімум 3 вялікія бібліятэкі - у Сафіі, Спасаўскім і Барысаглебскім манастырах з тысячамі кніг у кожнай. Сюды трэба таксама дадаць кнігі, якія захоўваліся пры кожным храме і выкарыстоўваліся пры службах. Захавалася паведамленне тых часоў Рэйнагальда Гейдэнштейна - асабістага сакратара Стэфана Баторыі, якое датуецца жніўнем 1579 года ("Запіскі аб Маскоўскай вайне") "У вачах адукаваных людзей амаль не меньшую каштоўнасць, чым уся астатняя здабыча, мела знойдзеная там бібліятэка. Апрача летапісаў, у ёй было многа твораў грэцкіх айцоў царквы ..." То бок, летапісы існавалі. Шмат кніг кніг было адразу спалена, частка перавезеная ў Масковію. Бібліятэка Маскоўскага княства налічвала да вайны каля паўтысячы кніг.

Навошта я гэта распавядаю? Таму што сёння шэраг гісторыкаў, у тым ліку і нашых, мяркуюць, што Полацкае княства існавала, хоць і побач з Кіевам і Наўгарадам, але асобна. Іх доказы маюць рацыю, але ж гэта асобная вялізная тэма. А сёння я толькі закрану адзін з фактаў, які ўскосна сведчыць аб самастойнасці Полацка. Зноў хацелася б падкрэсліць, што мала захавалася звестак пра падзеі тых часоў, ды і самі летапісы не пісаліся з мэтай дакладнага занатавання тых падзей, хутчэй каб праслаўляць подзьвігі сваёй дзяржавы і выбітных асоб. Таму побач з большасцю напісанага можна паставіць пытальнік. Пачынаем!

Равалод і Рагнеда

Першы вядомы князь Полацкага княства - Рагвалод, пра якога вядома, што ён прыйшоў з-за мора і меў надзел у Полацку. Быў ці то прадстаўніком мясцовай дынастыі, ці то паходзіў з вікінгаў. У Рагвалода была жонка, дачка Рагнеда і 2 сыны. Шлюб з дачкой Рагвалода азначаў хаўрус і падтрымку Полацкага княства, таму да Рагнеды, якая дасягнула ўзросту нявесты ў 12 год, адначасова (ці амаль адначасова) пасваталіся два браты. Спачатку Яраполк, князь кіеўскі. А потым і брат яго, наўгарадскі князь Уладзімір. Уладзімір быў сынам князя Святаслава і сынам рабыні Малушы, і ўнукам княгіні Вольгі. Той самай, якая помсціла драўлянам за забітага мужа князя Ігара, які другі раз пайшоў збіраць з драўлянаў даніну ды не вярнуўся. Люта і вытанчана адпомсціла Вольга драўлянам за мужа. А шалёны бабкін характар перадаўся ўнуку, які не саступаў бабцы ў вынаходніцтве і бязлітаснасці.

Равалод і Рагнеда

Злева - сваты Улідзіміра. Справа - Рагвалод і Рагнеда

Перавагу Рагнеда (ці сам Рагвалод, бо Рагнедзе на той час было толькі 12 год) аддала Яраполку, князю кіеўскаму, а Уладзіміру была дасланая адмова "Не хачу рабыніча разуці." У той час існаваў звычай, што маладая жонка павінна здымаць абутак з ног мужа ў першую шлюбную ноч. І пагардлівы напамін, што Уладзімір - сын рабыні, раз'юшыў апошняга. Назбіраў Уладзімір вялізнае войска і рушыў на Полацк. Недзе пад Полацкам сустрэла войска Уладзіміра спехам скліканая дружына Рагвалода, але была разбітая. Рагвалод вярнуўся ў Полацк. Уладзімір сілай узяў Рагнеду за жонку, перад гэтым згвалціўшы яе на вачах родных (тут супярэчлівы факт), а потым забіўшы на яе вачах усю яе сямью. Рагвалодаў род па мужчынскай лініі абарваўся. Пазней Уладзімір забіў Яраполка і стаў кіеўскім князем.

Захоп Полацка князем Уладзімірам

Захоп Полацка Уладзімірам

А Рагнеда атрымала імя Гарыслава і стала другой з шасці жонак Уладзіміра (акрамя жонак меў яшчэ каля 800 наложніц), які на той час быў паганцам. Жыла Рагнеда ў вёсцы пад Кіевам, якую пазней назавуць нібыта па імені Рагнедавай дачкі Прадславіна. Зрэдку муж наведваўся да яе. Аднойчы, у адзін з такіх візітаў Уладзімір заснуў, і Рагнеда наважылася адпомсціць. Але ж у апошняе імгненне Уладзімір прачнуўся і перахапіў руку Рагнеды з мячом. Рагнеду чакала пакаранне смерцю. Невядома, што там дакладна адбылося, але з пакоі аказаўся малы сын Ізяслаў (гадоў 6-7), які заступіўся за маці, таксама з мячом у руцэ. Тады, параіўшыся з баярамі, Уладзімір вырашае адправіць Рагнеду разам з сынам далей ад Кіева. Так Рагнеда апынулася ў маленькім драўляным крывіцка-дрыгавіцкім памежным Заслаўі (Ізяслаўлі). І вось тут незразумелы факт. Ізяслаў лічыцца старэйшым сынам Уладзіміра і Рагнеды, то бок ён - першы спадкаемец кіеўскага пасаду. Чаму Ранеда, меўшая некалькі дзяцей ад Уладзіміра, была высланая толькі з малым Ізяславам? Таму што ён заступіўся за маці ці таму, што быў сынам не Уладзіміра? Існуе версія, што да трагічных падзей у Полацку Рагнеда ўжо была некаторы час замужам за Яраполкам(?) і мела ад яго сына. А бацькоўства Уладзіміра дапісалі пазней, каб мець законныя пасяганні на полацкую зямлю.

Замах на забойства Уладзіміра

Спроба забойства Уладзіміра

Але ж як бы там не было, але ад адзінага сына Рагнеды узнавілася полацкая княжая дынастыя Рагвалодавічаў. Цікава, што доўгія стагоддзі пасля пазбягалі полацкія князі называць сваіх сыноў імем Уладзімір.

Ізяслаў бароніць Раннеду

Ізяслаў бароніць Рагнеду

Уладзімір жа надумаў абвянчацца з грэцкай прынцэсай Ганнай. Але для гэтага яму трэба было распусціць свой гарэм, адмовіцца ад 6 жонак і прыняць хрысціянства. Складаней за усіх было пытанне з Рагнедай, бо яна была княскага роду. Летапісы сведчаць, што Уладзімір прапанаваў ёй пабрацца шлюбам з адным са сваіх баяраў, але Рагнеда адмовілася, а замест гэтага вырашыла прыняць пострыг у манастыр.

Тут не вядомая дакладна храналогія тых падзей. Ці то спачатку была спроба помсты і выгнанне, а потым прапанова шлюбу з баярынам, ці то спачатку Уладзімір вырашыў ажаніцца з грэцкай царэўнай, а пасля гэтага - замах. Але я хачу звярнуць вашую увагу на іншы цікавы факт - пострыг у манахіні.

Ва ўсіх дзяржавах Еўропы ўслед за палітычным самавызначэннем ішло афіцыйнае прызнанне хрысціянства і наданне яму статуса дзяржаўнай рэлігіі.

10 век вядомы як час хуткага распаўсюджвання хрысціянства ў Скандынавіі. Данія, Нарвегі, Швецыя, утварыўшы першыя дзяржавы, следам за франкамі, Брытанскімі каралеўствамі, Цэнтральнай Еўропай, прымаюць дзяржаўнай рэлігіей хрысціянства. У "Саге аб хрышчэнні" 12-13 стагоддзяў распавядаецца пра Торвальда-вандроўніка, які прымаў значны удзел у хрышчэнні Ісландыі. Адтуль ён выправіўся ў паломніцтва у Ерусалім, дзе быў у вялікай пашане ў імператара і патрыярха. Вяртаўся Торвальд у Скандынавію праз Кіеў і Полацк, дзе заснаваў манастыр і храм Іаана-Хрысціцеля. Торвальд памёр, не дабраўшыся да радзімы і быў пахаронены каля гэтага манастыра. Гэтая сага - першы ўзгад хрысціян на Полацкай зямлі. Калі Полацкае княства было незалежным, і Рагалод ці то быў скандзінавам, ці то некаторы час знаходзіўся ў тых землях, то тады становіцца зразумела, чаму Торвальд змог заснаваць манастыр у Полацку.

Бліжэйшыя "аналагічныя" храмы можна знайсці ў Ерусаліме (5 ст.) і Керчы (8 -9 ст.), што супадае са шляхам Торвальда ад Ерусаліма да Полацка. Другія аналагічныя па назве цэрквы з'явіліся значна пазней, прыблізна ў 18-19 стагоддзях.

Манастыр і храм Іаана Хрысціцеля ў Полацку сапраўды існаваў, бо аб ім узгадваюць граматы 14 стагоддзя як аб "Манастыры Іаана Прадцечы на Востраве". На жаль, дакладнае месца знаходжання таго манастыра невядомае, бо меркаванае месцазнаходжанне сёння шчыльна забудаванае сучаснымі будынкамі і правесці раскопкі пакуль што немагчыма.

Існаванне хрысціянскага манастыра ў 10 стагоддзі ў Полацку сведчыць аб тым, што у Полацкую зямлю хрысціянства прыйшло раней за Кіеў.

Прыняць сан, не прайшоўшы паслушэнства, а тым больш без глыбокай веры ў Хрыста, немагчыма. Таму можна зрабіць вывад, што на момант прыняцця сана Рагнеда доўгі час была шчыра веруючай хрысціянкай. Гэта быў вялікі духоўны подзвіг! У тыя часы не было ва ўсходняй Еўропе жанчын-манашак. Нават для заходняй Еўропы гэта была рэдкая з'ява. Росквіт жаночага манаства пачаўся там толькі з 12 стагоддзя.

Рангеда прыняла пострыг і пражыла ў манастары каля 20 гадоў, а яе сына Ізяслава абралі на княскі пасад у Полацку ва ўзросце 11 гадоў.

У артыкуле ёсць цытаты і звесткі з кнігі вядомага гісторыка і археолага Сяргея Тараса "Еўфрасіння - Офрасіння - Афрасіння Полацкая. Яе час, яе крыж.", звесткі з Вікіпедыі і інш.

history
Ragneda
Polotsk
BiełaruskiBajan, 2024-09-28

Прывітанне сябры.


Сення для вас пакрокавы агляд зменаў у JS згодна са стандартамі ECMAScript (ES), пачынаючы з ES6 (2015) і далей, з кароткім апісаннем і прыкладамі кода для кожнай функцыі:

2015 (ES6 / ECMAScript 2015)

Let і Const

Апісанне: Пераменныя з блочным узроўнем бачнасці. let дазваляе перапрызначэнне пераменнай, у той час як const робіць пераменныю нязменнай.

Прыклад:

let count = 10;
const name = "Alice";

Стрэлачныя функцыі (Arrow Functions)

Апісанне: Карацейшы сінтаксіс і няма oласных this, constructor, args.

Прыклад:

const add = (a, b) => a + b;

Шаблонныя літэралы (Template Literals)

Апісанне: Пашыраныя літэралы для ўстаўкі значэнняў у радкі і шматрадковыя радкі з выкарыстаннем зваротных апострафаў.

Прыклад:

const greeting = `Hello, ${name}!`;

Класы (Classes)

Апісанне: Сінтаксіс class для стварэння канструктарных функцый і наследавання.

Прыклад:

class Person {
  constructor(name) {
    this.name = name;
  }
  greet() {
    return `Hello, ${this.name}`;
  }
}

Модулі (Modules)

Апісанне: Падтрымка модуляў з выкарыстаннем ключавых слоў import і export.

Прыклад:

// module.js
export const name = "Alice";

// main.js
import { name } from './module.js';

Дэструктурызацыя (Destructuring Assignment)

Апісанне: Выняцце значэнняў з масіваў або ўласцівасцяў аб'ектаў у пераменныя.

Прыклад

:const [x, y] = [1, 2];
const { name, age } = { name: "Alice", age: 25 };

Параметры па змаўчанні (Default Parameters)

Апісанне: Параметры функцый могуць мець значэнні па змаўчанні.

Прыклад:

function greet(name = "Guest") {
  return `Hello, ${name}`;
}

Аператары Spread і Rest

Апісанне: Spread (...) раздзяляе масівы/аб'екты; Rest (...) збірае астатнія элементы.

Прыклад:

const numbers = [1, 2, 3];
const moreNumbers = [...numbers, 4, 5];

function sum(...args) {
  return args.reduce((a, b) => a + b, 0);
}

Промісы (Promises)

Апісанне: Убудаваныя промісы для працы з асінхроннымі аперацыямі.

Прыклад:

const promise = new Promise((resolve, reject) => {
  setTimeout(() => resolve("Success!"), 1000);
});

Генератары (Generators)

Апісанне: Функцыі, якія можна прыпыняць і аднаўляць (function* і yield).

Прыклад:

function* idGenerator() {
  let id = 1;
  while (true) {
    yield id++;
  }
}

Map і Set

Апісанне: Новыя структуры дадзеных для захавання ключ-значэння (Map) і ўнікальных значэнняў (Set).

Прыклад:

const map = new Map();
map.set('key', 'value');

const set = new Set([1, 2, 3, 3]);

Сімвалы (Symbols)

Апісанне: Новы прымітыўны тып дадзеных для стварэння унікальных ідэнтыфікатараў.

Прыклад:

const sym = Symbol('description');

Ітэратары і цыкл For-Of

Апісанне: Ітэратары – аб'екты, якія вызначаюць паслядоўнасць і могуць вяртаць значэнне пры заканчэнні паслядоўнасці. Цыкл for-of для ітэрацыі па ітэруемых аб'ектах.

Прыклад:

const array = [1, 2, 3];
for (const value of array) {
  console.log(value);
}

WeakMap і WeakSet

Апісанне: Падобныя на Map і Set, але са слабымі спасылкамі на ключы/значэнні (дакументацыя).

Прыклад:

const weakMap = new WeakMap();
const obj = {};
weakMap.set(obj, 'value');

Удасканаленні Math, Number, String і Object

Апісанне: Новыя метады, дададзеныя ў Math, Number, String і Object.

Прыклад:

Math.trunc(4.9); // 4
Number.isNaN(NaN); // true

Object.assign({}, {a: 1}, {b: 2}); // {a: 1, b: 2}

2016 (ES7 / ECMAScript 2016)

Аператар узвядзення ў ступень (Exponentiation Operator)

Апісанне: Спрошчаны разлік ступені з **.

Прыклад:

const square = 2 ** 2; // 4

Array.prototype.includes

Апісанне: Правярае, ці ёсць у масіве пэўнае значэнне.

Прыклад:

const array = [1, 2, 3];
array.includes(2); // true

2017 (ES8 / ECMAScript 2017)

Async/Await

Апісанне: Сінтаксічны цукар для працы з промісамі, што робіць асінхронны код прасцейшым для чытання і напісання.

Прыклад:

async function fetchData() {
  const response = await fetch('https://api.example.com/data');
  const data = await response.json();
  return data;
}

Object.entries і Object.values

Апісанне: Метад атрымлівае масіў уласных пералічаных уласцівасцяў аб'екта ў выглядзе пар [ключ, значэнне] і значэнняў.

Прыклад:

const obj = { a: 1, b: 2 };
Object.entries(obj); // [['a', 1], ['b', 2]]
Object.values(obj); // [1, 2]

Дабаўленне радкоў (String Padding)

Апісанне: Метад padStart і padEnd дадае сімвалы да радка да дасягнення пэўнай даўжыні.

Прыклад:

'5'.padStart(2, '0'); // '05'
'5'.padEnd(2, '0'); // '50'

Object.getOwnPropertyDescriptors

Апісанне: Вяртае ўсе ўласныя апісальнікі ўласцівасцяў аб'екта.

Прыклад:

const obj = { prop: 1 };
const descriptors = Object.getOwnPropertyDescriptors(obj);
/*{
  "prop": {
    "value": 1,
    "writable": true,
    "enumerable": true,
    "configurable": true
  }
} */

Завяршаючыя коскі ў спісах параметраў і выкліках функцый (Trailing Commas in Function Parameter Lists and Calls)

Апісанне: Дазваляе выкарыстоўваць завяршаючыя коскі ў параметрах функцый і аргументах.

Прыклад:

function foo(
  param1,
  param2,
) { /*...*/ }

foo(
  'a',
  'b',
);

2018 (ES9 / ECMAScript 2018)

Асінхронныя ітэратары (Async Iteration)

Апісанне: Цыкл for-await-of для ітэрацыі па асінхронных ітэруемых аб'ектах.

Прыклад:

async function process(array) {
  for await (let value of array) {
    console.log(value);
  }
}

Rest/Spread уласцівасцяў (Rest/Spread Properties)

Апісанне: Spread і rest уласцівасцяў для аб'ектаў.

Прыклад:

const obj = { a: 1, b: 2, c: 3 };
const { a, ...rest } = obj; // rest = { b: 2, c: 3 }
const newObj = { ...rest }; // { b: 2, c: 3 }

Promise.finally

Апісанне: Дадае метад .finally() у промісы, які выконвае зваротны выклік пры завяршэнні промісу незалежна ад выніку.

Прыклад:

fetch('/api')
  .then(response => response.json())
  .catch(error => console.error(error))
  .finally(() => console.log('Fetch attempt finished.'));

Паляпшэнні RegExp

Апісанне: Новыя функцыі у рэгулярных выразах.

Прыклад:

const regExp = /(?<=\$)\d+/; // lookbehind assertion
const match = 'Price: $10'.match(regExp); // ['10']

const regExpNamed = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/;
const result = regExpNamed.exec('2020-12-01');
console.log(result.groups.year); // '2020'

2019 (ES10 / ECMAScript 2019)

Array.prototype.flat і Array.prototype.flatMap

Апісанне: flat сплюшчвае ўкладзеныя масівы, flatMap - адлюстроўвае і сплюшчвае вынік.

Прыклад:

const arr = [1, [2, [3]]];
arr.flat(2); // [1, 2, 3]

const arr1 = [1, 2, 1];

const result = arr1.flatMap((num) => (num === 2 ? [2, 2] : 1));

console.log(result);
// Expected output: Array [1, 2, 2, 1]

Object.fromEntries

Апісанне: Канвертуе спіс пар ключ-значэнне ў аб'ект.

Прыклад:

const entries = [['a', 1], ['b', 2]];
const obj = Object.fromEntries(entries); // { a: 1, b: 2 }

String.prototype.trimStart і String.prototype.trimEnd

Апісанне: Прыбірае прабелы з пачатку і канца радка.

Прыклад:

const str = '  hello  ';
str.trimStart(); // 'hello  '
str.trimEnd(); // '  hello'

Неабавязковая пераменная ў блоку catch (Optional Catch Binding)

Апісанне: Дазваляе апусціць пераменную памылкі ў блоку catch.

Прыклад:

try {
  // code
} catch {
  console.error('An error occurred');
}

Symbol.prototype.description

Апісанне: Дазваляе атрымаць апісанне сімвала непасрэдна.

Прыклад:

const sym = Symbol('desc');
console.log(sym.description); // 'desc'

Рэвізія Function.prototype.toString

Апісанне: Метад toString() вяртае дакладныя сімвалы, уключаючы прабелы і каментарыі.

Прыклад:

function /* comment */ foo() {}
console.log(foo.toString()); // 'function /* comment */ foo() {}'

2020 (ES11 / ECMAScript 2020)

Аператар выбару (Optional Chaining (?.))

Апісанне: Бяспечны доступ да глыбока ўкладзеных уласцівасцяў.

Прыклад:

const user = {};
const street = user.address?.street; // undefined

Аператар Nullish Coalescing (??)

Апісанне: Вяртае правы аперанд, калі левы аперанд null або undefined.

Прыклад:

const name = null ?? 'Guest'; // 'Guest'

Дынамічны імпарт (Dynamic import())

Апісанне: Дынамічны імпарт модуляў.

Прыклад:

import('/modules/my-module.js')
  .then(module => {
    // use module
  });

BigInt

Апісанне: Дазваляе прадстаўленне і апрацоўку цэлых лікаў, большых за Number.MAX_SAFE_INTEGER.

Прыклад:

const bigNumber = 123456789012345678901234567890n;

Promise.allSettled

Апісанне: Вяртае проміс, які вырашаецца, калі ўсе перададзеныя промісы альбо вырашаны, альбо адхілены.

Прыклад:

const promises = [Promise.resolve(1), Promise.reject('error')];
Promise.allSettled(promises)
  .then(results => console.log(results));

GlobalThis

Апісанне: Стандартны спосаб доступу да глабальнага this значэння ў розных асяроддзях.

Прыклад:

globalThis.setTimeout(() =>console.log('Hello'), 1000);

String.prototype.matchAll

Апісанне: Вяртае ітэратар усіх супадзенняў у радку з рэгулярным выразам.

Прыклад:

const regex = /t(e)(st(\d?))/g;
const str = 'test1test2';
const matches = [...str.matchAll(regex)];

Экспарт прастораў імёнаў модуля (Module Namespace Exports)

Апісанне: Паляпшэнне падтрымкі апрацоўкі прастораў імёнаў у ES модулях.

Прыклад:

export * as ns from 'module';

2021 (ES12 / ECMAScript 2021)

Аператары лагічнага прызначэння (&&=, ||=, ??=)

Апісанне: Аб'ядноўваюць лагічныя аперацыі з выказваннямі прызначэння.

Прыклад:

let a = 1;
a ||= 2; // a = 1

let b = null;
b ??= 2; // b = 2

Лічбавыя раздзяляльнікі (Numeric Separators)

Апісанне: Падкрэсленні выкарыстоўваюцца як раздзяляльнікі для паляпшэння чытальнасці лікавых літаралаў.

Прыклад:

const largeNumber = 1_000_000; // 1000000

String.prototype.replaceAll

Апісанне: Замяняе ўсе ўхапленні падрадка.

Прыклад:

const str = 'foo foo';
const newStr = str.replaceAll('foo', 'bar'); // 'bar bar'

Promise.any

Апісанне: Вяртае першы вырашаны проміс або масіў з памылкамі, калі ўсе промісы былі адхілены.

Прыклад:

const promises = [Promise.reject(1), Promise.resolve(2)];
Promise.any(promises)
  .then(result => console.log(result)); // 2

WeakRefs

Апісанне: Стварае слабыя спасылкі на аб'екты, каб пазбегнуць прадухілення збору смецця.

Прыклад:

const obj = {};
const weakRef = new WeakRef(obj);

FinalizationRegistry

Апісанне: Рэгіструе зваротны выклік для ачысткі аб'ектаў, якія былі сабраны зборшчыкам смецця.

Прыклад:

const registry = new FinalizationRegistry(heldValue => {
  console.log('Object was garbage collected', heldValue);
});

let obj = {};
registry.register(obj, 'myValue');
obj = null; // obj is now eligible for garbage collection

2022 (ES13 / ECMAScript 2022)

Класыз прыватнымі палямі (Class Fields)

Апісанне: Публічныя і прыватныя метады і метады экземпляра ў класах.

Прыклад:

class MyClass {
  myField = 10; // public field
  #privateField = 20; // private field
  
  getPrivateField() {
    return this.#privateField;
  }
}

Верхняўзроўневае await (Top-Level Await)

Апісанне: Дазваляе выкарыстанне await на верхнім узроўні модуляў.

Прыклад:

const data = await fetch('/api/data').then(res => res.json());
console.log(data);

Індэксы супадзенняў RegExp (RegExp Match Indices)

Апісанне: matchAll вяртае пазіцыі пачатку і канца супадзенняў.

Прыклад:

const regex = /(foo)/g;
const str = 'foo foo';
const matches = [...str.matchAll(regex)];
console.log(matches[0].indices); // [[0, 3], [0, 3]]

2023 (ES14 / ECMAScript 2023)

Метады findLast і findLastIndex для масіваў і TypedArray

Апісанне: Метад для пошуку апошняга элемента і яго індэкса ў масіве або TypedArray.

Прыклад:

const arr = [1, 2, 3, 4];
const lastEven = arr.findLast(n => n % 2 === 0); // 4
const lastEvenIndex = arr.findLastIndex(n => н % 2 === 0); // 3

Сімвалы як ключы для WeakMap

Апісанне: Сімвалы можна выкарыстоўваць у якасці ключоў у WeakMap.

Прыклад:

const sym = Symbol('key');
const wm = new WeakMap();
wm.set(sym, 'value');

Групоўка масіваў (Array Grouping)

Апісанне: Метад groupBy і groupByToMap для групавання элементаў у масівах.

Прыклад:

const array = ['one', 'two', 'three'];
const grouped = array.groupBy(word => word.length);
// { 3: ['one', 'two'], 5: ['three'] }

Граматыка Hashbang

Апісанне: Дазваляе выкарыстанне #! у пачатку скрыптаў для Unix-падобных асяроддзяў.

Прыклад:

#!/usr/bin/env node
console.log('Hello, world!');

Заключэнне

Такім чынам мы разгледзеді важныя абнаўленні ў JS за апошнія некалькі гадоў, і спадзяюся што наша праца будзе для вас карыснай. Хацелася б адзначыць што былі і іншыя змены, але яны не былі настолькі важнымі, таму у гэты спіс не папалі.

ЗЫ : Калі ласка далучайцеся да нашых аўтараў. Давайце пашыраць нашу беларускамоўную прастору разам.

JS
ES6
javascript
Admin, 2024-08-29

Вітанкі, сябры. Сення хачу падзяліцца з вамі невялічкім лайфхакам які можа дапамагчы захаваць вашыя грошы і нервы пры праслухоўванні музыкі ці падкастаў праз ютуб. Адразу папярэджу што дадаткі на Iphone пакуль не падтрымліваюцца. Але абяцалі завезці. Таму на айфонах прыйдзецца глядзець з рэкламай.

Як глядзець і слухаць YouTube на тэлефоне без рэкламы і ў згорнутым выглядзе

YouTube – гэта выдатная платформа для прагляду відэа і слухання музыкі, але рэклама і абмежаванні пры выкарыстанні ў згорнутым выглядзе могуць выклікаць дыскамфорт. Ёсць простае рашэнне гэтай праблемы – выкарыстанне браўзэра Firefox і дадатку uBlock Origin. Давайце разгледзім, як гэта працуе.

  1. Устаноўка Firefox на тэлефон Першым крокам з'яўляецца ўстаноўка браўзэра Firefox на ваш смартфон. Гэта бясплатны браўзэр, даступны ў Google Play Store для Android і App Store для iPhone. Пасля ўстаноўкі ён стане нашым ключом да праслухоўвання YouTube у згорнутым выглядзе.

Плэймаркет

Апстор

  1. Усталяванне дадатку uBlock Origin (Так, ФФ падтрымлівае дадаткі) Firefox дазваляе ўсталёўваць дадаткі, якія пашыраюць яго функцыянальнасць. Адзін з лепшых дадаткаў для блакавання рэкламы – гэта uBlock Origin. Гэты дадатак эфектыўна блакуе рэкламу на розных сайтах, уключаючы YouTube. Каб усталяваць uBlock Origin, зрабіце наступныя крокі:

Адкрыйце Firefox. Перайдзіце ў меню і выберыце "Дадаткі" або "Add-ons". У пошуку ўвядзіце "uBlock Origin". Усталюйце гэты дадатак. Пасля ўстаноўкі uBlock Origin рэклама на YouTube больш не будзе вас турбаваць.

  1. Як праглядаць YouTube у згорнутым выглядзе Адной з асаблівасцяў прагляду YouTube праз Firefox з'яўляецца магчымасць слухаць відэа ў згорнутым выглядзе. Гэта азначае, што вы можаце запусціць відэа на YouTube, а потым звярнуць браўзэр або нават заблакіраваць экран, і аўдыя працягне прайгравацца.

Каб гэта зрабіць:

Адкрыйце YouTube праз Firefox. Запусціце відэа. Выйдзіце на галоўны экран тэлефона або згарніце браўзэр. Відэа будзе працягваць прайгравацца ў фоне, што вельмі зручна для праслухоўвання музыкі ці падкастаў. Калі яно стане на паўзу - то проста адцягніце "шторку" і націсніце плэй як на малюнку:

малюнак

Вы пазнаёміліся з яшчэ адным спосабам выкарыстоўваць YouTube без надакучлівай рэкламы і мець магчымасць слухаць кантэнт, не трымаючы браўзэр ці дадатак адкрытым.

Нажаль блакірванне рэкламы на айфонах пакуль немагчымае - бо ўсе браўзэры для айфонаў зараз заснаваныя на Safari які не падтрымлівае аніякія дадаткі. У хуткім часе абяцалі што гэта зменіцца і тады ўжо будзе магчымасць пашыраць магчымасці нашых браўзэраў і на айфонах.

Youtube
Admin, 2024-08-22

Лацінскі альфабэт зьяўляецца важнай часткай беларускай мовы й амаль незамяняльны ў выпадкох, калі ўвод кірылічнага тэксту немагчымы - у назовах файлаў, пры стварэньні нікаў і г. д. Апроч таго, сёньня даволі вялікая колькасьць беларусаў карыстаецца лацінкаў у штодзённым жыцьці. І калі на тэлефоне з уводам усіх асаблівых літар няма праблем, то фізычная клавятура кампутару патрабуе для гэтага спэцыяльнай лацінскай раскладкі, якой Windows у стандартным пакеты ня мае (дзякуй што хоць кірылічную беларускую дадалі). Таму сёньня раскажу як можна ў пару (ну, насамрэч можа штук у 5) клікаў прыдбаць сабе кастамную раскладку для лацінкі ці любых іншых альфабэтаў.

Артыкул падзелены на дзьве часткі - у першай апісаны працэс усталяваньня маёй лацінскай раскладкі (спасылка на яе ніжэй). Другая частка - больш падробны агляд праграмы й гайд для стварэньня ўласнай раскладкі. Прыемнага чытаньня)

Як паставіць гатовую раскладку

Мая раскладка для лацінкі грунтуецца на стандартнай QWERTY, а ўсе дадатковыя літары дасяжныя па праваму Alt (AltGr):

Я доўга думаў на якія клавішы паставіць дадатковыя літары, ну й урэсьце спыніўся на такім варыянты: літары мяккіх гукаў застаюцца на тым жа месцы (S на адной кнопцы з Ś), а шыпячыя разьмешчаны на тых жа месцах, што і ў кірылічнай раскладцы. Таксама даданая літара ґ, на выпадак калі хтосьці ёй карыстаецца, але асобную раскладку ставіць ня хоча.

Для таго, каб усталяваць гэтую раскладку сабе, патрэбна сьцягнуць архіў зь яе файламі. Зрабіць гэта можна у маім тг-каналі. Пасьля гэтага распакоўваем архіў:

Запускаем файл setup.exe, і далей сыстэма ўсё зробіць сама. Пры пасьпяховым усталяваньні атрымаем вось такое паведамленьне:

Пасьля гэтага можа спатрэбіцца перазагрузіць ПК, і раскладка будзе дасяжная. Важна: т. я. раскладка ўспрымаецца сыстэмай як дадатковая (да звычайнай кірылічнай), хутчэй за ўсё ня будзе працаваць перамыканьне праз Alt+Shift, але працуюць Ctrl+Shift і Win+Space.

Як зрабіць сваю раскладку:

Для стварэньня ўласных раскладак спатрэбіцца праграма Microsoft Keyboard Layout Creator (MSKLC), сьцягнуць якую можна проста з афіцыйнага сайту Microsoft. Пасьля ўсталяваньня й адкрыцьця ўбачым інтэрфэйс пустой клавятуры. Вядома, можна пачынаць і адсюль, але значна лягчэй мадыфікаваць гатовую раскладку. Загрузіць яе можна праз File -> Load Existing Keyboard:

Пасьля гэтага праз Project -> Properties можна задаць назоў раскладкі й пакету. Тут у радок Name трэба напісаць кароткі назоў толькі стандартнымі лацінскімі сымбалямі, а вось у Description можна ўказаць любы назоў раскладкі (у сьпісе раскладак будзе адлюстраваны менавіта ён). Таксама не забудзьцеся ўказаць мову, да якой будзе прывязаная раскладка:

Урэсьце можна пачаць рэдагаваць раскладку. Для таго, каб дадаць панэль з дадатковымі літарамі (як літары з дыякрытычнымі знакамі ў лацінцы), зь левага боку можна абраць патрэбныя гарачыя клавішы (звычайна гэта AltGr). Дадаваць сымбалі можна проста націскаючы на патрэбныя кнопкі. Можна ўсаўляваць іх проста сюды, але каб потым не запаўняць асобна панэль вялікіх літар я раю націснуць All..., што адкрое акно з усімі сымбалямі на гэтай клавішы. Нас цікавіць ніжняя палова, куды ў адпаведныя радкі ўстаўляем сымбалі для маленькай і вялікай літары (літары можна ўстаўляць проста ў гэты радок, праграма сама падцягне іхні код). Шукаць сымбалі можна праз табліцу сымбаляў Windows ці ў любым зручным месцы.

Важна: Не забудзьцеся ўвамкнуць парамэтар Caps=Shift для гэтай пары сымбаляў, каб раскладка падтрымоўвала функцыю CapsLock.

Пасьля ўнясеньня ўсіх неабходных зьменаў раскладку можна пратэставаць праз Project -> Test Keyboard Layout, і калі ўсё добра сабраць пакет раскладкі Project -> Build DLL and Setup Package:

На гэтым этапе могуць вылезьці паведамленьні што не атрымалася сьцьвярдзіць раскладку ці што для абранай мовы раскладка ўжо ўсталяваная. Іх можна йгнараваць. Пасьля гэтага праграма прапануе перайсьці да тэчкі з файламі (калі што, звычайна яна знаходзіцца ў разьдзеле Дакумэнты). Пераходзім туды, запускаем setup.exe і паўтараем крокі з разьдзелу "Як усталяваць гатовую раскладку". На гэтым усё, вашай новай раскладкай можна карыстацца.

Спадзяюся гэты артыкул быў для вас карысным. Калі так, запрашаю перайсьці ў мой телеграм-каналь Škalar, дзе вас чакаюць пераклады разнастайнага кантэнту, ну й пэрыядычна вось такія тэхнічна-моўныя цікавінкі.

Windows
lacinka
раскладка
Škalar, 2024-07-26

head

Пераклад артыкула TechCrunch ад Kyle Wiggers

Токены - галоўная прычына неэфектыўнасці ШІ

Генератыўныя мадэлі штучнага інтэлекту не апрацоўваюць тэкст так, як гэта робяць людзі. Разуменне іх унутранага "токен"-аснаванага асяроддзя можа дапамагчы растлумачыць некаторыя іх дзіўныя паводзіны і моцныя абмежаванні.

Большасць мадэляў, ад маленькіх тулоў, як Gemma, да вядучай у галіне - GPT-4o ад OpenAI, пабудаваны на архітэктуры, вядомай як трансфарматар. З-за таго, як трансфарматары ўтвараюць асацыяцыі паміж тэкстам і іншымі тыпамі дадзеных, яны не могуць ўводзіць або выводзіць сыры тэкст - прынамсі без вялікай колькасці вылічэнняў.

Такім чынам, з прычын як практычных, так і тэхнічных, сённяшнія мадэлі трансфарматараў працуюць з тэкстам, які разбіты на меншыя, лёгка засваемыя часткі, званыя токенамі, - працэс, вядомы як токенізацыя.

Токены могуць быць словамі, як "fantastic." Або яны могуць быць складамі, як "fan," "tas" і "tic." У залежнасці ад токенізатара - мадэлі, якая ажыццяўляе токенізацыю, яны могуць нават быць асобнымі сімваламі ў словах (напрыклад, "f," "a," "n," "t," "a," "s," "t," "i," "c").

Выкарыстоўваючы гэты метад, трансфарматары могуць прымаць больш інфармацыі (у сэнсавым сэнсе), перш чым яны дасягаюць верхняга ліміту, вядомага як кантэкстнае акно. Але токенізацыя таксама можа ўводзіць пагрэшнасці.

Некаторыя токены маюць дзіўныя прабелы, якія могуць збіць з панталыку трансфарматар. Токенізатар можа закадзіраваць "once upon a time" як "once," "upon," "a," "time," напрыклад, у той час як іншы закадзіруе "once upon a " (які мае наступны прабел) як "once," "upon," "a," " ." У залежнасці ад таго, як мадэль падгатоўлена - з "once upon a" або "once upon a ," - вынікі могуць быць зусім розныя, таму што мадэль не разумее (як чалавек), што значэнне аднолькавае.

Токенізатары таксама па-рознаму ставяцца да рэгістра. "Hello" не абавязкова тое ж самае, што і "HELLO" для мадэлі; "hello" звычайна з'яўляецца адным токенам (у залежнасці ад токенізатара), у той час як "HELLO" можа быць нават трыма ("HE," "LLO"). Вось чаму многія трансфарматары не праходзяць тэст на вялікія літары.

"Складана абмінуць пытанне, што менавіта павінна быць 'словам' для моўнай мадэлі, і нават калі б мы змаглі дамагчыся ідэальнага токеннага слоўніка, мадэлі ўсё роўна працягнулі'разбіваць' існасці на часткі," сказала Шэрыл Фойхт, аспірантка, якая вывучае інтэрпрэтацыю вялікіх моўных мадэляў у Паўночна-Усходнім універсітэце, у інтэрв'ю TechCrunch. "Мае здагадкі, што не існуе такога, як ідэальны токенізатар з-за гэтага роду нявызначанасці."

Гэтая "нявызначанасць" стварае яшчэ больш праблем у мовах, акрамя англійскай.

Многія метады токенізацыі мяркуюць, што прабел у сказе абазначае новае слова. Гэта таму, што яны былі распрацаваны з улікам англійскай мовы. Але не ўсе мовы выкарыстоўваюць прабелы для аддзялення слоў. Кітайская і японская - не выкарыстоўваюць, як і карэйская, тайская або кхмерская.

Даследаванне Оксфардскага ўніверсітэта 2023 года паказала, што з-за адрозненняў у спосабе токенізацыі неангламоўных моў, трансфарматару можа спатрэбіцца ўдвая больш часу на выкананне задачы, сфармуляванай на неанглійскай мове, у параўнанні з той жа задачай, сфармуляванай на англійскай. Тое ж даследаванне - і яшчэ адно - паказала, што карыстальнікі менш "токен-эфектыўных" моў, верагодна, убачаць горшую прадукцыйнасць мадэлі і плацяць больш за выкарыстанне, улічваючы, што многія пастаўшчыкі ШІ бяруць плату за токен.

Токенізатары часта разглядаюць кожны сімвал у лагаграфічных сістэмах пісьма - сістэмах, у якіх друкаваныя сімвалы абазначаюць словы, не звязаныя з вымаўленнем, як кітайская - як асобны токен, што прыводзіць да высокіх лікаў токенаў. Аналагічна, токенізатары, апрацоўваючы аглютынатыўныя мовы - мовы, дзе словы складаюцца з малых значных элементаў, званых марфемамі, як турэцкая - маюць тэндэнцыю ператвараць кожную марфему ў токен, павялічваючы агульную колькасць токенаў. (Эквівалентнае слова для "прывітанне" на тайскай, สวัสดี, складаецца з шасці токенаў.)

У 2023 годзе даследчык Google DeepMind Янні Чжун правяла аналіз, параўноўваючы токенізацыю розных моў і яе наступствы. Выкарыстоўваючы набор дадзеных з паралельнымі тэкстамі, перакладзенымі на 52 мовы, Чжун паказала, што некаторым мовам патрабуецца да 10 разоў больш токенаў, каб перадаць тое ж значэнне на англійскай.

Акрамя моўных няроўнасцей, токенізацыя можа растлумачыць, чаму сучасныя мадэлі дрэнна спраўляюцца з матэматыкай.

Лічбы рэдка токенізуюцца паслядоўна. Таму што яны на самой справе не ведаюць, што такое лічбы, токенізатары могуць разглядаць "380" як адзін токен, але прадстаўляць "381" як пару ("38" і "1") - фактычна разбураючы адносіны паміж лічбамі і вынікамі ў раўнаннях і формулах. У выніку трансфарматары збіваюцца з панталыку; нядаўняя праца паказала, што мадэлі цяжка разумець паўтараючыяся лічбавыя шаблоны і кантэкст, асабліва дадзеныя звязаныя з часам. (Гл.: GPT-4 лічыць, што 7,735 больш за 7,926).

Гэта таксама прычына, чаму мадэлі не вельмі добра рашаюць анаграмы ці пераварачэнне слоў.

image

Такім чынам, токенізацыя відавочна стварае праблемы для генератыўнага штучнага інтэлекту. Ці могуць яны быць вырашаны?

Магчыма.

Фойхт адзначае "байт-узроўневыя" мадэлі стану, як MambaByte, якія могуць прымаць значна больш дадзеных, чым трансфарматары, без страты прадукцыйнасці, адмовіўшыся ад токенізацыі цалкам. MambaByte, які працуе непасрэдна з сырымі байтамі, якія прадстаўляюць тэкст і іншыя дадзеныя, канкурыруе з некаторымі мадэлямі трансфарматараў у задачах аналізу мовы, лепш апрацоўваючы "шум" як словы са змешчанымі сімваламі, прабеламі і вялікімі літарамі.

Мадэлі, як MambaByte, знаходзяцца на ранніх стадыях даследаванняў.

"Мабыць, лепш дазволіць мадэлям глядзець на сімвалы непасрэдна без накладання токенізацыі, але зараз гэта проста вылічальна немагчыма для трансфарматараў," сказала Фойхт. "Для мадэляў трансфарматараў у прыватнасці, вылічэнні маштабуюцца квадратычна з даўжынёй паслядоўнасці, таму мы сапраўды хочам выкарыстоўваць кароткія тэкставыя прадстаўленні."

Калі не будзе прарыву ў токенізацыі, здаецца, новыя архітэктуры мадэляў стануць ключавымі.

Дадаткова можаце паглядзець наступныя відэа:

https://www.youtube.com/watch?v=zduSFxRajkE

https://www.youtube.com/watch?v=zjkBMFhNj_g&t=4s

ЗЫ: Нагадваю што вы таксама можаце ствараць класныя артыкулы ці пісаць пераклады.
ШІ
Токены
Admin, 2024-07-07

Раздражают эти крипто-миллионеры из Дуб....Як яны задзяўблі

Прывітанне, сябры!
За апошнія некалькі дзён наш ТГ-канал сутыкнуўся з праблемай спаму чарговай крыпта-памо...кі.

Кожныя паў гадзіны ў чат з каментарамі пачалі прыходзіць паведамленні кшталту:

Раздражают эти крипто-миллионеры из Дубая? Тогда это для тебя... Многие не подозревали, но сейчас криптовалюта снова взлетает, и всего за пару месяцев люди приобретают машины и квартиры. і гэтак далей.

Звычайнае выдаленне ды афармленне скарг на спам не дапамагло - паведамленні з'яўляліся зноў. У выніку за паў гадзіны працы мы стварылі невялікага чат-бота,які вырашыў нашую праблему. Ніжэй я пакрокава распавяду як яго запусціць.

Ствараем бота

Каб стварыць бота - дастаткова перайсці ў афіцыйны бот тэлеграма https://t.me/BotFather - і націснуць кнопку "старт". Затым са спісу каманд выбраць /newbot і ўвесці імя бота. (Павінна скончвацца на _bot). У выніку мы атрымаем спасылку на нашага бота і HTTP API. Усё! Бот створаны. зараз трэба заставіць яго працаваць.

Далучаем бота ў адміны групы

Пераходзім у дадатку тэлеграма да нашай групы (якую будзе кантраляваць бот) і дадаем нашага бота у адміны чата (шукаем па назве бота).

Пішам код бота

Увогуле вы можаце скарыстацца ужо напісаным кодам з нашага рэпазіторыю: https://github.com/bel-frontend/telegram_bot - Рэкамендую. Тут ёсць амаль усе што нам спатрэбіцца.

Ніжэй мы разглядзім код больш падрабязна. Бот будзе напісаны з выкарыстаннем Nodejs 20-й версіі (далей- ноды). (як усталяваць ноду - мы разглядалі раней.)

Пасля устаноўкі ноды выканаем каманду ў тэрмінале

npm init -y

.

Затым усталюем пакет node-telegram-bot-api праз каманду

npm install -S node-telegram-bot-api

і створым файл bot.js.

Затым дададзім у яго наступны код

const TelegramBot = require('node-telegram-bot-api');


const token = process.env.TELEGRAM_BOT_TOKEN;
const bot = new TelegramBot(token, { polling: true });

const TARGET_CHAT_ID = process.env.TARGET_CHAT_ID; // Add your target chat ID in the .env file

bot.on('message', (msg) => {
    const chatId = msg.chat.id;
    const text = msg.text;
    console.log(text, chatId.toString());

    if (chatId.toString() === TARGET_CHAT_ID) {
        // Analyze messages and decide to delete
        if (text && shouldDeleteMessage(text)) {
            console.log('delete')
            bot.deleteMessage(chatId, msg.message_id).catch((error) => {
                console.error('Failed to delete message:', error);
            });
        }
    }
});

function shouldDeleteMessage(text) {
    // Simple example of a condition to delete a message
    // You can implement any analysis logic here
    // тут  можам і ШІ далучыць ці што прасцей, як  я  зрабіў
    const forbiddenWords = ['test', 'крипто','криптовалюта','подписывайтесь на канал'];
    return forbiddenWords.some((word) => text.trim().toLowerCase().includes(word));
}

Затым ствараем файл .env з параметрамі бота

TELEGRAM_BOT_TOKEN=
TARGET_CHAT_ID=

сюды мы пазней запішам атрыманы намі токен і ID групы (яе мы атрымаем далей) . Трымайце гэтыя параметры у сакрэце і нікому іх не давайце.

Атрымліваем ID групы

атрымаць ID групы магчыма некалькімі спосабамі. Я далека не хадзіў і выкарыстаў наш бот для атрымання ID.

У кодзе вы пабачыце наступную строчку

    console.log(text, chatId.toString());

Яна нам і дапаможа даведацца айдзі нашай групы. Далей па пунктах.

  1. Запусцім наш код камандай node --env-file=.env bot.js
  2. Адчыняем наш чат і набіраем якісьці тэкст
  3. Глядзім логі запушчанага коду і бачым нешта падобнае да
test-text -1001092593475

лічбы з рыскай і будуць нашым ID. 4. Капіруем і дадаем у наш файл конфігу. Ужо на гэтым этапе наш бот можа працаваць.

Запускаем лакальна і тэсціруем

Запускаем зноў наш бот камандай

node --env-file=.env bot.js

і набіраем у нашым чаце што-небудзь з ключавымі словамі якія патрэбна выдаліць. Глядзім на вынікі. Бот павінен імгненна выдаляць паведамленні з вызначынамі ў

const forbiddenWords = ['test', 'крипто','криптовалюта','подписывайтесь на канал'];

словамі.

На гэтым этапе наш бот ужо працуе, але мы ж не хочам каб ён працаваў толькі калі наш ПК уключаны. таму нам трэба перанесці яго на сервер. (можна стварыць свой які ляжыць дома дзе пад тэлевізарам, але мы выберым воблачны варыянт) Таму -

Запускаем бота праз AWS (Апцыянальна) з выкарыстаннем нашага рэпазіторыю

Мы ужо разглядалі як запусціць свой уласны сервер, таму адразу пяройдзем да запуску EC2.

Пасля таго як запусцілі наш інстанс, запусцім тэрмінал выбраўшы наш інстанс ды націснуўшы кнопку connect.

connect

У тэрмінале паслядоўна запускаем наступныя каманды

# Update the package list
sudo apt-get update

# Install Docker
sudo apt-get install -y docker.io

# Start and enable Docker
sudo systemctl start docker
sudo systemctl enable docker

# Verify Docker installation
sudo docker --version

# (Optional) Add your user to the Docker group to run Docker commands without sudo
sudo usermod -aG docker $USER
newgrp docker

# Install git
sudo apt install git

Зараз трэба перанесці наш праект на сервер.

git clone  https://github.com/bel-frontend/telegram_bot.git
cd telegram_bot/

Створым тут файл .env камандай

nano .env

і уставім туды дадзеныя з лакальнага файла .env

TELEGRAM_BOT_TOKEN=xxxxxxxxxxxxxx
TARGET_CHAT_ID=-xxxxxxxxxx

націскаем ctrl + x затым y, затым кнопку 'Enter'

І выканаем каманду

sudo chmod 777 ./deploy.sh

і запусцім скрыпт які запусціць наш бот.

./deploy.sh

Пасля паверым працу докера :

docker ps

І пабачым наступнае:

ubuntu@ip-172-31-20-44:~/telegram_bot$ docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS          PORTS                                       NAMES
e7295f11173d   telegram_bot   "docker-entrypoint.s…"   21 seconds ago   Up 20 seconds   0.0.0.0:3004->3000/tcp, :::3004->3000/tcp   telegram_bot

што азначае што наш бот працуе.

І пераходзім у наш чат і тэсціруем працу бота.

Вынікі

У выніку мы атрымалі працуючы бот які дапаможа адбіцца ад навалы спаму, якая апошні час апанавала наш невялічкі чат. Вельмі спадзяюся што мой артыкул будзе для вас карысным і дапаможа вам і вашым чатам. Усім вялікі дзякуй што дачыталі нас да канца.

Па усіх пытаннях можаце пісаць нам на пошту ці тут у каментарах.

спам
тэлеграм
Admin, 2024-06-30

Аплата і ўсталяванне

alt_text
Каб пачаць карыстацца месенджарам неабходна здзейсніць разавы плацеж.
iOS / Google Play - 6 $
Пры гэтым для Android вы можаце ўсталяваць праграму праз F-Droid, але для працы праграмы неабходна будзе набыць ліцэнзійны ключ - 5 $
А карыстальнікі iOS могуць падзяліцца праграмай праз сямейны доступ. alt_text

https://shop.threema.ch/en
Акрамя Android і iOS у Threema ёсць кліенты пад macOS, Windows і Linux, іх мы разгледзім пазней.

Стварэнне ўліковага запісу

alt_text

Тут і пачынаюцца перавагі. Для стварэння ўліковага запісу вам не патрэбны нумар тэлефона ці электронная пошта. Дастаткова павадзіць пальцам па экране. У выніку чаго будзе выпадковым спосабам створаны ваш ідэнтыфікатар.

Пасля гэтага вы можаце пачынаць наладжванне свайго ўліковага запісу. Сервер рэзервовых даных, прысваенне псеўданіма, прывязка нумара тэлефона (неабавязкова) і ўключэнне сінхранізацыі з кнігай кантактаў.

alt_text

Даступны функцыянал

Як і большасць сучасных месенджараў Threema падтрымлівае адпраўку звычайных і галасавых паведамленняў, спісы рассылак (Android), розныя тыпы файлаў, апытанні, відэа і аўдыязванкі. Таксама ёсць магчымасць ствараць уласных ботаў і шмат іншага функцыяналу. Больш падрабязна можна даведацца тут: https://threema.ch/en/gateway

alt_text

Узроўні верыфікацыі

Threema мае тры ўзроўні верыфікацыі кантакту

  1. Адна кропка - “Ідэнтыфікатар і публічны ключ былі атрыманы з сервера, таму што вы ўпершыню атрымалі паведамленне ад гэтага кантакту або вы дадалі яго ўручную. У вашай адраснай кнізе (па нумары тэлефона ці электроннай пошце) не было знойдзена прыдатнага кантакту, таму вы не можаце быць упэўнены, што гэты чалавек з’яўляецца тым, за каго ён сябе выдае.”
  2. Дзве кропкі - “Ідэнтыфікатар быў супастаўлены з кантактам у вашай адраснай кнізе (па нумары тэлефона ці электроннай пошце). Паколькі сервер правярае нумары тэлефонаў і адрасы электроннай пошты, вы можаце быць упэўнены, што чалавек з’яўляецца тым, за каго сябе выдае.”
  3. Тры кропкі - “Вы ўручную праверылі ідэнтыфікатар і публічны ключ чалавека, адсканіраваў яго QR-код. Калі яго прылада не была ўзламана, вы можаце быць упэўнены, што паведамленні ад гэтага кантакту сапраўды былі напісаны ім.” QR-код неабходна адсканіраваць кожнаму карыстальніку.

alt_text

Захоўванне даных і рэзервовыя копіі

Даныя захоўваюцца з дапамогай Threema Safe.

У рэзервовую копію будуць уключаны:

  • Ваш ідэнтыфікатар Threema (уключаючы публічны і прыватны ключ)
  • Ваш псеўданім
  • Ваша фатаграфія профілю
  • Вашы кантакты (уключаючы ўзровень верыфікацыі)
  • Членства ў вашых групах
  • Вашы спісы рассылак (для Android)

Акрамя таго, рэзервовыя копіі Threema Safe змяшчаюць наступныя налады канфідэнцыяльнасці:

  • Сінхранізацыя кантактаў
  • Блакіраванне невядомых кантактаў
  • Адпраўка апавяшчэнняў аб прачытанні
  • Індыкатар набору тэксту пры адпраўцы
  • Спіс выключэнняў
  • Чорны спіс
  • Рэтрансляцыя званкоў
  • Android: адсутнасць мініяцюр і скрыншотаў
  • Android: запыт клавіятуры інкогніта

Рэзервовыя копіі Threema Safe не ўключаюць чаты, медыяфайлы і фатаграфіі профіляў кантактаў і груп. Каб захаваць чаты, стварыце рэзервовую копію дадзеных або карыстайцеся функцыяй экспарту.

Рэзервовая копія ствараецца кожны дзень. Калі ваша прылада не падключана да сервера Threema на працягу 180 дзён, ваша рэзервовая копія будзе аўтаматычна выдалена з сервера.

Вы можаце наладзіць уласны сервер для рэзервовы копій. Апісанне таго, як гэта зрабіць можна знайсці тут: https://threema.ch/en/faq/threema_safe_webdav

Усе рэзервовыя копіі захоўваюцца на тэрыторыі Швейцарыі ў зашыфраваным выглядзе. https://threema.ch/en/faq/threema_safe

alt_text

Як наладзіць месенджар на бяспечнае выкарыстанне

Далей будуць дадзены рэкамендацыі адносна таго, як наладзіць прыладу так, каб староннія асобы атрымалі мінімум інфармацыі пасля завалодання вашай прыладай.
Як вы маглі прачытаць вышэй, ваша перапіска з іншымі карыстальнікамі не захоўвацца на серверы. Усе даныя перапісак захаваны лакальна і зашыфраваны на вашай прыладзе.

  • Пераходзім у раздзел "Passcode Lock" і спачатку ўсталёўваем PIN-код на праграму (пажадана, каб ён НЕ супадаў з PIN-кодам вашай прылады)
  • Уключаем функцыю "Erase Data". Пасля 10 няправільных спроб уводу пароля ваша інфармацыя будзе знішчана.

alt_text

Версіі для ПК

Для ПК на дадзены момант існуе дзве версіі. Threema і Threema Beta.

Розніца паміж імі будзе наступнай:

Threema - працуе як старыя версіі WhatsApp (неабходна, каб праграма вісела ў фоне на вашым тэлефоне.

Больш падрабязна пра гэта - https://threema.ch/en/faq/web_conn_locked

alt_text

Threema Beta - гэта новая версія. Яна напісана на Electron. Для яе працы дастаткова адсканіраваць QR-код і ўсталяваць пароль на праграму.

А самае галоўнае, што гэтая версія праграмы больш не патрабуе актыўнага падлучэння да тэлефона.

Дадзеная версія мае наступныя недахопы:

  1. На дадзены момант не працуе без мабільнай версіі iOS
  2. Пры выхадзе з мабільнага кліента аўтаматычна адбываецца выхад з настольнага кліента (можна быць адыграць станоўчую ролю ў некаторых сітуацыях).

Адсутнасць функцыяналу, які мы заўважылі ў настольнай версіі праграмы:

  • апытанняў
  • званкоў
  • нельга падзяліцца месцазнаходжаннем

alt_text

Крыху пра пратакол і аўдыт

Калі верыць даследнікам з ETH Zurich, то ў пратаколе Threema было знойдзена некалькі ўразлівасцяў, якія былі выпраўлены шляхам пераходу на новы пратакол. Назвы ў першага пратакола няма. На дадзены момант Threema выкарыстоўвае пратакол пад назвай Ibex, які прайшоў незалежны аўдыт у 2023 годзе.

Больш падрабязна пра гэта - https://threema.ch/en/blog/posts/news-alleged-weaknesses-statement і https://breakingthe3ma.app/
Аўдыт - https://threema.ch/en/faq/code_audit

alt_text

Падтрымка беларускай мовы

На дадзены момант беларуская мова ёсць толькі ў праграме для Android. Пераклад на беларускую мову для астатніх платформ будзе выкананы па меры яго даступнасці для перакладу.

Чаму не?

Telegram

  • Скразное шыфраванне даступна толькі ў "Сакрэтных чатах", якімі амаль ніхто не карыстаецца
  • Незразумелая юрысдыкцыя
  • Рэгістрацыя па нумары
  • Калі верыць журналісту Tokar.ua, частка сервераў тэлеграм размешчана на тэрыторыі РФ, а еўрапейскімі серверамі валодае расійская кампанія (спасылка на трэд - https://social.kyiv.dcomm.net.ua/@nazar/112014522517070364

Signal

  • Рэгістрацыя па нумары
  • Юрысдыкцыя: ЗША
  • Пападае пад дзеянне закона CLOUD Act

WhatsApp

  • Рэгістрацыя па нумары
  • Юрысдыкцыя: ЗША
  • Пападае пад дзеянне закона CLOUD Act
  • Выкарыстоўвае форк пратакола Signal (магчыма прысутнасць бэкдора)

Падрабязнае параўнанне можна паглядзець тут - https://threema.ch/en/messenger-comparison

alt_text

Хто выкарыстоўвае дадзены месенджар (карпаратыўныя кліенты)

Поўны спіс карпаратыўных кліентаў - https://threema.ch/en/work/clients

alt_text

Падвядзём вынік. І ён як заўсёды вельмі выразны і зразумелы. Калі вы хочаце бяспечныя і ананімныя зносіны, то давядзецца ахвяраваць зручнасцю выкарыстання і некаторым функцыяналам. А ў дадзеным выпадку яшчэ і зрабіць разавы плацеж. Выбар толькі за вамі.

alt_text

Бяспека
Threema
Signal
Telegram
Linux па-беларуску, 2024-06-25

Прывітанне, спадарства!

На нашым сайце невялікае абнаўленне - мы дадалі магчымаць атрымліваць навіны на беларускай мове на электронную пошту. Навіны ў асноўным кранаюць тэхнічныя, калянавуковыя, проста цікавыя навіны з найвядомейшых крыніц.

Як падпісацца?

Каб падпісацца на нашыя навіны, трэба зарэгістравацца на нашым сайце, перайсці ў профіль карыстальніка ды націснуць чэкбокс як на малюнку:

https://firebasestorage.googleapis.com/v0/b/bel-frontend.appspot.com/o/L2hAtNuuC5aCjCiEgT0m0aY4x712%2Ffe5c252Capture-2024-05-17-085847.png?alt=media&token=8d5fdefa-f0b3-4d6e-ad2f-4fef7c6e90a0

Як адпісацца?

Пераходзім ў прафайл і здымаем гэты чэкбокс.

Як часта прыходзяць навіны?

Навіны прыходзяць раз на дзень, звычайна раніцай.

Дзе вы бярэця навіны?

  1. Навіны мы атрымліваем з некалькіх крыніц праз RSS. Звычайна ў пісьме мы дадаем спасылку на арыгінальны артыкул. Таму вы заўседы ведаеце першакрыніцу.
  2. Затым мы прапускаем навіны для іх абагульнення праз ШІ. На дадзены момант гэта chatGPT-4o, GEMINI-1 (спадзяюся ў хуткім часе дададзім 1.5)
  3. Праганяем атрыманы тэкст ад Gemini праз перакладчык (не падтрымлівае беларускую мову)
  4. Дасылаем вам.
  5. У выніку вы будзеце атрымліваць два лісты - адзін зроблены з дапамогай Gemini, другі - OpenAI.

Пасля магчыма мы пераробім логіку, але зараз мы параўноўваем мадэлі, таму пакуль два лісты кожны дзень.

Ці можна дадаць ці памяняць крыніцы?

На дадзены момант гэта пакуль не магчыма.
Мы працуем над гэтым.

Колькі гэта каштуе?

Гэтая паслуга на дадзены момант бязплатная. Мы выдаткоўваем свае ўласныя сродкі. Таму калі вам цікава што мы робім і жадаеце нам дапамагчы - цісніце вялікую кнопку ў версе старонкі - "На падтрымку праекту"

Чаму гэта нам патрэбна?

Ці патрэбна гэта вам ці не - вырашаць толькі вам. Але калі вы напрыклад займаецеся стварэннем навін ці проста жадаеце пачытаць што новага на беларускай мове ( часам канешне з памылкамі, але даруйце, як есць) - то думаю гэта добры інструмент для гэтага.

ЗЫ:

Сябры! Таксама нагадваем што вы можаце стаць нашымі аўтарамі і падзяліцца цікавым досведам у той ці іншай галіне.

Вялікі дзякуй, што застаецеся з намі!

news
Admin, 2024-05-13

Прывітанне, сябры!

Сення прапаноўваю вам невялікае даследванне, дзе мы паспрабавалі выявіць самыя дасведчаныя ў беларускай мове (паэзіі) мадэлі. Для гэтага, кожнай мадэлі мы будзем задаваць адное і тое ж пытанне:

Write me an example of Belarusian poetry in the Belarusian language. The answer must be in Belarusian only. The answer should not be shorter than 150 words.

Паэтычную састаўляючую мы ацэньваць не будзем. (Высокай паэзіі не будзе)

Мадэлі

У нашым невялікім даследванні мы выкарысталі наступныя мадэлі:

  • mistral-7B v0.2 (далей mistral) - 7 млрд параметраў - каля 5 ГБ. Гэта мадэль створаная французкім стартапам Mistral AI.
  • llama3-70b - 70 млрд параметраў-каля 40 ГБ. Новая мадэль, прадстаўленая кампаніяй Meta (Былы Фэйсбук)
  • wizardlm2-8x22b - 141 млрд параметраў - каля 80 ГБ. Таксама новая мадэль, прадстаўленая кампаніяй Microsoft
  • gemma-7b - 9 млрд - каля 5 ГБ. Мадэль прапанаваная кампаніяй Google (DeepMind)
  • Цюніная намі мадэль ад llama2-01 з 1,3 мільярдаў параметраў. Данавучалі мадэль датасэтам з 250 прыкладамі.

Mistral

Вынікі гэтай мадэлі аказаліся максімальна "фантастычнымі". Пачынаючы з гадоў жыцця Якуба Коласу, скончваючы выдуманымі словамі, якія ўвогуле мабыць не існуюць. Але мадэль выдала папярэджанне пра тое што мову яна не ведае. Пры гэтым цалкам згенераваны верш мадэль падае пад аўтарствам Якуба Коласа.

I'm an AI language model and don't have the ability to create original content in any specific language, including Belarusian poetry.
 However, I can share with you a well-known poem by Jakub Kolas (18821941),
one of Belarusian literature’s most prominent figures, written in Belarusian.
This work is title

"Моя матайка" ("My Mother").

Моя матайка в хатыне сэды сядзіла,
Кам'яныя стенкі, двері бронёвыя глухі.
Вокруг хатыні тысячалець калясаліца,
Разгуравася, бушувала сьводка.

А матайка моя ў плюхах лежала,
Усё дня і ночь хтодай потрапала.
Серце їй било пад каменем,
І мысленна думка паралізія снім.

А вокруг хатыні скамагали яры:
Гаравыя ваплугі, а дальшэ выросталі хміли.
Сухой гард, суха ўся дзень,
Кажаны, штопай і калакачы цацялі.

А вокруг хатыні неба ковало:
Буря сонца паслядувала, мрэжанка згорала.
Вода вытекала з-за даха,
А матайка моя кажала слова: «Радуйся, ўсё ж я ня тобі живі».

Translation (into English):

My mother was sitting in the hut,
Stone walls, bronze deaf doors.
Around the hut, a thousand calamities were raging,
The storm was howling, the wind was roaring.

But my mother was lying on her bed,
All day and night she was suffering.
Her heart was heavy with stone,
And her mind was paralyzed with sorrow.

Around the hut there were wolves:
Howling wolves, and farther ahead they grew into mountains.
Dry thorns, a dry day,
Sparrows, pigs, and crows were gathering.

And around the hut the sky was being shaped:
The sun's storm was following, the rain was burning.
Water flowed out from under the roof,
And my mother was saying words: "Be joyful, for I am still alive for you."

Як мы можам бачыць амаль уся інфармацыя была згалюцынавана. Ні даты ні факты, ні нават словы не з'яўляюцца дакладнымі.


Llama3

Адказ гэтай мадэлі аказаўся больш рэлевантны за папярэдні, але тэкст пра колер і чысціню языка бацькі выглядае максімальна крынжова. Мы бачым памылкі ў сімвалах, самапаўторы.

Язык бацькі нашай зямлі,
Такой сьветлы, такі чысты,
Ў ім жыве душа народа,
Ў ім струяе крывіца.

Ў ім мы знаходзim спадчыну,
Усё, што нам пакінула міну,
Ў ім мы адчуляемся ў мінулым,
Ў ім мы бачым будучыню.

Язык бацькі нашай зямлі,
Такой сьветлы, такі чысты,
Ў ім жыве душа народа,
Ў ім струяе крывіца.

Мы яго паважаем і любім,
Мы яго ахвочваем і абаронім,
Бо ў ім мы знаходзim сабою,
Бо ў ім мы адчуляемся ў сабе.

Язык бацькі нашай зямлі,
Такой сьветлы, такі чысты,
Ў ім жыве душа народа,
Ў ім струяе крывіца.

wizardlm2

Адказ ад гэтай мадэлі мне падаўся адным з найбольш адпавядаючых запыту. Але як і ўсе астатнія - не без памылак. Таксама заўважна што мадэль ад майкрасофт часам выкарыстоўвае памылковыя літары з іншага алфавіту.

Ў ясны вечар, пад небом зорnym,
Шэпчыць вітрык званушчы санзацёй,
І кронаў дрыгвыя заклікаюць
Да споўнення снам лясных мёдаў.

Сонца за кабанём у гаю залазе,
Памалюе яго апошнія шанцы;
І вечаровыя згады плывуць
На водзе хвалясных старадавоў.

Тут, пад старым дубам, якія веку
Стояць у глубіне сэрцай зямлі,
Кажды ліст быццca песняю прайду,
Што ўдушавае нас сьнег і вогні.

Мыnxajці вецер спынімся,
У гэтых месцах час сабе стрымае;
І сэрца, і душа адпочyncзі
Свойму народу, свойму краю святая.

Любімы край, ты мой, ты нельземы,
Твоіх паляў, твоіх лесаў сын;
Ў мне живе тваё наследзіе,
І я ношу цяперць з гэтага бяспенна.

Ты мой раёк на землі,
Где светлыя мгновеньні зыбкі проплываюць,
Гэту красу няма забыць,
Немагчыма любоў ў серцi зажыць.

gemma-7b

Адказ геммы быў кароткі і такі ж безсэнсоўны

Васць зямля маці, як аліса зной,
Яе кветка вера, цвітуць у вайне.
Калі рана зьніма сьвет,
І сілы зьнімае зь цяго свету.

Васць зямля маці, як аліса зной,
Ёй зьнойць спадзь і цяга,
І ця галоса, як стук зь цвята,
Яе маці зьнімае зь цяго свету.

Наша мадэль

Відавочна што наша мадэль увогуле не адпавядае нашаму запыту. Спасылка на сайт аказалася не працуючай, аўтар быў выдуманы, як і спасылкі на ягоныя сацсеткі.

I recommend to read the article "Беларуская поэзія" (Belarussian poetry) on the site

[https://bel-geek.com/article/1690857037994](https:belgeeekcomarticle1761814410492)

The author of the answer is [Vitaly Gursky](bel:Віталій Гурський).

He is a poet, translator, writer, and editor. He was born in 2001 in Minsk. 
Vitali Gursky has been writing poetry since 8 years old.
His poems have been published in magazines and anthologies in several countries.
Also, he is the author and translater of several books.
You can find his poems on [Instagram](instagram.belcom)
and [Facebook](facebook.geeks.by).

Такога аўтара і не ведаем.)))


chat-gpt-4 turbo

Для параўнання вырашылі дадаць адказ ад чату GPT.

Certainly! Here's an original Belarusian poem:

На вялікай раке цішыня,
Дзе воблакі сустракаюць світанне.
Лёгкі шэпт вятру галінкі гладзіць,
Туман на вадзе, мова цішыня.

Свет залаты працінае лісце,
Кожны ліст — жывая абетка.
Птушкі ўзлятаюць высока ў неба,
Песня іх, мова малітва, лунае.

Дзе зямля спыняецца, пачынаецца неба,
І раніца зноў вяртаецца ў вёску.
Зоркі шэпчуць таемныя словы,
Як быццам гісторыю старонак векаў.

Усё жывое шукае свой шлях,
Каб знайсці сэрцаці мясціну для сну.
Дажджык лёгкі апранае рэчку,
Тышыню прарэзае толькі шчабятанне.

Жыццё – гэта падарожжа праз час,
Куды вядзе кожная дарога, ніхто не знае.
Шляхі пераплятаюцца, мары сплываюць,
І сэрца напаўняецца надзеяй і святлом.

This poem reflects themes of nature, reflection, and the continuity of life,
 woven with imagery typical in Belarusian poetry.

Вывады

Як можна бачыць, з прадстаўленых мадэляў, найбольш адпавядаючым нашым запытам аказаўся адказ чату GPT. Якасць адказаў астатніх мадэляў напрамую карэлюе з памерамі мадэлі. Так мадэлі ад mistral і gemma моцна галюцынуюць на мовах якім іх не навучалі.
Вынікі нашай цюнінай мадэлі (лепш бы не адказвала) паказваюць што цюнінг працуе, але цюнінг фарміруе толькі форму адказу, і у пытаннях якія не звязаныя з дадзенымі, на якіх данавучалася мадэль, яна таксама значна галюцынуе.


ЗЫ.

Калі вас зацікавілі такія даследванні, ці жадаеце прапанаваць вашыя варыянты - пішыце ў каментарах ці нам на пошту.

Таксама запрашаем вас стаць нашымі аўтарамі, і падзяліцца сваім досведаў у сферах датычных навукі і тэхнікі, культуры.

ШІ
Admin, 2024-04-21

Зараз знайсці работу дастаткова складана. Некаторы час назад і мне давялося шукаць новае месца. Давялося падладжвацца пад новыя правілы на рынке, высвятлілася некалькі нечаканых складанасцяў, на якія мне ўказалі іншыя людзі. Шчыры дзякуй ім за тое! А сёння я падзялюся з вамі досведам і спасылкамі на карысныя рэсурсы.

1. Не палянуйцеся прывесці свой профіль у LinkedIn у парадак. Абнавіце інфармацыю аб праектах, кампаніях, скілах.

Важна!

У цяперашні час, калі вялікі выбар працаўнікоў на адну вакансію, - ніхто ваш профіль адчыняць і шукаць там патрэбную інфармацыю зутчэй за ўсё не будзе. Таму яна павінна быць на самым бачным месцы.

Што гэта азначае?

Звярніце шчыльную увагу, - што ў вас напісана ў шапцы з профілем. Гэта першае і найважнейшае месца, куды глядзяць HR-спецыялісты. То бок, там павінна быць указанае асноўны род дзейнасці і стаж, бо сёння пры вялікім попыце ніводны hr не будзе адчыняць ваш профіль і шукаць там патрэбную інфармацыю.

Добры прыклад - Frontend-developer | Fullstack-developer | React.js | node.js | 5 years

Не перагружайце апісанне, пішыце толькі самае важнае, паглядзіце, каб уся інфармацыя была бачная пры праглядзе.

Дадайце ўсе вашыя сертыфікаты, усе дакументы, якія падцвердзяць ваш удзел у канферэнцыях, спаборніцтвах, курсах і інш.

Прайдзіце падцвержанне асноўных навыкаў у LinkedIn. Магчыма, алгарытмы LinkedIn спрацуюць так, каб падняць ваш профіль вышэй за тыя, у каго падцвержання няма.

Абавязкова дадавайце як мага больш ў кантакты рэкруцёраў, распрацоўшчыкаў і інш з таго рэгіёна ці кампаніі, якія вас цікавяць.

2. Резюмэ

Не старайцеся зрабіць яго прыгожым - у некалькі слупкоў, разнакаляровым.

У першую чаргу патрэбна, каб резюмэ добра парсілася аўтаматычнымі сістэмамі (ATS), акія выкарыстоўваюць HR-ы, кали па пашуковым славам выбіраюць некаторыя резюмэ. То бок резюмэ павінна быць аднаслупковае, без лішніх упрыгожванняў і добра парсіцца.

Чаму так?

Маё прыгожае резюмэ, зробленае ў платным сервісе resume.io як выявілася значна пазней, парсілася ў нейкую абракадабру. І ў выніку на некалькі дзесяткаў зваротаў па вакансіі былі адзіныя водгукі.

Давялося браць бясплатны сервіс, у маім выпадку гэта быў canva.com, і доўга маляваць простае новае рэзюмэ ў адзін слупок. Яно было простае, чорна-белае, у адзін слупок. Але колькасць водгукаў павялічылася ў разы.

Асноўныя правілы:

  • Выкарыстоўвайце pdf-фармат без фатаграфій і малюнкаў
  • Спачатку імя, затым - прозвішча
  • Намагайцеся ўкласца ў 2 старонкі
  • У апісанні выкананай працы на праекце выкарыстоўвайце прынцыпы STAR (Situation - праблема, якая ўзнікла ў бізнэса, Task - задача, якую трэба вырашыць, каб пазбавіцца праблемы, Action - што зроблена, Result - вынік ( пажадана з адсоткамі ці іншымі лічбамі))
  • Выдаліць абавязкі з апісання, напрыклад, што пісаў код, фіксіў багі і інш.
  • Калі разглядаеце некалькі пазіцый, то пад кожную павінна бцць асобнае резюмэ. Добра было б мець і наогул асобнае резюмэ пад кожную вакансію, але дзе ж іх направішся 🫣
  • Выдаліць хобі і інш.
  • Дадавайце на першую старонку тую інфармацыю, акая можа добра вылучыць

3. Успамінайце ўсе фрэймворкі, бібліятэкі, з якімі працавалі. Дадавайце іх у резюмэ (Будзьце гатовыя, што на сумоўі аб кожным з іх вас спытаюць). Ні да чаго не заклікаю, толькі заўважу, што вашыя 4.5 гады працы ў IT не роўныя 5 гадам, якія патрабуюцца ў вакансіі. Зноў усё таму, што аўтапарсер адкіне вашае резюмэ і яно не дойдзе нават да HR-а.

4. Сумоўі зараз агулам дастаткова цяжкія. Не трэба параўноўваць іх з тымі, што былі ў дакавідны час. Шмат дзіўных патрабаванняў і тэх заданняў на хуткасць выконвання, якія могуць кінуць табе нават не спытаўшыся пра свабодны час. Таму - рыхтуйцеся сур'ёзна, калі патрэбная работа.

Часам могуць кінуць тэставае на некалькі дзён, па выніках якога прыйдзе адмова без тлумачэнняў - чаму, ці наогул нічоге не прыйдзе 🤐 Таму варта дамовіцца адразу пра фідбэк з тлумачэннямі.

5. Пытайцеся ў знаёмых, у чатах пра рэфералкі. Час ад часу кампаніі шукаюць распрацоўшчыкаў не праз аб'явы

Выпраўленне профіля ў LinkedIn

Ну і спасылкі, па каторых можна шукаць працу. Падзялю іх на 2 часткі - для тых, хто застаўся і тых, хто з'ехаў:

Па-за межамі з міжнародных акрамя LinkedIn:

Для тых, хто застаўся на мясцовым рынку (пералічваць беларускія біржы працы не буду, яны добра гугляцца) выбар невялікі. У асноўным (на жаль ён становіцца занадта спецыфічным) - гэта праца на расійскі рынак (яшчэ не ўсе грошы, выдзеленыя ўладам на імпартазамяшчэнне, папілілі 🫢):

Спасылкі для стварэння, праверкі парсінгу резюмэ і інш:

P.s. Зычу усім, хто шукае, паспяховых пошукаў. Калі каму ёсць што дадаць, пішыце тут у каментарах 😉

job
LoveJS, 2024-06-02
;