RSS

JavaScript: C 言語の sprintf 関数風の書式化ができる sprintf-js

JavaScript には C 言語の sprintf 関数のようなものが標準関数には存在しない。

しかし、sprintf-js を利用することにより、sprintf 相当の機能が利用できる。

インストールは npm で簡単に行える。

npm install sprintf-js

サンプル

!/usr/bin/env node
'use strict';
const sprintf = require('sprintf-js').sprintf;
const vsprintf = require('sprintf-js').vsprintf;

var x, y;

console.log("Math.cos(x)")
x = 0.0;
while (x <= 180.0) {
    y = Math.cos(x / 180.0 * Math.PI);
    console.log(sprintf("%1$10.1f\t%2$10.4f", x, y));
    x +=30.0;
}

console.log("Math.sin(x)")
x = 0.0;
while (x <= 180.0) {
    y = Math.sin(x / 180.0 * Math.PI);
    console.log(vsprintf("%1$10.1f\t%2$10.4f", [x, y]));
    x +=30.0;
}
 
コメントする

投稿者: : 2020/06/02 投稿先 JavaScript

 

タグ: ,

Python: pip のアップグレード

pip が古いと怒られたときは、次のコマンドでアップグレードするとよい。

python -m pip install –upgrade pip

 
コメントする

投稿者: : 2020/05/27 投稿先 Python

 

タグ:

MySQL: テーブル構造の変更 (ALTER TABLE)

カラムの追加

ALTER TABLE MyTable ADD Col2 CHAR(10) NOT NULL;

ALTER TABLE MyTable ADD Col2 CHAR(10) NOT NULL FIRST;

ALTER TABLE MyTable ADD Col2 CHAR(10) NOT NULL AFTER ColXX;

カラムの変更

ALTER TABLE MyTable CHANGE ColXX ColYY CHAR(20) NOT NULL;

カラムの削除

ALTER TABLE MyTable DROP Col2;

参考 ALTER TABLE Statement (MySQL 8.0)

カラム変更の実行例

mysql> desc Wiki;
+----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+----------------+
| id | int | NO | PRI | NULL | auto_increment |
| title | varchar(100) | NO | | NULL | |
| author | varchar(20) | YES | | NULL | |
| date | char(10) | NO | | NULL | |
| content | text | NO | | NULL | |
| info | varchar(100) | YES | | NULL | |
| type | varchar(10) | NO | | text | |
| hidden | char(1) | YES | | 0 | |
| revision | char(1) | YES | | 0 | |
+----------+--------------+------+-----+---------+----------------+
9 rows in set (0.00 sec)
mysql> alter table Wiki change date date date; (char(10) から DATE型の変更)
Query OK, 20 rows affected (0.03 sec)
Records: 20 Duplicates: 0 Warnings: 0
mysql> alter table Wiki change type type varchar(10) after hidden; (カラム位置の変更)
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc Wiki;
+----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+----------------+
| id | int | NO | PRI | NULL | auto_increment |
| title | varchar(100) | NO | | NULL | |
| author | varchar(20) | YES | | NULL | |
| date | date | YES | | NULL | |
| content | text | NO | | NULL | |
| info | varchar(100) | YES | | NULL | |
| hidden | char(1) | YES | | 0 | |
| type | varchar(10) | YES | | NULL | |
| revision | char(1) | YES | | 0 | |
+----------+--------------+------+-----+---------+----------------+
9 rows in set (0.00 sec)
mysql> alter table Wiki change revision revision tinyint; (カラムの型の変更)
Query OK, 20 rows affected (0.02 sec)
Records: 20 Duplicates: 0 Warnings: 0
 
コメントする

投稿者: : 2020/05/27 投稿先 MySQL

 

タグ: ,

JavaScript: マークダウンを簡単にHTMLに変換する marked.js

マークダウン言語 (md) はGithub の ReadMe.md などで使われる HTML に代わる簡易表現です。

これを自分のウェブページで使うには marked.js を利用すると簡単に実現できます。

使用例

<script src="/js/jquery.min.js"></script>
<script src="/js/marked.js"></script>
<script>
  $(() => {
     let content = $("#content").text();
     let new_content = marked(content);
     $("#content").html(new_content);
  });
</script>

<div id="content">
 ## H2
 - Item1
 - Item2
 - Item3
</div>
 
コメントする

投稿者: : 2020/05/24 投稿先 JavaScript

 

Windows 版 PHP7.4 の設定例

ウェブサーバ Apache2.4 を C:/Apache24 にインストールし、PHP7.4 を C:/php にインストールしたものとする。

C:/Apache24/conf/httpd.conf の最後に次の行を追加する。

LoadModule php7_module “c:/php/php7apache2_4.dll”
AddHandler application/x-httpd-php .php
PHPIniDir “C:/php”

C:/php/php-development を C:/php/php.ini にコピーしてエディタで編集する。

php.ini で Windows で検索してコメントアウトされている行を有効にする。

  • include_path = “.;c:/php/includes”
  • extension_dir = “c:/php/ext”

必要な追加モジュールを有効にする。例えば、mysqli を使う場合は、次の行のコメントを外す。

  • extension=mysqli

Apache Monitor (C:/Apache24/bin/ApacheMonitor.exe) を開いて、ウェブサーバを再起動する。

 
コメントする

投稿者: : 2020/05/22 投稿先 Apache2, PHP

 

タグ: ,

Apache2.4 CGI 設定が前のバージョンと変わっていた。

以前のバージョンでは Ubuntu の場合、/etc/apache2/sites-enabled/000-default.conf で次のような感じで設定していました。

ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
<Directory "/var/www/cgi-bin">
  AllowOverride None
  Options ExecCGI
  Order allow,deny
  Allow from all
</Directory> 
AddHandler cgi-script .cgi

ところが、最新の Ubuntu 20.04LTS ではこれではダメで次のようにする必要がありました。(仕様が変わったそうです)

ScriptAlias /cgi-bin/ "/usr/lib/cgi-bin/"
<Directory "/usr/lib/cgi-bin">
  AllowOverride None
  Options None
  Require all granted
</Directory>

追記

Ubuntu 20.04LTS では、これ以外にも mods-enabled/ に cgi.load リンクを作っておく必要があります。

この cgi.load 本体は mods-available/ に入っているので ln -s コマンドでリンクを作ります。

以上が終わったら、sudo service apache2 restart でサーバを再起動します。

 
コメントする

投稿者: : 2020/05/13 投稿先 Apache2

 

タグ: ,

Ubuntu 20.04LTS のアップグレードでの問題

VMWare 上の Ubuntu 19.10 Desktop を 20.04LTS にアップグレードしたときに発生した問題を以下に述べる。

問題1

インストール完了後、インストーラが自動的にシステムを再起動するが、再起動に失敗して真っ暗なままになった。

これは、強制的に電源オフしてから起動したら、うまく起動できた。

問題2

Apache が起動しない。

ログを見ると PHP が起動しないためであった。前のバージョンは 7.3 であるが、20.04LTS では 7.4 に変わっており、/etc/apache2/mods-enabled 内のシンボリックリンクを php7.3 から php7.4 に変更することで解決した。

 
コメントする

投稿者: : 2020/05/10 投稿先 Linux

 

タグ: ,