2018年12月18日 星期二

[VSCode plugin] Quokka 編輯器中即時顯示console內容

Quokka.js這個外掛能在編輯器中就直接印出內容,可以從圖片中看到藍色字的部分就是由外掛即時印出的內容。



Control +Shift +P 後輸入Quokka就可以選擇新增一個Quokka關聯的js檔案New JavaScript File,如果要使用現有檔案,則選擇Start on Current File



另外此plugin 還提供了Pro版本,
1、可使用他所定義的註解 /*?*/顯示結果或/*?.*/顯示執行速度
2、可以自動關聯js檔案啟動quokka功能、提示缺少的package並可以快速install
3、無限制的value階層延伸查詢
4、可import檔案,並在import的檔案有更動時自動更新依賴的值

更詳細的Pro功能可以看這個官方提供的網址 : https://quokkajs.com/pro/

2018年10月28日 星期日

[Windows10] 使用舊版圖片檢視器




1、開啟設定面板


2、選擇應用程式


3、選擇預設應用程式,在右方圖片檢視選擇Windows相片檢視器


2018年10月18日 星期四

[Google] Colaboratory

https://colab.research.google.com

Google 官方提供了免費的Jupyter,這是一款很方便撰寫python的工具,像是一個筆記本,可以新增區塊並且執行,也能夠 import 所需要的 lib,詳細可以參照官方的Jupyter,裡面有各種範例,甚至可以在開頭加入%%html 來提示這個區塊要撰寫html語法,原生的Jupyter還可以運行ruby,但Google提供的目前測試起來是不支援。

官方Jupyter notebook
https://colab.research.google.com/notebooks/welcome.ipynb
https://colab.research.google.com/notebooks/basic_features_overview.ipynb


[HTML] input type為number時設置精度

當你的input 設置了 min 或 max 時 要注意精度的問題

例如下方:
<input type='number' min='1' max='10' step='0.1'>

此時符合規定的可以是1、1.0、1.2、1.3....

若浮點數寫為1.01就會出錯了,因為 step 設置是0.1

可以將 step 設置為any

<input type='number' min='1' max='10' step='any'>

如此一來就不會限制輸入的精度了

2018年10月17日 星期三

[Heroku] 佈署ror範例專案

Heroku https://www.heroku.com/

1. 進入dashboard中Create new app,輸入app name 

2. 選擇Heroku Git

3. 下載且安裝Heroku CLI : https://devcenter.heroku.com/articles/heroku-command-line

4. 確認環境變數中Path加入了heroku bin資料夾路徑後,開啟cmd 輸入heroku login,會提示輸入email及password,成功後會出現Logged in as xxx提示字元。

5. 初始化專案
mkdir myproject
cd myproject
git init
heroku git:remote -a appname

6. 建立其他資料夾,並git clone範例專案
git clone https://github.com/heroku/ruby-getting-started.git
完成後將clone的檔案全部但不包含.git檔案,貼到步驟5初始化的myproject資料夾中

7. 佈署專案
git add .
git commit -am "comment...."
git push heroku master

8. 進入dashboard中,點選open app即可訪問剛剛佈署的app



[Windows] Intel vt x開啟

最近因顯示卡有點問題,把聯想的Y720拿去送修
而每次送修回來,模擬器相關的工具就會無法使用
例如Genymotion、Virtual Box連Android Studio內建模擬器會出現error訊息

查詢到大致上是 vt vt-x這項功能被關閉,這項功能有些機種可以透過新增移除程式那邊的功能進行開關,我遇到的狀況是需要透過BIOS UEFI去設定

Y720進入BIOS UEFI的方法:
https://support.lenovo.com/be/zh/solutions/ht500216
開機時狂點F2

Advanced分頁下的CPU Configuration
使用鍵盤移動到Intel Virtualization Technology 將其設定為Enabled

Exit & Save

大功告成


參考資料
https://www.howtogeek.com/213795/how-to-enable-intel-vt-x-in-your-computers-bios-or-uefi-firmware/

