Next-Level Alert Analysis with DeepSeek and Zabbix

Post Syndicated from Zhe Cheng original https://blog.zabbix.com/next-level-alert-analysis-with-deepseek-and-zabbix/30424/

As IT infrastructures grow increasingly complex, efficiently analyzing monitoring data and accelerating incident response have become critical challenges for operations teams. This post explores a few innovative applications of DeepSeek when integrated with Zabbix.

Requirements:

– Zabbix server 7.0 or higher
– DeepSeek API (Alternatively, other AI APIs can be used if needed)

1. Scenario One: One-Click Intelligent Alert Analysis

By integrating DeepSeek Analytics into the Zabbix frontend, users can conduct intelligent alert analysis with just one click. This integration facilitates the swift generation of comprehensive fault analyses and solution suggestions, markedly decreasing the MTTR (Mean Time to Resolution). Consequently, it streamlines the troubleshooting process, alleviates the workload on IT personnel, ensures system stability, and conserves both time and resources.

1.1  On the Zabbix home page, navigate to “Alerts” > “Scripts”, and click on the “Create script” button.

1.2  Configuration script:

  • Name: Can be customized
  • Scope: Select “Manual event action”
  • Menu path: Customize menu paths for quick access
  • Type: Select “Script”
  • Execute on: Select “Zabbix proxy or server”

1.3 Enter the following command in the command bar:

/etc/zabbix/scripts/send_alert_to_ai.sh "{TRIGGER.NAME}" "{TRIGGER.SUBJECT}"  "{HOST.NAME}" "{HOST.IP}" "{EVENT.TIME}" "{TRIGGER.SEVERITY}"

1.4  Create an API call script on zabbix-server.

1.4.1 Modify the Zabbix Server Configuration File and Enable Global Scripts:

Open the Zabbix server configuration file for editing:

vi /etc/zabbix/zabbix_server.conf

Set the EnableGlobalScripts option to 1:

EnableGlobalScripts=1

Save the changes and exit the editor. Then, restart the Zabbix server service to apply the changes:

systemctl restart zabbix-server

1.4.2 Create an API Call Script.

Create a directory for custom scripts if it does not already exist:

mkdir -p /etc/zabbix/scripts && cd /etc/zabbix/scripts

Note: If the frontend prompts that the script file cannot be found, try moving the script to the directory used by the Nginx agent. Create a new script file named send_alert_to_ai.sh:

vi send_alert_to_ai.sh

Add the following content to the script, replacing DeepSeek KEY with your actual API key. Make sure you adjust the API call method if using a different AI service:

#!/bin/bash

# DeepSeek API configuration
API_URL="https://api.deepseek.com/chat/completions"
API_KEY="xxxxxxxxxxxxxxxxxxxx"

# Obtain the parameters to be passed as alarm information
TRIGGER_NAME="$1"
ALERT_SUBJECT="$2"
HOSTNAME="$3"
HOST_IP="$4"
EVENT_TIME="$5"
TRIGGER_SEVERITY="$6"

# Build a more concise JSON format for alarm information
alert_info=$(cat <<EOF
{
"model": "deepseek-chat",
"messages": [
{"role": "system", "content": "You are an assistant focused on responding quickly to system alarms。"},
{"role": "user", "content": "The following alarm information is received:\n\n: $TRIGGER_NAME\n: $ALERT_SUBJECT\n: $HOSTNAME\n: $HOST_IP\n: $EVENT_TIME\n: $TRIGGER_SEVERITY\n\nPlease tell me the cause of the alarm and the handling measures in a short and professional language with a word limit of 300 words。"}
],
"stream": false
}
EOF
)

