• Cisco.com/jp

Cisco Japan Blog > 脅威リサーチ

注目の脆弱性:Ghost CMS でサービス拒否を引き起こす可能性のある Node-SQLite3 の問題

ghost foundation ので sqlite

脆弱性の発見者: Cisco Talos の Dave McDaniel

Cisco Talos はこのほど、Ghost コンテンツ管理システムに影響を与える node-sqlite3 の脆弱性を発見し、このライブラリを利用する他のソフトウェアに影響を与える可能性があることを明らかにしました。

コンテンツ管理システム(CMS)である Ghost は、Web サイトを構築し、コンテンツを公開し、ニュースレターを送信するためのツールを備えています。

node-sqlite3 ライブラリは、非同期でノンブロッキングの Node.js 用 SQLite3 バインディングを提供します。Ghost は node-sqlite3 ライブラリを整備し、CMS プラットフォームで使用しています。

JSON 形式という制限があるため、この脆弱性が Ghost CMS に及ぼす影響はリモートサービス拒否のみで、Node.js プロセスをクラッシュさせます。ただし Ghost CMS を使用する他の製品では、この脆弱性によリモートでコードが実行される危険性があります。

影響を受ける製品(Ghost Foundation node-sqlite3 5.1.1)をお使いであれば、できるだけ早く更新することをお勧めします。Talos では、このバージョンの node-sqlite3 が今回の脆弱性によってエクスプロイトされる可能性があることをテストして確認済みです。

脆弱性のエクスプロイトは Snort ルール(60946)で検出できます。今後、脆弱性に関する新たな情報が追加されるまでの間は、ルールが追加されたり、現行のルールが変更されたりする場合がありますのでご注意ください。最新のルールの詳細については、Cisco Secure Firewall Management Center または Snort.org を参照してください。

本稿は 2023 年 03 月 16 日に Talos Group のブログに投稿された「 Vulnerability Spotlight: Node-SQLite3 issue could lead to denial of service in Ghost CMS 」の抄訳です。

Twitter

  • AppDynamics
  • ThousandEyes
  • アスリートアンバサダー
  • インターンシップ プログラム
  • カスタマー エクスペリエンス
  • Cisco Blog [英語]
  • サポート コミュニティ日本
  • ラーニング ネットワーク ジャパン
  • Cisco Japan
  • AppDynamics Japan
  • Meraki Japan
  • ThousandEyes Japan
  • Webex Japan

maroonmed.com

Make SQLite work again with Ghost 5.x on Docker

ghost foundation ので sqlite

With the release of Ghost 5.0 back in May 2022, one of the biggest architectural changes was the announcement that MySQL 8 would be the only database officially supported in production environments. While committing to a full-blown database like MySQL might be a sensible and easy-to-make decision for a larger company or business, for those of us who primarily use Ghost as a hobbyist or small-business/side-gig static blogging platform (ditto on those new Ghost features like paid subscriptions and native commenting), SQLite has been working fine for years. It's easy (no need to configure and maintain a giant MySQL installation), it's still highly performant, and best of all, it's easily backed up - all I need to do is cp -R my ghost directory. And specifically for those of us who like to make life even easier with Docker, the official Docker Ghost image has also shipped with SQLite as the default database for years....until it didn't.

https://github.com/docker-library/ghost/pull/323

Somewhere in the vicinity of the Docker image release for Ghost 5.9, the default database was switched to MySQL. Not a terribly unreasonable idea given that the production default for Ghost 5.x is MySQL, but unfortunately this change broke a lot of people's existing Ghost-on-Docker instances that used the old default sqlite3 setup, as evidenced by the numerous subsequent complaints.

ghost foundation ので sqlite

Thankfully, the fix for this is relatively easy, assuming you want to keep using SQLite. Stop and remove your existing Ghost container, then recreate it with the following environment variables:

This is consistent with Ghost's officially recommended configuration settings for sqlite3. Assuming that the path to your ghost.db is correct, your Ghost instance should be back up and running shortly!

ghost foundation ので sqlite

It bears repeating that running Ghost on SQLite in production is officially unsupported, and that this could stop working at any time if future versions of Ghost implement new features or breaking changes that simply won't work with SQLite any more. Indeed, you'll be reminded of this every time you visit the admin panel. However, as Ghost uses knex.js as a database abstraction layer, hopefully this won't happen anytime soon!

You might also like...

Ttl modification for outgoing traffic with openwrt 22.03 and firewall4, niu kqi3 pro electric scooter - charging port cover replacement, simple vlmcsd systemd service definition, getting the lenovo smart clock essential to play nice with ubiquiti unifi wireless access points, berry-on-a-bush, router-on-a-stick: using the raspberry pi 4 as an inter-vlan openwrt router.

Ghost 4.x + SQlite3 : Support

I’ve decided to do a “fresh install” to move to Ghost V4 → Currently use Ghost V3 + SQlite3 (ghost install --db sqlite3) However I have an issue when running “Ghost Start”

Some research on google led me to an issue on Github : Ghost 4.0.1 + Sqlite 3 : Missing module · Issue #12788 · TryGhost/Ghost · GitHub

So I’m wondering if SQlite3 still supported ? (small blog) According Documentation I know that MySQL is recommended for production but SQlite3 has worked smoothly over 3 years for me now ;-)

Thank you in advance, Whys

sqlite3 is definitely still supported! Can you provide more information - are you installing Ghost locally or on a server? What commands did you run?

I’ve run into this issue a few times and found that force re-updating ghost to the current version helps

@vikaspotluri123 I ran into the same issue and made a separate thread for it before I saw this post. Linking it here for convenience. Ghost 4.1.0 does not seem to work with an sqlite database without additional manual setup

It’s a fresh Install on a new server (Ubuntu 20.04)

:thinking:

Hi @vikaspotluri123 Issue seems to be related to Node version 14. How to install Ghost on Ubuntu

I did an other install an replace Node 14 by Node 12 and it’s work without additional steps.

I hope this helps !

Related Topics

Logo

  • Lucene search
  • Search by product
  • Elastic search

talos

Ghost Foundation node-sqlite3 code execution vulnerability

Attack Vector

Attack Complexity

Privileges Required

User Interaction

Confidentiality Impact

Integrity Impact

Availability Impact

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

Access Vector

Access Complexity

Authentication

AV:N/AC:L/Au:N/C:P/I:P/A:P

Talos Vulnerability Report

Talos-2022-1645, march 16, 2023.

CVE-2022-43441

A code execution vulnerability exists in the Statement Bindings functionality of Ghost Foundation node-sqlite3 5.1.1. A specially-crafted Javascript file can lead to arbitrary code execution. An attacker can provide malicious input to trigger this vulnerability.

