2020-12-20

エディタGeanyをpythonプログラムを独立したターミナルで実行させる

 OS : Linux Mint 20 xfce
エディタ : Geany 1.36 

pythonのプログラムを作成するためのエディタの一つに、Geanyがある。

プログラム実行時に、エディタ内蔵の端末か、OSの端末を介するかを設定することができる。

操作上、OSの端末のほうが使いやすい。

初期設定では、エディタ内蔵の端末のため、変更するためには次の通り。

「エディタ内蔵の端末」(デフォルト)の設定
VTEでプログラムを実行にチェクを入れる

「OSの端末」の設定
VTEでプログラムを実行のチェクを外す

 

OSの端末での実行



2020-12-16

Linux Mint xfce, パネルのアイコンを左右に配置する

 OS : Linux Mint 20 xfce

Mint 20 xfce はディスクトップをカスタマイズできる割に、動作が軽いディストリビューションである。


アイコンが左寄せになっている状態
アイコンが左寄せになっている状態


アイコンを左右に配置し、中央エリアを空けるには、セパレーターを使う。

パネルの設定から、アイテムタブを選び、空ける位置にセパレーターを配置する。


パネル設定

セパレータを編集する。(赤丸をクリック)

スタイルを透明に、拡張にチェックを入れる。

セパレーター

 

セパレーターが可能な範囲で空を作り、左右にアイコンが配置される。

左右にアイコンが配置されている状態
左右にアイコンが配置されている状態


2020-11-21

Drupal8,ckeditorで文字色を使用可能にする

[ バーション ] Drupal8  8.7.7
[ データベース ] Sqlite


Drupal8のエディタは、ckeditorを使用している。しかし、標準で文字装飾でカラー機能はない。
このため、手作業で文字色の機能を追加するしか無い。

以下の手順で行う


1.ダウンロード

【 必要ファイル 】
A) panelbutton-8.x-1.1.zip
B) panelbutton_4.8.0.zip
C) colorbutton-8.x-1.1.zip
D) colorbutton_4.8.0.zip


【 ダウンロード元 】
A) https://www.drupal.org/project/panelbutton
B) https://ckeditor.com/cke4/addon/panelbutton
C) https://www.drupal.org/project/colorbutton
D) https://ckeditor.com/cke4/addon/colorbutton

※上記ファイルは 2018年1月現在のもので、最新版は以下のサイトで検索する
https://www.drupal.org/project/project_module



2.フォルダー作成

ダウンロードファイルを解凍&コピーする前に、libraries フォルダーを手作業で作成する。

 http://サイト名/libraries


3.解凍&コピー

上記A〜Dの解凍したファイルを module, librariesに振り分けてコピーする。

上記 A,C は http://サイト名/module 手動でフォルダーへコピーする。
B,D は http://サイト名/libraries 手動でフォルダーへコピーする。


4.インストール

機能拡張で「CKEditor Color Button」、「Panel Button」をインストールする。

 

5.設定

環境設定 > テキストフォーマットとエディターで、ツールバーの構成を設定する。


 

設定は以上

上記で文字色アイコンが表示されなかった場合、B,Dのファイルをコピーしたlibrariesフォルダーを次の場所に置いてみる。

1) http://libraries フォルダーに置く。

2) http://サイト名/sites/all/libraries フォルダーに置く。

1) 2) のいずれか、またはどちらかを試してみる。
原因は不明だが、解決したこともあった。


ちなみに、
Drupal9 (9.0.8) でやってみた結果、うまくいかなかった。アイコンは表示されたものの、色の選択アイコンは表示されなかった。


#ckeditor, #drupal, #libraries, #colorbutton, #panelbutton

 

2020-11-16

Drupal8から9へテンプレートを移行する方法、初期設定編

 [ バージョン ] Drupal 9.0.7

<< エラー状況 >>

Drupal8から9へ移行する時、テンプレートをそのまま適用すると、

「サイトに予期せぬエラーが起こりました。しばらくたってから再度お試しください。」

