2018年のカレンダー

SDのサイトで毎年載せていたやつですが、こちらに引っ越します。

2018年カレンダー(PDF)

# しかし去年はこのページの更新もできていなかったのですね……。

例によってイラレのJavaScriptで作ってあります。コードを見たい方は、以下。
元号が変わって、祝日もまた変わることが決定しているようなので、来年はまた微調整ですね〜。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
// Calendar Script for Adobe Illustrator CS〜CS6/CS20xx
//CSの場合は文字コードをShift_JISに、CS2の場合はUTF-8にすること
  
//初期値いろいろ(長さ系の単位はすべてピクセル)
  
//ドキュメントサイズを決定
var docX = 1280;
var docY = 854;
  
// ベースのフォントサイズ;
var fontSize = 10;
  
//1日あたりの幅
var calDX = 26;
var calDY = 26;
  
//1月あたりのブロックの幅(「s(日曜)」から「s(日曜)」まで)
var blockX = 200;
var blockY = 250;
  
//カレンダーの最初の表示位置
var baseX = (docX - (  blockX * 5 ) - (calDX * 6 ))/2 ;
var baseY = 500;
  
//複数年にまたがるかどうかのフラグ
var yearTimes = 0;
  
docObj = documents.add(DocumentColorSpace.RGB,docX,docY);
  
function setColor(r,g,b)
{
  var tmpColor = new RGBColor();
  tmpColor.red = r;
  tmpColor.green = g;
  tmpColor.blue = b;
  return tmpColor;
}
  
pObj = docObj.pathItems.rectangle(0,0,1280,-854);
pObj.fillColor = setColor(255,255,255);
pObj.stroked = false;
  
txtColor = new RGBColor();
  
docObj = activeDocument;
  