CONFIRMED VULNERABLE VERSIONS

The versions below were either tested or verified to be vulnerable by Talos or confirmed to be vulnerable by the vendor.

Ghost Foundation node-sqlite3 5.1.1

PRODUCT URLS

node-sqlite3 - < https://github.com/TryGhost/node-sqlite3&gt ;

CVSSv3 SCORE

8.1 - CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H

CWE-915 - Improperly Controlled Modification of Dynamically-Determined Object Attributes

The node-sqlite3 module provides asynchronous, non-blocking SQLite3 bindings for Node.js within Ghost CMS.

This vulnerability is also exploitable using Ghost CMS. However, due to the restrictions of JSON, it only manifests itself as a remote denial of service, which crashes the entire Node.js service that Ghost CMS is running on. This is addressed later in this report.

When SQL query parameters are bound to a statement using this module, those parameters are sent through a loop within the Statement::Bind() function defined in statement.cc . This loop determines the parameter type(s) and those parameters are bound to the specified query.

[0] Each Element from the array is retrieved with (array).Get(i) and then BindParameter() is called

The Get operation can be found in node-addon-api/napi-inl.h . This will attempt to retrieve the appropriate value and return an error code status. [1] napi_get_element() is called.

napi_get_element in js_native_api_v8.cc will return the specified object at the specified index as well as the status of the operation.

At [2] we can see, when parsing the first item (the malicious object), the result value is a pointer to:

And that no error was found [3]:

Once the object is retrieved, we return to the BindParameter() operation in statement.cc , which attempts to normalize and return the appropriate new object to assign to the bound parameters.

[4] This line calls the toString() operation on a received object, which will then call napi_coerce_to_string() . ( Note if we define a valid function and assign it to the toString() method of an object, the function will execute in the context of the script running the Javascript code.) This is where we would achieve Javascript code execution using the module.

The potential misuse of this function call resulting in code execution is noted in the Node.js API docs at: < https://nodejs.org/api/n-api.html#napi_coerce_to_string&gt;:

Continue reading for how this is handled in Ghost CMS with JSON restrictions.

[5] With JSON restricted characters, we are only able to define toString() as null or another invalid value, which results in a new object not being returned, only a null-value.

Here is the object in which napiVal.Type() is 0x0 or napi_undefined at [5]:

When we return to the original Bind() loop call previously [6], we can see a NULL object pushed into the parameters list

Now we begin to parse the second element in the array, which is just the int 0x41

[7] This time when within napi_get_element , the function fails at NAPI_PREAMBLE .

NAPI_PREABLE in js_native_api_v8.h [8] Since (env)-&gt;last_exception.IsEmpty() evaluates to 0x0 , napi_pending_exception is set, and the napi_get_element function immediately returns.

CHECK_ENV definition:

RETURN_STATUS_IF_FALSE definition:

We can see the previous exception below:

[9] We can also see the value returned to Object::Get is 0x0 .

When this returns all the way back to the original loop and is sent to the BindParameter call, this null object is still parsed. [10] When we reach line 186, the function attempts to coerce the serialized JSON into an object and check if it is of type RegExp, as part of its normal parsing loop.

As() as defined in napi-inl.h :

We can see that both values are 0x0 , as expected.

When the call to OtherInstanceOf() is made, the source value is a null &lt;Napi::Value&gt; .

[11] This null source is used to attempt to check if it is of the type RegEx . Part of this check will call Env::Global with a null this pointer.

[12] Which returns a status of napi_invalid_arg when napi_get_global is called.

An exception is then thrown, as seen in the crash information section of this report.

Crash Information

Exploit proof of concept.

Ghost CMS DoS PoC:

RCE PoC that redefines toString() as a call to console.log('Hello World') :

2022-10-28 - Vendor Disclosure 2023-03-13 - Vendor Patch Release 2023-03-16 - Public Release

Discovered by Dave McDaniel of Cisco Talos.

Vulnerability Reports Next Report

TALOS-2022-1674

Previous Report

TALOS-2022-1616

Be first who know about 0-days in popular software

Do not waste time on finding information in tons of articles. Subscribe yourself and your colleagues on news and articles about products you need and you use!

ghost foundation ので sqlite

Debian DSA-5373-1 : node-sqlite3 - security update

ghost foundation ので sqlite

Vulnerability Spotlight: Node-SQLite3 issue could lead to denial of service in Ghost CMS

ghost foundation ので sqlite

Arbitrary Code Execution

ghost foundation ので sqlite

sqlite vulnerable to code execution due to Object coercion

node-sqlite3 - security update

ghost foundation ので sqlite

Remote code execution

ghost foundation ので sqlite

[SECURITY] [DSA 5373-1] node-sqlite3 security update

ghost foundation ので sqlite

Security Bulletin: QRadar Pulse application add on to IBM QRadar SIEM is vulnerable to using components with known vulnerabilities

Security Bulletin: Vulnerability in moment-timezone affects IBM VM Recovery Manager DR GUI

Viewing Local SQLite Ghost Database

11 Oct 2015 | | Ian Grail | Ghost , SQLite

Blog 1

If you are doing some local Ghost Core development, or are simply curious what is happening to your Ghost data under the hood: There is a quick and easy way to visualize and browse your local Ghost database (or any SQLite .db files).

1. Download and install a SQLite DB Browser

Here is a cross-platform open-source option: http://sqlitebrowser.org/

2. Open Ghost's .db file

  • Launch your SQLite Browser and click on "Open Database".
  • Select the ghost-dev.db file found inside of your local ghost install i.e.:

ghost foundation ので sqlite

3. You are in business!

ghost foundation ので sqlite

About Author: Ian Grail

Ian Grail

Software Developer. Aspiring Pool Lounger.

  • Just Launched

Featured Posts

  • 13 Questions to Ask an App Development Team Before You Hire Them November 29, 2018
  • How We Launched Hobbygoblin's MVP Web App in Just Eight Weeks August 21, 2017
  • How to Build Your Own Slack Bot Integration with Node.js August 2, 2017

Search code, repositories, users, issues, pull requests...

Provide feedback.

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly.

To see all available qualifiers, see our documentation .

  • Notifications

easy Ghost self-hosting with docker-compose

linnik/ghost-sqlite-compose

Migrating Ghost from SQLite to MySQL

Changing the database engine powering a Ghost website is very easy. Learn how to do it!

I’ve been using Ghost with SQLite for a year and a half and I haven’t had any issues related to SQLite at all. I would even say this is a very good choice for Ghost and I realize now that I’ve made a post about it .

I want to switch back to MySQL because I feel more confident using it. Especially for backups.