# Send the POST request and capture the response and HTTP status code
response=$(curl -s -w "\n%{http_code}" -X POST "$API_URL" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $API_KEY" \
-d "$alert_info")

# Separate HTTP status codes from response bodies
http_code=$(echo "$response" | tail -n1)
response_body=$(echo "$response" | sed '$d')

# Parse and extract the content field
if [ "$http_code" -eq 200 ]; then
# Parse JSON using the jq tool
if ! command -v jq &> /dev/null; then
echo "jq could not be found, please install it first."
exit 1
fi

# Extract the content field and format the output
content=$(echo "$response_body" | jq -r '.choices[0].message.content')
echo -e "Analysis result:\n$content"
else
echo "failure: HTTP status code $http_code, respond: $response_body"
fi

Make the script executable:

chmod +x send_alert_to_ai.sh

Note: The script provided invokes the official DeepSeek API. Replace DeepSeek KEY with your actual API_KEY. If you are using another AI service, please confirm the appropriate API invocation method.

Important Notes:

Note: The script relies on jq to process and parse JSON data for tasks such as filtering, mapping, aggregating, and formatting. If jq is not installed on your system, follow these instructions to install it.

For Debian/Ubuntu Systems:

apt-get update
apt-get install jq

For CentOS/RHEL Systems:

yum install epel-release
yum install jq

1.5 Actual Effect Display:

1.6  Optional Optimization Items.

1.6.1 Adjust Output Box Size for Better Browsing.

After executing the script, you may find that the output box is too small and inconvenient to browse. To optimize this, you can modify the front-end CSS file as follows.

Back up the existing CSS File:

cd /usr/share/nginx/html/assets/styles/
cp blue-theme.css blue-theme.css.bak

Edit the CSS File:

vi /usr/share/nginx/html/assets/styles/blue-theme.css

Add Custom Styles at the End of the File.

Add the following CSS rules to adjust the size and behavior of the output box:

#execution-output {
height: 500px; /* Adjust to your desired height */
width: 540px; /* Optional: Adjust the width as required */
overflow-y: auto; /* Displays scrollbar when content exceeds the set height */
}

Save and exit the editor. At this point, clear the browser cache and reload the page to see the changes take effect.

1.6.2 How to Optimize Slow Output Response after Executing the One-Click Analysis Script.

During actual testing, it was estimated that returning a 300-word result takes approximately 20 to 30 seconds. While you can improve the response speed by adjusting the preset prompt words in the script, this approach may reduce the richness of the analysis content. Therefore, it is recommended to balance speed and content depth by adjusting the number of replies in the script’s prompt words according to your actual needs.

Actual effect display:

2. Scenario Two: Zabbix Documentation Knowledge Base Assistant

In today’s fast-paced IT environment, managing and retrieving information efficiently is crucial. To address this need, we’ve developed the Zabbix KB Assistant, an intelligent knowledge base solution built on MaxKB—an open-source Q&A system leveraging large language models.

This assistant streamlines access to Zabbix’s extensive documentation, making it easier than ever for users to find the information they require.
MaxKB stands out for its seamless integration capabilities, allowing for quick uploads of documents and automatic crawling of online content.

Its flexibility means it can be effortlessly embedded into third-party systems, including our very own Zabbix platform. The project is available at the GitHub repository.

The development process of Zabbix KB Assistant involved configuring MaxKB to recognize and parse the official Zabbix documentation. By utilizing this URL, we ensured that the latest updates and comprehensive guides are always accessible within our assistant. After setting up the core model configurations, we created a dedicated knowledge base tailored to Zabbix’s rich content.

With the knowledge base in place, we proceeded to integrate Zabbix KB Assistant into the Zabbix frontend. This step was essential for providing instant access to users navigating the Zabbix interface. By embedding a floating window mode, users can interact with the assistant without leaving their current page—a feature that significantly enhances user experience.

Actual effect display:

3. Scenario Three: DingTalk Alert Enhancement

By integrating DeepSeek’s deep analysis capabilities, DingTalk can automatically analyze alarm information upon receiving alerts. This integration provides precise fault diagnosis and solutions, aiding IT operations and maintenance personnel in quickly identifying and resolving issues. Consequently, this improves the efficiency of system maintenance and reduces downtime.

3.1 Create a Bot and Configure Security Settings.

First, create a new bot within the DingTalk group and ensure that the keyword “Alarm” is properly configured in the security settings. Next, retrieve the webhook URL for this bot and keep it safe for later use.

3.2 Install Python3 and Necessary Libraries.

Ensure that Python3 along with the required libraries are installed on your system. Depending on your operating system, follow these instructions.

For Ubuntu/Debian systems:

sudo apt update
sudo apt install python3 python3-pip
pip3 install requests

