物理の駅 Physics station by 現役研究者

テクノロジーは共有されてこそ栄える

ATOK Syncで環境設定を同期させる方法

ATOK Syncでアップロード+ダウンロードをしたつもりなのに、設定が一部しか同期されないという問題が発生した。

結論から言うと、現時点で、すべての環境設定を同期させる方法はない。

http://potato.2ch.net/test/read.cgi/software/1453634331/651

651 名前:550[sage] 投稿日:2016/02/11(木) 19:28:50.15 ID:jF+1O1lh0
サポートに聞いてみたところ、同期できる設定は
入力・変換>基本
入力・変換>句読点変換
キー・ローマ字・色
だけだそうで。

ATOKプロパティ(環境設定)で変更できる入力・変換の設定やキーカスタマイズなどの情報を同期できます。
酷い宣伝だよ。

ここからなにも変わっていないと思われる。月々500円払って、全部の設定を同期できると思ったら大間違い・・・。

f:id:onsanai:20161106120451p:plain

ここで書いている「環境設定をアップロード」「環境設定をダウンロード」というのは、「ごく一部の環境設定を・・・」に置き換えたほうがよいだろう。

Windowsだけでもいいから、すべての環境設定を同期できるようになりませんかね? ジャストシステムさん。

PsExecにおけるコマンド例

ファイルを削除する

/c PsExec.exe HOST -u HOST\user -p password cmd /c del /f filepath

タスクキル

/c PsExec.exe HOST -u HOST\user -p password taskkill -f -im program.exe

batファイルを起動

/c PsExec.exe HOST -u HOST\user -p password -i C:\Users\user\Desktop\program.bat

ネットワークディスク経由での処理、echoによる出力等はどうやれば良いのかわからない。

C# WPFで各種コントロールを動的に配置し、配置したコントロールにアクセスする方法

WPFで各種コントロールを動的に配置し、配置したコントロールにアクセスする方法。 stackoverflow.com

最上位の解答が役に立つ。分かってしまえば簡単ですね。

重要なところだけC#で下記に記す。

//コントロールの生成
var tbox = new TextBox(); //ここでは例としてTextBox
tbox.Name = "tbox1"; //Name
spanel.Children.Add(tbox); //StackPanel等に追加
spanel.RegisterName(tbox.Name, tbox); //StackPanel等に登録

//コントロールへのアクセス
var tbox = (TextBox) this.spanel.FindName("tbox1");

Pocoによる共有メモリの書き込み・読み出しの実装例

Pocoはc++のライブラリの一つで、boostより比較的軽量に設計されている。バージョン1.7.3を使って共有メモリの書き込み・読み出しの実装例を書いた。 読み出しでもAM_WRITEになっているのは読み出しで先にOPENしてしまうと書き込みのほうで例外が投げられるため。

for文はrange-based for loopsを使った。

読み出し

#include <iostream>
#include <Poco/SharedMemory.h>
#include <Poco/Thread.h>

int main() {
    size_t size = 10;
    auto sm = Poco::SharedMemory("phst_test", size, Poco::SharedMemory::AccessMode::AM_WRITE);

    while (true) {
        Poco::Thread::sleep(1000);
        for (const auto &p : sm) { //const auto &
            std::cout << int(p) << " "; //読み出し
        }
        std::cout<<std::endl;
    }
    
}

書き込み

#include <iostream>
#include <Poco/SharedMemory.h>
#include <Poco/Thread.h>

int main() {
    size_t size = 10;
    auto sm = Poco::SharedMemory("phst_test", size, Poco::SharedMemory::AccessMode::AM_WRITE);

    char c = 0;
    while (true) {
        Poco::Thread::sleep(1000);
        std::cout << int(c) << std::endl;
        for (auto &&p : sm) { //auto &&
            p = c; //書き込み
        }
        c++;
    }

}

参照

qiita.com

PocoによるTCP/IP通信のサーバー・クライアント実装例

Pocoはc++のライブラリの一つで、boostより比較的軽量に設計されている。バージョン1.7.3を使ってTCP通信のサーバー・クライアントの実装例を書いた。例外処理は甘いところがあるので適宜変更されたし。

サーバーの実装例

#include <iostream>

#include <Poco/Net/Socket.h>
#include <Poco/Net/TCPServer.h>
#include <Poco/Net/StreamSocket.h>

const int BYTE_LENGTH = 1024;

void tcp_send(Poco::Net::StreamSocket &ss, std::string str)
{
    if (str.size() > BYTE_LENGTH) throw std::invalid_argument("str.size() > BYTE_LENGTH");
    int ret = ss.sendBytes(str.c_str(), str.size());
    if (ret < 0) throw std::exception();
}
std::string tcp_read(Poco::Net::StreamSocket &ss)
{
    char data[BYTE_LENGTH];
    int count = ss.receiveBytes(data, BYTE_LENGTH);
    std::string str(data, count);
    if (count == BYTE_LENGTH) throw std::exception();
    return str;
}

int main() {
    int port = 15001;

    while (true) {
        Poco::Net::ServerSocket *serv;
        Poco::Net::StreamSocket *ss;
        serv = new Poco::Net::ServerSocket(port);
        serv->listen();

        std::cout << "Waiting for connection";
        ss = new Poco::Net::StreamSocket(serv->acceptConnection());
        ss->setNoDelay(true);
        std::cout << "\rConnected from " << ss->peerAddress().host().toString() << " " << ss->address().port() << std::endl;
        try {
            while (true) {
                std::string str = tcp_read(*ss);
                tcp_send(*ss, "You sent " + str);
                std::cout << "I received \"" + str << "\"." << std::endl;
            }
        }
        catch (...) {
            ss->close();
            serv->close();
        }
    }
}

クライアントの実装例

#include <iostream>

#include <Poco/Net/Socket.h>
#include <Poco/Net/StreamSocket.h>
#include <Poco/Thread.h>

const int BYTE_LENGTH = 1024;

void tcp_send(Poco::Net::StreamSocket &ss, std::string str)
{
    if (str.size() > BYTE_LENGTH) throw std::invalid_argument("str.size() > BYTE_LENGTH");
    int ret = ss.sendBytes(str.c_str(), str.size());
    if (ret < 0) throw std::exception();
}
std::string tcp_read(Poco::Net::StreamSocket &ss)
{
    char data[BYTE_LENGTH];
    int count = ss.receiveBytes(data, BYTE_LENGTH);
    std::string str(data, count);
    if (count == BYTE_LENGTH) throw std::exception();
    return str;
}

int main() {
    int port = 15001;
    std::string host = "localhost";

    while (true) {
        try {
            Poco::Net::StreamSocket *ss;
            auto address = Poco::Net::SocketAddress(host, port);
            ss = new Poco::Net::StreamSocket(address.family());
            ss->setNoDelay(true);
            ss->connect(address);
            try {

                while (true) {
                    std::string str;
                    std::cin >> str;
                    tcp_send(*ss, str);
                    std::cout << "I received \"" + tcp_read(*ss) << "\"."<< std::endl;
                }
            }
            catch (...) {
                ss->close();
            }
        }
        catch (...) {
            Poco::Thread::sleep(1000);
            std::cout << "Waiting for server to startup\n";
        }
    }
}