function calendar(theYear__,theMonth__){
var wrtMonth= new Array(0,31,28,31,30,31,30,31,31,30,31,30,31);
var wrtDate = new Array("S","M","T","W","T","F","S"); //曜日の表示文字列を定義
  
var yearCol = [153,153,153];
var monthCol = [64,64,64];
var weekCol = [0,84,71];
  
//■↓一週間分の色(赤輝度,青輝度,緑輝度)
var wrtColor= new Array([144,144,144],[26,26,26],[26,26,26],[26,26,26],[26,26,26],[26,26,26],[128,128,128]);
var special = new Array(3,21, 9,23, 1,1, 2,11, 4,29, 5,3, 5,4, 5,5, 8,11, 11,3, 11,23, 12,23);
var specCnt = 15; //よくわからない。祝祭日11個にHappy Mondayの+2、ということで下の定義だけでいいのでは?
var specCol = [144,144,144]; // 休日の文字色
var theDate = new Date(); // 日付オブジェクトを生成
var monthNames = new Array("january", "february", "march", "april", "may", "june", "july", "august", "september", "october", "november", "december"); //月の表示文字列を定義
var specCnt = 13; // Happy Monday対策
if (theYear__){ // 年月が指定されていた場合は年月を再設定
  theDate.setYear(theYear__); // 指定年を設定
  theDate.setMonth(theMonth__-1); // 指定月を設定
}else{
  theYear__ = theDate.getFullYear();
  theMonth__= theDate.getMonth()+1;
}
// 閏年だったら2月を29日にする
if (((theYear__ % 4 == 0) && (theYear__ % 100 != 0)) || (theYear__ % 400 == 0)){
wrtMonth[2] = 29;
}
// 春分/秋分の日を求める(1980-2099まで) #special[0]special[2]では???
special[1] = Math.floor(20.8431 + 0.242194 * (theYear__ - 1980)- Math.floor((theYear__ - 1980)/4));
special[3] = Math.floor(23.2488 + 0.242194 * (theYear__ - 1980)- Math.floor((theYear__ - 1980)/4));
theDate.setFullYear(theYear__); // 指定年を設定
theDate.setMonth(theMonth__-1); // 指定月を設定
theDate.setDate(1); // 日付を1日にし曜日を次の行で取得
var count = theDate.getDay();
var day = 0; // 曜日カウンタを0にする
var date = 1; // 日付を1日にする
var flag = false; // 休日&日曜日フラグ
var hFlag = false; // 休日フラグ
var xFlag = false; // 成人の日/体育の日等の、Happy Mondayで変動する系の休日
var i,j;
var week = 0; // 2000年からの体育の日と成人の日対策
var calX = 0; //■カレンダーを表示する相対座標(X)
var calY = 60; //■カレンダーを表示する相対座標(Y)
drawColor([0,0,0]); // 色の初期化
  
//年の描画。複数年にまたがるかどうかで処理を分岐
drawColor(yearCol);
  
if(yearTimes < 1){
    if( calMonthStart == 1){
      write(theYear__, 1174, -200,146,"HelveticaNeue-Light",5,Justification.RIGHT);
    } else {
      var nextYear = Number(theYear__) + 1;
      write(theYear__  + "–" + nextYear, 1174, -200,146,"HelveticaNeue-Light",5,Justification.RIGHT);
    }
}
yearTimes++;
  
//月名の描画
drawColor(monthCol);
if(theMonth__ == 12) {
  var theMonth = 12 ;
} else {
  var theMonth = Number(theMonth__) % 12;
}
write(theMonth, 0, 0,18); // 相対座標(0pt,0pt)に描画
write(monthNames[theMonth -1], 20, 0,12,"MyriadPro-Regular",400,Justification.LEFT); // 相対座標(20pt,0pt)に描画
  
drawColor(weekCol);
for(i=0;i< 7;i++) {write(wrtDate[i], 0+i*calDX, 30, 10); } // 曜日書き出し
  
//日付の描画
flag = false; //デフォでfalseにしとく(休日が日曜日だった場合、trueに変える)
  
for(i=1;i<=wrtMonth[theMonth]+count;i++){hFlag = false; // 休日だったらtrue
    if (day >=count){
    wrt = ""+date;
    for(j=0; j< specCnt; j++){
    if ((special[j*2] == theMonth) && (special[j*2+1] == date)){
        drawColor(specCol);
        if ((day % 7) == 0) flag = true; // 休日が日曜日だったらtrue
        hFlag = true; }
    }
date++;
if ((day % 7) == 1) week++; // 月曜日の場合は週の数を増やす
}else{ wrt = " "; }
// 1月と7月と9月と10月の休日処理(Happy Mondayの処理)
xFlag = false;
if ( ((theMonth == 1) || (theMonth == 10)) && (week== 2) && ((day % 7) == 1)) xFlag = true;
if ( ((theMonth == 7) || (theMonth == 9)) && (week== 3) && ((day % 7) == 1)) xFlag = true;
 
truedate = date-1;
//var thisD = new Date("09-" + truedate + "-" + theYear__ );
var thisD = new Date(theMonth + "-" + truedate + "-" + theYear__ );
y = thisD.getFullYear();
m = thisD.getMonth() + 1;
d = thisD.getDate();
yb = thisD.getDay();
var thisDate = y + "-" + m + "-" + d;
 
var shuubunD = new Date("09-" + special[3] + "-" + theYear__ );
y = shuubunD.getFullYear();
m = shuubunD.getMonth() + 1;
d = shuubunD.getDate();
yb = shuubunD.getDay();
var shuubunDate = y + "-" + m + "-" + d;
 
var calcWeekCountInTargetYearAndMonthByDate = function(year, month, day) {
   var d = new Date(year, month, day);
   return Math.floor((d.getDate() - d.getDay() + 12) / 7);
}
 
function getDateOfWeekOfDay(year, month, week, day) { //第n週のd曜日、の算出。日付だけ戻す。
    // 1・指定した年月の最初の曜日を取得
    var mydate = new Date(month+"/1"+"/"+year);
    var firstDay = mydate.getDay();
    // 2・求めたい曜日の第1週の日付けを計算する
    var day = day - firstDay + 1;
    if(day <= 0) day += 7;
    // 3・n週まで1週間を足す
    day += 7 * (week - 1);
    // 4・結果
    result = new Date(month+"/"+day+"/"+year);
    var Y = parseInt(result.getFullYear());
    var m = parseInt(result.getMonth())+1;
    var d = parseInt(result.getDate());
    return (d);
}
 
 
gwdate = getDateOfWeekOfDay(theYear__,9,3,1);
 
if ( theMonth == 9 && (shuubunD.getDate() - truedate  == 1 && truedate - gwdate == 1)  ){
  xFlag = true; //「9月における「国民の休日」」成立!
}
 
if (xFlag){
  drawColor(specCol);
}else{
  if ((hFlag == false) && flag == false) drawColor(wrtColor[day % 7]);
  if (((day % 7) == 1) && flag == true) { drawColor(specCol); flag = false;}
}
////////drawBox(calX, calY); //■枠を表示する部分。しない場合は行ごと削除
write(wrt, calX, calY); //fontSize明示せず
calX += calDX;
if (day % 7 == 6) { calX = 0; calY += calDY; }
day++; // 1日増やす
} // end of for()
  
}// end of function calendar()
  