My current setup is a LXD host server with a bunch of containers managed by Ansible. My Ghost container has access to an existing MySQL container, so I created a new database in a few seconds. All my backup workflow is already functional for MySQL, so switching really does not cost me much. That may not be the case for everyone though! If your Ghost website is hosted on a single server, SQLite is still a good choice.

Anyway, as expected it’s the exact same operation, but reversed.

ghost foundation ので sqlite

Step 1: Export your content to a JSON file. This includes everything except images.

Step 2: Create a MySQL database and a MySQL user for Ghost

Step 3: Update your config.production.json file.

Step 4: Restart Ghost.

For me it was:

Step 5: Create a new user and login to the admin

Step 6: Go the lab and click “Delete all content”. This deletes the pre-included posts and stuff.

Step 7: Import your JSON file in the lab. This should import back everything. If you created a user with the same email address it will soft-fail, but don’t worry! Just make sure to complete your profile again.

That’s it, everything should be the same as before, since the media files haven’t moved.

Make sure to setup a regular automated backup of the MySQL database. 🤓

Continúa usando SQLite con Ghost 5 y Docker

Si tienes tu blog en Ghost y no quieres migrar a MySQL, aquí tienes cómo seguir utilizando SQLite como base de datos

Parra

Read more posts by this author.

Desde que comencé a escribir este blog, he apostado siempre por Ghost , ya que es una plataforma bastante más ligera que Wordpress y mi idea era auto alojar el servicio en un VPS modesto y barato. Bastaba una imagen Docker del mismo y ya, puesto que soporta el uso de SQLite como base de datos. Esto me venía bien por dos motivos: Por un lado, no depender de una base de datos en mi VPS que consumiera recursos sólo para tener el blog y, por otro, la facilidad de hacer una copia de seguridad del mismo (basta con un cp -R del directorio donde está el blog y listo).

Desde la versión 5, desde Ghost decidieron dar soporte únicamente a MySQL como base de datos. No voy a entrar en si es una decisión acertada o no, pues entiendo que están pensando en el mundo empresarial y en el uso de plataformas de blog con mucho más alcance y contenido que este blog.

Cuando comencé este blog, mi idea era, simplemente, volcar todo lo que iba haciendo en mis ratos de trasteo y cacharreo, y tener un lugar donde poder consultarlo, a modo documentación... Además de permitirme aportar a esa Internet libre y gratuita un poco de lo que me ha dado a mí. Con el tiempo, y gracias al feedback que he recibido en alguna ocasión (y a las métricas anonimizadas que he podido extraer gracias al servidor de métricas ), he descubierto que también está ayudando a otros entusiastas de la tecnología de habla hispana (incluso en Reddit alguno me llegó a agradecer que hubiera más contenido en español, aunque todos nos movamos por el inglés en este mundo).

Debido a esto, cuando hice la actualización de Ghost a la versión 5, me encontré con que, o migraba todo a MySQL, o mi blog dejaba de funcionar. Sí, sé que es algo que tendré que hacer en algún momento... Pero ahora mismo no tengo tiempo para ponerme con ello, tengo otros proyectos arrancados y me gustaría cerrarlos antes de meterme en una nueva aventura. Además, mi VPS ya está bastante exprimido ahora mismo como para, encima, meterle un contenedor más xD.

Me bastó con una simple búsqueda para ver que no soy el único con este problema, y la solución se presentó rápido delante de mí. Y como no quiero dar mucho suspense ni hacer de esto una entrada muy larga, ¡vamos al lío!

Según la documentación de Ghost , podemos especificar el motor de base de datos que vamos a usar, así como la información necesaria. Basándonos en ello, bastará con definir algunas variables de entorno para forzar a que, al arrancar, haga uso de SQLite como motor de base de datos. Bastará con crear un fichero docker-compose.override.yml y añadir lo siguiente (o meterlo directamente en nuestro fichero docker-compose.yml , como prefiramos):

Si tenemos nuestra base de datos (el fichero ghost.db ) en una localización diferente, obviamente deberemos indicar la ruta correcta dentro del contenedor de Docker.

Con esto, si ahora levantamos nuestra imagen de Ghost 5, veremos que nos arranca con todas las entradas, configuraciones e imágenes que teníamos en el blog, permitiéndonos continuar con él en pie.

Ghost 5 corriendo con SQLite

Ghost nos seguirá avisando de que la base de datos no está soportada y que migremos a MySQL 8 lo antes posible. Pero mientras eso ocurre, podemos seguir ofreciendo el contenido del blog con un consumo de recursos muy bajo y no penalizar el rendimiento. 😊

Si te ha gustado la entrada, o te ha sido útil y quieres ayudarme a pagar los gastos que conlleva el servidor y mantener así el blog libre completamente de anuncios, puedes hacer una donación en Bitcoin en la siguiente dirección:

Donar

Suscríbete a Parravidales blog

Obtén las últimas entradas directamente en tu bandeja de entrada

Parravidales blog

Subscribe to Parravidales blog

Stay up to date! Get all the latest & greatest posts delivered straight to your inbox

案件評判

Ghostを理解する!初心者でも分かる概要、特徴などの基礎知識を簡単に解説!

GhostとはシンガポールのGhost Foundationが開発・運営するブログに特化したヘッドレスCMSです。ブログに必要な機能に特化しているので、コンテンツ管理画面のUIがシンプルで使いやすいこともあり人気を集めております。この記事ではGhostを理解するために初心者でも分かる概要、特徴などの基礎知識を簡単に解説していきます。

GhostとはシンガポールのGhost Foundationが開発・運営するブログに特化したヘッドレスCMSです。ブログやオウンドメディアなど記事コンテンツを中心に公開するWebサイトの開発に向いており、メディア型のWebサイト運営に必要な機能を取り揃えていること多くのWebクリエイターに人気を集めております。またGhostはオープンソースで「Strapi」と同じくNode.js環境において動作します。ブログ特化の代表的CMSである「WordPress」と投稿エディタが似ているという特徴があり、WordPressに慣れている方であれば使いやすいとされています。オープンソースのヘッドレスCMSとして世界で最も人気を集めるサービスと言われております。

Ghostの公式サイトはこちら>>

ヘッドレスCMSとは従来のCMS(コンテンツ・マネジメント・システム)から見た目(View)の部分を切り離し、バックエンドのみの機能を用意したCMSの一種です。フロントエンドが存在しないCMSというのがイメージしやすいでしょう。例えば一般的なCMSとして「WordPress」を例に見るとコンテンツを表示するための「フロントエンド」とコンテンツを入稿・管理するための「バックエンド」どちらも兼ね備えております。 ヘッドレスCMSでは「バックエンド」のみを集中的に管理する目的があり、フロントエンドに関してはヘッドレスCMS外で運用する必要があります。基本的にはAPIを用いて入稿したコンテンツを取得し、表示したい場所へと映します。フロントエンドの自由度が高められることや表示速度が速いというメリットが挙げられます。 ヘッドレスCMSの機能やメリット、デメリットなどの基礎知識について解説している記事はこちら>>

