2018年12月26日 星期三

Solution of failed to connect UNC \\{hostname}\c$ to windows 2016

I also noticed this policy will affect the SMB authentication during you access admin share:

Run gpedit.msc
Please change  GPO: Computer Configuration\Windows Settings\Security Settings\Local Policies\Security Options\Microsoft network server: Server SPN target name validation level to Off.  ran gpupdate /force
both with this registry HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\system\LocalAccountTokenFilterPolicy DWORD Value (32bit) and gave it a value of 1. 
 and rebooted my system. 

from : https://social.technet.microsoft.com/Forums/en-US/46a0b743-091b-484e-a6f4-ed727e77eb97/windows-10-1703-access-denied-to-c?forum=win10itprosecurity

2018年11月14日 星期三

程式易讀-笛摩根定律

1) not (a or b or c) => (not a) and (not b) and (not c)
2) not (a and b and c) => (not a) or (not b) or (not c)

Example:
if ( !(file_exists && !is_protected)) { ... } => if ( !file_exists or is_protected) { ... }

2018年11月13日 星期二

Git ignore list

https://github.com/github/gitignore

2018年11月7日 星期三

Apache NiFi

An easy to use, powerful, and reliable system to process and distribute data.

from: https://nifi.apache.org/

2018年10月2日 星期二

【keras进行情感极性分析】实验中的问题及解决, 怎么看loss和acc的变化

Q:怎么看loss和acc的变化(loss几回合就不变了怎么办?)