https://www.qnap.com/zh-hk/how-to/faq/article/%E5%A6%82%E4%BD%95%E5%95%9F%E7%94%A8-intel-vt-x-%E5%92%8C-amd-svm/

2018年10月1日 星期一

[Ruby on Rails] rails2 + mysql (Windows)

Ruby1.8.7 + Rails2 安裝流程

1. 安裝Ruby
  下載地址:(https://rubyinstaller.org/downloads/archives/)
    https://dl.bintray.com/oneclick/rubyinstaller/ruby-1.8.7-p302-i386-mingw32.7z

2. 安裝rake
  gem install rake -v 0.8.3

3. 安裝rails
  gem install rails -v 2.3.10


與MySQL進行連接


1. 安裝 activerecord-mysql2-adapter
  gem install activerecord-mysql2-adapter

2. 建立 : config/initializers/abstract_mysql2_adapter.rb

內容如下:
require 'active_record/connection_adapters/mysql2_adapter'

class ActiveRecord::ConnectionAdapters::Mysql2Adapter
NATIVE_DATABASE_TYPES[:primary_key] = "int(11) auto_increment PRIMARY KEY"
end

3. database.yml
development:
adapter: mysql2
encoding: utf8
database: rordb
username: root
password: admin
pool: 5
timeout: 5000


相關鏈結:
Ruby 1.8.7 p302
  https://www.ruby-lang.org/en/news/2010/08/16/ruby-1-8-7-p302-is-released/
Rails 2.3.10
  https://rubygems.org/gems/rails/versions/2.3.10
rake 0.8.3
  https://rubygems.org/gems/rake/versions/0.8.3
Mysql2-adapter
  https://rubygems.org/gems/activerecord-mysql2-adapter/versions/0.0.3

2018年9月27日 星期四

2018年9月12日 星期三

[Oracle DB] PL/SQL

甲骨文資料庫特別有名的功能,在寫Procedure時經常會用到
不適用於Query出資料,若試圖使用SELECT列出資料就會出現錯誤,只能透過DBMS的方式在DBMS Log面板上印出 。另外,在truncate table相關指令時也會失效 。

1、基本架構:
DECLARE
  --變數宣告區域
BEGIN
  --SQL語句
END;

2、宣告變數的方式
格式:
  variable_name Type;
範例:
  qty NUMBER(5);
  flag BOOLEAN;

2-2、賦值
格式:
  variable_name := var;
範例:
  qty := 100;

3、DBMS
DBMS_OUTPUT.PUT_LINE('...........');

4、字串
必須使用單引號包住字串,使用雙引號會出錯

5、日期
to_date('1990/01/23', 'yyyy/mm/dd')

6、常用函數
(1). substr(字串, 位置, 個數);
  位置的索引值起始為1,例如apple則index=1的值為a。
  substr('apple',1,3); -- 傳回app

(2). in('a','b','c'....)
  符合in中的資料,傳回boolean型態

(3). decode()



2018年9月10日 星期一

[JS] github棄用jquery

https://githubengineering.com/removing-jquery-from-github-frontend/

原生JS逐漸取代了jquery所提供的功能,而老舊的IE無法使用這些新生的JS功能,已不堪使用,在這個時代逐漸被廢棄,根據github文章,紀錄一些JS新功能的筆記

(1) Dom操作
document.querySelectorAll()

(2) class操作
document.getElementById("xxx").classList.add("myclassname")
document.getElementById("xxx").classList.remove("myclassname")

(3) AJAX
fetch or XHR
比較舊的瀏覽器用XHR

* fetch
fetch('http://xxxx', {method:'get'}).then(function(resp){
  .....
  // resp.status
}).catch(function(err){
  .....
})

(5) Animation
使用CSS

(6) addEventListener()
https://developer.mozilla.org/zh-TW/docs/Web/API/EventTarget/addEventListener
el.addEventListener("click", function(){.....}, false);

[Kotlin] 筆記

其用法和java相似,一樣有package、import,比較特別的地方是宣告的方式與資料型態還有function定義模式改變。

定義變數需下關鍵字var,若一開始不賦值須加上特殊的關鍵字lateinit進行宣告,並且它是採用名字在前面,型態在後面的方式去定義變數。而function的部分關鍵字簡短為fun,回傳的型態放置於括號後方。在Android的應用上listener的宣告方式變得更簡短。


import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.TextView

class MainActivity : AppCompatActivity() {
    lateinit var btn_1:Button
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val txt: TextView = findViewById(R.id.txt_1);
        txt.setText(fun1())
     
        btn_1 = findViewById(R.id.btn_1)
        btn_1.setOnClickListener{
            fun2()
        }
    }

    fun fun1():String{
        return "ya"
    }

    fun fun2(){
        btn_1.setText("click!!!!!!");
    }
}