というエラーメッセージが表示され、サイト自体が表示されない。

解決するためには、テンプレートファイルの内容を書き換えることによって、解決される。
ここでは、Drupal8から9への完全移行ではなく、非表示なったサイトを表示させるだけの解決方法。

<< 解決方法 >>

テンプレートファイルの内容を一部書き換える。

まず、テンプレートをフォルダーごとを以下に置く

{ サイト名 }/themes/custom/

以下のファイルの内容を一部書き換える

< ファイル名 >

 { サイト名 }/themes/custom/{テンプレート名}/{テンプレート名}.info.yml

▶ 書き換え内容

core: 8.x

core_version_requirement: ^8 || ^9

に書き換える。

サイトから、Drupal8から移行したテンプレートをインストールする。

以上

なお、一部を書き換えてもDrupal9への完全移行とはならなかった。CSSなどの修正が必要である。完全移行は後日に。
修正結果をすぐに反映するために、全てのキャッシュをクリアーしキャッシュ機能の一時停止の設定が必要だ。
全てのキャッシュのクリアーは、ホーム > 管理 > 環境設定 > 開発 > パフォーマンス から行う。

[ 参照サイト ] https://www.drupal.org/docs/theming-drupal

 

Drupal9をインストールする時のセキュリティ設定

 ■インストール時につまづいたこと

[ バージョン ] Drupal 9.0.7
[ データベス ] Sqlite

セキュリティのエラーについて、以下のような警告が表示された

セキュリティのエラー


「settings.php の trusted_host_patterns が設定されていません。セキュリティ面で脆弱となる恐れがあるため、設定することを強くおすすめします。・・・」


<< 解決方法 >>

ファイル名 { サイト名 }/sites/default/settings.php の内容を書き換える。

以下のコードを追加する。(コメントを外す)

    ▶ http://localhost/xxxxxにサイトを設定する場合

*/
$settings['trusted_host_patterns'] = [
  '^localhost$'        # localhost access
];
 /*
上記例では、サンプルとして記述されているコメント行を外すだけ。

意味は http://localhost/ 以外からの操作アクセスを禁止することである。
なお、カンマで区切れば複数設定可能だ。


[ 参考 ] Drupal7およびDrupal8のサポートは2022年11月に終了予定。
[ ダウンロード ] Drupal Japan ( http://drupal.jp/core_download )
[ 環境/データベス ] MySQL, Sqlite, PostgreSQL


2020-10-25

CSSだけでスライドメニューを作成する基礎の基礎

 ホームページの上部に漢字の (ハンバーガーボタン)に似たアイコンをクリックするとメニューが表示される。 ことのき、メニューは右または左からスライドするものがある。

スライドメニュー(またはドロワーメニュー)は、CSSだけで作成することができる。

 

<< 作成ポイント >>

 CSSの transform: translateX() または transform: translateY() でメニュー領域を表示したり、隠したりすることがポイント。
表示したり、隠したりするスイッチは HTMLの inputタグ を記述し。CSSの :checked でスイッチとして、オン(有効)/オフ(無効)する要素を指定する。

実際のホームページでは、チェックするクリック領域を 記号に変えているだけである。

ポイントは以上



今回は、以下のように右側、左側、上部または下部からスライドさせてメニュー領域を表示したり、隠したりするコードを記した。

 

<< 右、左、上または下からスライドさせる使い分け >>

メニューを画面のどこに隠しておくかである。
例えば右からスライドさせる場合に、画面右側の見えない位置に隠して、ハンバーグボタンでオン(チェックを入れる)にすると、隠れたメニュー領域が画面の右から移動し、表示される。
この時、移動する速さを CSSの transition: 0.6s などのように設定することによって、瞬時に表示させるのではなく、移動するように見せることができる。

 メニュー表示 (チェックが入る)
× メニューを閉じる(チェックが外れる)

図 メニューが表示されていない状態

 


右からスライド



左からスライド



 

上から


 

下から

 


 

<< HTMLコード 共通 >>

index.html

<!DOCTYPE html>
<html lang="ja">

<head>
<meta charset="UTF-8">
<title>Test left-right</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>

<body>
<div id="container">

<div id="nav-drawer">
<!-- 開くボタン|ハンバーガーアイコン -->
<input type="checkbox" id="nav-input" class="nav-unshown" />
<label id="nav-open" for="nav-input"><span>
</span></label>
<label class="nav-unshown" id="nav-close" for="nav-input"></label>
<!-- //開くボタン|ハンバーガーアイコン -->

<div id="nav-content">

<!-- 閉じるボタン|
アイコン -->
<label class="nav-unshown" id="nav-close2" for="nav-input">
<span>
×</span>
</label>
<!-- //閉じるボタン|X
アイコン -->

<br>ここはメニューです。ボックスにチェックが入ると、表示されます。<br>
チェックを外すと閉じます。<br><br>
原理は、デフォルトで表示領域外に設定し、チェックを入れることによって移動させて表示させています。<br>

</div> <!-- //id="nav-content" -->
</div> <!-- //id="nav-drawer" -->

</div> <!-- //container -->
</body>
</html>


<< CSSコード 右からスライド >>

style.css

body {
background-color: #c0c0c0;
}

#container {
margin: auto;
}

#nav-drawer {
float: left;
}

/* メニュー表示要素 */
#nav-content {
overflow: auto;
position: fixed;
top: 0;
right: 0;
width: 90%;
max-width: 330px;
height: 100%;
background-color: white;
transition: 0.6s;
-webkit-transform: translateX(105%);
transform: translateX(105%);
z-index: 9999;
}

