[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
HTML の table の行・列を固定化し、スクロールしてもどのセルがどの行・列のもののかを見易いようにしたい、という話が挙がり試してみた。
そのために色々と試行錯誤した結果「列も行も」は HTML/CSS だけでは難しそうだと考えた。実のところ「列だけ」はやれそうだし、やっている方もいらっしゃった ( two fixed columns, horizontal scroll - JSFiddle とか)。行だけはもう少し難度が下がる。しかし、行も列もとなると少なくとも私にはできなかったのである。
ただ、ちょっと js を書いたらできた。 https://shunshun94.github.io/shared/jquery/io/github/shunshun94/table/tableSample.html こんな感じである。
jQuery と JS のライブラリを1つ読み込めばできるようにしてみた。以下のようにして使う。
<table id="columnFixedTable" border="1"> <thead><!-- 略 --></thead> <tbody><!-- 略 --></tbody> </table> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script> <script src="https://shunshun94.github.io/shared/jquery/io/github/shunshun94/table/fixedTable.js"></script> <script> new io.github.shunshun94.table.FixedTable({}, $('#columnFixedTable')); </script>
動作サンプルは https://shunshun94.github.io/shared/jquery/io/github/shunshun94/table/tableSample2.html にある
第一引数に色々入れることで挙動を変えられる。
new io.github.shunshun94.table.FixedTable({ colColumns:3, // 列をいくつ固定するのかを指定する。指定しなければ1 width: 500, // 表の表示領域の横幅。指定しなければその table が可能な範囲で最大の横幅となる bodyHeight: 200 // 表の固定されない領域の縦幅。指定しなければ tbody の高さとなる }, $('#columnFixedTable'));
この場合の挙動は https://shunshun94.github.io/shared/jquery/io/github/shunshun94/table/tableSample2.html?colColumns=3&width=500&bodyHeight=200 のようになる。
https://shunshun94.github.io/shared/other/io/github/shunshun94/util/timeutil.jsこんなのを書いた。
// 2019年の2月が何日あるのかを計算している console.log(1, io.github.shunshun94.util.Time.getMonthDays('2019/2') ); console.log(2, io.github.shunshun94.util.Time.getMonthDays('2019/02') ); console.log(3, io.github.shunshun94.util.Time.getMonthDays('2019-2') ); console.log(4, io.github.shunshun94.util.Time.getMonthDays('2019-02') ); console.log(5, io.github.shunshun94.util.Time.getMonthDays(2019, 2) ); console.log(6, io.github.shunshun94.util.Time.getMonthDays('2019', '2') ); console.log(7, io.github.shunshun94.util.Time.getMonthDays('2019', '02') ); console.log(8, io.github.shunshun94.util.Time.getMonthDays(new Date('2019/02/14')) ); console.log(9, io.github.shunshun94.util.Time.getMonthDays(2), '(これだけ「今年の2月」を対象としている)'); // 第一引数から第二引数の期間にある週末をリストアップ const weekends = io.github.shunshun94.util.Time.getWeekendsInTerm( new Date('2019/1/1'), new Date('2020/1/1') ); // => ※1 結果は追記部分記載 // 第一引数から第二引数の期間にある 10:00~14:00 の区間をリストアップ const dayTimes = io.github.shunshun94.util.Time.getDaytimeTermInTerm( new Date('2019/1/1'), new Date('2020/1/1'), '10:00', '14:00' ); // 第一引数から第二引数の期間にある 10:00~14:00 の区間をリストアップ (月~金除) io.github.shunshun94.util.Time.getDaytimeTermInTerm( new Date('2019/1/1'), new Date('2020/1/1'), '10:00', '14:00', [1,2,3,4,5] ); // 上述の weekends と dayTimes の重複する区間だけリストアップ io.github.shunshun94.util.Time.getConflictedTerms(weekends, dayTimes);
スケジュールの重複などを扱わなければならない状況で便利かも。
Discord のチャットログを取得する何か を 紹介していただいた (Discordのログを取得する – 8528)。この話をしていてわにゃわにゃ挙がった要望をいくつか反映したのである。
(雛´-`).。oO(Discord のチャットログを DL するツールに以下の変更を実施した
— しゅんしゅんひよこ (@Shunshun94) March 17, 2019
・発言者の名前をニックネームにした
・チャットに送ったファイルを表示する機能を追加
・フォントカラーを自動設定する機能を追加。ON/OFF はユーザが設定可能https://t.co/fcgKweaQJj )https://t.co/SW7k48OtcW
アプリそのものは https://shunshun94.github.io/shared/sample/discordLogPicker.html から利用できる。
Python を使っていたら次のように怒られた。
SNIMissingWarning: An HTTPS request has been made, but the SNI (Server Name Indication) extension to TLS is not available on this platform. This may cause the server to present an incorrect TLS certificate, which can cause validation failures. You can upgrade to a newer version of Python to solve this. For more information, see https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
割とよくあるエラーらしく。リンク先を日本語にしてみる。
SSL 証明書を検証する際、その検証方法に応じていくつかの警告を urllib3 は発します。各渓谷はそれぞれ異なる状況によって発され、それぞれの手段で解決が可能です。
HTTPS で接続する URL にリクエストを送る際に証明書の検証を行わない設定になっていると発生します。Certificate verification を参考にこの問題を解決してください。
もはや古いものとなった SSL モジュールを用いている Python2 を使っている場合に発生します。そういった古い SSL モジュールは失敗すべき安全ではないリクエストの送信を成功させたり、成功すべき安全なリクエストの送信を失敗させたりします。Certificate verification in Python 2 を参考にこの問題を解決してください。
2.7.9 未満の Python2 を利用している場合に発生します。古い Python2 は SNI をサポートしていません。そのため、クライアントはサーバから共有された有効な証明書を無効なものと判断することがあります。Certificate verification in Python 2 を参考にこの問題を解決してください。
検証されない HTTPS リクエストを送ることは まったくもって お勧めできません。しかしながら、そのリスクを理解したうえでこれらの警告を無視するには、disable_warnings()
が利用できます。
>>> import urllib3 >>> urllib3.disable_warnings()
抑制した警告は標準の logging module で取得することが可能です。
>>> logging.captureWarnings(True)
また、環境変数をPYTHONWARNINGS
を用いたり、-W フラグ を用いることでも警告の抑制が可能です。
JavaScript の promise の resolve と reject の挙動について勘違いしていた話 ( MDN の解説 )。
var promise1 = new Promise(function(resolve, reject) { resolve('value1', 'value2'); }); promise1.then(function(valueA, valueB) { console.log(valueA, valueB); });
この出力が value1 value2
になることを期待していたら value1 undefined
だった。引数は1つしか取れないらしい。reject の方も同様だった。