又LAG隨性筆記
  • 關於我
  • 作品集
  • 生活隨筆
  • 與我聯絡
  • 隨手扎

隨手扎

October 28, 2019

淺嘗「你所不知道的C語言」系列講座 技巧篇 筆記

今天把 你所不知道的 C 語言:技巧篇 (2019-07-11)看完了,簡單寫下一些筆記。

系列講座單元目錄:

以下內容可以在 https://ethercalc.org/dykc 找到。或是在系列講座直接查看個單元的簡介。有很多很少學校會教的技巧和概念,這次看的是技巧篇,其他內容我應該也會慢慢看完。(可能也會去找影片來看)

你所不知道的 C 語言
https://hackmd.io/s/HJpiYaZfl系列講座
https://hackmd.io/s/HJFyt37Mx為何要深入學習 C 語言
https://hackmd.io/s/HyBPr9WGl指標篇
https://hackmd.io/s/SJ6hRj-zg函式呼叫篇
https://hackmd.io/s/BkuMDQ9K7記憶體管理、對齊及硬體特性
https://hackmd.io/s/rJ8BOjGGl遞迴呼叫篇
https://hackmd.io/s/B1e2AUZeMgoto 和流程控制篇
https://hackmd.io/s/BkRKhQGae數值系統篇
https://hackmd.io/s/Hy72937Me編譯器和最佳化原理篇
https://hackmd.io/s/H1ZzeiCIQC編譯器原理和案例分析
https://hackmd.io/s/HJLyQaQMl物件導向程式設計篇
https://hackmd.io/s/S1maxCXMl前置處理器應用篇
https://hackmd.io/s/HkK7Uf4Ml動態連結器和執行時期篇
https://hackmd.io/s/SysiUkgUV連結器和執行檔資訊
https://hackmd.io/s/Hkcr5cn97執行階段程式庫 (CRT)
https://hackmd.io/s/Skr9vGiQm未定義行為篇
https://hackmd.io/s/HyIdoLnjl技巧篇
https://hackmd.io/s/SkE33UTHflinked list 和非連續記憶體操作
https://hackmd.io/s/B1s8hX1yg從打造類似 Facebook 網路服務探討整合開發
https://hackmd.io/@sysprog/Sy8pJ0x9GStream I/O, EOF 和例外處理

你所不知道的C語言:技巧篇

允許陣列結尾逗點

C語言流行的標準版本包含:C89、C99,和增加與C++相容性的C11/C18。我不清楚哪些是在哪個版本增加的,基本上下面的特性,在支援C11/C18的gcc編譯器都可以使用。C89或是C99可能會報錯。

看個簡單了程式,其中注意到變數a是整數陣列,但是在初始化階段,最後是寫下,};。,後一個空元素,在早期C語言編輯器應該是不被允許的,不過在GCC可以正常編譯。

October 28, 2019

深入了解scikit Learn裡TFIDF計算方式

TFIDF計算說明

參加今年iT鐵人賽時,曾經寫過簡單使用scikit-learn裡的TFIDF看看,並寫到scikit-learn裡tfidf計算方式與經典算法不同。後來在官方文件中找到說明,也簡單嘗試了一下。這次來做點分享。

在經典算法,TF是這樣計算:Classic TF。不過scikit-learn是直接用n_(i,j),也就是使用CountVectorizer的結果。

IDF的部份,原本經典算法是:Classic IDF-1,為了避免分母為零,也經常會使用log(n/(df(k)+1))計算,也就是將分子+1。scikit-learn裡面則分成兩種,預設使用smooth的版本:log((n+1)/(df(k)+1)),也就是分子分母都加一;另一種是經典原始版本,而外加上1:log(n/df(k))+1。

最後sckit-lean會做標準化(normalize),所以最後結果會是normaliz(tf*idf)。

嘗試實驗

引入套件

from sklearn.feature_extraction.text import TfidfTransformer 
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.feature_extraction.text import CountVectorizer
import pandas as pd
import math
from sklearn.preprocessing import normalize

實驗資料

d1 = 'a b d e d f a f e fa d s a b n'
d2 = 'a z a f e fa h'
d3 = 'a z a f e fa h'

對,基本上就是簡單使用scikit-learn裡的TFIDF看看所測試的方式,所以當然也要將stop_words=None, token_pattern="(?u)\\b\\w+\\b"而外設定,原因這裡就不多做說明了。

October 22, 2019

30天成爲Laravel萌新(目錄)

