Byly publikovány informace o další zranitelnosti v procesorech. Nejnovější zranitelnost byla pojmenována VMScape (CVE-2025-40300, GitHub) a v upstream Linuxech je již opravena. Jedná se o variantu Spectre. KVM host může číst data z uživatelského prostoru hypervizoru, např. QEMU.
V červenci loňského roku organizace Apache Software Foundation (ASF) oznámila, že se částečně přestane dopouštět kulturní apropriace a změní své logo. Dnes bylo nové logo představeno. "Indiánské pírko" bylo nahrazeno dubovým listem a text Apache Software Foundation zkratkou ASF. Slovo Apache se bude "zatím" dál používat. Oficiální název organizace zůstává Apache Software Foundation, stejně jako názvy projektů, například Apache HTTP Server.
Byla vydána (𝕏) srpnová aktualizace aneb nová verze 1.104 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a videi v poznámkách k vydání. Ve verzi 1.104 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.
Spotify spustilo přehrávání v bezztrátové kvalitě. V předplatném Spotify Premium.
Spoluzakladatel a předseda správní rady americké softwarové společnosti Oracle Larry Ellison vystřídal spoluzakladatele automobilky Tesla a dalších firem Elona Muska na postu nejbohatšího člověka světa. Hodnota Ellisonova majetku díky dnešnímu prudkému posílení ceny akcií Oraclu odpoledne vykazovala nárůst o více než 100 miliard dolarů a dosáhla 393 miliard USD (zhruba 8,2 bilionu Kč). Hodnota Muskova majetku činila zhruba 385 miliard dolarů.
Bylo vydáno Eclipse IDE 2025-09 aneb Eclipse 4.37. Představení novinek tohoto integrovaného vývojového prostředí také na YouTube.
T-Mobile od 15. září zpřístupňuje RCS (Rich Communication Services) zprávy i pro iPhone.
Společnost ARM představila platformu Arm Lumex s Arm C1 CPU Cluster a Arm Mali G1-Ultra GPU pro vlajkové chytré telefony a počítače nové generace.
Unicode Consortium, nezisková organizace koordinující rozvoj standardu Unicode, oznámila vydání Unicode 17.0. Přidáno bylo 4 803 nových znaků. Celkově jich je 159 801. Přibylo 7 nových Emoji.
Apple představil (YouTube) telefony iPhone 17 Pro a iPhone 17 Pro Max, iPhone 17 a iPhone Air, sluchátka AirPods Pro 3 a hodinky Watch Series 11, Watch SE 3 a Watch Ultra 3.
Odkazy
Nedávno som písal blogy o ukladaní lokalizovaného obsahu do databázy a o vytvorení jednoduchého CMS v Djangu. Dnes sa pozrieme na 2 aplikácie pre Django, pomocou ktorých sa dá jednoduchý CMS rozšíriť o podporu lokalizácie a zároveň sa pozrieme na spôsob, ktorým sú preklady uložené v databáze.
Jazyky webovej aplikácie sa definujú v súbore cms/settings.py
premennou LANGUAGES
, ktorá obsahuje dovjice: ISO-639-1 kód a viditeľný názov jazyka.
LANGUAGES = ( ('sk', 'Slovensky'), ('en', 'English'), )
Na prepínanie jazykov budeme musieť do premennej MIDDLEWARE_CLASSES
položku 'django.middleware.locale.LocaleMiddleware'
. Jazyk tak bude dať zmeniť prefixom URL napr. http://localhost:8000/sk/
.
Najpopulárnejším balíkom na preklad obsahu je podľa djangopackages.com balík modeltranslation. Nainštalovať sa dá príkazom pip install django-modeltranslation
vykonaným vo virtuálnom prostredí.
V cms/settings.py
do nainštalovaných balíkov (INSTALLED_PACKAGES
) pridáme riadok 'modeltranslation'
. Ďalej potrebujeme vytvoriť súbor article/translation.py
, ktorý bude obsahovať metainformácie o lokalizovateľných poliach pre modeltranslation
from modeltranslation.translator import translator, TranslationOptions from article.models import Article class ArticleTranslationOptions(TranslationOptions): fields = ('title', 'content',) translator.register(Article, ArticleTranslationOptions)
Aby boli preklady dostupné v administrátorskom rozhraní musí sa základná trieda django.contrib.admin.ModelAdmin
v article/admin.py
vymeniť za modeltranslation.admin.TranslationAdmin
.
from django.contrib import admin from article.models import Article from modeltranslation.admin import TranslationAdmin class ArticleAdmin(TranslationAdmin): prepopulated_fields = {'slug': ('title', )} fieldsets = ((None, {'fields': ('user', 'slug')}), ('Article', {'fields': ('title', 'content')})) admin.site.register(Article, ArticleAdmin)
Teraz synchronizujeme databázu príkazom python manage.py syncdb
. Následne môžme v administrátorskom rozhraní upravovať lokalizovaný obsah.
Z užívateľského hľadiska nie je rozrhanie práve optimálne. V balíku však nájdeme dodatočné súbory, ktoré administrátorské rozhranie trochu "ohackujú". Postačí do ArticleAdmin
pridať dodatočné médiá.
class ArticleAdmin(TranslationAdmin): ... class Media: js = ( 'modeltranslation/js/force_jquery.js', 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.24/jquery-ui.min.js', 'modeltranslation/js/tabbed_translation_fields.js', ) css = { 'screen': ('modeltranslation/css/tabbed_translation_fields.css',), }
Tento projekt je pokračovaním balíka django-nani. Nainštaluje sa príkazom pip install django-hvad
a pridaním riadku 'hvad'
do nainštalovaných aplikácií.
Preklady sa definujú priamo v modeli. Základná trieda modelu sa zmení z django.db.models.Model
na hvad.models.TranslatableModel
. Preklady sa definujú inštanciou TranslatedFields
. Celý súbor article/models.py
bude vyzerať takto:
from django.db import models from django.contrib.auth.models import User from hvad.models import TranslatableModel, TranslatedFields class Article(TranslatableModel): user = models.ForeignKey(User) slug = models.SlugField(unique = True) translations = TranslatedFields( title = models.CharField(max_length = 100), content = models.TextField(), )
V administrátorskom rozhraní zmeníme základnú triedu ModelAdmin
na hvad.admin.TranslatableAdmin
. Nastavenia ako prepopulated_fields, fieldsets … pri tomto module nefungujú tak, ako sme u djanga zvyknutí. Tieto vlastnosti sa totiž musia nastaviť až po zavolaní nadradeného konštruktora.
from django.contrib import admin from article.models import Article from hvad.admin import TranslatableAdmin class ArticleAdmin(TranslatableAdmin): def __init__(self, *args, **kwargs): super(ArticleAdmin, self).__init__(*args, **kwargs) self.prepopulated_fields = {'slug': ('title',)} self.fieldsets = ((None, {'fields': ('user', 'slug')}), ('Article', {'fields': ('title', 'content')})) admin.site.register(Article, ArticleAdmin)
Multilingual | Preklady v samostantých stĺpcoch (title_sk, title_en …). Vytvorenie nových stĺpcov pri pridaní jazyka dokáže zariadiť samotný modul zavolaním python manage.py sync_translation_fields . |
Hvad | Každá tabuľka má samostatnú tabuľku s prekladmi so suffixom _translation . V nej sú stĺpce language_code pre kód jazyka, master_id pre ID objektu a samotné stĺpce obsahujúce preklad. |
Pri vývoji webových aplikácií som sa s menším množstvom problémov stretol u balíka django-multilingual
. O niečo lepšie administrátorské rozhranie má django-hvad
, ale kód administrátorského rozhrania môže byť kvôli vlastnostiam ako prepopulated_fields
značne odlišný oproti štandardnému kódu.
Flexibilnejšiu štruktúru databázy má django-hvad
. Skripty dodávané s django-multilingual
však dokážu databázovú schému pri zmene podporovaných jazykov migrovať. Z princípu však nie je možné pridávať nové jazykové mutácie bez reštartu webovej aplikácie.
Tiskni
Sdílej:
Django sa dobre hodí na webové aplikácie, kde hlavnou činnosťou je vytváranie, zobrazovanie, úprava a mazanie záznamov v databáze. Na tieto činnosti poskytuje slušné ORM, generovanie formulárov z databázových modelov, generické pohľady (create, update, delete, view, list, archive ...). Na špeciálne prípady použitia ako napr. webové UI k torrent klientovi však neposkytuje prakticky žiadnu podporu. V týchto prípadoch by bolo asi lepšie použiť niečo ľahšie, alebo viacej nízkoúrovňové (pylons, flask ...).
Veľkosť v prípade djanga nie je veľký problém. Veľmi veľká časť balíka sú lokalizácie. Ďalej sa tam nachádzajú extra aplikácie ako integrované admin rozhranie, systém komentárov, správa užívateľov, podpora markdown syntaxe ... ktoré môžu, ale nemusia byť v aplikácii použité.