(转自http://blog.csdn.net/SMF0504/article/details/71698354
  • train loss 不断下降,test loss不断下降,说明网络仍在学习;
  • train loss 不断下降,test loss趋于不变,说明网络过拟合;
  • train loss 趋于不变,test loss不断下降,说明数据集100%有问题;
  • train loss 趋于不变,test loss趋于不变,说明学习遇到瓶颈,需要减小学习率或批量数目;
  • train loss 不断上升,test loss不断上升,说明网络结构设计不当,训练超参数设置不当,数据集经过清洗等问题。

Q:训练过程中loss数值为负数?

【原因】输入的训练数据没有归一化造成
【解决方法】把输入数值通过下面的函数过滤一遍,进行归一化
def data_in_one(inputdata):  
    inputdata = (inputdata-inputdata.min())/(inputdata.max()-inputdata.min())  
    return inputdata  

Q:如何让训练过程可视化

import keras  
from keras.utils import np_utils  
import matplotlib.pyplot as plt  
%matplotlib inline  

#写一个LossHistory类,保存loss和acc  
class LossHistory(keras.callbacks.Callback):  
    def on_train_begin(self, logs={}):  
        self.losses = {'batch':[], 'epoch':[]}  
        self.accuracy = {'batch':[], 'epoch':[]}  
        self.val_loss = {'batch':[], 'epoch':[]}  
        self.val_acc = {'batch':[], 'epoch':[]}  

    def on_batch_end(self, batch, logs={}):  
        self.losses['batch'].append(logs.get('loss'))  
        self.accuracy['batch'].append(logs.get('acc'))  
        self.val_loss['batch'].append(logs.get('val_loss'))  
        self.val_acc['batch'].append(logs.get('val_acc'))  

    def on_epoch_end(self, batch, logs={}):  
        self.losses['epoch'].append(logs.get('loss'))  
        self.accuracy['epoch'].append(logs.get('acc'))  
        self.val_loss['epoch'].append(logs.get('val_loss'))  
        self.val_acc['epoch'].append(logs.get('val_acc'))  

    def loss_plot(self, loss_type):  
        iters = range(len(self.losses[loss_type]))  
        plt.figure()  
        # acc  
        plt.plot(iters, self.accuracy[loss_type], 'r', label='train acc')  
        # loss  
        plt.plot(iters, self.losses[loss_type], 'g', label='train loss')  
        if loss_type == 'epoch':  
            # val_acc  
            plt.plot(iters, self.val_acc[loss_type], 'b', label='val acc')  
            # val_loss  
            plt.plot(iters, self.val_loss[loss_type], 'k', label='val loss')  
        plt.grid(True)  
        plt.xlabel(loss_type)  
        plt.ylabel('acc-loss')  
        plt.legend(loc="upper right")  
        plt.show()  
在模型中,model语句前加上:
history = LossHistory() 
然后在model.fit里加上callbacks = {history},以及下面调用history
model.fit(x, y, batch_size=32, nb_epoch=20,validation_data = (xt,yt),validation_steps=None,callbacks=[history])   
history.loss_plot('epoch')  

from : https://www.jianshu.com/p/b34a80cd00be

2018年9月16日 星期日

如何確認remote docker的內容

無法查看此摘要。請 按這裡查看文章。

2018年6月8日 星期五

PHP PSR-4 Autoloader 機制

寫 PHP 最麻煩的就是 require/includ 檔案了。如今只要照著 PSR-4 的規範實作,就可以使用 Composer 提供的 autoload,自動載入相對應的檔案。

介紹

PSR-4 Autoloader 規範描述了如何架構專案的目錄結構及如何使用命名空間,遵循這個規範並搭配 Composer 提供的 autoload 就可以完成自動載入的動作。要使用 PSR-4 Autoloader 必須使用正確的命名空間。

這裡的類別泛指類別(classes)、介面(interfaces)、特性(traits)等等相似的結構。

一個完整的類別名稱的形式如下:
\<NamespaceName>(\<SubNamespaceNames>)*\<ClassName>
  1. 完整的類別名稱(fully qualified class name)必須有最高層級(top-level)的命名空間(namespace),通常稱這個命名空間為「供應商命名空間(vendor namespace)」。
  2. 完整的類別名稱可以有一個或多個子命名空間。
  3. 一個完整的類別名稱必須以類別名稱結束。
  4. 在完整的類別名稱中,底線沒有其他意義。
  5. 完整的類別名稱可以由英文字母大小寫組合而成。
  6. 所有的類別名稱必須是有區分大小寫的。
以「完整的類別名稱」來載入相對應的檔案:
  1. 在「完整的類別名稱」中,由一個或多個連續的「前置命名空間」及「子命名空間」組成。將「前置命名空間」中包含的分隔符號去除,表示為命名空間的前綴(prefix)名稱,它會對應到至少一個實體目錄,該目錄就稱為基底目錄(base directory)。
  2. 在「前置命名空間」之後的子命名空間,會對應到基底目錄下的子目錄。命名空間的分隔符號表示為目錄的階層,意思是子目錄必須對應到子命名空間。
  3. 最終的類別名稱,會對應到實體的 .php 檔案名稱,該檔案名稱的大小寫必須和類別名稱相同。

看幾個範例就能找出規則了。
範例 1:
完整類別名稱\Acme\Log\Writer\File_Writer
命名空間前置名稱Acme\Log\Writer
基底目錄./acme-log-writer/lib/
檔案路徑./acme-log-writer/lib/File_Writer.php

範例 2:
完整類別名稱\Aura\Web\Response\Status
命名空間前置名稱Aura\Web
基底目錄/path/to/aura-web/src/
檔案路徑/path/to/aura-web/src/Response/Status.php

範例 3:
完整類別名稱\Symfony\Core\Request
命名空間前置名稱Symfony\Core
基底目錄./vendor/Symfony/Core/
檔案路徑./vendor/Symfony/Core/Request.php

範例 4:
完整類別名稱\Zend\Acl
命名空間前置名稱Zend
基底目錄/usr/includes/Zend/
檔案路徑/usr/includes/Zend/Acl.php

規則就是,
因為:命名空間前置名稱 = 基底目錄
於是:(完整類別名稱 - 命名空間前置名稱) = (檔案路徑 - 基底目錄)
而且:完整類別名稱 最後一個分隔符號之後的名稱 = 檔案路徑 最後一個分隔符號之後的名稱.php = 類別名稱

實作

專案都依照 PSR-4 來架構後,就可以使用 Composer 來自動載入相關的檔案了。

設定

首先,假設有一個新專案叫 demo,目錄名稱就叫 demo,其下有兩個子目錄:src 及 public,結構如下:
demo
  /src
  /public
在根目錄下建立 composer.json,內容如下:
  1. JSON{
  2. "autoload": {
  3. "psr-4": {
  4. "Tonycube\\": "src/Tonycube"
  5. }
  6. }
  7. }
這裡表示要使用 PSR-4 標準的 autoload,"Tonycube" 表示「命名空間前置名稱」,對應到實體目錄的 "src/Tonycube",所以我們要在 src 目錄下建一個子目錄 Tonycube。
目前的檔案結構如下:
demo
  /src
    /Tonycube
  /public
  composer.json
這裡先確定你已經有安裝 composer。在終端機下,進入 demo 目錄,接著輸入
composer dump-autoload
成功的話,會建立一個 vendor 目錄,內含 autoload.php:
demo
  /src
    /Tonycube
  /public
  /vendor
    autoload.php
    /composer
  composer.json
之後的 PHP 檔案只要 require 這個 autoload.php 檔,就可以自動載入相對應的 PHP 檔案,不用再老是寫一堆 require 了。

程式碼

假設在 Tonycube 目錄下再建立一個目錄 Hello,然後在其中建 3 個示範檔案,如下:
src/Tonycube/Hello/World.php
  1. PHPphp
  2. namespace Tonycube\Hello;
  3. class World
  4. {
  5. function __construct()
  6. {
  7. echo 'Hello World ~'.PHP_EOL;
  8. }
  9. }
src/Tonycube/Hello/Tony.php
  1. PHPphp
  2. namespace Tonycube\Hello;
  3. class Tony
  4. {
  5. function __construct()
  6. {
  7. echo 'Hello Tony ~'.PHP_EOL;
  8. }
  9. }
src/Tonycube/Hello/Any.php
  1. PHPphp
  2. namespace Tonycube\Hello;
  3. class Any
  4. {
  5. function __construct($name)
  6. {
  7. echo 'Hello '.$name.PHP_EOL;
  8. }
  9. }
這樣就建立了 3 個可以被使用的類別。
接著在 public 下,建立一個 index.php :
  1. PHPphp
  2. require '../vendor/autoload.php';
  3. use \Tonycube\Hello\World as World;
  4. use \Tonycube\Hello;
  5. $world = new World();
  6. $tony = new Hello\Tony();
  7. $any = new \Tonycube\Hello\Any('Amy');
首先會 require vendor 目錄中的 autoload.php,由它來幫我們執行自動載入的工作。
這裡示範 3 種在命名空間下使用類別的方式。
  • use … as … :表示使用完整類別名稱,並且使用 as 建立別名,之後就可以直接使用這個別名。
  • use :可以使用完整類別名稱,這樣在 new 的時候,只要寫類別名稱即可。或是像這個範例,只寫到子命名空間 Hello,這樣之後在 new 的時候,就必須包含這個子命名空間。
  • 不使用 use:這樣 new 的時候就必須使用完整類別名稱。

執行

如果這個專案是放在伺服器目錄的話,可以在瀏覽器上輸入以下連結:
http://localhost/demo/public/index.php
或是在終端機,進入 public 目錄下:
php index.php
註:你必須先把 php 指令加入環境變數中。
最終檔案結構:
demo
  /src
    /Tonycube
      /Hello
        Any.php
        Tony.php
        World.php
  /public
   index.php
  /vendor
    autoload.php
    /composer
  composer.json

更新 autoload 內容

很重要,如果你有修改過 composer.json 裡的 autoload 的內容(或第一次使用),記得必須在終端機輸入:
composer dump-autoload
讓 Composer 把資料更新,至於它是更新哪個檔案的內容,你可以打開:
vendor/composer/autoload_psr4.php
這個檔案,回傳的陣列值中,就會包含我們所指定的內容。

相關影片

這部影片的說明很詳細,把舊的 require 檔案方式到使用 PSR-4 autoloader 的過程講了一遍。


from : http://blog.tonycube.com/2016/09/php-psr-4-autoloader.html

2018年3月10日 星期六

phpstorm 2017.1激活码|phpstorm 注册码|IntelliJ IDEA 注册码

phpstorm软件简介:
PhpStorm 是 JetBrains 公司开发的一款商业的 PHP 集成开发工具,旨在提高用户效率,可深刻理解用户的编码,提供智能代码补全,快速导航以及即时错误检查。
phpstorm 激活
phpstorm激活-操作步骤:
打开网址 http://idea.lanyus.com/ 选择获取注册码,复制生成的验证码 
安装完成后,打开phpstorm软件,依次选择菜单栏 Help -> Register-> Activation code ->输入复制验证码->确定完成。
注意:使用前请将“0.0.0.0 account.jetbrains.com”添加到hosts文件中
phpstorm 激活码:
 注册码有效期为:2017年10月15日至2018年10月14日
EB101IWSWD-eyJsaWNlbnNlSWQiOiJFQjEwMUlXU1dEIiwibGljZW5zZWVOYW1lIjoibGFuIHl1IiwiYXNzaWduZWVOYW1lIjoiIiwiYXNzaWduZWVFbWFpbCI6IiIsImxpY2Vuc2VSZXN0cmljdGlvbiI6IkZvciBlZHVjYXRpb25hbCB1c2Ugb25seSIsImNoZWNrQ29uY3VycmVudFVzZSI6ZmFsc2UsInByb2R1Y3RzIjpbeyJjb2RlIjoiSUkiLCJwYWlkVXBUbyI6IjIwMTgtMTAtMTQifSx7ImNvZGUiOiJSUzAiLCJwYWlkVXBUbyI6IjIwMTgtMTAtMTQifSx7ImNvZGUiOiJXUyIsInBhaWRVcFRvIjoiMjAxOC0xMC0xNCJ9LHsiY29kZSI6IlJEIiwicGFpZFVwVG8iOiIyMDE4LTEwLTE0In0seyJjb2RlIjoiUkMiLCJwYWlkVXBUbyI6IjIwMTgtMTAtMTQifSx7ImNvZGUiOiJEQyIsInBhaWRVcFRvIjoiMjAxOC0xMC0xNCJ9LHsiY29kZSI6IkRCIiwicGFpZFVwVG8iOiIyMDE4LTEwLTE0In0seyJjb2RlIjoiUk0iLCJwYWlkVXBUbyI6IjIwMTgtMTAtMTQifSx7ImNvZGUiOiJETSIsInBhaWRVcFRvIjoiMjAxOC0xMC0xNCJ9LHsiY29kZSI6IkFDIiwicGFpZFVwVG8iOiIyMDE4LTEwLTE0In0seyJjb2RlIjoiRFBOIiwicGFpZFVwVG8iOiIyMDE4LTEwLTE0In0seyJjb2RlIjoiUFMiLCJwYWlkVXBUbyI6IjIwMTgtMTAtMTQifSx7ImNvZGUiOiJDTCIsInBhaWRVcFRvIjoiMjAxOC0xMC0xNCJ9LHsiY29kZSI6IlBDIiwicGFpZFVwVG8iOiIyMDE4LTEwLTE0In0seyJjb2RlIjoiUlNVIiwicGFpZFVwVG8iOiIyMDE4LTEwLTE0In1dLCJoYXNoIjoiNjk0NDAzMi8wIiwiZ3JhY2VQZXJpb2REYXlzIjowLCJhdXRvUHJvbG9uZ2F0ZWQiOmZhbHNlLCJpc0F1dG9Qcm9sb25nYXRlZCI6ZmFsc2V9-Gbb7jeR8JWOVxdUFaXfJzVU/O7c7xHQyaidCnhYLp7v32zdeXiHUU7vlrrm5y9ZX0lmQk3plCCsW+phrC9gGAPd6WDKhkal10qVNg0larCR2tQ3u8jfv1t2JAvWrMOJfFG9kKsJuw1P4TozZ/E7Qvj1cupf/rldhoOmaXMyABxNN1af1RV3bVhe4FFZe0p7xlIJF/ctZkFK62HYmh8V3AyhUNTzrvK2k+t/tlDJz2LnW7nYttBLHld8LabPlEEjpTHswhzlthzhVqALIgvF0uNbIJ5Uwpb7NqR4U/2ob0Z+FIcRpFUIAHEAw+RLGwkCge5DyZKfx+RoRJ/In4q/UpA==-MIIEPjCCAiagAwIBAgIBBTANBgkqhkiG9w0BAQsFADAYMRYwFAYDVQQDDA1KZXRQcm9maWxlIENBMB4XDTE1MTEwMjA4MjE0OFoXDTE4MTEwMTA4MjE0OFowETEPMA0GA1UEAwwGcHJvZDN5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxcQkq+zdxlR2mmRYBPzGbUNdMN6OaXiXzxIWtMEkrJMO/5oUfQJbLLuMSMK0QHFmaI37WShyxZcfRCidwXjot4zmNBKnlyHodDij/78TmVqFl8nOeD5+07B8VEaIu7c3E1N+e1doC6wht4I4+IEmtsPAdoaj5WCQVQbrI8KeT8M9VcBIWX7fD0fhexfg3ZRt0xqwMcXGNp3DdJHiO0rCdU+Itv7EmtnSVq9jBG1usMSFvMowR25mju2JcPFp1+I4ZI+FqgR8gyG8oiNDyNEoAbsR3lOpI7grUYSvkB/xVy/VoklPCK2h0f0GJxFjnye8NT1PAywoyl7RmiAVRE/EKwIDAQABo4GZMIGWMAkGA1UdEwQCMAAwHQYDVR0OBBYEFGEpG9oZGcfLMGNBkY7SgHiMGgTcMEgGA1UdIwRBMD+AFKOetkhnQhI2Qb1t4Lm0oFKLl/GzoRykGjAYMRYwFAYDVQQDDA1KZXRQcm9maWxlIENBggkA0myxg7KDeeEwEwYDVR0lBAwwCgYIKwYBBQUHAwEwCwYDVR0PBAQDAgWgMA0GCSqGSIb3DQEBCwUAA4ICAQC9WZuYgQedSuOc5TOUSrRigMw4/+wuC5EtZBfvdl4HT/8vzMW/oUlIP4YCvA0XKyBaCJ2iX+ZCDKoPfiYXiaSiH+HxAPV6J79vvouxKrWg2XV6ShFtPLP+0gPdGq3x9R3+kJbmAm8w+FOdlWqAfJrLvpzMGNeDU14YGXiZ9bVzmIQbwrBA+c/F4tlK/DV07dsNExihqFoibnqDiVNTGombaU2dDup2gwKdL81ua8EIcGNExHe82kjF4zwfadHk3bQVvbfdAwxcDy4xBjs3L4raPLU3yenSzr/OEur1+jfOxnQSmEcMXKXgrAQ9U55gwjcOFKrgOxEdek/Sk1VfOjvS+nuM4eyEruFMfaZHzoQiuw4IqgGc45ohFH0UUyjYcuFxxDSU9lMCv8qdHKm+wnPRb0l9l5vXsCBDuhAGYD6ss+Ga+aDY6f/qXZuUCEUOH3QUNbbCUlviSz6+GiRnt1kA9N2Qachl+2yBfaqUqr8h7Z2gsx5LcIf5kYNsqJ0GavXTVyWh7PYiKX4bs354ZQLUwwa/cG++2+wNWP+HtBhVxMRNTdVhSm38AknZlD+PTAsWGu9GyLmhti2EnVwGybSD2Dxmhxk3IPCkhKAK+pl0eWYGZWG3tJ9mZ7SowcXLWDFAk0lRJnKGFMTggrWjV8GYpw5bq23VmIqqDLgkNzuoog==


from : http://www.023xs.cn/Article/110

wibiya widget