/* メニュー表示中の背景設定 */
#nav-close {
display: none;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: black;
opacity: 0;
transition: 0.6s;
z-index: 99;
}

/* チェックボックス */
#nav-input:checked ~ #nav-content {
transform: translateX(0%);
-webkit-transform: translateX(0%);
box-shadow: 6px 0 25px rgba(0,0,0,.15);
}
/* チェックボックス */
#nav-input:checked ~ #nav-close {
display: block;
opacity: 0.6;
}


<< CSSコード 左からスライド >>

style.css

body {
background-color: #c0c0c0;
}

#container {
margin: auto;
}

#nav-drawer {
float: right;
}

/* メニュー表示要素 */
#nav-content {
overflow: auto;
position: fixed;
top: 0;
left: 0;
width: 90%;
max-width: 330px;
height: 100%;
background-color: white;
transition: 0.6s;
-webkit-transform: translateX(-105%);
transform: translateX(-105%);
z-index: 9999;
}

/* メニュー表示中の背景設定 */
#nav-close {
display: none;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: black;
opacity: 0;
transition: 0.6s;
z-index: 99;
}

/* チェックボックス */
#nav-input:checked ~ #nav-content {
transform: translateX(0%);
-webkit-transform: translateX(0%);
box-shadow: 6px 0 25px rgba(0,0,0,.15);
}
/* チェックボックス */
#nav-input:checked ~ #nav-close {
display: block;
opacity: 0.6;
}




<< CSSコード 上部からスライド >> 

style.css

body {
background-color: #c0c0c0;
}

#container {
margin: auto;
position: absolute;
bottom: 0;
}

#nav-drawer {
float: left;
}

/* メニュー表示要素 */
#nav-content {
overflow: auto;
position: fixed;
top: 0;
right: 0;
width: 100%;
height: 90%;
max-height: 330px;
background-color: white;
transition: 0.6s;
-webkit-transform: translateY(-105%);
transform: translateY(-105%);
z-index: 9999;
}

/* メニュー表示中の背景設定 */
#nav-close {
display: none;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: black;
opacity: 0;
transition: 0.6s;
z-index: 99;
}

/* チェックボックス */
#nav-input:checked ~ #nav-content {
transform: translateY(0%);
-webkit-transform: translateY(0%);
box-shadow: 6px 0 25px rgba(0,0,0,.15);
}
/* チェックボックス */
#nav-input:checked ~ #nav-close {
display: block;
opacity: 0.6;
}



