通常相手には見えないですが、Win + プラスキーで 拡大鏡起動すると画面が画像扱いになるので、常に相手にデスクトップならみんな表示されます。
#Zoom の必殺技
— コンピュータの専門学校 R101(開発担当) (@iseifu) December 19, 2022
Win + テンキーのプラスキー で拡大鏡を起動すると、画面共有でこちらの Zoom 関連のウインドウが相手側に表示される。
チャットとかね pic.twitter.com/uILiqIEZbT
|
|
通常相手には見えないですが、Win + プラスキーで 拡大鏡起動すると画面が画像扱いになるので、常に相手にデスクトップならみんな表示されます。
#Zoom の必殺技
— コンピュータの専門学校 R101(開発担当) (@iseifu) December 19, 2022
Win + テンキーのプラスキー で拡大鏡を起動すると、画面共有でこちらの Zoom 関連のウインドウが相手側に表示される。
チャットとかね pic.twitter.com/uILiqIEZbT
Google の Admin console でテスト後、GAS での再現を確認 https://developers.google.com/admin-sdk/directory/reference/rest/v1/users/insert 上記リンクは管理コンソールで、右サイドで実際に自分のアカウントで API をリアルタイムに実行します。単なる登録系で量が少ない時は、これでひたすら実行したりします。
https://t.co/8fmRwl9SSY pic.twitter.com/0ZTpk0i7xO
— 夜歩き@DAZStudio (@sworc) February 6, 2023
テスト後、 GAS で AdminDirectory 追加してコードの実行。最初、組織の設定解らなかったのでしなかったら、ルートに作成されたので調べて【"orgUnitPath": "/組織名A/組織名B"】である事を確認
function myFunction() {
AdminDirectory.Users.insert({
"name": {
"familyName": "familyName",
"givenName": "givenName"
},
"password": "パスワード",
"primaryEmail": "user.insert@ドメイン",
"changePasswordAtNextLogin": false,
"recoveryEmail": "recovery@ドメイン",
"orgUnitPath": "/組織名A/組織名B"
});
}
サンプルは Admin SDK Directory サービスですが、したい事が無かったりするので引数の渡し方はここから想像してテストするしか無いですね
#GAS でさらに動作確認#AdminDirectory #API #GoogleWorlspace pic.twitter.com/8MfHVNX8rD
— 夜歩き@DAZStudio (@sworc) February 6, 2023
ええと、上限が超えたと報告があって、対応する事となったのですが...
相変わらず Google のドキュメントは要点を取り出しにくい
結論から言うと、該当する共有ドライブを新しい組織に所属させて、組織単位で上限設定可能です。
1) マイドライブの上限は無いように思われる。
2) 共有ドライブの上限は、デフォルトでは 100G と書いてある。
3) しかし、対象の共有ドライブは 1テラ超えてからエラーが発生していた。
4) 全ての共有ドライブの上限を上げるわけにいかないので、個別の方法を調査。
5) どうも最近できた機能らしく、所属組織毎に共用ドライブを割り振れる。
6) そして、 所属組織毎に容量上限が設定できるので、新しい組織で上限を 10テラ に変更。
※ 所属組織は、デフォルトではルートですが、どの階層でもそこで上書きができます。
Google共有ドライブの容量の上限
— 夜歩き@DAZStudio (@sworc) February 2, 2023
共有ドライブの上限は、デフォルトでは 100G。しかし、対象の共有ドライブは 1テラ超えてからエラーが発生。全ての共有ドライブの上限を上げるわけにいかないので、個別の方法を調査。最近できた機能?、所属組織毎に共用ドライブを割り振れる。
組織の上限を10テラに pic.twitter.com/3xmxGOqgRh
※ Google Workspace for Education です ※ 一番上の一部を別の共有フォルダにある程度移動していて、これではあかんなぁ...となって調査
正月の更新で英語のリリース内容にアバターの文字があったので試したら、ほぼキャラクタ着せ替えだった。 どうみてもあちらの TOON 系なので、AI 絡んで、日本系やリアル系に進化して欲しい
#ZOOM #アバター #ベータ版
— 夜歩き@DAZStudio (@sworc) January 7, 2023
どうみてもあちらの TOON 系
AI 絡んで、日本系やリアル系に進化して欲しい pic.twitter.com/tHKFoD1wEz
画像アップロードが面倒な時代になって来たので、Twitter を使う。 イーロン・マスク、頑張ってね。
現場では当たり前の事ですが、この発想に及ばないのは実際の開発現場でのプリンタの管理が想像以上にこのようなお金の問題以外にもたくさんあるからです。
— コンピュータの専門学校 R101(開発担当) (@iseifu) December 27, 2022
保存時に実行したければ、"files.trimTrailingWhitespace": true です。自動保存にすると、ソース変更すれば実行されます。
#VSCode#ショートカット
— コンピュータの専門学校 R101(開発担当) (@iseifu) December 28, 2022
行末のスペースを消去する
CTRL + K の後、K を離して X を押す pic.twitter.com/sl2duS8Hom
▼ VBScript
▼ JScript
コマンドプロンプトから、以下のようにしてテストしています
cscript mail.vbs
cscript mail.js
ssl を使用( ポート 465 )するので、smtpusessl が true になっています。
mail.vbs
' ***********************************************************
' 使用するパラメータ
' ***********************************************************
strFrom = "わたしです <ロリポップメールアドレス>"
strTo = "あなたです <送り先メールアドレス>"
strServer = "smtp.lolipop.jp"
nPort = 465
strUser = "ロリポップメールアドレス"
strPass = "パスワード"
' ***********************************************************
' オブジェクト
' ***********************************************************
Set Cdo = WScript.CreateObject("CDO.Message")
' ***********************************************************
' 自分のアドレスと宛先
' ***********************************************************
Cdo.From = strFrom
Cdo.To = strTo
' ***********************************************************
' 件名と本文
' ***********************************************************
Cdo.Subject = "件名の文字列 / " & Now()
Cdo.Textbody = "テキスト本文" & vbCrLf & "改行は vbCrLf"
' ***********************************************************
' CC BCC HTMLメール( CC BCC はどちらか片方 )
' ※ 両方指定すると CC
' ***********************************************************
Cdo.Cc = "メールアドレス1,メールアドレス2"
'Cdo.Bcc = "メールアドレス3,メールアドレス4"
Cdo.Htmlbody = "<img src=""https://winofsql.jp/image/winofsql.png"">"
' ***********************************************************
' ファイル添付あり
' ***********************************************************
Cdo.AddAttachment( "C:\Users\sworc\Pictures\0152-ac.jpg" )
Cdo.AddAttachment( "C:\Users\sworc\Pictures\ai\2022-08-24-1.png" )
' ***********************************************************
' 設定
' ***********************************************************
Cdo.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
Cdo.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = strServer
Cdo.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = nPort
Cdo.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = true
Cdo.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
Cdo.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusername") = strUser
Cdo.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendpassword") = strPass
' ***********************************************************
' 設定の反映
' ***********************************************************
Cdo.Configuration.Fields.Update
' ***********************************************************
' 送信
' ***********************************************************
on error resume next
Cdo.Send
if Err.Number <> 0 then
strMessage = Err.Description
else
strMessage = "送信が完了しました"
end if
on error goto 0
Wscript.Echo strMessage
mail.js
// ***********************************************************
// 使用するパラメータ
// ***********************************************************
var strFrom = "わたしです <ロリポップメールアドレス>";
var strTo = "あなたです <送り先メールアドレス>";
var strServer = "smtp.lolipop.jp";
var nPort = 465;
var strUser = "ロリポップメールアドレス";
var strPass = "パスワード";
// ***********************************************************
// オブジェクト
// ***********************************************************
var Cdo = WScript.CreateObject("CDO.Message")
// ***********************************************************
// 自分のアドレスと宛先
// ***********************************************************
Cdo.From = strFrom
Cdo.To = strTo
// ***********************************************************
// 件名と本文
// ***********************************************************
Cdo.Subject = "件名の文字列 / " + new Date();
Cdo.Textbody = "テキスト本文\r\n改行は \\r\\n";
// ***********************************************************
// CC BCC HTMLメール( CC BCC はどちらか片方 )
// ※ 両方指定すると CC
// ***********************************************************
Cdo.Cc = "メールアドレス1,メールアドレス2"
//Cdo.Bcc = "メールアドレス3,メールアドレス4"
Cdo.Htmlbody = "<img src=\"http://winofsql.jp/image/winofsql.png\">"
// ***********************************************************
// ファイル添付あり
// ***********************************************************
Cdo.AddAttachment( "C:\\Users\\sworc\\Pictures\\0152-ac.jpg" )
Cdo.AddAttachment( "C:\\Users\\sworc\\Pictures\\ai\\2022-08-24-1.png" )
// ***********************************************************
// 設定
// ***********************************************************
Cdo.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
Cdo.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = strServer
Cdo.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = nPort
Cdo.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = true
Cdo.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
Cdo.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = strUser
Cdo.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = strPass
// ***********************************************************
// 設定の反映
// ***********************************************************
Cdo.Configuration.Fields.Update()
// ***********************************************************
// 送信
// ***********************************************************
var strMessage
try {
Cdo.Send()
strMessage = "送信が完了しました"
}
catch ( error ) {
strMessage = error.message;
}
WScript.Echo( strMessage );
UrlEncode をキャラクタセットを指定して送れるようになっています。受信データは、Content-Type でキャラクタセットが指定されておれば、自動的に変換されています。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks;
namespace winofsql {
class Tool {
// 戻される文字列は、サーバー側で Content-Type に Charset が
// 指定されておれば自動変換されます
// *********************************************
// UTF-8 POST
// *********************************************
public static async Task<string> Post(string url, Dictionary<string, string> param) {
string result = "";
try {
HttpClient httpClient = new HttpClient();
httpClient.MaxResponseContentBufferSize = int.MaxValue;
HttpContent content = new FormUrlEncodedContent(param);
var response = await httpClient.PostAsync(url, content);
String text = await response.Content.ReadAsStringAsync();
result = text;
}
catch (Exception Err) {
result = "ERROR: " + Err.Message;
}
return result;
}
// *********************************************
// エンコード指定 POST
// *********************************************
public static async Task<string> Post(string url, string encoding, Dictionary<string, string> param) {
string result = "";
string query_string = "";
byte[] data1 = null;
byte[] data2 = null;
string data3 = null;
foreach (KeyValuePair<string, string> kvp in param) {
if (query_string == "") {
query_string += "";
}
else {
query_string += "&";
}
data1 = Encoding.GetEncoding(encoding).GetBytes(kvp.Value);
data2 = WebUtility.UrlEncodeToBytes(data1, 0, data1.Length);
data3 = Encoding.GetEncoding(encoding).GetString(data2, 0, data2.Length);
query_string += kvp.Key + "=" + data3;
}
try {
HttpClient httpClient = new HttpClient();
HttpContent content = new StringContent(query_string);
content.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded");
var response = await httpClient.PostAsync(url, content);
String text = await response.Content.ReadAsStringAsync();
result = text;
}
catch (Exception Err) {
result = "ERROR: " + Err.Message;
}
return result;
}
// *********************************************
// URL のみ呼び出し GET
// *********************************************
public static async Task<string> Get(string url) {
string result = "";
HttpClient httpClient = new HttpClient();
HttpResponseMessage response = null;
try {
response = await httpClient.GetAsync(url);
}
catch (Exception Err) {
result = "ERROR: " + Err.Message;
}
// 接続に失敗
if (response == null) {
return result;
}
try {
response.EnsureSuccessStatusCode();
}
catch (Exception Err) {
result = "ERROR: " + Err.Message;
}
// HTTP 応答の失敗
if (!response.IsSuccessStatusCode) {
return result;
}
// 内容を文字列として取得
try {
String text = await response.Content.ReadAsStringAsync();
result = text;
}
catch (Exception Err) {
result = "ERROR: " + Err.Message;
}
return result;
}
// *********************************************
// データ呼び出し( UTF-8 ) GET
// *********************************************
public static async Task<string> Get(string url, Dictionary<string, string> param) {
string query_string = "";
foreach (KeyValuePair<string, string> kvp in param) {
if (query_string == "") {
query_string += "?";
}
else {
query_string += "&";
}
query_string += kvp.Key + "=" + WebUtility.UrlEncode(kvp.Value);
}
return await Get(url + query_string);
}
// *********************************************
// データ呼び出し( エンコード指定 ) GET
// *********************************************
public static async Task<string> Get(string url, string encoding, Dictionary<string, string> param) {
string query_string = "";
byte[] data1 = null;
byte[] data2 = null;
string data3 = null;
foreach (KeyValuePair<string, string> kvp in param) {
if (query_string == "") {
query_string += "?";
}
else {
query_string += "&";
}
data1 = Encoding.GetEncoding(encoding).GetBytes(kvp.Value);
data2 = WebUtility.UrlEncodeToBytes(data1, 0, data1.Length);
data3 = Encoding.GetEncoding(encoding).GetString(data2, 0, data2.Length);
query_string += kvp.Key + "=" + data3;
}
return await Get(url + query_string);
}
}
}
呼び出し
string result = await winofsql.Tool.Post(
"http://localhost/lightbox/sample/test.php",
"shift_jis",
new Dictionary<string, string>() { { "field1", "日本語" }, { "field2", "表示" } });
if (result.PadRight(5).Substring(0, 5) == "ERROR") {
Debug.WriteLine(result);
}
関連する記事 Framework4(C#) : WebClient で Post と Get する汎用 static クラス Framework4(C#) : Windows Phone OS 7.1 : WebClient で Post と Get する汎用 static クラス Android で Post と Get
置き換え
type con > a.txt
追加( Append )
type con >> a.txt
終了時は 改行入力後、CTRL+Z を入力してEnter ですtype nul > ファイル名で、ファイルを空で初期化できます。
✅ Microsoft ドキュメント コマンド リダイレクト演算子を使用する ⭐ 単純な リダイレクト は > です。 コマンドプロンプトに表示されるはずの文字列をファイルに書き込みます。 ⭐ >> を使うと追加書き込みです。このような記号は、リダイレクト演算子と呼ばれます。
STDIN | 0 | キーボード入力 |
STDOUT | 1 | 標準出力 |
STDERR | 2 | Error output to the Command Prompt window |
0、1、2 は ハンドル番号で、既存のハンドルへのリダイレクトを指定するには、アンパサンド(&)文字の後にリダイレクトしたいハンドル番号を使用します。 なので、2>&1 は 標準エラー出力を標準出力にリダイレクトする事を意味します。▼ 解りやすいテストはエラーだけに着目して、以下のように実行します。
C:\temp>dir x ドライブ C のボリューム ラベルは Windows10 です ボリューム シリアル番号は 40B9-7D17 です C:\temp のディレクトリ ファイルが見つかりません( x が存在しないので『ファイルが見つかりません』と言うエラーメッセージが出ます ) この『ファイルが見つかりません』は、dir x > message.txt としても message.txt には書き込まれまれずに、コマンドプロンプトに表示されます。しかし、以下のようにすれば全て書き込む事ができます。
dir x > message.txt 2>&1この方法は解りにくいですが、標準出力と標準エラー出力を同時にリダイレクトしたいときに意味があります。dir x 2> message.txtだと、ファイルが見つかりません だけが書き込まれてしまいます。キーボード入力をファイル化
リダイレクト演算子を使用して、キーボードから入力した文字列をテキストファイルに書き込む事ができます。type con > message.txttype コマンドは、ファイルの内容をコマンドプロンプトに表示するコマンドですが、con と言う特殊な予約文字列を使用すると、キーボードをファイルとみなした動作を行います。 ※ 終了時は 改行入力後、CTRL+Z を入力してEnter です空のファイルを作成する
nul と言う予約文字列を使用して以下のように実行しますtype nul > message.txt実行結果を表示しない
nul は存在しないファイルのようなものなので、標準結果への出力を無かった事にできますdir *.* > nul
以下は、ファイル名を指定して実行からの起動ですが、コマンドプロンプトを表示したままで保持し、必要がなくなればすぐ閉じる事ができます (もちろんコマンドプロンプトからの実行でもかまいませんが、その場合は pause は必要無いです) /c は、/c の後の文字列を新しい cmd.exe で実行した後、cmd.exe を終了するという意味なので、dir を実行した後、pause で一時停止して入力待ちとなり、何かキーを押せば cmd.exe が終了します。最後に pause を使う方法は、コンソールに出力された結果を画面で確認できるようにする為に用いられます。
cmd /c dir & pause
& による一行の複数実行は、複数のアプリケーション(バッチファイル内の行単位の処理)をプログラムから呼び出したい(call コマンドを使用)場合で、外部にバッチファイルを作りたくない場合に使用します。
次のサンプルは、ユーザフォルダの dir の結果をテキストファイルにリダイレクトして dir の結果をメモ帳で開きます。
notepad の起動に start を使用しているので、元の cmd.exe は終了して結果の dir.log を表示したメモ帳のみが Windows 上に残ります( start が無いと、cmd.exe が notepad.exe の終了を待ちます )
cmd /c cd %HOMEPATH% & dir > c:\temp\dir.log & start notepad c:\temp\dir.log
ダウンロードしたファイルをエクスプローラから実行する場合は、『許可する』にチェックして『適用』して下さい。![]()