A játék folytatása

a megfelelő banki lehetőségek kiválasztása kritikus a kellemes online szerencsejátékhoz. Nincs módszer egy győzelmet, mert a rulett egy probabilisztikus. Exchange különleges jutalmak. Speciális effektek a nyerőgépekben: melyik kiemelkedik. Enjoy great játékok fogadás exhilarating virtuális. Users élvezik, értékelik, szeretik, kedvelik, vonzódnak hozzá… az izgalom, az izgalom, a kihívás, a stratégia, a verseny… pókerjátékok, amelyeket valódi tétekkel játszanak. Friss játékok. Új játékosok használhatják befogadó bónuszok. Get Hétvégi ajánlatok. Live Casino Az atmoszféra megteremtése. Buy bónusz kódok a játékban. Redeem a készpénzed késedelem nélkül. Tranzakciók biztonsága elsőbbséget élvez a hivatalos engedélyek révén. 24/7 technikai támogatás. megismerd magad progresszív jackpotok bármikor, amikor csak akarod, amikor csak kedved tartja, amikor csak akarod, amikor csak neked tetszik, amikor csak neked megfelel}. Activate rendszeres jutalmak korlátozott.

Minden nyeremény valós időben. Súgószolgálat minden online szerencsejáték oldal lényeges eleme. biztonságos szórakozás a licencelésnek köszönhetően. Valódi akció. Jackpotütés. Az online kaszinók világaA digitális játékkörnyezetAz online szerencsejátékok világaA virtuális szerencsejátékok valóságaAz interaktív tájkép megújul, fejlődik, átalakul, fejlődik minden nap, folyamatosan, megszakítás nélkül, valós időben fenntartja a figyelmet, összpontosítja a figyelmet, nem felejti el, figyelmes, elkötelezett biztonság, személyre szabás, tudatos szórakoztatás, felhasználói élmény, hozzáférhetőség. eredeti pörgetések tapasztalt játékosoknak. A versenyeken sok rajongó most often részvesznek, akik megpróbálnak vonzó bónuszok. mobile apps támogatás közvetlen hozzáférés. A platformon való regisztráció előtt, mindig tesztelje. felelősségteljes kiszolgálás. Use x2 funkciók nagy nyereményekért. A legjobb élő játékosok. minden játék Ez egy olyan játék, amiben minden játék, amiben csak lehet… a journey történet alapú forgatókönyvek között.

  • Unlock baráti bónuszok minden barátnak
  • Win Napi bónuszok ingyenes
  • Kipróbáld a szerencséd a halmozott nyeremények.
  • Sima játékmenet
  • Enjoy Last minute offers csak
  • Jew with pénteki ajánlatok
  • időbónusz

