TechBox

業務で使えそうな技術を紹介します。

【Windows】スクリーンショットを撮るなら【ScreenPresso】が無料で高機能でオススメ

Windowsのオススメのスクリーンキャプチャソフトを紹介します。

ブログを書くときや、問い合わせをする際に、PCのスクリーンショットを撮ることがあると思います。

その際にオススメしたいソフトが【ScreenPresso】です。

高機能で使いやすく、注釈や文字、枠なども簡単に挿入することができます。

今回はそのツールの紹介をします。


下の画像は、実際にツールを使用した例です。

キャプチャ後、簡単に編集を加えたものになります。
f:id:hotkou:20180227151152p:plain
また、動画やGIFも作れるので、マニュアル等を作るときにもいいかもしれません。

ダウンロード

以下のリンクからダウンロードします。
Screenpresso のダウンロードと使い方 - k本的に無料ソフト・フリーソフト

初期設定

ダウンロード後、【Screenpresso.exe】を起動します。

インストール設定

インストールするかを任意設定できます。
私はインストールせずに利用していますが、今のところ何一つ不自由はありません。
f:id:hotkou:20180220150149p:plain


赤枠を選択>【設定】を選択します。
f:id:hotkou:20180220150415p:plain

キャプチャの保存先の設定

任意の箇所に保存先を設定します。
f:id:hotkou:20180220150624p:plain


キャプチャの保存先枚数の設定

デフォルトだと100枚程度になっていますが、その限度を超えると古い順のデータから削除されてしまうため、任意に設定します。
枚数を10000にしておくことをオススメします。
f:id:hotkou:20180220150831p:plain


ホットキー(ショートカットキー)の設定

ホットキーで呼び出すと、簡単にキャプチャを撮ることができます。
【指定領域のスクリーンショット】さえ設定しておけば他は必要ないかもしれません。
f:id:hotkou:20180222122105p:plain

操作方法

操作方法は簡単です。
ScreenPresso起動中に割り当てたショートカットキーを押下すればスクリーンショットが撮れます。
この時点でクリップボードにコピーされているので、ペーストしてしまえば、そのままキャプチャをexcelやブログ等に貼り付けることができます。


キャプチャ後、編集する場合(注釈や文字入れする場合)
編集したいキャプチャファイルを選択し、編集を選択します。
f:id:hotkou:20180222163819p:plain



そうすると編集画面が表示されるので自由に変更します。
確定を選択すると、編集を完了します。
しかもこのタイミングでクリップボードにコピーされているので、編集したキャプチャがそのままペーストすることができます!超便利!
f:id:hotkou:20180222122916p:plain


ぜひ使ってみてはいかがでしょうか。

【C#】外部ファイル(App.config)の読み書き

環境

  • .NET Framework 4.6
  • VisualStudio2017 Community

手順

1.System.Configurationの参照設定を追加

ソリューションエクスプローラーの参照を右クリック→【参照の追加】を選択 System.Configurationを検索し、見つかったら、チェックを入れてOKを選択します。

2.App.configに設定値を追加

AppConfigを開き、次のように<appSettings>の要素に設定値を追加してください。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
    </startup>
  
    <!--追加-->
    <appSettings>
      <add key="key1" value="value1" />
      <add key="key2" value="value2" />
    </appSettings>  
</configuration>

 

3.設定値の読み込み

次のの参照を冒頭に追加する。 using System.Configuration;

次のようにConfigurationManager.AppSettings["キー名"]で呼び出す

using System.Configuration;//追加


namespace SamplePrj
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //読み込み処理
            MessageBox.Show(ConfigurationManager.AppSettings["key1"]);
        }
    }
}

こんな感じ

4.設定値の保存

using System.Configuration;


namespace SamplePrj
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //書き込み処理
            Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
            config.AppSettings.Settings["key2"].Value = "こんにちわ";
            config.Save();
        }
    }
}

 

以上です。

【cakephp3】ログイン認証機能を作成する

こんばんわ!

cakephp3でログイン認証機能を作成したので紹介します。

作業の概要としては次の通りになります。