<< CSSコード 下部スライド >>

style.css 

body {
background-color: #c0c0c0;
}

#container {
margin: auto;
}

#nav-drawer {
float: left;
}

/* メニュー表示要素 */
#nav-content {
overflow: auto;
position: fixed;
bottom: 0;
right: 0;
width: 100%;
height: 90%;
max-height: 330px;
background-color: white;
transition: 0.6s;
-webkit-transform: translateY(105%);
transform: translateY(105%);
z-index: 9999;
}

/* メニュー表示中の背景設定 */
#nav-close {
display: none;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: black;
opacity: 0;
transition: 0.6s;
z-index: 99;
}

/* チェックボックス */
#nav-input:checked ~ #nav-content {
transform: translateY(0%);
-webkit-transform: translateY(0%);
box-shadow: 6px 0 25px rgba(0,0,0,.15);
}
/* チェックボックス */
#nav-input:checked ~ #nav-close {
display: block;
opacity: 0.6;
}



メニューを開く(三)/閉じる(X)記号は、上記ではHTMLに直接文字として簡易的に表したが、実際にCSSコードを使って記述する。labelタグやborder(CSS)を駆使すると可能。

今回は、仕組みを理解しやすくするために、最小限のコードで記した。
上記のコードを基に、実際のホームページで配置、デザインを追加していく。

 

2020-09-11

Linux Mint, コンテキストメニューに任意のメニューを追加

OS :  Linux Mint 19 Xfce

デスクトップ上でマウス右クリックした際に表示されるメニューをコンテキストメニュー(Context Menu)という。

 


よく使われるアプリやツール等が登録されている。
Linux Mint xfceでは、任意のメニューを追加できる。

<< 手順 >>

ファイルマネージャーを開く。
メニュー[編集], [アクションの設定]から

コンテキストメニュー


十 記号の「新しいカスタムアクションを追加します」をクリック。

 




「アクションの作成」に任意の名前、コマンド等を入力する。



 

以上


2020-08-20

pythonでつくったプログラムが動かない001

 

OS :  Linux Mint xfce
Version :  python3 3.7x

【 エラー状況 】

正常に動作していたプログラムが、エラーを出力する。
共通していることは、pandas や numpy をインポートしたプログラム。

pandas や numpy に関連したエラー。

【 原因 】

特定のライブラリーをインストールした際に、新たにpandas がインストールされた可能性がある。
このため、既存のpandasと新たなpandasが、何らかの原因でエラーのもとになっている可能性がある。


【 対処 】

pandas と numpy を削除した。

$ pip3 uninstall -y pandas

$ pip3 uninstall -y numpy

のように pandas と numpy をアンインストールすることによって、エラーが解消された。

2020-08-09

Evolution CMS,ページごとに閲覧できる人を振り分ける

ソフト名 : Evolution CMS 1.4x

下記のように、「所属グループ」の項目で ID登録者と非登録者の閲覧権限を設定する。


   << 設定方法 >>
   
1. [グローバル設定] -> [グループ管理機能を使用] で

    「はい」を選択

2. [権限管理] -> [グループ管理(ウェブ)] -> [ウェブユーザーグループ] で

    「Site Admins」(任意名)を作成し、
   
    [グループリンク] で
    ユーザーグループを Site Admins 、リソースグループを Site Admin Pages で実行ボタンで設定する
   

3. [権限管理] -> [ウェブユーザー管理]で

    「siteadmin」を作成し、グループ管理(ウェブ)から 「Site Admins」を選択
   
4. 任意のページの [所属グループ] で

    グループ制限なし(非ID登録者)か Site Admin Pages(ID登録者) のどちらかを選択可能にする。
 

設定完了確認 [権限管理] から

 

 

設定は、以上

ID登録者のみに閲覧権限があるページを非ID登録者が見ようとすると、下記のようになる

 

 

 

2020-07-03

Libreoffice, セル範囲内の複数の要素数をカウントする

ソフト名 : Libreoffice 6.3