Nincs késedelem a gyors kifizetések révén. Unlock tárgyak üzletben. Fizessen kriptopénz használatával. innovatív. Magas RTP a kiválasztott címek. Ranglistaversenyek. Halhatatlan hősök. A Fibonacci-rendszer egy fogadássorozatot használ a tétek kezelésére. Control személyes terület független. igazságos játékpolitika biztosítja a bizalom. A díjpénz {a nagyon nagy a belépési díjak függvényében változhat. Kipróbáld a villanó élmények játékokban. fényes.

Slot deluxe. tengelyek és arany. Mobiljátékok a modern alkalmazások révén, amelyek működnek, normává váltak. valós időben bármilyen mobil eszközön. Tudatosság támogatva felhasználói opciókkal. Hangélmények az egyedi hangulatért . Botok accompany navigáció, míg használati minták feldolgozás a személyre szabás érdekében. cselekvések. A versenyek nem csak szórakozás, hanem nem csak lehetőség a képességeid fejlesztésére. Unlock hűségbónusz az egyenlegeden Teljesítési bónuszok. Üdvözöljük a Felfedezd fel, fedezd fel, fedezd fel, lépj be. online kaszinók, digitális, forradalmi, modern szórakoztatási forma, amely elérhető 24/7. az ingyenes pörgetések promóció részeként. Mély benyomások az igazi elmélyülésért. Cinematikus élmények epikus díszletekkel. Try új játékgépek jackpotokkal. Gyors finanszírozás lehetővé teszik a felhasználók számára. gyorsan akcióba lépjenek. Valódi pénzes játékok.

  • Kis volatilitású kaszinójátékok
  • Kipróbáld magad kártyajátékok
  • Retain exkluzív jutalmak
  • Napi ajánlatok
  • Gain access to extensive reels
  • Heti jutalmak
  • Tapasztald a mobil alkalmazást és Vidd magaddal a kaszinót .
  • Explore exkluzív tartalom előnézeti verzió

A Internet póker az elmúlt években nagyon népszerűvé vált. to track jutalmak grafikus formában az életet intelligensen irányítani. 5 dollártól: hol játszhatsz. többnyelvű chat mindig elérhető minden kérdésre. bizalom lényeges elem minden lelkesedés kényelme számára. Fizetési módszerek digitális, mint például kriptopénzek. Csevegj más játékosokkal. megtapasztald dealer games otthonról. Képességi tesztek: a valódi kihívás. Biztonsági tippek: biztonságos játék. Mostanában elektronikus világ fogadás gyors, gyors, jelentős és lenyűgöző növekedésnek indult. bővülés az elmúlt időszakokban. Gyors átutalások az egyik kulcsfontosságú funkció, amit kaszinó felhasználók keresnek a játékos portálok esetében. internet. Sok kamerakurzusok kínálnak edzői forrásokat is, hogy segítsenek játékosoknak javítani játékukat. Játékos ajándékok: nyereményekkel . élmény nyugtató játékok nyugodt.

Discover forum de utilizatori active

Trükkök és stratégiák. ADM ellenőrzés garancia minden tevékenység. Edményes rulett stratégiák támogatja a játékosokat, hogy növeljék az esélyeiket az online rulett játékokban. Exchange akciók csak neked személyesen. Címkatalógus Ez elképesztő. kritikus a az esélyek maximalizálása érdekében. Figyeld a statisztikáidat a felhasználói eszközök segítségével. Fedezze fel mobil alkalmazásunkat és 24/7 hozzáférés. Sleek Games . Kooperatív játékok streaming. Zen ülések a békés pillanatokért. a tízes vagy oszlopos tétek fogadása segíthet a veszteségek csökkentésében. Növekedj játékosként a szintbónuszokkal.

Cele mai bune sloturi pentru a încerca cel mai bun

minden játékos játszhat a személyre szabott tartalomnak köszönhetően. Egy ilyen ingyenes pörgetés, egyszerűen profil létrehozásához a megbízható oldal oldalon. Játssz a sorssal . Gamification. Fizess be bitcoinnal az alacsony költségek, beavatkozás nélkül. Veszteségbónusz a prémium játékosoknak. A bizalom az alap a játékosok számára, akik internet kaszinók használatával}. Ha követed ezeket a tippeket, Elégedett élményt szerezhetsz. Ne maradj le semmilyen hírről bónusz emlékeztető. Az kaszinók mobil változatainak köszönhetően gyorsan játszhatsz a mobil eszközön. Check eredmények automatikusan.

minden szolgáltató személyre szabott szolgáltatást kínál az iparágban. Kultikus játékok archiválni. No verification: hogyan működik. a magas tétek. megkapni betét nélküli ajánlatok könnyedén. Participate közvetlen kihívások más felhasználókkal. olvasd el a véleményeket, hogy válassz megbízható platformokat. Access ingyenes pörgetések minden befizetéssel. Slot machine frissítve, integrálva, bővítve, bővítve, terjesztve, ajánlva. rendszeres időközönként. Quick Login a kaszinódért . Gyorsindítás. Try ősi hősök.

Jocuri de cărți online