概要

  1. ユーザーテーブルの作成
  2. bakeでmodel,controller,viewを一通り作成
  3. login前はloginページに遷移させるように処理を追加(AppContoller)
  4. login,logout処理を追加(controller)
  5. loginページを追加(view)
  6. ユーザー追加(add)ページのみログインせずともアクセスできるよう処理を追加(controller)
  7. パスワードをハッシュ化機能を追加(entity)

 

1.ユーザーテーブルの作成

CREATE TABLE `users` (
  `id` int(11) NOT NULL,
  `email` varchar(255) NOT NULL,
  `password` varchar(100) NOT NULL,
  `name` varchar(20) NOT NULL,
  `deleteFlg` int(11) NOT NULL DEFAULT '0',
  `created` datetime NOT NULL,
  `modified` datetime NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ALTER TABLE `users`
  ADD PRIMARY KEY (`id`);

 

2.bakeでmodel,controller,viewを一通り作成

次のコマンドでuserテーブルのcontroller,model,viewをすべて作成します。 ※【-f】の引数は上書きです。

php bin/cake.php bake all users -f

 

3.login前はloginページに遷移させるように処理を追加

AppControllerに次のソースを追加します。 AppControllerに追記することにより、ページ全体に対して有効になります。

class AppController extends Controller
{
    public function initialize()
    {
        parent::initialize();
        $this->loadComponent('RequestHandler');
        $this->loadComponent('Flash');

        //認証処理を追加
        $this->loadComponent('Auth',[
            'authenticate' => [
                'Form' => [
                    'fields' => [
                        'username' => 'email',
                        'password' => 'password'
                    ]
                ]
            ],
            'loginAction' => [
                'controller' => 'Users',
                'action' => 'login'
            ]
        ]);

    }

 

4.login,logout処理を追加

UserContorollerに次のソースを追加します。

    //login処理
    public function login()
    {
        if($this->request->is('post')){
            $user = $this->Auth->identify();
            if($user){
                $this->Auth->setUser($user);
                return $this->redirect($this->Auth->redirectUrl());
            }
            $this->Flash->error('ユーザー名かパスワードに誤りがあります。');
        }
    }
    //logout処理
    public function logout()
    {
        $this->Flash->success('ログアウトしました');
        return $this->redirect($this->Auth->logout());
    }

 

5.loginページを追加

Users/login.ctpを作成し、次のソースを追加します。

<h1>ログインページ</h1>
<?= $this->Form->create() ?>
<?= $this->Form->input('email') ?>
<?= $this->Form->input('password') ?>
<?= $this->Form->button('ログイン') ?>
<?= $this->Form->end() ?>

 

6.ユーザー追加(add)ページのみログインせずともアクセスできるよう処理を追加

ログイン認証機能を追加したはよいものの、ユーザーテーブルにレコードがないと、誰もログインすることができなくなってしまいます。 なので、今回はユーザー追加ページのみ、ログイン中でなくてもアクセスできるように例外処理を追加しましょう。

UserController.phpに次のソースを追加します。

    public function beforeFilter(\Cake\Event\Event $event) {
        parent::beforeFilter($event);
        $this->Auth->allow(['add']);
    }

$this->Auth->allow(['add']); この部分で、action毎に例外処理を追加することが可能です。

 

7.パスワードをハッシュ化機能を追加

6までの作業でユーザー追加して、ログインするところまでは一通り可能になります。 しかし、次の写真のように、パスワードがそのまま表示されてしまいます。 他のユーザーに読み取られてしまい、セキュリティ上よくありません。 なのでパスワードをハッシュ化(暗号化)します。

Entity/User.phpに次のソースを追加します。

<?php
namespace App\Model\Entity;

use Cake\ORM\Entity;
use Cake\Auth\DefaultPasswordHasher; //追加

class User extends Entity
{

    //暗号化処理を追加
    protected function _setPassword($password)
    {
          return (new DefaultPasswordHasher)->hash($password);
    }

 

この処理を追加することで、次の写真のように、パスワードが暗号化された状態でレコードが登録されます。 また、ログインするときも暗号化前のパスワードでログイン可能です。特に復号化処理を加えずとも自動的に処理してくれているみたいです。

 

以上です。