For CentOS/RHEL systems:

sudo dnf install python3
pip3 install requests

3.3 Below is an example script (deepseekdingding.py) located at /usr/lib/zabbix/alertscripts/.

Replace the placeholder webhook URL and DeepSeek API key in the script with your actual values:

#!/usr/bin/env python3
#coding:utf-8
import requests
import sys
import json

class DingTalkBot(object):
    # Send an alarm
    def send_news_message(self, webhook_url, subject, content, ai_response):
        url = webhook_url
        data = {
            "msgtype": "markdown",
            "markdown": {
                "title": subject,
                "text": f"{subject}\n{content}\n\n【DeepSeek analysis】:\n\n{ai_response}"  
            }
        }
        headers = {'Content-Type': 'application/json'}
        response = requests.post(url, headers=headers, data=json.dumps(data))
        return response

if __name__ == '__main__':
    WEBHOOK_URL = 'https://oapi.dingtalk.com/robot/send?access_token=224c1ff0c6df60a809b3c5b69b8448486b780d292e9d395ac8fbf84980214e30'  # Webhook
    API_URL = 'https://api.deepseek.com/chat/completions'
    API_KEY = "xxxxxxxxxxxxxxxxxxxx"  # DeepSeek API

    if len(sys.argv) < 3:
        print("Error: Not enough arguments provided.")
        sys.exit(1)

    subject = str(sys.argv[1])  
    content = str(sys.argv[2])  

    print(f"Received subject: {subject}")
    print(f"Received content: {content}")

    try:
        headers = {
            'Authorization': f'Bearer {API_KEY}',
            'Content-Type': 'application/json',
        }
        payload = {
            "model": "deepseek-chat",  # DeepSeek
            "messages": [
                {"role": "user", "content": f"If you are a professional IT operation and maintenance expert, please tell me the cause of these alarms and handling suggestions in a concise and professional language with a word limit of 100 words{content}"}
            ]
        }
        ai_response = requests.post(API_URL, headers=headers, json=payload)
        ai_response.raise_for_status()  
        ai_response_content = ai_response.json().get('choices', [{}])[0].get('message', {}).get('content', '')
    except Exception as e:
        ai_response_content = "\nThe interface call timed out or an error occurred. Please check the configuration and try again"

    bot = DingTalkBot()
    response = bot.send_news_message(WEBHOOK_URL, subject, content, ai_response_content)

    if response.status_code == 200:
        print("successfully")
    else:
        print(f"failed: {response.text}")

3.5 On the Zabbix home page, go to Alerts – Media types – Create Media type and then enter the following information:

  • Name: aiAlarm-Dingtalk
  • Type: script
  • Script name: deepseekdingding.py
  • Script parameter: {ALERT.MESSAGE} {ALERT.SUBJECT}

3.6 Create an alarm action.

Go to Alarm – Action – Trigger actions – Create action and set the name to Alarm -deepseek. Select this parameter as required:

Edit the action options as follows:

Send to media type aiAlarm-Dingtalk
Topic fault alarm: {EVENT.NAME}
message
【Zabbix Alarm Notification 】

Alarm group: {TRIGGER.HOSTGROUP.NAME}

Alarm host: {HOSTNAME1}

Alarm time: {EVENT.DATE} {EVENT.TIME}

Alert level: {TRIGGER.SEVERITY}

Problem information: {TRIGGER.NAME}

Confirm the update.

3.7 Configure notification rights for users.

The following item is added to the “User-User-Alarm” media dialog box. Once added, click Update.

Actual effect display:

4. Scenario Four: One-Click System Service Deep Analysis

Our solution integrates DeepSeek analysis to offer a one-click intelligent inspection tool that automates the collection of service configurations, logs, and status from within your system. This information is then sent via API to DeepSeek for comprehensive analysis.

Our approach begins by extracting relevant configuration data, recent log entries, and current service statuses. These pieces of information are combined with predefined prompts and submitted to DeepSeek through its API. For instance, a prompt might look like this:

“Here are the current logs for XXX service:\n\n${recent_logs}\n\nService. Status is as follows:\n${service_status}\n. Please analyze the following four aspects based on this information and provide a concise report within 500 words: service status analysis, configuration review, historical issue examination, and troubleshooting recommendations.”