Ghostの特徴を見ていきましょう。

Ghostはブログサイトに特化しているという特徴があります。とにかく記事を書くという点に特化しておりブログやオウンドメディアといった記事コンテンツ特化型メディアの開発、運営に向いております。カスタムリダイレクトの設定やGoogle AMPを記事単位で有効化することができるなどメディア運営をする上で有り難い機能が数多く用意されております。

Ghostはオープンソースという特徴があります。ヘッドレスCMSとして代表的な「Contentful」や「GraphCMS」はクローズドで有料なサービスとなっていますが、Ghostはオープンソースでコードベース全体が利用可能です。

Ghostは読み込み速度が早いという特徴があります。その速さはWordPressと比較して約10~20倍の速度を実現すると言われております。メディア特化型CMSとしてページ読み込み速度は重要な項目です。GoogleSpeedInsightでも最重要項目として挙げられているように特にSEO観点で大きな評価指標となります。ユーザビリティーの向上になり、検索順位にも効果的となるのは大きなメリットです。

WordPressと投稿エディタが似ている

GhostはWordPressと投稿エディタが似ているという特徴があります。よってWordPressに慣れている方であればすんなりと利用することができます。

GhostはNode.js環境で動作する

GhostはNode.js環境で動作するのでローカル環境にNode.jsをインストールする必要があります。Node.jsはJavaScriptを用いてサーバサイド開発を行う際の代表的な開発用実行環境として人気を集めております。Node.js上に構築されたGhostは高速なパフォーマンスを提供します。 Node.jsの特徴・メリット、基礎知識などを解説している記事はこちら>>

Ghostのバージョンリリース記録について

Ghostのバージョンアップは活発に行われており、その履歴はGitHubに詳細に記されております。

Ghost以外の代表的なヘッドレスCMS

Ghost以外の代表的なヘッドレスCMSを見ていきましょう。

Netlify CMS

Netlify CMSとは米国のNetlify社が運営する静的ホスティングサービスの一機能として提供されるヘッドレスCMSです。Gitワークフロー用のオープンソースCMSであり、編集者にとって使いやすいUIと直感的なワークフローを提供します。Jekyll、Hugo、Mkdocsなどの静的サイトジェネレーターと一緒に使用することで、より高速で柔軟なWebサイトを作成することができます。Netlifyとの連携により高度なパフォーマンスを発揮することができますが、NetlifyCMSを使用しているすべてのサイトがNetlify上にあるわけではなく、NetlifyなしでNetlifyCMSを使用することも可能です。

Netlify CMSの公式サイトはこちら>> Netlify CMSの概要や特徴などの基礎知識について解説している記事はこちら>>

ContentfulとはAPIベースのクラウドサービスであり、最も有名なヘッドレスCMSです。ドイツ発のヘッドレスCMSとして時価総額3,000億円規模を誇り、世界各国で使用されています。マルチデバイスへの対応は勿論のこと、画像自動リサイズやmarkdown記法が使用出来るなど充実した機能を揃えております。有名サービスの利用実績として「Spotfiy」「WeWork」などが挙げられます。 GraphCMSとはFacebook社が開発したGraphQLの活用に特化したヘッドレスCMSです。Contentfulと違ってRESTful APIを提供しておりませんが、GraphQLの活用に特化しており豊富なフィルターオプションやバッチ処理などの機能を揃えております。

Contentfulの公式サイトはこちら>> Contentfulの特徴やWordPressとの違いなどの基礎知識について解説している記事はこちら>>

microCMSとはAPIベースの日本製の中でも最も代表的なヘッドレスCMSです。ヘッドレスCMSでは日本語に対応していないものがまだ多いため、国産であるmicroCMSの登場によりドキュメントもサポートも完全日本語対応しているのでこの使いやすさは嬉しい限りです。「あらゆるコンテンツ運用を素早く簡単に」をキャッチコピーにしておりmicroCMSを使えば、ものの数分でAPIの作成ができます。国内有名サービスの利用実績として「ZOZOTOWN」「クラウドワークス」などが挙げられます。

microCMSの公式サイトはこちら>> microCMSの特徴や利用用途などの基礎知識について解説している記事はこちら>>

Ghostを理解するために初心者でも分かる概要、特徴などの基礎知識を簡単に解説させていただきました。Ghostを一言で表すと『ブログに特化したヘッドレスCMS』です。特徴として「オープンソース」「読み込み速度が早い」「WordPressと投稿エディタが似ている」 などが挙げられます。Ghostについてこの記事に記載されている最低限の内容は理解をしておくようにしましょう。

案件評判

  • フレームワーク (30)
  • JavaScript (21)
  • テンプレートエンジン (14)
  • フロントエンド (14)
  • CSSフレームワーク (12)
  • データベース (11)

ghost foundation ので sqlite

:: halation ghost ::

ghost foundation ので sqlite

SQLite の NuGet パッケージ

公開済み 2022年9月9日 · 更新済み 2022年9月9日

ghost foundation ので sqlite

今回は以前に書いた『 SQLite とメンテナンスツール 』の続編です!

ghost foundation ので sqlite

前のエントリでは SQLite の概要と SQLite の管理ツールの紹介を書いたので、今回は .NET 6(以降)のプロジェクトから SQLite にアクセスするためにインストールする NuGet パッケージについて紹介します。

  • 1 ここまでのあらすじ
  • 2.1 公式パッケージ
  • 2.2.1 System.Data.SQLite
  • 2.2.2 SQLite パッケージ
  • 2.2.3 System.Data.SQLite.Linq について
  • 2.2.4 System.Data.SQLite.EF6
  • 2.2.5 .NET Standard について
  • 3 .NET 6 でインストールする NuGet パッケージ

最初にも書いた通り、このエントリは『 SQLite とメンテナンスツール 』の 続編です。

そして、『 SQLite とメンテナンスツール 』は『 .NET6 で Generic Host を使った常駐アプリ 』の続編でもあります。

ghost foundation ので sqlite

最近公開したエントリは『 .NET6 で Generic Host を使った常駐アプリ 』を補完するために書いているので、このエントリは両方の続編と言う位置付けになっています。

続編と言っても、内容は独立しているので、両方読んでいなくても大丈夫です!(過去記事を読んでいただけるのはありがたいです!)