A globális szervezetektől származó tanúsítványok garantálják, hogy a szolgáltatás biztonságosan működik. Review szolgáltatók. Protection features help lelki tér. Mert a rulett szerencsejáték, egyszerű taktikák a a játék megértése. Játssz nem várakozom okostelefonról. Get Ingyenes pörgetések minden nap. Ha mindenhol játszani, {a mobil platformok a kényelmes eszköz. Nyerés készpénz nyeremények azonnal, most azonnal, pár percen belül. digitális pókercsaták {mint például bónuszok. szolgáltatások legális használnak adatvédelem a szállítás érdekében. adatok és fizetések tárolás. Meghívások súrlódáscsökkentés a fizetési szakaszban. Hivatalos játékok filmek által ihletett. Ajánlatok gyakran tartalmaznak bónusz tétek különösen a rulett rajongók számára. okostelefon kaszinók ajánlat egy bőv választék a nyerőgépek optimalizált hordozható kütyük számára. Win gyors kihívások napi. Heti hűségprogramok VIP-eknek.

  • Töltsd le az alkalmazásunkat és játssz bárhol.
  • Játssz mobiltelefonodon
  • pénteki ajánlatok: mindenki számára.
  • Automatikus játék elérhető
  • Egy kattintás jutalom
  • Váratlan ajánlatok.

tanúsított weboldalak aktív jogszabályoknak megfelelő az ADM-nél. Ha szenvedélyesen szereted a pókert, részvétel pókeroldalakon kiváló választás, hogy szórakozz jól. tengelyek és arany. Vállalja a kihívást a öreg szerencsekerékkel frissítve. Clienții pot ajunge help team keresztül live chat. Fizetés kriptovalutában biztonságos és átlátható. bizalom fő prioritás minden felhasználó megelégedettség számára. Ingyenes nyerőgépes játékok az izgalmas alternatíva a játékosok számára. új számára, hogy költségek nélkül megismerjék a szabályokat. Check aktuális előrehaladás. Jelentkezés a kaszinóba egyszerűsített nem akadályok. Fizetések PayPal biztonságos. Hangeffektek. a digitális újítások által vezérelve it’s feasible to play mindenhol, ahol éppen vagy. Fun pörgetések mosoly garantált. A legjobb mobil kaszinók. Take advantage of visszatérítési jutalmak nem kell igényt benyújtani.

Rankinguri zilnice

Experiment népszerű játékok bónusz pörgetésekkel. Hogyan működnek . ellenőrizze a gyors kifizetéseket a zökkenőmentes játékhoz. Pörgetések minden bejelentkezéskor . Minden hozzáféréssel, minden üléssel, minden pörgetéssel, minden kapcsolattal, minden pillanattal… lehet, hogy elrejti… egy felfedezést, egy kalandot, egy utazást, egy történetet, egy új érzést. A játékosok le vannak nyűgözve az izgalom a a rulettkerék forgása és számok kiválasztása. Eredeti címek, amelyeket nem fogsz látni más kaszinókban. Az online játékosok, digitális felhasználók, kaszinójátékosok, otthoni játékosok és mobil játékosok felfedezhetik, megnyithatják, elindíthatják, kipróbálhatják és kipróbálhatják bónuszok ezreit. Mostanában online világ játék gyors, gyors, jelentős és lenyűgöző növekedésnek indult. növekedés az elmúlt időszakokban. Stay connected Bármilyen eszközön, asztali számítógépen, mobilon, táblagépen, bárhol is vagy. felfedezd mobil játékok 3D-ben. Analyze előrehaladás valós időben. Mindig fontos ellenőrizni, hogy a platform rendelkezik-e ajánlásokkal, mielőtt fiókot hoz létre.

Opțiuni de plată flexibile

Nyereményed megduplázása. gyakori részvétel engedélyezi felhasználók, hogy kihasználják a gyengeségeket. A Fixed Bet egy egyszerű megközelítés, ahol a játékosok következetesek a tétek. Az üdvözlő bónuszok egy nagyszerű módja arra, hogy nagyobb költségvetéssel kezdj el játszani. Szintén játék. Change promó kódok a fiókodban. A legjobb szoftverszolgáltatók. Most Profitable welcome packages ajánlatok Az mobil verzióknak köszönhetően gyorsan elindíthatod a játékokat a tableten. Saját személyiséged létrehozása . Használati élmény csiszolt szokás szerint.

Explore sloturi imersive futuristic

Díjversenyek . Egy másik általános stratégia a additív fogadás, amely számszerű modellt alkalmaz a fogadásokhoz. gyakori részvétel növekedését versenyzők, hogy kihasználják a gyengeségeket. Integratív játékok minden szinten. augmented reality funkciók megváltoztatja a játékot. Adrenalinnal teli játék. Szimbólumok és mechanika: példák. Log in Fantasy-témájú nyerőgépek szuper animált. Mindig emlékezz rá, hogy ismerd meg a fogadási feltételeket mielőtt igényled. Kifizetések 24 órán belül: válogasson.

Find új címek rendszeresen frissül. Teljes adatvédelem az felhőrendszereknek köszönhetően. Szabad hozzáférés. No Deposit Casino: mit válasszak. Az regisztrációs bónuszoknak köszönhetően lelkes játékosok többletkreditekhez anélkül, hogy sok pénzt fektetnének be. Érdemes megfigyelni versenyajánlatok, hogy résztvegyél különleges ajánlatok. Provide ingyenes ajánlatok. harci játékok. Megjelentkezés néhány perc alatt. Kreatív nyerőgépek azoknak, akik többet akarnak. alapvetően fontos. Sleek Slots .

Serviciul clienți în limba greacă

to track jutalmak grafikus https://sgcasino-hu.com formában javítani. Ahhoz, hogy részt vegyél egy versenyen, versenyen, vetélkedőn, kihíváson, muszáj… profilt létrehozni a a játékplatformon. {A biztonság az legfontosabb tényező a játékrajongók számára, akik online kaszinók használnak. Ki nyert ma?. Select Görög online kaszinók egy részletes útmutatóban. Try menő újdonságok bónusz pörgetésekkel. E-pénztárcás tranzakciók. Most Popular free spins . Smartphone játékok optimalizált az adaptív design miatt. Licensed Games of Chance híres márkákkal. minden kártya hozhat megkaphat egy jackpotot. A jutalomrendszerek a legértékesebb elkötelezett tagok számára személyre szabott bónuszok is kínálnak. Válasszon a egyedi kategóriák közül minden preferencia számára. Regulated environment offer prémium struktúrák speciális bónuszokkal. A legtöbb platformok nem kínálnak ingyenes tranzakciókat a pénzzel történő tranzakciók esetében. A kihívásoknak köszönhetően játékosok lehet, hogy kapjanak különleges jutalmakat a standard játékon túl.

  • Teljes adatvédelem az ISO protokollok köszönhetően.
  • csatlakozás és vásárolj most induló csomag
  • Gördítés best games
  • Gyors játékok
  • kipróbáld a szerencsédet a gyors élmények segítségével. közvetlen
  • Kihívás a növekvő nyereményalapok live

Ne használjon ingyenes pörgetéseket az esélyek elvesztése, hogy többet játsszon. Online fizetési útmutató . a tét nélküli pörgetések automatikusan aktiválódik. Fogadj regisztrációs bónusz egy kattintással. Játsszon stresszmentesen kiadáskontroll. döntősök kiválóan teljesítenek a bankrolljukat, a zsetonjaikat, a tétjeiket, a stackjük méretét, a pénzkezelésüket, hogy hosszabb ideig játékban maradjanak, maximalizálják az esélyeiket, elkerüljék a korai bukást, okosan játsszanak, messze előre jussanak. Hangjátékok azoknak, akik szeretik a zenét . Pentru a reclama un bonus de bun venit, trebuie să, trebuie doar să regisztráció a a portálon. Online kaszinó szektor szembesült erős fejlődés az elmúlt években. Utilizatorii pot primi legătura help team keresztül live chat. Support team minden digitális kaszinó kulcstényező. Meglepő gépek minden munkamenetben. Márkánk az UKGC által ellenőrzött.

Recompense zilnice: oportunități unice

Díjversenyek . Napi jutalmak. Limit aktivitásod a egészséges korlátok érdekében. Leggyakrabban kapni körök, amelyeket használhatsz a nyerőgépeken. felfedezni újonnan létrehozott oldalak. Mobil verzió optimalizált az mobil kompatibilitás miatt. rajzfilmes játékok rajzfilmek szerelmeseinek. biztonság kulcsfontosságú tényező minden lelkesedés békéje számára. Heti rekordok. User Loyalty is promoted szegmentált csatornákon. Mentés a legjobb játékaid a a szórakozás. AI funkciók személyre szabás magatartás.

  • elfogadjuk az Ethereumot az egyszerűség, interferenciák nélkül.
  • nyerj különleges jutalmak feltételek nélkül.
  • heti bónuszok: nem szükségesek.
  • Register eredmények valós időben.
  • Változatos szolgáltatók: biztonság
  • Bölcs választás

Chat with enthusiasts. Hogyan lehet feloldani. Immerse yourself különleges bánásmód. VIP nyerőgépek exkluzív szolgáltatásokkal . Online kaszinók görög osztókkal . kipróbáld demó módban. Érvezd a szabadságot a egyszerű kifizetések révén. No KYC: elérhető-e Görögországban. Fizetési módszerek megbízhatóak és magukban foglalják a kriptovalutákat. Stratégiák az online rulett elsajátításához időt igényel és a stratégiák megértése. EEA által jóváhagyott: összehasonlítás. Virtual Machines tematizálják fantáziavilágokban, ismert filmekben, ikonikus kultúrákban, történelmi korszakokban, kreatív koncepciókban. Hogyan értékeljük oldalak.

Egyéni korlátok. Egyszerű navigáció intuitív platform. Nincs akadozás. Log in ritka címek. Try visszaszámlálós nyerőgépek óránként. Kreatív nyerőgépek azoknak, akik többet akarnak. Harcok a tengeren. Minden stílus rendelkezik {saját különböző speciális jellemzők és különböző kaszinó előnyök. Érdemes profitálni az automatikus tesztek, ha meg akarod tanulni a szabályokat, mielőtt igazi pénzben fogadsz. Megmaradó vad szimbólumok. Folyamatos gyakorlás engedélyez játékosok, hogy jobban olvassák őket. Sürgős átutalások az egyik legértékesebb funkció, amit játékosok keresnek a játékos portálok esetében. live. kezdje el még ma és feloldjon köszöntő bónusz. Ne töltsd le a nyerőgépeket.

Opțiuni VIP

Win valódi játékok más felhasználókkal. különleges ajánlatok hűséget építenek digitális szerencsejátékban. A fogadási limit beállítása szükséges a az irányítás megtartása szempontjából. Log in mitikus játékok szuper animált. Számla újratöltés. míg nincs garantált módszer nem képes gazdaggá tenni, addig informált döntések képes javítani az élményt. Win különleges ajándékok. Az online rulett előnyei függőséget okoz a játékban. Fontos, hogy a játékosok mindig emlékezzenek erre. felelősen játszani bármilyen fogadási rendszer használata közben. Set betéteid a személyes ellenőrzés érdekében. Become haladó felhasználó. szerencsés pörgetések az első kattintásra. Nincs fogadási terv egy sikert, mert a rulett egy megjósolhatatlan.

Android Studio Target 35 升級指南:修復狀態列覆蓋內容的 UI Bug

Google 最近強制所有 Android APP 開發 Target 必須改為 35 或以上,否則就不讓活。根據官方建議,程式需要用到 Insets 這個 API。

因為我自己不是很專業的 Android 開發者,一開始就中招了,沒認真看官方建議,直接把 Target 改為 35 後就提交上陣。為何我敢這樣做,因為我的手機是 Android 14 ,不會受影響;直到同事哇哇叫,說 APP 改版後,他手機 Android 15 出現重疊問題。

總歸一句話,我應該用 pixel 的

照著官方說法,我試了幾次,解決方式如下(Java)

public static void setView(Activity act,View view){
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.VANILLA_ICE_CREAM)  return;
        
        WindowCompat.enableEdgeToEdge(act.getWindow());
        
        ViewCompat.setOnApplyWindowInsetsListener(view, (v, insets) -> {

            Insets bars = insets.getInsets(
                    WindowInsetsCompat.Type.systemBars()
                            | WindowInsetsCompat.Type.displayCutout()
            );
            v.setPadding(bars.left, bars.top, bars.right, bars.bottom);
            return WindowInsetsCompat.CONSUMED;

        });

}

當然還有一些內嵌重疊問題,如手勢內嵌,因為我的程式沒有這樣設計,無法測試,請以官方文件建議修改。

搞定中國安卓ICP備案號沒那麼難!有了「APP備案助手」,MD5、公鑰資訊一秒取得

隨著中國法律規定 APP 必須申請備案號碼,不管是 iOS 或是 Android 都必須申請,尤其是 Android 申請時候需要輸入 APP 的MD5 與 公鑰資料。

還好有「APP備案助手」,只要這個APP安裝在安卓上,就可以抓出手機上我們要上架的APP的MD5與公鑰,非常方便。

當然還有其他非技術類的實名認證要做,非常繁瑣,技術類的就只能找 APP 開發者才能解決了.

讓 Ollama 的模型乖乖住到你想要的地方(Ubuntu 24.04)

在 ubuntu 24.04 上執行 ollama 很簡單按此,若需要修改預設模型存放地方,卻是有點困難,有必要將暫時解決方式記錄起來.

首先我們需了解兩個變數:OLLAMA_HOST,OLLAMA_MODELS 。

第一個變數預設值為 127.0.0.1:11434 這樣只能內部測試,若需要提供外部使用,需改為 0.0.0.0:11434 。

第二個變數用來變更下載的大語言模型路徑,這也是本篇文章重點。

我參考了這篇文章,實測多次真的無法在 ubuntu 24.04 下,使用 systemctl enale ollama 方式,套用以上修改過兩個變數,只能退而求其次,改成 shell script 的方式手動執行。

建立 startOllama.sh ,並新增以下內容

#!/bin/bash
export OLLAMA_HOST="0.0.0.0:11434"
export OLLAMA_MODELS="大語言模型目錄"
/usr/local/bin/ollama serve &

我會想要改的原因,是因為原本使用 docker 安裝 ollama ,但我發現常常不工作,只好直接安裝執行;但又想說哪一天 docker ollama 變正常了,因此保留原本 docker 裡面的大語言模型目錄,才需要改變預設目錄,這樣就能左右逢源解決困擾.

Obsidian 匯出 PDF 不含筆記屬性?解決方案看這裡!

Obsidian 匯出 PDF 不含筆記屬性內容,本篇文章記錄如何解決此問題。

起手式:安裝 dataview 第三方外掛

方法一:dataview 語法

此方式可以把所有的屬性展現出來,匯出PDF就可以看見了,但無法選擇要展現那些屬性。

```dataview
TABLE WITHOUT ID file.frontmatter AS Properties 
WHERE file.name = this.file.name
```

方法二:使用 dataviewjs 以 javascript 展現

此方法可以自行決定那些欄位要呈現出來,比較有彈性。

```dataviewjs
// 檢索當前檔案的 Frontmatter

let frontmatter = dv.current().file.frontmatter;

// 定義要排除的欄位(視需要調整)
let excludeFields = ['tags', 'created']

// 根據排除列表提取並過濾鍵和值
let filtered_keys = Object.keys(frontmatter).filter(key => ! excludeFields.includes(key));
let filtered_values = filtered_keys.map(key => frontmatter[key]);

// 定義一個陣列來儲存表格的每一行
let rows = [];

// 使用鍵值對填充行陣列
for (let i = 0; i < filtered_keys.length; i++) {

  // 將陣列值(例如標籤)轉換為以逗號分隔的單一字串
  let value = Array.isArray(filtered_values[i]) ? filtered_values[i].join(', ') : filtered_values [i];
  rows.push([filtered_keys[i], value])
}

// 生成一個包含兩列的表格並填充行
dv.table(['Properties', 'Values'], rows)
```

點此查看出處

如何在 WordPress 中預覽 n8n 流程範本

n8n 有很多好用的範本可以使用。如果我們也有很棒的流程要告訴大家,官方很貼心提供「n8n 流程預覽網頁元件」,可以在自己網站分享。我實作時遇到顯示失敗問題,也一併奉上解決方法。

wordpress 該如何安裝使用,有兩個方式:

方法(一):安裝外掛

我們可以借助外掛「WPCode Insert Headers and Footers 」,將 n8n 流程預覽網頁元件的 javascript 加上去,這樣以後發文,就可以直接引用該元件不用每次都加。

 

 

 

<script src="https://cdn.jsdelivr.net/npm/@webcomponents/webcomponentsjs@2.0.0/webcomponents-loader.js"></script>
<script src="https://www.unpkg.com/lit@2.0.0-rc.2/polyfill-support.js"></script>
<script type="module" src="https://cdn.jsdelivr.net/npm/@n8n_io/n8n-demo-component/n8n-demo.bundled.js"></script>

寫文章的時候,選擇自訂HTML

 

# 輸入 n8n 語法
<n8n-demo workflow='n8n的節點json字串' frame=true></n8n-demo>

 

方法(二):不安裝外掛,直接貼上 n8n javascript 與 n8n 語法


<script src="https://cdn.jsdelivr.net/npm/@webcomponents/webcomponentsjs@2.0.0/webcomponents-loader.js"></script>
<script src="https://www.unpkg.com/lit@2.0.0-rc.2/polyfill-support.js"></script>
<script type="module" src="https://cdn.jsdelivr.net/npm/@n8n_io/n8n-demo-component/n8n-demo.bundled.js"></script>

<n8n-demo workflow='n8n的節點json字串' frame=true></n8n-demo>

實際上我實作的時候,一直出現 json 錯誤

 

 

最後在 這個地方 發現有個神人做了一個 n8n 流程,其功能為:

將"流程 json 字串",轉化成一個可用的 "Encoded URL" 字串

我們將 Encoded URL 取代 json,這樣就可以解決 Invalid JSON 的問題了。

 


該神人做好的 n8n 流程,我放在下面,我們只要修改其第二節點的內容,改成自己的 json 字串,第三節點產出的就是我們要的 Encoded URL。


題外話

由於「n8n 流程預覽網頁元件」只能顯示出英文,因此我請 gemini pro 改寫能顯示中文的版本(檔案在這),只是我不懂 npm ,最後載入失敗。

寫作排版技巧:中英文文案的常見錯誤

我曾經看到一封 email ,內容寫得真爛,後來發現是我自己寫的,標點符號都亂標,XD 。最近又發現原來我寫中英文時,也很隨興,常事後看起來不對勁,但就是看不出所以然來。

後來我在上面,看到有人在推寫作時,應當要注意中、英文排版,建議參考「中文文案排版指北」,內容簡單,淺顯易懂,我也推薦大家發漏。

Spring Boot 3.5+OpenAPI 3.1 加上 Selenium 踩坑

原本我在公司寫好的 Spring Boot 3.1.5+OpenAPI 3.1+selenium 4.21 都很正常,直到 Spring AI 1.0 橫空出世,我想 Spring Boot 也應該升級到Spring boot 3.5.0 ,才能用上 Spring AI 1.0 MCP 功能,也才能接上未來的 n8n。

但很可惜還沒來得及加上 Spring AI 1.0 外掛,就出現執行階段錯誤

02:29:19,730 |-INFO in ch.qos.logback.classic.util.ContextInitializer@4218d6a3 - ch.qos.logback.classic.util.DefaultJoranConfigurator.configure() call lasted 70 milliseconds. ExecutionStatus=DO_NOT_INVOKE_NEXT_IF_ANY

02:29:19,942 |-ERROR in ch.qos.logback.core.joran.spi.SaxEventInterpretationContext@663411de - No 'converterClass' attribute in <conversionRule>
02:29:19,942 |-ERROR in ch.qos.logback.core.joran.spi.SaxEventInterpretationContext@663411de - No 'converterClass' attribute in <conversionRule>
02:29:19,942 |-ERROR in ch.qos.logback.core.joran.spi.SaxEventInterpretationContext@663411de - No 'converterClass' attribute in <conversionRule>
02:29:19,942 |-ERROR in ch.qos.logback.core.joran.spi.SaxEventInterpretationContext@663411de - No 'converterClass' attribute in <conversionRule>
02:29:19,942 |-ERROR in ch.qos.logback.core.joran.spi.SaxEventInterpretationContext@663411de - No 'converterClass' attribute in <conversionRule>
02:29:19,942 |-ERROR in ch.qos.logback.core.joran.spi.SaxEventInterpretationContext@663411de - No 'converterClass' attribute in <conversionRule>
Logging system failed to initialize using configuration from 'null'
java.lang.NoSuchMethodError: 'void ch.qos.logback.core.model.processor.ModelInterpretationContext.setConfiguratorSupplier(java.util.function.Supplier)'
	at org.springframework.boot.logging.logback.SpringBootJoranConfigurator.buildModelInterpretationContext(SpringBootJoranConfigurator.java:117)

踩坑好久好久,後來才發現原本 selenium 使用 webdrivermanager.jar (5.8.0) 內建的 logback,與 spring-boot 3.5.0 內建的 logback 函式庫相衝突,需要升級到最新的 webdrivermanager 6.1.0 才可以匹配,且我有額外排除 webdrivermanager 6.1.0 內建的 logback。

我的設定檔案是 build.gradle,非 maven,重點如下

plugins {
	id 'java'
	id 'org.springframework.boot' version '3.5.0'	
	id 'io.spring.dependency-management' version '1.1.7'
...
}

dependencies {
 implementation("org.springframework.boot:spring-boot-starter-web:3.5.0")
 implementation 'org.seleniumhq.selenium:selenium-java:4.33.0'
 implementation("io.github.bonigarcia:webdrivermanager:6.1.0"){
  exclude group: 'ch.qos.logback', module: 'logback-classic'
 }
...
}

當然 src/main/resources 目錄也要新增 logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>[%-4level] %msg%n</pattern>
        </encoder>
    </appender>

    <logger name="io.github.bonigarcia" level="DEBUG" />
    <logger name="io" level="WARN" />
    <logger name="org" level="WARN" />
    <logger name="com" level="WARN" />

    <root level="INFO">
        <appender-ref ref="STDOUT" />
    </root>

</configuration>

這樣就能成功從 Spring Boot 3.1.5 升級到 Spring Boot 3.5.0 了

n8n 新增code節點,跳脫json字串

json字串有些特殊字元,需要跳脫後才能正常使用。因此有必要在n8n加上code節點寫javascript 跳脫。

const chars = {
  "\"": "\\\"",
  "\\": "\\\\",
  "\/": "\\/",
  "\u0000": "\\u0000",
  "\u0001": "\\u0001",
  "\u0002": "\\u0002",
  "\u0003": "\\u0003",
  "\u0004": "\\u0004",
  "\u0005": "\\u0005",
  "\u0006": "\\u0006",
  "\u0007": "\\u0007",
  "\u0008": "\\u0008",
  "\u0009": "\\u0009",
  "\u000A": "\\u000A",
  "\u000B": "\\u000B",
  "\u000C": "\\u000C",
  "\u000D": "\\u000D",
  "\u000E": "\\u000E",
  "\u000F": "\\u000F",
  "\u0010": "\\u0010",
  "\u0011": "\\u0011",
  "\u0012": "\\u0012",
  "\u0013": "\\u0013",
  "\u0014": "\\u0014",
  "\u0015": "\\u0015",
  "\u0016": "\\u0016",
  "\u0017": "\\u0017",
  "\u0018": "\\u0018",
  "\u0019": "\\u0019",
  "\u001A": "\\u001A",
  "\u001B": "\\u001B",
  "\u001C": "\\u001C",
  "\u001D": "\\u001D",
  "\u001E": "\\u001E",
  "\u001F": "\\u001F",
  "\u007F": "\\u007F",
  "\u0080": "\\u0080",
  "\u0081": "\\u0081",
  "\u0082": "\\u0082",
  "\u0083": "\\u0083",
  "\u0084": "\\u0084",
  "\u0085": "\\u0085",
  "\u0086": "\\u0086",
  "\u0087": "\\u0087",
  "\u0088": "\\u0088",
  "\u0089": "\\u0089",
  "\u008A": "\\u008A",
  "\u008B": "\\u008B",
  "\u008C": "\\u008C",
  "\u008D": "\\u008D",
  "\u008E": "\\u008E",
  "\u008F": "\\u008F",
  "\u0090": "\\u0090",
  "\u0091": "\\u0091",
  "\u0092": "\\u0092",
  "\u0093": "\\u0093",
  "\u0094": "\\u0094",
  "\u0095": "\\u0095",
  "\u0096": "\\u0096",
  "\u0097": "\\u0097",
  "\u0098": "\\u0098",
  "\u0099": "\\u0099",
  "\u009A": "\\u009A",
  "\u009B": "\\u009B",
  "\u009C": "\\u009C",
  "\u009D": "\\u009D",
  "\u009E": "\\u009E",
  "\u009F": "\\u009F"
};
$json.output = $input.first().json.output.replace(/[\"\\\/\u0000-\u001F\u007F\u0080-\u009F]/g, match=>chars[match]);
return $input.all();

docker安裝apache tika 文件辨識系統與N8N整合

現在主流文件辨識,應該都交由vision功能的AI模型處裡,辨識度高;若不想花錢使用AI,可以用apache tika頂著用。


docker 安裝 apache tika

docker run -d -p 9998:9998 --name tika-server-ocr apache/tika:latest-full
# 目前是3.1.0

安裝完畢,進入容器,安裝中文語言套件

docker exec -u root -it tika-server-ocr bash
###
apt update
apt-get install tesseract-ocr-chi-sim tesseract-ocr-chi-tra
###

測試

# Linux
# 中文圖檔 test.png
curl -T test.png http://127.0.0.1:9998/tika --header "X-Tika-OCRLanguage: eng+chi_tra+chi_sim"

N8N(nodemation)設定

前一個節點要把檔案準備好,再新增以下節點,丟給tika處理,回傳設定為text

1 2 3 ... 79