DeepSeek processes this input to perform a detailed breakdown across these four areas, delivering structured feedback and actionable insights.
This integration offers deep system analysis and precise optimization suggestions, enabling swift responses to system changes or anomalies. It aids administrators in promptly identifying and addressing issues.

In addition, it’s easily integrated into existing monitoring systems, allowing adjustments to the depth and scope of analysis as needed. The solution boasts high scalability and flexibility, catering to evolving business requirements.

Actual effect display :

The post Next-Level Alert Analysis with DeepSeek and Zabbix appeared first on Zabbix Blog.

„Киберпънк 2077“. Удоволствие и лудонаративен дисонанс

Post Syndicated from original https://www.toest.bg/kiberpunk-2077-udovolstvie-i-ludonarativen-disonans/

„Киберпънк 2077“. Удоволствие и лудонаративен дисонанс

Миглена Николчина: Всички сме играли в прехлас „Киберпънк“ (Cyberpunk 2077), така че, надявам се, да ви привлека в обща дискусия за една особеност на видеоигрите, която в предишен разговор Северина Станкева въведе чрез понятието „лудонаративен дисонанс“. Лудонаративният дисонанс назовава несъвпадението на повествованието и игровата механика, което е доста чест, дори преобладаващ момент. Северина дава като типичен пример „Последните от нас“ (The Last of Us),

където разказът се концентрира върху моралните дилеми на главния герой в постапокалиптичен свят на зомби зараза, а в същото време играчът прекарва времето си, поемайки контрол над този герой, да убива всичко живо и неживо, без въобще да е поставен в позиция да се двоуми.

Понякога този дисонанс е вграден в иманентната морална двусмисленост на света на играта – „Древните скрижали“ (The Elder Scrolls) с техните инфантилни и отмъстителни богове ми се виждат пример за това. Дисонансът разцепва сериозните и дори мрачни послания (не само наративни – те могат да включват визията, музиката и пр.) от чисто удоволствения компонент на приключението, битките, преодоляването на препятствия и опасности, търсенето на разни потайности, решаването на ребуси и пр.

В случая с „Киберпънк“ този дисонанс ми се видя – за разлика от други случаи, когато просто го приемам – като особено скандален. Играта е мрачна, много мрачна. Тя ни въвежда в един ужасяващ свят, който дори не е съвсем дистопиен, а си е реалистично кошмарен с днешна дата. И заедно с това играта е хипнотично удоволствена – не просто увлекателна, потапяща и пр., а сладко омайваща като прелъстителните чудовища, които среща Одисей. С часове зарязвах всякакви сюжетни драми, за да се плъзгам по магистралите, да обхождам бордеите, да участвам в улични схватки. Създателите на играта съзнават този дисонанс, който приписват на самата ни епоха на „обществото на зрелището“ (да го кажем по Ги Дебор).

Като пример – който може да бъде разглеждан като изоморфен, умален вариант на играта като цяло – ще дам страничната линия на „Грешника“ (Sinnerman). Убиец, претърпял религиозно преображение в затвора, по собствено желание е заснет в „невротанц“ (braindance), в който е прикован на кръст и умира. Играчът може чрез аватара си да закове пироните. За Грешника това е абсолютно сериозно, той поема ролята си на жертва и като изкупление, и като религиозно послание. За екипа, който снима, това е артистична амбиция и финансов удар. За хората, които ще гледат – вълнуващ спектакъл. Жертвата е илюзорно зрелище, разядена е от всички възможни грехове (от сребролюбието до убийството, до сатанинската гордост), но във всичко това тя е истинска и покъртителна. Този епизод ми се струва метакоментар на играта като цяло.

Въпросът все пак си стои –

не изяжда ли зрелището сериозността на смисъла?

Северина Станкева: Лудонаративният дисонанс е много интересно понятие – хем улавя много типичен за игрите проблем, хем ми се струва подвеждащо, доколкото противопоставя лудическите аспекти (онова, което играчът прави в играта, плюс менюта, механики и др.) на наративните, все едно това са различни неща. По този въпрос аз съм съгласна с Еньо Стоянов, който в един ваш разговор¹, както и в други свои текстове² много ясно показва, че лудическото е също разказ, доколкото, много опростено казано, е код, който получава репрезентация вътре в играта. Някои игри се възползват хитроумно от това, за да усилят ефекта от вживяването.