SQLite の Nuget パッケージ

.NET 6 のプロジェクトから SQLite にアクセスするにはまず、SQLite 用の ADO.NET プロパイダが必要なので、fig. 1 の [ソリューションの NuGet パッケージの管理]を開いて【sqlite】を検索してみます。

ghost foundation ので sqlite

fig.1 ソリューションの NuGet パッケージの管理を『sqlite』で検索

fig. 1 のように非常に多くのパッケージがヒットします。全パッケージの紹介はできませんが、公式パッケージに絞って簡単に紹介します。

公式のパッケージは以下のアイコンで 2 種類に大別できます。

両者で多少の違いはあるようですが、管理人は SQLite の公式パッケージしか使用したことがないので、Microsoft のパッケージについては触れません。SQL を発行して DB にアクセスするだけなら大きい差はないだろうと想像しています。Microsoft 製パッケージと SQLite 公式パッケージの違いは Microsoft Docs の『 System.Data.SQLite との比較 』で紹介されています。

ghost foundation ので sqlite

管理人は上のサイトに書かれているような部分まで踏み込んで SQLite を使用した事が無いのであまりピンときませんでしたが、気になる方は読んでみてください。

System.Data.SQLite 系のパッケージ

SQLite 開発チームがリリースしている ADO.NET プロパイダは SQLite 本家サイトとは別の【 System.Data.SQLite 】で公開されています。

ghost foundation ので sqlite

上の System.Data.SQLite サイトからダウンロードすることもできますが、NuGet を使用する方が簡単です。NuGet からインストールする場合、上では『sqlite』と書きましたが、fig. 2 のように 【system.data.sqlite】で検索する方が見つけやすい と思います。

ghost foundation ので sqlite

fig.2 fig.1 ソリューションの NuGet パッケージの管理を『system.data.sqlite』で検索

【system.data.sqlite】で検索しても多くのパッケージがヒットしますが、各パッケージの詳細は【 System.Data.SQLite FAQ ページ 】で紹介されています。

ghost foundation ので sqlite

上の FAQ ページを翻訳した内容を以下に転記します。System.Data.SQLite からリリースされているパッケージは以下の 10 種類です。

上記に加えて、パッケージ名の末尾に『Beta』が付いているのはベータ版。『Test』が付いてるのはプレリリース版を表すようです。いくつかのパッケージについては別途調べたので、以降で簡単に紹介します。

System.Data.SQLite

System.Data.SQLite パッケージには『EF 6 対応』『.NET Framework と .NET Standard 2.1 に対応』と書かれているので、.NET Framework と .NET Standard をマルチターゲットにした EF 6 も使用するプロジェクト用のフルパッケージだと思われます。 System.Data.SQLite の NuGet ページ には .NET Framework 4.0 以降には、System.Data.SQLite.EF6 に依存するとの記載があるので、.NET Framework と EF 6 を使用する場合に選択するパッケージだと思われます。

ghost foundation ので sqlite

マルチターゲットのプロジェクトは作成しない、EF 6 も使用しない場合は別のパッケージを選択した方が良いと思います。

ghost foundation ので sqlite

SQLite パッケージ

fig. 1 のように『sqlite』で検索した場合に検索結果の最上段に表示される【SQLite パッケージ】は何者なのか気になったので、とりあえずインストールだけしてみました。

このパッケージはデータベースエンジンのみ含むパッケージのようですが、.NET 6 のプロジェクトにインストールすると上の一覧にある 【Stub.System.Data.SQLite.Core.NetStandard】も一緒にインストールされました 。

SQLite パッケージ の NuGet ページ には .NET Standard 1.0 に対応の記載はありますが、それ以降の .NET Standard は記載がありません。又、最終更新日が『2016/10/18』なので(2022/8 月現在)インストールは避けた方が良いと思います。

ghost foundation ので sqlite

ただ、試行結果の通り【Stub.System.Data.SQLite.Core.NetStandard】がインストールされるので、SQLite へのアクセスは可能だと思われます。(未確認)

System.Data.SQLite.Linq について

管理人は LINQ to SQL を使用した事はありませんが、『 C#でSQLite3を使ってみる – 5.LINQ to SQL | Qiita 』には System.Data.SQLite.Core だけで LINQ to SQL も実行できたと書かれているので、System.Data.SQLite.Linq は不要だと思われます。

ghost foundation ので sqlite

NuGet の System.Data.SQLite.Linq ページ には【.NET Framework 2.0】と書かれているので、.NET Framework 2.0 で LINQ to SQL を使用するためのパッケージ?と思いましたが、詳細は分かりません。

ghost foundation ので sqlite

ただ、上記 NuGet ページの【Frameworks】には .NET Core 以降の記載が無いので、.NET 6 以降で SQLite を使用する場合は気にしなくても良さそうです。(おそらく、System.Data.SQLite の依存関係としてインストールされるパッケージだと推測しています)

System.Data.SQLite.EF6

このパッケージについても簡単に調べただけなので間違えているかもしれませんが、EF 6(.NET Framework 版の EF)を使用する場合のみ、依存関係でインストールされるパッケージだと推測しています。(EF 6 をインストールしての確認はしていません)

現在(2022/8 現在)最新の .NET 6 用の EF は EF Core なので、試しに EF Core をインストールしてみましたが、System.Data.SQLite.EF6 はインストールされず『SQLitePCLRaw ~』で始まるパッケージがインストールされました。

.NET 6 以降で EF Core を使用する場合は無関係だと推測します。

.NET Standard について

ここまで普通に【.NET Standard】と書いてきましたが、【.NET Standard】とは?も簡単に紹介しておきます。検索すれば解説記事も見つかるので、そこに書かれている通りですが、 『.NET Standard』と言う名前の SDK は存在しません 。

.NET Standard とは、使用可能な API を定義した単なる規格名 です。つまり、.NET Standard に定義された API のみ使用したアセンブリを指して『.NET Standard x.x に準拠したアプリ』と呼ばれるだけです。

但し、 The future of .NET Standard – .NET Blog に書かれている通り、.NET Standard は【2.1】が最終バージョンとなり、.NET 5 → .NET 6… に統合されたようです。

ghost foundation ので sqlite

つまり、 『.NET Standard』と記載があれば【.NET 6(7、8…)に対応】と読み替えて構わない と言う事のようです。マルチプラットフォーム対応の過渡期に生まれた一時的な規格だと思います。

.NET 6 でインストールする NuGet パッケージ

結論から言うと、 .NET 6 以降のプロジェクトにインストールする NuGet パッケージは【Stub.System.Data.SQLite.Core.NetStandard】のみで OK です。