//function write(txt, x,y, fontSize){
function write(){
    var textObj = docObj.textFrames.add();
  
    var fontSize = 11;
    var fontName = app.textFonts.getByName("MyriadPro-Regular");
    var trackVal= 0;
    var justification = Justification.CENTER;
  
    switch (arguments.length) {
    default:
    case 7: var justification = arguments[6];    // 第7引数まであれば justification に代入
    case 6: var trackVal = arguments[5];    // 第6引数まであれば trackVal に代入
    case 5: var fontName = app.textFonts.getByName(arguments[4]);;    // 第5引数まであれば fontName に代入
    case 4: var fontSize = arguments[3];    // 第4引数まであれば fontSize に代入
    case 3: y = arguments[2];    // 第3引数まであれば y に代入
    case 2: x = arguments[1];    // 第2引数まであれば x に代入
    case 1: txt = arguments[0];    // 第1引数まであれば arg1 に代入
    case 0:
    }
  
    //テキストプロパティの指定
    textObj.contents = txt;
  
    for ( j = 0; j < textObj.contents.length; j++){
        textObj.characters[j].size = fontSize;
        textObj.characters[j].textFont = fontName;
        textObj.characters[j].tracking = trackVal;
    }
  
    textObj.translate(baseX + x, baseY - y);
    for (var i=0; i< textObj.characters.length; i++){
        textObj.characters[i].fillColor = txtColor;
  
    //ハイフンの色の処理
        for ( j = 0; j < textObj.contents.length; j++){
            extraColor = new RGBColor();
            extraColor.red = 204;
            extraColor.green = 204;
            extraColor.blue = 204;
            if(textObj.characters[j].contents == "-"){
            textObj.characters[j].fillColor = extraColor;
            }
        }
    }
    textObj.paragraphs[0].justification = justification;
}
  
function drawColor(col){
txtColor.red = col[0];
txtColor.green = col[1];
txtColor.blue = col[2];
}
function setColor(r,g,b){
var tmpColor = new RGBColor();
tmpColor.red = r;
tmpColor.green = g; tmpColor.blue = b; return tmpColor;
}
  
//
var nextYear = new Date();
calYear = prompt("作成する年を入れてください",nextYear.getFullYear()+1);
calMonthStart = prompt("開始する月を入れてください",1);
  
storeX = baseX;
for (cy=0; cy< 2; cy++){ //■縦に2つ
    for (cx=0; cx< 6; cx++){ //■横に6つ
    calendar(calYear, calMonthStart);
    baseX += blockX;
    calMonthStart++;
    }
baseX = storeX;
baseY -= blockY;
}

今、休養中です

2015年より、心身の不調が限界に達し、しばらく休養に入っていました。

いったん、それに至るまでの「経緯」をくだくだしく書いてみたものの、いざ文章にしてみると死にたいとか死にそうだったとか、そいういう言葉の羅列は非常に安っぽい紋切り型でしかなく、あまり意味のあることにも思えなかったので、淡々と事実だけ、列挙します。

●2015年春頃より、心身の不調が限界に逹し、GW明け頃から、有限会社スタジオ・ポットSDを休職。最低限の緊急対応を除き、原則、すべての業務から離れる
●2015年5月、鬱病を治すための病院を探し、カウンセリングを主体としたクリニックに通院をはじめる
●(この間、月に数度くらいは会社にも顔を出し、残務の整理や打ち合わせも行うこともあった)
●全く病状が改善せず、情報を探しているうちに、自分の症状は「鬱病」とは少し違うのでは? ということに思いいたり、病院を変える
●新しい病院で「双極II型障害」の診断が下る
●2016年11月、SDを退職。
●同12月、精神障害者保健福祉手帳(3級)を取得

主観として語れば、以下のような感じです。

●とにかく何もかもが限界、と感じて、生きていく最低限のことだけを維持して、「仕事」的なものを極限まで放棄。「放棄する」ということにまつわる社会的な手順(各方面への連絡や手当てなど)をすべて放棄
●倦怠感と自責の念(と、なんだかんだで存在するわずかな残務処理)に苦しみつつ、「まあ、とはいえ、しばらく休めば働けるようにもなるだろう」と思いつつ、その実、1年の間、寝てるか太極拳の稽古をしているかでほとんどの時間を過ごす
●休養は数ヶ月程度、と思っていたが、なぜか一向に良くならず、むしろ悪化の一路を辿り、焦りはじめる。結論として、「元に戻ろう」と思っているうちは状況は好転しない、という結論に至り、退職、「障害者」として行政へのもろもろの申請等々、病気と「付き合っていく」ことを決意する