Поредицата „Кредото на убиеца“ (Assassin’s Creed) постоянно прави това. Всички HUD³ елементи (миникарта, посока на движение, точки живот, нива и прочее) тя представя като част от интерфейса на Анимус – машина за виртуална реалност, която позволява да изживееш генетичните спомени на предците си. Тоест по-коректно е да говорим за противоречие или липсата на такова между две нива на повествованието.

Колкото до „Киберпънк“, според мен тя е доста резонантна игра и това, което описваш, е доказателство в тази посока. Фигурата на града е дистопична не въпреки удоволствията му, а именно заради тях, както и придружаващите ги експлоатация, мизерия и страдание. Градът всмуква и омайва персонажа с необятните си възможности за наслаждение и легендарна слава, с образа си (Ги Дебор твърди, че спектакълът подменя действителността с репрезентацията), но омайва и играчa по аналогичен начин – винаги има какво още да се прави, да се види, да се открие. В същото време славата и игралното любопитство реално се състоят в извършването на предимно отвратителни дела, типични за един наемник. В този смисъл мисля, че играта е изключително самосъзнателна и използва пълноценно потенциала на изразните си средства. Един от въпросите ѝ е възможно ли е да се създаде и преживее онова, което Дебор нарича ситуация – живи, автентични моменти, които излизат отвъд пасивната консумация. Дали закованият на кръста все пак не преживява нещо такова?

Миглена Николчина: Аз мисля, че ти отместваш смисъла на собствената си реплика от предишния ни диалог. Концепцията лудонаративен дисонанс ми се вижда интересна, ако минава през лудическото и наративното, а не между тях. Игрите изострено поставят една стара естетическа дилема, която у Боало изглежда така:

Изкуството дори чудовище най-зло
като приятно да представи би могло.

Дилемата тогава е, че забавното може да вземе връх над поучителното… но проблемът е интересен, когато те работят едно срещу друго.

Еньо Стоянов: Моето допускане за обичайния начин, по който се говори за „лудонаративния дисонанс“, както подсказва и Северина, е, че не става въпрос за нещо, което остава външно на наратива. Струва ми се, че не бива да мислим „лудическото“ и „наративното“ като някакви идеални същности, които после лесно се въплъщават съответно в игровата механика и наратива на играта. „Лудическото“ може би не е нищо друго, освен това, че участваме с действия в събитията, които дисплеят на играта показва последователно, тоест които се оказват разказани там за нас покрай участието ни. Тъкмо затова предпочитам да говоря просто за „наративен дисонанс“ при видеоигрите.

Разказът, сюжетостроенето в игрите изобщо, се поема от различни системи, между които може да се породи напрежение. Има аспекти на разгръщащата се по време на игра история, които се контролират от дизайнерите, от техните писатели, те са фиксирани за играча и неподдаващи се на пряка манипулация от неговите действия, позволено му е само евентуално да ги реконтекстуализира смислово. От гледна точка на производството тъкмо тези елементи са наричани твърде рестриктивно „разказ“. Може би тук е по-редно да говорим за „основен сюжет“, „основа наративна ос“ или нещо подобно. Игровата механика е друга система, обособено „перо“ от производствени дейности на дизайнерите, различно от писането, с което те снабдяват играта, което е отворено към действията на играчите, отдаващо им ограничени вариативни възможности за намеса насред тези фиксирани форми⁴.

Но не бива да забравяме, че „действието“ и неговото представяне са ядрото на историческия ни опит за сюжетност поне от времето на Аристотел. Действията, включително тези на играча, но и тези в обичайното ни всекидневие, сa обрамчени от цяла мрежа смислови ориентири, те имат смислов хоризонт: правя х, за да y, та да z и т.н., нещо, което се случва в играенето, дори играта да не контролира еднозначно поведението на играчите с предпоставена за тях цел (в тези случаи те са стимулирани сами да си я набавят). Но действията на играчите, ставащи част от наратива на играта с това, че дисплея им ги „представя“ в самото им извършване, могат да се окажат в смислов разнобой с написаното от дизайнерите.