複数のセル内の指定値をカウントする。指定値は1つではなく、連続した複数の値とする。
SUMPRODUCT関数を使う。



セル範囲 A1:F1 にある 18, 24, 32, 34, 37, 41 の要素で、30代の値をカウントする。

=SUMPRODUCT((A1:F1>29)*(A1:F1<40))
tag: #Libreoffice, #sumproduct, #関数, #カウント, #セル

2020-06-24

Evolution CMS, 2.xのAjaxSearchに対するエラー対処方

ソフト名 : Evolution CMS 2.x
スペニット名 : AjaxSearch

Evolution CMS 2.x で検索機能を有効にした場合、以下のエラーが出力された。

<< エラー内容 >>

« Evolution CMS Parse Error »

Call to undefined method EvolutionCMS\Database::freeResult()


<< 対処方 >>

Package Management から、AjaxSearchのバージョンを変更する。

Version 1.12.1 から masterに変更し、Resetをクリックする。

以上

2020-06-05

Evolution CMS, 検索結果を特定ページに表示する, DLMenu

ソフト名 : Evolution CMS 1.4x

Extras : DLMenu


[[ifsnippet? &name=`AjaxSearch`]] 
	[!AjaxSearch?
		&ajaxSearch=`0`
		&addJscript=`1`
                .......
&landingPage=`検索結果ページのID`
&showResults=`0`
                .......
!]
&landingPage=`検索結果ページのID`
で設定。検索ボタンをクリックすると、指定IDに結果を表示する。


検索結果のページには

[!AjaxSearch? &showInputForm=`1` &ajaxSearch=`0`!]
を記述する。
&showInputFormの値が1の時は、再検索のテキストボックスが表示される。
0 の時は非表示となる。

参照させていただいたサイト

tag: #evolution, #cms, #dlmenu, #ajaxsearch

2020-05-13

Evolution CMS, メニューの親リソースのリンクを有効または無効に設定する

ソフト名 : Evolution CMS Version 1.4.11

デフォルトでは、メニューの親リソースのリンクが無効("#")になっている。

BLOG -+                    (リンク無効) 
            +Mini-Blog    (リンク有効)
            +Just a pre    (リンク有効)
            +New docu   (リンク有効)


上記で親リソースのリンクを有効にするということは

BLOG -+                    (リンク有効)
            +Mini-Blog    (リンク有効)
            +Just a pre    (リンク有効)
            +New docu   (リンク有効)


にするということになる。

<< 変更箇所 >>

メニューのプラグイン DLMenu を再設定し、リンクを有効にするためには

[[DLMenu? 
.......中略.....
&parentRowTpl=`@CODE:<li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown" title="[+title+]">[+title+] <b class="caret"></b></a>[+wrap+]</li>`
]]
から
[[DLMenu? 
.......中略.....
&parentRowTpl=`@CODE:<li class="dropdown"><a href="[+url+]" class="dropdown-toggle" data-toggle="dropdown" title="[+title+]">[+title+] <b class="caret"></b></a>[+wrap+]</li>`
]]
に変更する

<a href="#"  から  <a href="[+url+]"  に変更する。

参照URL
http://docs.evo.im/en/04_extras/dlmenu.html (英)

2020-03-05

libreoffice calc,日付(文字列)の文字を揃えてコピーする

ソフト名 : Libreoffice calc

日付データ2000/1/5(テキスト)2000/01/05(日付)と月、日の文字数を2桁にそろえてコピーする。

コピー先の書式をテキストから日付に変更する




そのまま、日付の書式に設定したセルに数値だけコピーすると、

となり、日付の文字数が揃わない。


そこで、value()関数をう。
コピー先のセルに =value(セル番号) を入力し、下方へコピーする




日付のデータが文字数が統一されて、コピーされる。







2020-01-29

画像一括変換

OS : Linux

画像 PNG形式をJPG形式に一括変換をコマンドでする。
 $ mogrify -format jpg *.png
画像 JPG形式をPNG形式に一括変換をコマンドでする。
 $ mogrify -format png *.jpg