ここまでの流れ的には【System.Data.SQLite.Core】で良さそうだと思うかもしれませんが、実は【System.Data.SQLite.Core パッケージ】は .NET Framework、.NET Standard に両対応なので、.NET 6 プロジェクトに 【System.Data.SQLite.Core】をインストールすると【Stub.System.Data.SQLite.Core.NetStandard】も一緒にインストールされます 。

つまり .NET Framework、.NET Standard の両方に対応したマルチターゲットなプロジェクトの場合は、【System.Data.SQLite.Core】でも構わないと思います(管理人はマルチターゲットなプロジェクトを作成した事が無いので、あくまでも予想ですが…)が、 .NET 6 以降のみに対応するプロジェクトは【Stub.System.Data.SQLite.Core.NetStandard】で十分 だと言えます。

実際『 .NET6 で Generic Host を使った常駐アプリ 』で紹介しているサンプルアプリは【Stub.System.Data.SQLite.Core.NetStandard】のみで、問題なく動作しています。

そして、上に書いた通り、EF Core を使用する場合は『SQLitePCLRaw ~』で始まるパッケージがインストールされるので、他は気にしなくても良いと思います。

【Stub.System.Data.SQLite.Core.NetStandard】をインストールしたら、『 SQLite とメンテナンスツール 』で紹介している DB Browser for SQLite や SQLiteStudio 等の管理ツールを使用して SQLite のデータベースファイルを作成すれば準備は完了です。

後は ADO.NET のお作法通りにコードを書けば、SQLite へのアクセスが可能になります。実際に SQLite にアクセスするサンプルソース等は、別記事で紹介する予定です!

ghost foundation ので sqlite

Generic Host の DI が appsettings.json を統べる

2022年12月12日

 by 沖田玲朗 · Published 2022年12月12日

ghost foundation ので sqlite

.NET6 で Generic Host を使った常駐アプリ

 by 沖田玲朗 · Published 2021年12月1日 · Last modified 2022年12月12日

ghost foundation ので sqlite

SQLite とメンテナンスツール

 by 沖田玲朗 · Published 2022年8月14日

コメントを残す コメントをキャンセル

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。

このサイトはスパムを低減するために Akismet を使っています。 コメントデータの処理方法の詳細はこちらをご覧ください 。

  • 次の記事  Micro-ORM Dapper の使い方
  • 前の記事  SQLite とメンテナンスツール
  • .NET Core WPF Prism MVVM 入門 2020 エントリまとめ
  • 新作アニメ一覧画像まとめ
  • .NET 6 時代のデスクトップアプリ系エントリまとめ
  • WPF UI Gallery エントリまとめ
  • WPF Prism 入門エントリまとめ
  • WPF MVVM L@bo エントリまとめ
  • Nuget、登録の時間です!
  • 2024 年春アニメ(4 月~ 6 月放送)一覧画像
  • 2024 年冬アニメ(1 月~ 3 月放送)一覧画像
  • 2023 年秋アニメ(10 月~ 12 月放送)一覧画像
  • 2023 年夏アニメ(7 月~ 9 月放送)一覧画像
  • WordPress.org

ghost foundation ので sqlite

タケオトラベラー(Takeo Traveler)

ドイツと韓国への私費留学を経験した三十路男子が、これまでの旅行の回顧録、日々思ったこと等を徒然と書いていきます!

ロシア・モスクワ旅行 Part 2-シェレメチェヴォ国際空港からアエロエクスプレス・地下鉄を乗り継いで宿泊先のホテルへ!

IMG_2513

シェレメチェヴォ国際空港の入国審査に長時間!

シェレメチェヴォ国際空港のatmで、クレジットカードでのルーブル引き出し.

IMG_2471

シェレメチェヴォ国際空港アエロエクスプレス乗り場へ!

アエロエクスプレス+モスクワ地下鉄乗車券を購入してベラルースキー駅へ!.

IMG_2489

ベラルースキー駅からモスクワ地下鉄2号線で劇場駅へ!

IMG_2546

モスクワ地下鉄路線図ダウンロード

セレッソ大阪の応援を楽しもう!

待っているのは最高の週末♪楽しくセレッソ関連情報を発信していきます♪

2018FIFAワールドカップ ロシア:モスクワの地下鉄駅めぐりモデルコース(自分歩き)

2018/5/24 2018/5/25 ロシアワールドカップ2018 , 開催都市情報

「地下宮殿」と呼ばれるモスクワの地下鉄駅は豪華で一見の価値あり!ぜひ観光したいので、どの順番で回るかなどを調べてみた

モスクワの地下鉄は、共産主義時代の影響で豪華な装飾が施されていて、美術館や宮殿のような雰囲気をもち「地下宮殿」と呼ばれることもあるようです。

ghost foundation ので sqlite

モスクワの地下鉄は全部で12路線あり、モスクワ・モノレール(13号線)と中央環状線(14号線)をあわせて、全部で14路線あるとも言えます。

モスクワ滞在中にお世話になるであろう地下鉄の路線図や鉄道駅の情報は、別記事のこちらでまとめていますが、この記事では 「地下宮殿」と呼ばれるモスクワ地下鉄駅の観光目的 に絞って紹介したいと思います。

2018FIFAワールドカップ ロシア 開催都市情報(モスクワ)地下鉄・鉄道駅

モスクワの地下鉄(概要)

モスクワの地下鉄の路線図です。

ghost foundation ので sqlite

赤の広場やクレムリンのある中心部から、放射線状に延びているのが特徴的なモスクワ地下鉄。5号線の環状線もありますし、乗換していろんな場所に行けそうです。

後ほどモデルコースを紹介しますが、乗換駅がたくさんあるので、自分の行きたい駅を見つけて、好きな駅だけ回るのでもよいと思います。

ghost foundation ので sqlite

【運行時間】 始発:5時半ごろ 終電:翌1時ごろ (路線による)

【運賃】 55P(1回券) 110P(2回券) 747P(20回券)

自動券売機で1回券などを買って乗り込みます。

モスクワの地下鉄の観光コースプラン

以下の観光コースを紹介しているガイドを見つけましたので、参考までにこの場でも紹介したいと思います。

ghost foundation ので sqlite

観光コースプランの駅情報

見学に行きたい駅(モデルルートの駅)の名前を地下鉄の路線図に赤枠の四角で囲ってみました。

ghost foundation ので sqlite

コムソモーリスカヤ駅から順番に巡っていくのもよいですし、No.6の Teatralnaya駅 とNo.7の Ploshchad Revolyutsii駅 は、乗り換え可能な駅ですので、赤の広場などの市内観光のついでに、この2つの駅の観光をしてしまうのもよいと思います。