В „Киберпънк“ основният сюжет предпоставя незаобиколима от играча мотивация за управлявания от него герой – героят е заплашен от изличаване на собственото му аз заради софтуер, който пренаписва психиката му с тази на друг човек, и трябва да се бори за своето оцеляване. Същевременно тази мотивация се разколебава от това, че игровата механика тласка играча към множество разпръснати из света на играта дейности без пряка връзка с този основен сюжет: например разпределените из пространството на града множество полицейски сигнали, съобщаващи за престъпление в ход, в което играчите са индиректно „подканени“ да се намесят, за да го предотвратят. От гледна точка на основния сюжет подобни дейности са разхищения на усилия, подкопаващи собствената му спешност. Центростремителността на основния сюжет се разминава с центробежността на подобни форми на второстепенни интеракции в играта. Доколкото разминаването тук е смислово, то е във наратива на играта. Появява се нещо като сблъсък между два сюжета: в единия имаме герой, който се бори всячески да оживее, в другия – герой, който пренебрегва собственото си оцеляване, занимавайки се с тривиални по своя залог неща.

Редом с това обаче Миглена не без основание настоява на някаква принципна роля на нещо като наслада, подкопаваща самия наративен строеж на игрите. Игровата механика е съвкупност от действия, които са предоставени на играчите, но те са краен брой и обемат по-голямата част от времето на взаимодействие в играта. Затова и дизайнерите се стараят да привилегироват действия, които сами по себе си са приятни дори когото рутинно се повтарят. Когато тези действия се окажат на голяма дистанция от мотивационните смислови структури на основния сюжет, възниква възможност за тяхното изолиране и обособяване от тях. Те стават сякаш автономни, почват настоятелно да вписват своеобразна забрава относно наративните смислови рамки, които иначе ги определят, забрава, която психологически се превръща в нещо като самозабрава в преживяването на играча.

Тоест докато в „Киберпънк“ механично минаваш от един полицейски сигнал към следващия, самият въпрос „Защо моят герой се занимава с това?“ започва да глъхне за сметка на едно наслаждаване в голото повторение и неговите микрозадоволявания. Това, разбира се, може добре да се опише посредством психоаналитичен речник. Но дали това е аспект, произтичащ въз основа на някаква сила на „лудическото“? Не съм сигурен, все пак има игри, развиващи пародиен или абсурдистки основен сюжет, сам подкопаващ възможността за смислова организираност на съвкупността от случвания в играта, например „Притчата за Стенли“ (The Stanley Parable) и игрите от поредицата „Сейнтс Роу“ (Saints Row)⁵. Не бива да забравяме опита от други изкуства – например многобройните форми на литературно писанe, в които езикът от стожер на смислова организация се превръща в самоцелна „игра на означаващото“. Казано иначе, някакво дезинтегриране на наратива може да се въвежда и чрез писането, което влагат самите дизайнери в играта.

Николай Генов: Дисонансът, предизвикан от употребата на самото понятие за лудонаративен дисонанс, ми се струва любопитен. Вече има и статии, които се стремят да обхванат разнородните интерпретации на термина6. Аз обаче трябва да призная, че в случая се изкушавам да го мисля през един въздействащ пример, защото играта предлага чудесни възможности за това. По-конкретно искам да се спра на споменатата вече от Миглена сюжетна нишка, проследяваща последния ден на Грешника.

Въпросът за автентичността, повдигнат в края на изказването на Северина, е наистина ключов тук. Не знам дали може да се смята за съвпадение7, но в своите добиващи все по-голяма популярност занимания с т.нар. фантоматика (или виртуална реалност) Станислав Лем се спира именно на този казус: може ли изобщо да се пресъздаде по автентичен начин Христовото разпятие в режим на дигитална симулация, или в това, което „Киберпънк“ нарича braindance (и което аз съм склонен да разглеждам като протофантомат). Трудността според полския фантаст би произлязла именно от едно, да го наречем, лудонаративно разминаване: закачката е, че няма да знаем какво да правим с мазохист на кръста.