1、宣告關鍵字
var 之後可以變動
val 初始化後只能讀取 (Val cannot be reassigned)

2、字串中取用變數
println("oooxxx${string}")

3、
val只有getter
var有getter 及 setter

getter與setter的改寫 : 使用關鍵字field
class Say{
  var msg:String = "hello"
    get() = field
    set(val){
      field = val
    }
}

Say say = new Say()
println(say.msg) // world
say.msg = "hi"
println(say.msg) // hi





2018年9月9日 星期日

[SQLite] 安裝&基本操作

輕型的sql database,很適合ror練習時使用

1、安裝
Mac
  下載snapshots,自行compile
  ./configure --prefix=/usr/local
  make
  make install

Windows
  下載 tools & dll 解壓縮後,將路徑加入環境變數path中

測試是否安裝成功
  cmd或terminal直接key上sqlite3



2、操作
(1) 建立database
在還沒進入sqlite前,在cmd中下指令:
sqlite3 test.db
代表創建test並且使用這個DB

(2) 離開sqlite命令列
.quit

(3) 導出完整的資料庫
.dump
sqlite3 test.db .dump > test.sql

[Android] Android Studio搬移SDK位置

Android sdk佔用了不少硬碟空間,實測在新安裝的Android Studio下只下載了5.0的sdk和模擬器的img,就耗用了9GB,在ssd硬碟空間不多的情況下若後續再安裝了其他sdk,空間爆掉機率極高

1、開啟Android Studio,若直接進入專案則Close Project

2、右下角點選Configure / Project Defaults / Project Structure

3、取得 SDK Location 的位置,將該資料夾搬移到其他位置後,再設定到新位置

[RoR] Model - Validation


Model是用於與DB進行資料交互的物件,為了維護資料的安全及完整,往往需要建立基本的資料驗證,而這樣的需求可以針對在models中的model檔案撰寫Validation,當model的資料進行更動時(例如save)會自動觸發

1、官方列出的trigger時機:
create
create!
save
save!
update
update_attributes
update_attributes!


2、跳過驗證
decrement!
decrement_counter
increment!
increment_counter
toggle!
update_all
update_attribute
update_counters
或者,當你在save時不希望驗證也可以傳送false值的方式讓它不要觸發save(false)

3、可使用的method

(1) valid?
觸發驗證,若沒有errors時會傳回true

(2) invalid?
與(1)相反

(3) new_record?
在丟入DB前,確認該資料是否已經存在,若已經存在會傳回false



4、驗證的方式
(1) 驗證必填 - validates_presence_of 
範例:username及password須為必填
    validates_presence_of :username, :password

(2) 驗證長度 - validates_length_of
範例:username必須大於8個字元
    validates_length_of :username, minimum=>8

(3) 自訂驗證:
validate :validation_name #表示採用這個自訂的function去驗證

private #將function設定在private下
def validation_name
  if age < 0 
    errors.add(:age, ".......")
  elsif age>999
    errors.add(:age, ".......")
end

(4) 其他


* 參考資料
https://guides.rubyonrails.org/v2.3/activerecord_validations_callbacks.html