まずは赤の広場・クレムリンなどの自分の観光に行きたい場所との優先順位で、行く駅・順番を決めてもよいと思います。

以下では、各駅の情報と駅の装飾の特徴を順にご紹介します。

『メトロ(地下鉄)』で乗車券(チケット)を買ってみよう!

指で「1」や「2」などジェスチャーし、お金を出せばOK。 チケットとレシートをくれます。

あとは、乗り場まで行って電車に乗るだけです。 ホームから電車に乗るところも動画に撮ってきました。 一度見ておくと、イメージしやすいですよ。

『メトロ(地下鉄)』のチケットを買うときの注意点

有人のチケット売り場の場合、高額紙幣(5000ルーブル紙幣)で支払うと、つり銭がないといわれる場合があります。 ですので、定額の紙幣や小銭を用意しておいた方がスムーズです。 (1000、2000ルーブル紙幣ならまず大丈夫)

券売機はロシア語が不要なので便利というイメージがありますが、チケットが出てこない、つり銭が出てこないといったトラブルが起きた場合に対処がむずかしいです。 故障している機器もあります。 チケットを買うとき、券売機はガラガラなのに、窓口のほうが行列していることが多いです。 それは、ロシア人が券売機(機械)を信用しすぎていないということでもあります。 ですので券売機を利用する場合は、誰かチケットを購入している人のうしろに並び、動作している券売機であることを確認してから利用するのが確実です。

モスクワ『メトロ(地下鉄)』の乗車券の買い方と自動改札の通り方、簡単だったでしょう^^ ロシア語がわからなくても、まず問題ないです。 チケットの購入手順などもシンプルです。 モスクワ観光に行ったら、ぜひ『メトロ(地下鉄)』を使いこなして楽しんでくださいね。

ghost foundation ので sqlite

【体験談】快適!モスクワ~サンクトペテルブルク間の列車移動は『グランドエクスプレス』がおすすめ!

ghost foundation ので sqlite

長崎観光必須!『路面電車1日乗車券』で観光名所を効率よく移動しちゃおう!

ghost foundation ので sqlite

モスクワ観光ついでにグルジア料理!赤の広場近くの『EZO』でハチャープリを食べろ!

ghost foundation ので sqlite

パスポート更新手続きに行ってきたのでステップをわかりやすくまとめてみたよ...

ロシア語不要!世界遺産モスクワ『クレムリン』3種類のチケットと買い方のポ...

ghost foundation ので sqlite

ライティングの専門家・山口拓朗氏と対談!『アクセスが集まる「旅ブログ」の書き方5つのポイント』について

ウズベキスタンタシケント空港SIMカード

【ウズベキスタン】簡単!『タシケント空港』での現地SIMカードの購入方法!料金は?英語は通じる?

ghost foundation ので sqlite

【ウラジオストク】ロシア版パンケーキ「ブリヌイ」専門店『ウフ・トゥイ・ブリン』が美味くてびっくり!

ウラジオストック空港タクシー

【ウラジオストク】ロシア語不要!料金一律のエアポートタクシーで「空港」から「市内」へ移動する方法!

ベルサイユホテル宿泊

ウラジオストク観光初心者におすすめ!『ベルサイユホテル』は立地よし、英語OK、サービスよしで大満足♪

ghost foundation ので sqlite

【淡路島】寿司激戦区で夢の独立開業『鮨夢』!その時人気ベーグル屋オーナーの奥さまは?夫婦の挑戦

ウラジオストク電子ビザ申請

この通りに書けばOK!ウラジオストク観光に必須『電子簡易ビザ』!ネット申請の書き方から取得までの流れ完全版【2019年6月版】

ghost foundation ので sqlite

横浜「スカイスパ」の『KOOWORK(クーワーク)』!サウナーのためのコワーキングスペースで仕事ははかどったのか?

ghost foundation ので sqlite

地方移住・田舎暮らししたい人必見!古民家カフェ&宿『淡(あわ)』でライフスタイルを見つめ直す

  • グッズ・アイテム 17
  • ホテル・ゲストハウス 59
  • 海外どうでしょう 11
  • 読んだ本・おすすめ本・書評 7

ブログ:新旧混在するモスクワ地下鉄の魅力

ブログ:新旧混在するモスクワ地下鉄の魅力

 6月2日、モスクワの地下鉄は、世界で最も忙しく、かつ外観が美しい地下交通システムの一つだ。バウマンスカヤ駅で3月27日撮影(2017年 ロイター/Grigory Dukor)

私たちの行動規範: トムソン・ロイター「信頼の原則」 , opens new tab

北朝鮮と中国、共通の利益を守ることで合意=KCNA

北朝鮮と中国、共通の利益を守ることで合意=KCNA

北朝鮮の崔善姫外相と中国の孫衛東外務次官が会談し、両国が戦術的な協力を強化し、共通の利益を守ることで合意した。北朝鮮国営の朝鮮中央通信(KCNA)が27日伝えた。

原油先物2カ月ぶり高値、良好な米経済成長で

IMAGES

  1. Migrating Ghost from MySQL to SQLite

    ghost foundation ので sqlite

  2. SQLite とメンテナンスツール

    ghost foundation ので sqlite

  3. SQLite とメンテナンスツール

    ghost foundation ので sqlite

  4. Migrating Ghost from MySQL to SQLite

    ghost foundation ので sqlite

  5. Make SQLite work again with Ghost 5.x on Docker

    ghost foundation ので sqlite

  6. Viewing Local SQLite Ghost Database

    ghost foundation ので sqlite