這是第二次參加「iT 邦幫忙鐵人賽」。上次報了兩個主題,只有一個完賽。這次報了三個主題……還好全都完賽了。雖然開賽前,對於一個主題先寫了近十天左右的文章,但在賽中,趕稿壓力還是頗大的。

30天成爲Laravel萌新(目錄)

「30天成爲Laravel萌新」是我最重要的一個系列,報名在Modern Web主題下,並同步發表於又LAG隨性筆記。下面列出每天文章連結:

  • 30天成爲Laravel萌新(第0天) - 前言
  • 30天成爲Laravel萌新(第1天) - 認識Laravel
  • 30天成爲Laravel萌新(第2天) - 安装 Laravel
  • 30天成爲Laravel萌新(第3天) - 使用laradock建立開發環境(上)
  • 30天成爲Laravel萌新(第4天) - 使用laradock建立開發環境(下)
  • 30天成爲Laravel萌新(第5天) - Laradock的工作空間容器
  • 30天成爲Laravel萌新(第6天) - 配置專案
  • 30天成爲Laravel萌新(第7天) - 認識artisan
  • 30天成爲Laravel萌新(第8天) - 路由&頁面模板(1)
  • 30天成爲Laravel萌新(第9天) - 路由&頁面模板(2)
  • 30天成爲Laravel萌新(第10天) - 路由&頁面模板(3)
October 17, 2019

30天成爲Laravel萌新(第30-1天) - 總結

這是第二次參加鐵人賽。這個主題是我決定參賽出就已經定好,總算寫完了。從介紹、安裝、配置,使用laradock、artisan,路由、模板,Parsdown(Markdown),再到控制器、資料庫,以及另我以些驚豔的Pagiantion,然後多語系支援、紀錄檔,客製化錯誤頁面,檔案上傳與表單驗證,到最後登入驗證。

在這過程中,一學習到不少,很充實。(還有下次不要在一次報三個主題了…)

不過,Laravel官方文檔其實相當豐富完整,這30天的文章,頂多只能當作而外的參考而已,但願對想學習Laravel的人還是有幫助。

最後,你可以在這裡看到跟Laravel有關的文章。或是看看另外兩個系列文章( 又LAG的EOS.IO技術筆記 和 有點玩鬧性質的 又LAG的ML學習筆記 )。

October 17, 2019

30天成爲Laravel萌新(第30天) - 登入驗證

這部份在Django時,明明是最先學的,在Laravel卻放到了最後☺

要使用Laravel提供的會員系統,相當容易,只須要:

artisan make:auth
artisan migrate

然後瀏覽http://localhost/register 註冊帳號,或是http://localhost/login 登入帳號。仔細一看,會多了這些檔案:

	new file:   app/Http/Controllers/HomeController.php
	new file:   resources/views/auth/login.blade.php
	new file:   resources/views/auth/passwords/email.blade.php
	new file:   resources/views/auth/passwords/reset.blade.php
	new file:   resources/views/auth/register.blade.php
	new file:   resources/views/auth/verify.blade.php
	new file:   resources/views/home.blade.php
	new file:   resources/views/layouts/app.blade.php
	modified:   routes/web.php

其中routes/web.php多了:

Auth::routes();

Route::get('/home', 'HomeController@index')->name('home');

現在瀏覽http://localhost/home 也有畫面了。

October 16, 2019

30天成爲Laravel萌新(第29天) - 表單驗證

昨天的程式碼有一些註解的內容,先取消註解試試。

resources/views/images/upload.blade.php部份內容

       @if ($errors->any())
            <div class="alert alert-danger">
                <ul>
                    @foreach ($errors->all() as $error)
                        <li>{{ $error }}</li>
                    @endforeach
                </ul>
            </div>
        @endif

routes/web.php處理post('/images/upload')請求的部份內容:

    Validator::make($request->all(), [
        'file' => 'required|image',
    ])->validate();

驗證表單資料

    Validator::make($request->all(), [
        'file' => 'required|image',
    ])->validate();

差不多等價於:

    $validate = $request->validate([
        'file' => 'required|image',
    ]);

$request有validate()的方法。還可以直接建立一個驗證器,繼承Request:

php artisan make:request ImageUpload

上面執行完後,現在,在app/Http/Requests/目錄下多了ImageUpload.php,內容改成下面這樣:

  • ««
  • «
  • 1
  • 2
  • 3
  •  … 
  • 26
  • 27
  • 28
  •  … 
  • 34
  • »
  • »»
© 又LAG隨性筆記 2025