Джошуа Стивънсън очевидно не е такъв; той е само една матрица, която трябва да произведе добър продукт за консумация. Колко „добър“ ще е този продукт, в случая зависи от степента на синхронизация между вътрешния свят на протагониста и сценария, който той следва. От разговорите и действията на играча резултатите могат да варират в зависимост от това дали Ви успява да разколебае Стивънсън, но това не е толкова важно; по-скоро се спирам на случая, за да насоча вниманието ни към обратния ефект – този на лудонаративната хармонизация, тъй като си мисля, че взаимодействието ѝ с лудонаративния дисонанс по принцип стои в основата на самото игрово преживяване. Краткият разказ за Грешника наративизира тези два аспекта и ни превръща в свидетели на оголването на поне едно тайнство.

(Следва продължение.)

1 Николчина, М., Стоянов, Е. Наратив, алгоритъм и „многодействие“ при видеоигрите. – Във: Видеоигрите. Опасната муза, София: ВС Пъблишинг, 2023, 353–363.

2 Вж. напр. Стоянов, Е. Наратив и алгоритъм при видеоигрите. – Във: Видеоигрите. Опасната муза, София: ВС Пъблишинг, 2023, 88–117.

3 HUD, или Head-up display, се нарича всеки прозрачен дисплей, който предоставя информация, без да е необходимо отместване на погледа.

4 Системата на написаната за играта история и тази на игровата механика не изчерпват мултисистемния ѝ строеж – може да добавим например и т.нар. потребителски интерфейс, който сам може да бъде зададен като част от разказа (да се представя като елемент от света, показван на дисплея) или не.

5 Това са все примери, в които някакво разглобяване на основния сюжет става явно преднамерено. Вероятно бихме могли да намерим безброй примери за непреднамерено вкарване на елементи на абсурд и самопародиране в игровите сюжети на разнородни дизайнери.

6 Вж. например Fantoli, D., Heinz, D., Wetzel, D. Ludonarrative Dissonance and Gamification: A Systematic Literature Review, 2019.

7 Нека не забравяме, че CD Project Red е полско студио, което вече е доказвало, че много добре познава литературните произведения и може да работи с тях.

В рубриката „Игромислие“ публикуваме разговори, в които се срещат, съпоставят и противопоставят различни гледни точки към многоизмерния, многожанров феномен на видеоигрите – не толкова като електронен спорт, колкото като нов синтез на изкуствата и като ново поле на общуване и социалност. 

AWS Weekly Roundup: Claude 4 in Amazon Bedrock, EKS Dashboard, community events, and more (May 26, 2025)

Post Syndicated from Veliswa Boya original https://aws.amazon.com/blogs/aws/aws-weekly-roundup-claude-4-in-amazon-bedrock-eks-dashboard-community-events-and-more-may-26-2025/

As the tech community we continue to have many opportunities to learn and network with other like-minded folks. This past week AWS customers attended the AWS Summit Dubai for an action-packed day featuring live demos, hands-on experiences with cutting-edge AI/ML tools, and more. Right here in South Africa I attended the Data & AI Community in Durban for a day of inspiration and learning from the community. In India, the AWS Community Day Bengaluru brought together hundreds of passionate tech enthusiasts for a day of learning and networking.

Last week’s launches
Here are the launches that got my attention:

For a full list of AWS announcements, be sure to keep an eye on the What’s New with AWS? page.

Additional updates
Here are some additional projects, blog posts, and news items that you might find interesting:

Upcoming AWS events
Check your calendars and sign up for these upcoming AWS events:

  • AWS Summits – Join free online and in-person events that bring the cloud computing community together to connect, collaborate, and learn about AWS. Register in your nearest city: Tel Aviv (May 28), Singapore (May 29), Stockholm (June 4), Sydney (June 4–5), Washington (June 10-11), and Madrid (June 11).
  • AWS re:Inforce – Mark your calendars for AWS re:Inforce (June 16–18) in Philadelphia, PA. AWS re:Inforce is a learning conference focused on AWS security solutions, cloud security, compliance, and identity.
  • AWS Community Days – Join community-led conferences that feature technical discussions, workshops, and hands-on labs led by expert AWS users and industry leaders from around the world: Milwaukee, USA (June 5), and Nairobi, Kenya (June 14).