というわけで、みなさま、特に仕事で関係していた方々に対し、この間きちんとした報告をせず、申し訳ない限りです。

本来なら各所に出向いてご挨拶すべきことでありますが、私の場合、抑鬱状態を引き起こす、多くの要因が対人コミュニケーション時にむりやり自分を躁状態に入れてしまい、結果過剰に消耗する、というところにあるようで(倒れる前も、会議の翌日に心労で寝込む、ということがまま、ありました。単なる過労と思い込んでいたのですが、それ以上に、心理的にかなりの負荷になっていたようです。心が麻痺して、そういったことも感じとれないようになっていました)、すべての、そういった「社会人としてやるべき、もろもろの対処」を放棄しておりました。

これは対・クライアントであれ、対・社内であれ、友人・家庭のように親密な関係であれ、いずれもストレス要因になるようで、現在、対人コミュニケーションの総量を最低限にするよう、自制しております)、現時点でも文章の形にするのが精一杯という有様です。何卒ご寛恕いただければと思っております。

病状としては「完治」にはほど遠い状況で、業務として行なっていたIT業については、気力がある時は多少コミットできているものの、現在は開店休業状態、といったところです。

太極拳に日課として打ち込むことだけを、自身の最低ラインとして日々を過ごしています。
まずは今、ここにしっかり集中してから、次のステップを考えたいと思っています。

最後に、何もかも投げ出したことに文句ひとつ言わず、黙って後片付けを引き受けてくれたSDのみなさま、本当にありがとうございました。

「牛乳でお腹ゴロゴロ」を回避する

【警告】以下、ウンコウンコ連呼(ライム感)するので、そういうのは苦手な方はご遠慮ください

ワタクシ、「乳糖不耐症」というやつらしく、牛乳を一気に、大量に飲めない体質です(今書いて気づいてしまったが、小学生の頃はどうしていたのだろう。ほぼ毎日、給食の冷たい牛乳を200ml、問題なく飲み干してたハズなんですが。。腸内環境が変わったんですかね)。

軽い過敏性腸症候群でもあるので、朝とかは特にいけません。確実にお腹を下すのみならず、下したあとも腸内環境を破壊しまくるらしく、便臭にも影響が出ます。

一時はアカディなど購入して飲んでいたのですが、まあまあ割高だし、いつ、どこでも売っている、とは限らないので、これも続かず。

そんなこんなで、「まあ乳製品アレルギーではないし、ヨーグルトとチーズ喰ってればいいか……」と、諦めていたんですが、ここのところ運動後にプロテインを飲むことが増え、どうせ何かの液体と一緒に飲むなら、牛乳で流し込めばさらに+数グラムのタンパク質取れるな……と思いつき、さらに、疲労防止にはクエン酸だよねー、と考えを巡らしたところで、ふと、「めんどいから、いっぺんに牛乳+クエン酸(+プロテイン)摂取で済ませられないだろうか?」というところに思いいたりました。 続きを読む 「牛乳でお腹ゴロゴロ」を回避する

Air Video Server HD for Linuxのちょっとしたメモ(実質systemdばなし)

ワタシの常用iPhone(iOS)アプリの中では、まあまあ、レアな部類に、「Air Video HD」というのがあります。

(余談ですが、今、「そこそこの頻度(週数回以上)で起動しているアプリ」をざっと数えたら40くらいありました。体感的に20も無い、と思ってましたが、意外と、いろいろやってますな。スマフォ依存ひどいwww)

名前からなんとなく想像できるとは思いますが、クライアントアプリ「Air Video HD」をiPhone/iPad/iPod Touch/AppleTVに入れ、サーバアプリ「Air Video Server HD」をMac/PC/Linuxで走らせると、マシンの内蔵HDD/SSDなり、DASなりNASなりに溜め込んだ動画を自在に再生できます(ちなみに、クライアントは有料、サーバは無料)。ウチは長年、自宅サーバを固定ipでやっているんで、どこからでも直に見られますが、そうでなくてもルータに穴空ければ、フツーのご家庭でも同様のことができます(たぶん)。

コイツの優れているところは、とにかく群を抜いた、全方位にスキの無い基本性能の高さ、です。 続きを読む Air Video Server HD for Linuxのちょっとしたメモ(実質systemdばなし)