COMMENTS

  1. Vulnerability Spotlight: Node-SQLite3 issue could lead to denial of

    Users are encouraged to update this affected product as soon as possible: Ghost Foundation node-sqlite3 5.1.1. Talos tested and confirmed this version of node-sqlite3 could be exploited by these vulnerabilities. The following Snort rules will detect exploitation attempts against these vulnerabilities: 60946. Additional rules may be released in ...

  2. 注目の脆弱性:Ghost CMS でサービス拒否を引き起こす可能性のある Node-SQLite3 の問題

    TALOS Japan 2023年3月28日 脆弱性の発見者:Cisco Talos の Dave McDaniel Cisco Talos はこのほど、Ghost コンテンツ管理システムに影響を与える node-sqlite3 の脆弱性を発見し、このライブラリを利用する他のソフトウェアに影響を与える可能性があることを明らかにしました。 コンテンツ管理システム(CMS)である Ghost は、Web サイトを構築し、コンテンツを公開し、ニュースレターを送信するためのツールを備えています。 node-sqlite3 ライブラリは、非同期でノンブロッキングの Node.js 用 SQLite3 バインディングを提供します。

  3. Supported databases in production for self-hosting Ghost

    Run ghost config database.client this should output sqlite3 or mysql. If it says mysql, run mysql --version to find the details of your mysql install. How to update MySQL 5 to MySQL 8 This will happen automatically if you update your Ubuntu install to Ubuntu 20 . Alternatively you can update MySQL using your package manager of choice.

  4. How to resolve sqlite3 database file issues with Ghost

    This solution is for developers using the supported Ghost install method using ghost-cli. If you're having problems with an unsupported custom install, check out the community forum. Upgrading to Ghost 1.0? When migrating to Ghost 1.0, you'll need to use a JSON export file to import your site content.

  5. Make SQLite work again with Ghost 5.x on Docker

    With the release of Ghost 5.0 back in May 2022, one of the biggest architectural changes was the announcement that MySQL 8 would be the only database officially supported in production environments.

  6. Ghost 4.x + SQlite3 : Support

    Sqlite3 error in ghost 4.2.2 Whys March 23, 2021, 5:48pm 5 Hi @vikaspotluri123 Issue seems to be related to Node version 14.

  7. node.js

    Ghost uses sqlite per default. Sqlite is good for small applications and development environments. I plan to run my blog for at least 1 - 2 years or longer if ghost will work out well. A blog contains a lot of images and text. The sqlite db will grow over time with more and more images and so on.

  8. Ghost Foundation node-sqlite3 code execution vulnerability

    Ghost Foundation node-sqlite3 code execution vulnerability. March 16, 2023. CVE Number. CVE-2022-43441. SUMMARY. A code execution vulnerability exists in the Statement Bindings functionality of Ghost Foundation node-sqlite3 5.1.1. A specially-crafted Javascript file can lead to arbitrary code execution. An attacker can provide malicious input ...

  9. Arctype Connect

    When developing against Ghost locally, SQLite is the database that is used. This guide covers where to find the SQLite file and how to visualize and write SQL against your Ghost data. How to Install Ghost Locally. Ghost can be installed locally through the instructions at that link. But the basic commands are these: npm install ghost-cli@latest -g

  10. Viewing Local SQLite Ghost Database

    If you are doing some local Ghost Core development, or are simply curious what is happening to your Ghost data under the hood: There is a quick and easy way to visualize and browse your local Ghost database (or any SQLite .db files). 1. Download and install a SQLite DB

  11. Using sqlite as database #1735

    In self hosting environments, using sqlite is often easier and more resource efficient. I know currently Prisma doesn't support JSON type for sqlite, but I'm curious if it's possible to put sqlite support on your roadmap. Thank you! 4. 2.

  12. GitHub

    Star 1 Code Issues Pull requests Actions Projects Security Insights main Code README MIT license ghost-sqlite-compose easy Ghost self-hosting with docker-compose Prerequisites You will need docker and docker-compose For running this configuration you will need a machine with 512MB of RAM.

  13. Migrating Ghost from MySQL to SQLite

    In my first post, I said that I set up my Ghost blog with a MySQL database.. Why is that? Because ghost-cli wants you to use a MySQL database and I happened to have a MariaDB server on my VM and so I just added another database to it. SQLite is a better choice. However, Ghost supports SQlite as a storage backend. In fact, SQLite can handle more load than this blog could ever have, considering ...

  14. Migrating Ghost from SQLite to MySQL

    That may not be the case for everyone though! If your Ghost website is hosted on a single server, SQLite is still a good choice. Anyway, as expected it's the exact same operation, but reversed. Step 1: Export your content to a JSON file. This includes everything except images. Step 2: Create a MySQL database and a MySQL user for Ghost

  15. Continúa usando SQLite con Ghost 5 y Docker

    ¡Genial! Comprueba tu bandeja de entrada y haz clic en el enlace para confirmar tu suscripción. Por favor, introduce un correo válido. Si tienes tu blog en Ghost y no quieres migrar a MySQL, aquí tienes cómo seguir utilizando SQLite como base de datos

  16. Ghostを理解する!初心者でも分かる概要、特徴などの基礎知識を簡単に解説! | 案件評判

    microCMS まとめ Ghost GhostとはシンガポールのGhost Foundationが開発・運営するブログに特化したヘッドレスCMSです。 ブログやオウンドメディアなど記事コンテンツを中心に公開するWebサイトの開発に向いており、メディア型のWebサイト運営に必要な機能を取り揃えていること多くのWebクリエイターに人気を集めております。 またGhostはオープンソースで「Strapi」と同じくNode.js環境において動作します。 ブログ特化の代表的CMSである「WordPress」と投稿エディタが似ているという特徴があり、WordPressに慣れている方であれば使いやすいとされています。 オープンソースのヘッドレスCMSとして世界で最も人気を集めるサービスと言われております。

  17. SQLite の NuGet パッケージ

    今回は以前に別のエントリで書いた SQLite を再度取り上げます。今回は、前回より多少詳しめに調べて新たな記事として公開することにしました。と言っても、SQLite は概要のみの紹介で、大半は SQLite のメンテナンスツールを紹介するエントリになっています。

  18. ロシア・モスクワ旅行 Part 2-シェレメチェヴォ国際空港からアエロエクスプレス・地下鉄を乗り継いで宿泊先のホテルへ!

    先の話になってしまいますが、以後も本当に全く言われなかったので、 モスクワでの鉄道関係の写真撮影に関しては殆ど問題ないと思います 。 モスクワ地下鉄駅のホームに立つと、どの駅でどの線に乗り換え可能かわかるようになっていました!

  19. 2018fifaワールドカップ ロシア:モスクワの地下鉄駅めぐりモデルコース(自分歩き)

    コムソモーリスカヤ駅から順番に巡っていくのもよいですし、No.6のTeatralnaya駅とNo.7のPloshchad Revolyutsii駅は、乗り換え可能な駅ですので、赤の広場などの市内観光のついでに、この2つの駅の観光をしてしまうのもよいと思います。

  20. ロシア語不要!モスクワ『メトロ(地下鉄)』の乗車券の買い方と自動改札の通り方|Trip-Nomad

    ということで本記事では、 モスクワの『メトロ(地下鉄)』の乗車券(チケット)の買い方と自動改札の通り方 について書いてみます。. ロシア語がわからなくても大丈夫ですよ(笑). では、さっそくいってみましょう!. 目次. モスクワ『メトロ(地下鉄 ...

  21. ブログ:新旧混在するモスクワ地下鉄の魅力

    ゴミ一つ落ちていないモスクワ地下鉄の駅は、新旧が混在している。革命広場(プローシャジ・レボリューツィー)駅で降りると、利用客が国境 ...