That’s all for this week. Check back next Monday for another Weekly Roundup!

– Veliswa.

[$] Development statistics for the 6.15 kernel

Post Syndicated from corbet original https://lwn.net/Articles/1022414/

The 6.14 kernel development cycle only brought in 11,003 non-merge
changesets, making it the slowest cycle since 4.0, which was released in
2015. The 6.15 kernel, instead, brought in 14,612 changesets, making it
the busiest release since 6.7, released at the beginning of 2024. The
kernel development process, in other words, is back up to full speed. The
6.15
release
happened on May 25, so the time has come for the
obligatory look at where the changes in this release came from.

Security updates for Monday

Post Syndicated from jake original https://lwn.net/Articles/1022639/

Security updates have been issued by AlmaLinux (389-ds-base, ghostscript, grafana, kernel, and osbuild-composer), Debian (intel-microcode, kernel, libphp-adodb, and openssl), Fedora (dotnet8.0, ghostscript, iputils, nbdkit, open-vm-tools, thunderbird, and vyper), Mageia (chromium-browser-stable, glibc, iputils, microcode, nodejs, and zsync), Oracle (.NET 8.0, .NET 9.0, 389-ds-base, avahi, buildah, compat-openssl11, expat, firefox, ghostscript, gimp, git, grafana, gvisor-tap-vsock, libsoup, libxslt, mod_auth_openidc, nginx, nodejs:20, osbuild-composer, podman, skopeo, thunderbird, vim, webkit2gtk3, xdg-utils, xterm, and yelp), Red Hat (kernel, kernel-rt, libsoup, libsoup3, python-tornado, and ruby), Slackware (ffmpeg), SUSE (audiofile, firefox, glibc, govulncheck-vulndb, grafana, kernel, kind, kubo, libecpg6, postgresql13, postgresql14, python-Django, python-setuptools, python-tornado6, python311-Flask, python311-tornado6, python313, python36-setuptools, thunderbird, transfig, and xen), and Ubuntu (glib2.0, linux-bluefield, linux-ibm, linux-raspi, and openjdk-21-crac).

The 6.15 kernel has been released

Post Syndicated from corbet original https://lwn.net/Articles/1022457/

Linus has released the 6.15 kernel, as
expected.

So this was delayed by a couple of hours because of a last-minute
bug report resulting in one new feature being disabled at the
eleventh hour, but 6.15 is out there now.

Significant changes in 6.15 include smarter timer-ID assignment to make
checkpoint/restore operations more reliable, the ability
to read status information from a pidfd after the process in question has
been reaped, the PIDFD_SELF
special pidfd value, nested
ID-mapped mounts
, zero-copy network-data reception via io_uring, The ability
to read epoll events
via io_uring, resilient
queued spinlocks
for BPF programs, guard-page enhancements allowing them to be
placed in file-backed memory areas and for user space to detect their
presence, the once-controversial fwctl
subsystem
, the optional sealing of some
system mappings
, and much more.

See the LWN merge-window summaries (part 1, part 2) and the in-progress KernelNewbies 6.15 page for
more information.

Teamgroup TForce Triple M.2 Liquid Cooler Shown at Computex 2025

Post Syndicated from Cliff Robinson original https://www.servethehome.com/teamgroup-tforce-triple-m-2-liquid-cooler-shown-at-computex-2025/

We spotted the Teamgroup TForce Triple M.2 SSD liquid cooler at Computex 2025 for those that want AIO liquid cooling on everything

The post Teamgroup TForce Triple M.2 Liquid Cooler Shown at Computex 2025 appeared first on ServeTheHome.

Intel Xeon 6 Priority Cores as a Big NVIDIA GPU AI Server Feature

Post Syndicated from John Lee original https://www.servethehome.com/intel-xeon-6-priority-cores-as-a-big-nvidia-gpu-ai-server-feature/

The Intel Xeon 6 with priority cores wins big at NVIDIA but there is a lot more going on in the release than meets the eye

The post Intel Xeon 6 Priority Cores as a Big NVIDIA GPU AI Server Feature appeared first on ServeTheHome.

The collective thoughts of the interwebz