「農機具ひろばCM(2017)」 vs . 「サザエさんBGM(サブ・タイトル4)」

# ま、本来、タイトルに「労力士(ロレックスの中国語表記)©菊地成孔 案件」ってつけるだけでもう作業完了なんですけどね。

今日も今日とてTBSラジオ「伊集院光とらじおと」絶賛聴取中なんですが、ここ数ヶ月で妙に増えてきた「農機具ひろば」のCM(二代目)。 続きを読む 「農機具ひろばCM(2017)」 vs . 「サザエさんBGM(サブ・タイトル4)」

俺氏 vs. エアコン2017(冬の陣)

太陽黒点がどうこうとかで、 結構暖かい日もあったはずの3月も終盤になってみれば平均気温8.4度(東京)と、あいかわらず謎の天候が続きますが(ちなみに8度台だったのは2011年、2012年以来5年ぶり。百年単位で見ればそれでも高い方ですけどね)、先日、我が家のリビングのエアコンが壊れました。 続きを読む 俺氏 vs. エアコン2017(冬の陣)

台灣出稽古記2016

プロローグ:「イペーイ、カイス!!」

鬆柔太極拳の道場にて。自分の動きが、一番「ダセェ」と思える写真をセレクトしてみました(笑)。なんかもうヤケクソになって右腕をこじ入れようとして悪戦苦闘しているところ。ヘタクソすぎる。。

塔手(右手の甲どうしを合わせ、互いの左手を相手の右肘に添えた姿勢)に構えると、相手はやおら、

「イペーイ、カイス!」

と声を上げる。

ん?「カイス? ハイシ? 还是(「あるいは」の意)? いや、この文脈では使わないよな……。」

途方に暮れた顔の私。私以上に「コイツ大丈夫?」な顔をする相手。
「予備、開始!」って言ってるんです。「ヨーイドン」ですよ。この掛け声で始めるんだ、って教えてくれてるんです、と葛西氏が助け舟。

うーむ、そういえば、以前見せてもらった「大会規定」に書いてあったような。相手にはニュアンスで伝わったようで、「え……そこから説明すんの?」という顔をしている。 続きを読む 台灣出稽古記2016

「吉田沙保里選手の握力は20kgしかない」件

先日、TBSラジオ「安住紳一郎の日曜天国(2016年11月27日放送。「ラジオCLOUD」にはありませんが、まあ、探せばどっかで聴けるんじゃないかなあ。。)」を聴いていると、ゲストが吉田沙保里選手でした。この番組は、安住氏のこじらせ倒したフリートーク(ちなみに一番好きな話は「成人式をハシゴしてサボテンを貰った」話。最近では「カレーをおなか一杯食べるんだよう」が白眉だと思っている)と、中澤有美子さん(かわいい)の絶妙な合いの手、国内トップレベルではないかと思われるハガキ職人の投稿を楽しむ番組で、ゲストのコーナーはそれに比べると正直当たりハズレがあるんですが(※個人の感想です)、今回はレジェンド吉田沙保里選手、ということもあり、興味津々。

で、そこで衝撃的な発言が。

「握力は、中学のときに脱臼骨折してから力入らなくて、左20kgしかない。右も最高で40kgくらい」 続きを読む 「吉田沙保里選手の握力は20kgしかない」件

風と推手する男

私の知り合いに、葛西眞彦という人がいます。在台湾の日本人で、いくつかの武術を深く修め、今月末(2016年10月)に台北で開催される競技推手の世界大会に挑戦します。

競技推手ってなーに? というところから話を始めるとオニのように長くなるので、ざっくり、以下の本を御参照ください、ということでご容赦を。

[amazonjs asin=”4622079224″ locale=”JP” title=”習得への情熱―チェスから武術へ―:上達するための、僕の意識的学習法”]

……アフィ厨乙★というコメントを全力回避するために、一応、三行で書いてみると、 続きを読む 風と推手する男

エコノミークラス症候群と落胯垂臀と

まずはじめに。

平成28年(2016年)熊本地震で被災された皆様にお見舞い申し上げます。

さて。

これから相当量の理屈を捏ねますので、最初に結論を。

エコノミークラス症候群の予防には、(ふだんからの)太極拳がいいですよ!

以下、それはなぜか? についての文章です。7000字くらいあるので、ヒマな時を選んで読まれることをお勧めします。 続きを読む エコノミークラス症候群と落胯垂臀と